vector_to_fundamental_matrix_distortionT_vector_to_fundamental_matrix_distortionVectorToFundamentalMatrixDistortionVectorToFundamentalMatrixDistortionvector_to_fundamental_matrix_distortion — Compute the fundamental matrix and the radial distortion coefficient
given a set of image point correspondences and reconstruct 3D
points.
For a stereo configuration with unknown camera parameters, the
geometric relation between the two images is defined by the
fundamental matrix. vector_to_fundamental_matrix_distortionvector_to_fundamental_matrix_distortionVectorToFundamentalMatrixDistortionVectorToFundamentalMatrixDistortionvector_to_fundamental_matrix_distortion
determines the fundamental matrix FMatrixFMatrixFMatrixFMatrixfmatrix and the radial
distortion coefficient KappaKappaKappakappakappa from given
point correspondences (Rows1Rows1Rows1rows1rows_1,Cols1Cols1Cols1cols1cols_1),
(Rows2Rows2Rows2rows2rows_2,Cols2Cols2Cols2cols2cols_2) that fulfill the epipolar
constraint:
Here, and
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_fundamental_matrix_distortionvector_to_fundamental_matrix_distortionVectorToFundamentalMatrixDistortionVectorToFundamentalMatrixDistortionvector_to_fundamental_matrix_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 the column/row ordering in the point coordinates above: since
the fundamental matrix encodes the projective relation between two
stereo images embedded in 3D space, the x/y notation must be
compliant with the camera coordinate system. Therefore, (x,y)
coordinates correspond to (column,row) pairs.
For a general relative orientation of the two cameras, the minimum
number of required point correspondences is nine. Then,
MethodMethodMethodmethodmethod must be set to 'linear'"linear""linear""linear""linear" or
'gold_standard'"gold_standard""gold_standard""gold_standard""gold_standard". If the left and right cameras are
identical and the relative orientation between them is a pure
translation, MethodMethodMethodmethodmethod must be set to 'trans_linear'"trans_linear""trans_linear""trans_linear""trans_linear"
or 'trans_gold_standard'"trans_gold_standard""trans_gold_standard""trans_gold_standard""trans_gold_standard". In this special case, the
minimum number of correspondences is only four. The typical
application of the motion being a pure translation is a single fixed
camera looking onto a moving conveyor belt.
The fundamental matrix is determined by minimizing a cost function.
To minimize the respective error, different algorithms are
available, and the user can choose between the linear
('linear'"linear""linear""linear""linear") and the gold-standard algorithm
('gold_standard'"gold_standard""gold_standard""gold_standard""gold_standard"). Like the motion type, the algorithm can
be selected with the parameter MethodMethodMethodmethodmethod. For MethodMethodMethodmethodmethod
= 'linear'"linear""linear""linear""linear" or 'trans_linear'"trans_linear""trans_linear""trans_linear""trans_linear", a linear algorithm
that minimizes an algebraic error based on the above epipolar
constraint is used. This algorithm is very fast. For the pure
translation case (MethodMethodMethodmethodmethod = 'trans_linear'"trans_linear""trans_linear""trans_linear""trans_linear"), the
linear method returns accurate results for small to moderate noise
of the point coordinates and for most distortions (except for very
small distortions). For a general relative orientation of the two
cameras (MethodMethodMethodmethodmethod = 'linear'"linear""linear""linear""linear"), the linear method
only returns accurate results for very small noise of the point
coordinates and for sufficiently large distortions. For
MethodMethodMethodmethodmethod = 'gold_standard'"gold_standard""gold_standard""gold_standard""gold_standard" or
'trans_gold_standard'"trans_gold_standard""trans_gold_standard""trans_gold_standard""trans_gold_standard", a mathematically optimal but slower
optimization is used, which minimizes the geometric reprojection
error of reconstructed projective 3D points. In this case, in
addition to the fundamental matrix and the distortion coefficient,
the projective coordinates
(XXXxx,YYYyy,ZZZzz,WWWww) of the reconstructed
points are returned. For a general relative orientation of the two
cameras, in general MethodMethodMethodmethodmethod = 'gold_standard'"gold_standard""gold_standard""gold_standard""gold_standard"
should be selected.
The value ErrorErrorErrorerrorerror indicates the overall quality of the
optimization procedure and is the mean symmetric Euclidean distance
in pixels between the points and their corresponding epipolar lines.
List of values:
'gold_standard'"gold_standard""gold_standard""gold_standard""gold_standard", 'linear'"linear""linear""linear""linear", 'trans_gold_standard'"trans_gold_standard""trans_gold_standard""trans_gold_standard""trans_gold_standard", 'trans_linear'"trans_linear""trans_linear""trans_linear""trans_linear"
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.