You are here: Start » AVL.NET » Function Reference » Computer Vision » Camera Calibration » AVL.CalibrateWorldPlane_Manual

AVL.CalibrateWorldPlane_Manual

Finds the image to world plane transformation matrix. Image and their corresponding world points are directly specified (no grid needed).

Namespace:AvlNet
Assembly:AVL.NET.dll

Syntax

C++
C#
 
public static void CalibrateWorldPlane_Manual
(
	IList<AvlNet.Point2D> inImagePoints,
	IList<AvlNet.Point2D> inWorldPlanePoints,
	NullableRef<AvlNet.AnyCameraModel> inCameraModel,
	float inGridThickness,
	AvlNet.RectificationTransform outTransform,
	NullableValue<float> outRmsError,
	NullableValue<float> outMaxReprojectionError,
	NullableRef<List<AvlNet.Segment2D>> outReprojectionErrorSegments
)

Parameters

Name Type Range Default Description
inImagePointsSystem.Collections.Generic.IList<AvlNet.Point2D>Array of 2D points of the calibration pattern, in the picture.
inWorldPlanePointsSystem.Collections.Generic.IList<AvlNet.Point2D>Array of 2D points of the calibration pattern, in a given world coordinate plane.
inCameraModelAvlNet.NullableRef<AvlNet.AnyCameraModel>For undistortion of inImageGrid. If not supplied, the filter will assume that grid came from undistorted image. Default value: atl::NIL.
inGridThicknessfloat0.0fThe world plane will be shifted by given amount in direction perpendicular to the grid to compensate for grid thickness. Default value: 0.0f.
outTransformAvlNet.RectificationTransform
outRmsErrorAvlNet.NullableValue<float>RMS reprojection error, in pixels. Can be null to skip this parameter calculation.
outMaxReprojectionErrorAvlNet.NullableValue<float>Maximum reprojection error, in pixels. Can be null to skip this parameter calculation.
outReprojectionErrorSegmentsAvlNet.NullableRef<System.Collections.Generic.List<AvlNet.Segment2D>>Array of segments connecting input image points to reprojected world points. Can be null to skip this parameter calculation.

Description

The filter estimates the correspondence between the image plane and a "world plane" – a given planar surface in observed space. The image plane, and thus inImagePoints are assumed to be distorted, and to correct for the distortion the inCameraModel (calibration data) needs to be provided. The calculated result – outTransform contains all the information for transforming the distorted image plane to the world plane.

The inCameraModel is also used to define the type of the planar correspondence. For a standard projective camera (pinhole camera), the planar correspondence is a homography. If the inCameraModel is a telecentric camera, the planar correspondence is affine (as there are no perspective parameters in orthographic projection). If no inCameraModel is provided, the filter defaults to homography.

The homography requires at least four inImagePoints (and their inWorldPlanePoints correspondences). The affine relation requires at least three such pairs.

The filter provides a few methods for judging the feasibility of calculated solution.

  • The outRmsError and outMaxReprojectionError. The main contributor to these values is the random noise in inImagePoints positions. Model mismatch (i.e. trying to calibrate a non-planar object, e.g. wavy surface) will also result in increased reprojection errors. Large difference between outRmsError and outMaxReprojectionError could be a sign of presence of outliers in input data.
  • The outReprojectionErrorSegments consists of segments connecting input image points to reprojected world points, and thus it can be readily used for visualization of per-point reprojection errors.

Examples

Good case of image to world plane calibration using high amount of calibration points. Calibration resulted in RMS and maximum reprojection errors less than 1.0, as expected. The outReprojectionErrorSegments are not visible at that scale.

Example of a gross error. The RMS reprojection error is 17.6, max reprojection error is 91.2, source of these errors is clearly visible thanks to outReprojectionErrorSegments: the association of inImagePoints and inWorldPlanePoints is wrong.

Errors

List of possible exceptions:

Error type Description
DomainError Array inImagePoints and inWorldPlanePoints sizes differ

Function Overrides

See also