vector_to_essential_matrixT_vector_to_essential_matrixVectorToEssentialMatrixVectorToEssentialMatrix — Compute the essential matrix given image point correspondences
and known camera matrices and reconstruct 3D points.
For a stereo configuration with known camera matrices the geometric relation
between the two images is defined by the essential matrix.
The operator vector_to_essential_matrixvector_to_essential_matrixVectorToEssentialMatrixVectorToEssentialMatrixVectorToEssentialMatrix determines the essential
matrix EMatrixEMatrixEMatrixEMatrixEMatrix from in general at least six given point
correspondences, that fulfill the epipolar constraint:
The operator vector_to_essential_matrixvector_to_essential_matrixVectorToEssentialMatrixVectorToEssentialMatrixVectorToEssentialMatrix is designed to deal
only with a linear camera model. This is in constrast to the
operator vector_to_rel_posevector_to_rel_poseVectorToRelPoseVectorToRelPoseVectorToRelPose, that encompasses lens distortions too.
The internal camera parameters are passed by the arguments
CamMat1CamMat1CamMat1CamMat1camMat1 and CamMat2CamMat2CamMat2CamMat2camMat2, which are
3x3 upper triangular matrices desribing an affine
transformation. The relation between the vector (X,Y,1), defining the
direction from the camera to the viewed 3D point, and its (projective)
2D image coordinates (col,row,1) is:
The parameter MethodMethodMethodMethodmethod decides whether the relative orientation
between the cameras is of a special type and which algorithm is to be applied
for its computation.
If MethodMethodMethodMethodmethod is either 'normalized_dlt'"normalized_dlt""normalized_dlt""normalized_dlt""normalized_dlt" or
'gold_standard'"gold_standard""gold_standard""gold_standard""gold_standard" the relative orientation is arbitrary.
Choosing 'trans_normalized_dlt'"trans_normalized_dlt""trans_normalized_dlt""trans_normalized_dlt""trans_normalized_dlt" or 'trans_gold_standard'"trans_gold_standard""trans_gold_standard""trans_gold_standard""trans_gold_standard"
means that the relative motion between the cameras is a pure translation.
The typical application for this special motion case is the
scenario of a single fixed camera looking onto a moving conveyor belt.
In this case the minimum required number of corresponding points is just two
instead of six in the general case.
The essential matrix is computed by a linear algorithm if
'normalized_dlt'"normalized_dlt""normalized_dlt""normalized_dlt""normalized_dlt" or 'trans_normalized_dlt'"trans_normalized_dlt""trans_normalized_dlt""trans_normalized_dlt""trans_normalized_dlt" is chosen.
With '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"
the algorithm gives a statistically optimal result.
Here, 'normalized_dlt' and 'gold_standard' stand for
direct-linear-transformation and gold-standard-algorithm respectively.
All methods return the coordinates (XXXXx,YYYYy,ZZZZz)
of the reconstructed 3D points. The optimal methods also return
the covariances of the 3D points in CovXYZCovXYZCovXYZCovXYZcovXYZ.
Let n be the number of points
then the 3x3 covariance matrices are concatenated and
stored in a tuple of length 9n.
Additionally, the optimal methods return the
covariance of the essential matrix CovEMatCovEMatCovEMatCovEMatcovEMat.
The value ErrorErrorErrorErrorerror indicates the overall quality of the optimization
process and is the root-mean-square euclidian distance in pixels between the
points and their corresponding epipolar lines.
For the operator vector_to_essential_matrixvector_to_essential_matrixVectorToEssentialMatrixVectorToEssentialMatrixVectorToEssentialMatrix a special configuration
of scene points and cameras exists: if all 3D points lie in a single plane
and additionally are all closer to one of the two cameras then the solution
in the essential matrix is not unique but twofold.
As a consequence both solutions are computed and returned by the operator.
This means that all output parameters are of double length and the values
of the second solution are simply concatenated behind the values of the
first one.
Execution Information
Multithreading type: reentrant (runs in parallel with non-exclusive operators).
Multithreading scope: global (may be called from any thread).
List of values: 'gold_standard'"gold_standard""gold_standard""gold_standard""gold_standard", 'normalized_dlt'"normalized_dlt""normalized_dlt""normalized_dlt""normalized_dlt", 'trans_gold_standard'"trans_gold_standard""trans_gold_standard""trans_gold_standard""trans_gold_standard", 'trans_normalized_dlt'"trans_normalized_dlt""trans_normalized_dlt""trans_normalized_dlt""trans_normalized_dlt"
Richard Hartley, Andrew Zisserman: “Multiple View Geometry in
Computer Vision”; Cambridge University Press, Cambridge; 2003.
J.Chris McGlone (editor): “Manual of Photogrammetry”;
American Society for Photogrammetry and Remote Sensing ; 2004.