vector_to_proj_hom_mat2d_distortionπ
Short descriptionπ
vector_to_proj_hom_mat2d_distortion β Compute a projective transformation matrix and the radial distortion
coefficient using given image point correspondences.
Signatureπ
vector_to_proj_hom_mat2d_distortion( point.y Points1Row, point.x Points1Col, point.y Points2Row, point.x Points2Col, number CovRR1, number CovRC1, number CovCC1, number CovRR2, number CovRC2, number CovCC2, integer ImageWidth, integer ImageHeight, string Method, out hom_mat2d HomMat2D, out real Kappa, out real Error )
Descriptionπ
vector_to_proj_hom_mat2d_distortion determines the
projective transformation matrix HomMat2D and the radial
distortion coefficient Kappa\(\kappa\)) from given
point correspondences (Points1Row,Points1Col),
(Points2Row,Points2Col) that optimally fulfill the
following equation:
Here, \((r_{1},c_{1})\) and \((r_{2},c_{2})\) denote image points that are obtained by undistorting the input image points with the division model (see Calibration):
Here,
and
denote the distorted image points, specified relative to the image center.
Thus, vector_to_proj_hom_mat2d_distortion assumes that the
principal point of the camera, i.e., the center of the radial
distortions, lies at the center of the image. Note that the images
from which the points (Points1Row,Points1Col) and
(Points2Row,Points2Col) are extracted have to be
obtained with the same camera.
The returned Kappa can be used to construct camera
parameters that can be used to rectify images or points (see
change_radial_distortion_cam_par,
change_radial_distortion_image, and
change_radial_distortion_points):
The minimum number of required point correspondences is five.
vector_to_proj_hom_mat2d_distortion seeks to minimize the
transformation error between the point correspondences based on the
above equations. To achieve such a minimization, two different
algorithms are available. The algorithm to use can be chosen using
the parameter Method. For Method \(=\)
'linear', a linear algorithm that minimizes an algebraic
error based on the above equations is used. This algorithm is very
fast and returns accurate results for small to moderate noise of the
point coordinates and for most distortions (except for small
distortions). For Method \(=\) 'gold_standard', a
mathematically optimal but slower optimization is used, which
minimizes the geometric reprojection error. In general, it is
preferable to use Method \(=\) 'gold_standard'.
If 'gold_standard' is used, the covariances of the image
points (CovRR1, CovRC1, CovCC1,
CovRR2, CovRC2, CovCC2) can be
incorporated into the computation. They can be provided, for
example, by the operator points_foerstner. If the point
covariances are unknown, which is the default, empty tuples are
passed. In this case, the optimization algorithm internally assumes
uniform and equal covariances for all points. If 'linear'
is used, the covariances are ignored and the covariance parameters
can be left empty.
The value Error indicates the overall quality of the
optimization procedure and is the mean symmetric euclidean distance
in pixels between the points and their corresponding transformed
points.
If the correspondence between the points has not been determined,
proj_match_points_distortion_ransac or
proj_match_points_distortion_ransac_guided should be used to
determine the correspondence as well as the transformation.
Attentionπ
It should be noted that if a homogeneous transformation matrix is used to transform images, regions, XLD contours, or any other data that has been extracted from images, it is assumed that the origin of the coordinate system of the homogeneous transformation matrix lies in the upper left corner of a pixel. The image processing operators that return point coordinates, however, assume a coordinate system in which the origin lies in the center of a pixel. Therefore, to obtain a consistent homogeneous transformation matrix, 0.5 must be added to the point coordinates before computing the transformation.
Execution informationπ
Execution information
-
Multithreading type: reentrant (runs in parallel with non-exclusive operators).
-
Multithreading scope: global (may be called from any thread).
-
Processed without parallelization.
Parametersπ
Points1Row (input_control) point.y-array β (real / integer)
Input points in image 1 (row coordinate).
Restriction: length(Points1Row) >= 5
Points1Col (input_control) point.x-array β (real / integer)
Input points in image 1 (column coordinate).
Restriction: length(Points1Col) == length(Points1Row)
Points2Row (input_control) point.y-array β (real / integer)
Input points in image 2 (row coordinate).
Restriction: length(Points2Row) == length(Points1Row)
Points2Col (input_control) point.x-array β (real / integer)
Input points in image 2 (column coordinate).
Restriction: length(Points2Col) == length(Points1Row)
CovRR1 (input_control) number-array β (real / integer)
Row coordinate variance of the points in image 1.
Default: []
CovRC1 (input_control) number-array β (real / integer)
Covariance of the points in image 1.
Default: []
CovCC1 (input_control) number-array β (real / integer)
Column coordinate variance of the points in image 1.
Default: []
CovRR2 (input_control) number-array β (real / integer)
Row coordinate variance of the points in image 2.
Default: []
CovRC2 (input_control) number-array β (real / integer)
Covariance of the points in image 2.
Default: []
CovCC2 (input_control) number-array β (real / integer)
Column coordinate variance of the points in image 2.
Default: []
ImageWidth (input_control) integer β (integer)
Width of the images from which the points were extracted.
Restriction: ImageWidth > 0
ImageHeight (input_control) integer β (integer)
Height of the images from which the points were extracted.
Restriction: ImageHeight > 0
Method (input_control) string β (string)
Estimation algorithm.
Default: 'gold_standard'
List of values: 'gold_standard', 'linear'
HomMat2D (output_control) hom_mat2d β (real)
Homogeneous projective transformation matrix.
Kappa (output_control) real β (real)
Computed radial distortion coefficient.
Error (output_control) real β (real)
Root-Mean-Square transformation error.
Combinations with other operatorsπ
Combinations
Possible predecessors
proj_match_points_distortion_ransac, proj_match_points_distortion_ransac_guided, points_foerstner, points_harris
Possible successors
change_radial_distortion_cam_par, change_radial_distortion_image, change_radial_distortion_points, projective_trans_image, projective_trans_image_size, projective_trans_region, projective_trans_contour_xld, projective_trans_point_2d, projective_trans_pixel
Alternatives
vector_to_proj_hom_mat2d, hom_vector_to_proj_hom_mat2d
See also
Referencesπ
Richard Hartley, Andrew Zisserman: ``Multiple View Geometry in Computer Visionββ; Cambridge University Press, Cambridge; 2003.
Olivier Faugeras, Quang-Tuan Luong: ``The Geometry of Multiple Images: The Laws That Govern the Formation of Multiple Images of a Scene and Some of Their Applicationsββ; MIT Press, Cambridge, MA; 2001.
Moduleπ
Calibration