Back to Adaptive Vision Library website

You are here: Start » Function Reference » Camera Calibration » DetectCalibrationGrid_Circles

DetectCalibrationGrid_Circles


Header:AVL.h
Namespace:avl

Detects an arbitrary size symmetric circle pattern on the image.

Syntax

C++
C#
 
void avl::DetectCalibrationGrid_Circles
(
	const avl::Image& inImage,
	float inCircleRadius,
	float inWorldCircleSpacing,
	float inCircleDetectionMinScore,
	const atl::Optional<float>& inMaxCircleSpacing,
	atl::Array<avl::Point2D>& outImagePoints,
	atl::Array<avl::Point2D>& outWorldPlanePoints,
	atl::Array<avl::Circle2D>& diagCircleCandidates
)

Parameters

Name Type Range Default Description
inImage const Image& Input image
inCircleRadius float 1.0 - Circle radius measured in input image pixels.
inWorldCircleSpacing float 0.0 - 1.0f Real-world distance between adjacent circles centers.
inCircleDetectionMinScore float 0.0 - 20.0f Minimum matching score for circle detector.
inMaxCircleSpacing const Optional<float>& 1.0 - NIL Maximum distance between adjacent circle centers in the image measured in pixels. Defaults to 8*inCircleRadius.
outImagePoints Array<Point2D>& Image coordinates of detected calibration points.
outWorldPlanePoints Array<Point2D>& World plane coordinates of detected calibration points.
diagCircleCandidates Array<Circle2D>& Detected circles, before the grid construction step

Hints

In a case of sparse circle pattern (i.e. distances between circles relatively large in comparison to their radius), output point arrays may be empty despite properly detected diagCircleCandidates. In such a case it may be needed to set the inMaxCircleSpacing.

Examples

Input image for DetectCalibrationGrid_Circles executed with inCircleRadius = 5

Detected calibration points

Remarks

The circle pattern must be a rectangular grid, with equal spacing in both dimensions.

Works only for slightly distorted images (circles cannot appear as ellipses).

See Also