Name
vector_to_fundamental_matrixT_vector_to_fundamental_matrixVectorToFundamentalMatrixvector_to_fundamental_matrixVectorToFundamentalMatrixVectorToFundamentalMatrix — Compute the fundamental matrix given a set of image point
correspondences and reconstruct 3D points.
vector_to_fundamental_matrix( : : Rows1, Cols1, Rows2, Cols2, CovRR1, CovRC1, CovCC1, CovRR2, CovRC2, CovCC2, Method : FMatrix, CovFMat, Error, X, Y, Z, W, CovXYZW)
Herror T_vector_to_fundamental_matrix(const Htuple Rows1, const Htuple Cols1, const Htuple Rows2, const Htuple Cols2, const Htuple CovRR1, const Htuple CovRC1, const Htuple CovCC1, const Htuple CovRR2, const Htuple CovRC2, const Htuple CovCC2, const Htuple Method, Htuple* FMatrix, Htuple* CovFMat, Htuple* Error, Htuple* X, Htuple* Y, Htuple* Z, Htuple* W, Htuple* CovXYZW)
Herror vector_to_fundamental_matrix(const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const HTuple& CovRR1, const HTuple& CovRC1, const HTuple& CovCC1, const HTuple& CovRR2, const HTuple& CovRC2, const HTuple& CovCC2, const HTuple& Method, HTuple* FMatrix, HTuple* CovFMat, HTuple* Error, HTuple* X, HTuple* Y, HTuple* Z, HTuple* W, HTuple* CovXYZW)
void VectorToFundamentalMatrix(const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const HTuple& CovRR1, const HTuple& CovRC1, const HTuple& CovCC1, const HTuple& CovRR2, const HTuple& CovRC2, const HTuple& CovCC2, const HTuple& Method, HTuple* FMatrix, HTuple* CovFMat, HTuple* Error, HTuple* X, HTuple* Y, HTuple* Z, HTuple* W, HTuple* CovXYZW)
HTuple HHomMat2D::VectorToFundamentalMatrix(const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const HTuple& CovRR1, const HTuple& CovRC1, const HTuple& CovCC1, const HTuple& CovRR2, const HTuple& CovRC2, const HTuple& CovCC2, const HString& Method, double* Error, HTuple* X, HTuple* Y, HTuple* Z, HTuple* W, HTuple* CovXYZW)
HTuple HHomMat2D::VectorToFundamentalMatrix(const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, const HTuple& CovRR1, const HTuple& CovRC1, const HTuple& CovCC1, const HTuple& CovRR2, const HTuple& CovRC2, const HTuple& CovCC2, const char* Method, double* Error, HTuple* X, HTuple* Y, HTuple* Z, HTuple* W, HTuple* CovXYZW)
void HOperatorSetX.VectorToFundamentalMatrix(
[in] VARIANT Rows1, [in] VARIANT Cols1, [in] VARIANT Rows2, [in] VARIANT Cols2, [in] VARIANT CovRR1, [in] VARIANT CovRC1, [in] VARIANT CovCC1, [in] VARIANT CovRR2, [in] VARIANT CovRC2, [in] VARIANT CovCC2, [in] VARIANT Method, [out] VARIANT* FMatrix, [out] VARIANT* CovFMat, [out] VARIANT* Error, [out] VARIANT* X, [out] VARIANT* Y, [out] VARIANT* Z, [out] VARIANT* W, [out] VARIANT* CovXYZW)
VARIANT HHomMat2DX.VectorToFundamentalMatrix(
[in] VARIANT Rows1, [in] VARIANT Cols1, [in] VARIANT Rows2, [in] VARIANT Cols2, [in] VARIANT CovRR1, [in] VARIANT CovRC1, [in] VARIANT CovCC1, [in] VARIANT CovRR2, [in] VARIANT CovRC2, [in] VARIANT CovCC2, [in] BSTR Method, [out] double* Error, [out] VARIANT* X, [out] VARIANT* Y, [out] VARIANT* Z, [out] VARIANT* W, [out] VARIANT* CovXYZW)
static void HOperatorSet.VectorToFundamentalMatrix(HTuple rows1, HTuple cols1, HTuple rows2, HTuple cols2, HTuple covRR1, HTuple covRC1, HTuple covCC1, HTuple covRR2, HTuple covRC2, HTuple covCC2, HTuple method, out HTuple FMatrix, out HTuple covFMat, out HTuple error, out HTuple x, out HTuple y, out HTuple z, out HTuple w, out HTuple covXYZW)
HTuple HHomMat2D.VectorToFundamentalMatrix(HTuple rows1, HTuple cols1, HTuple rows2, HTuple cols2, HTuple covRR1, HTuple covRC1, HTuple covCC1, HTuple covRR2, HTuple covRC2, HTuple covCC2, string method, out double error, out HTuple x, out HTuple y, out HTuple z, out HTuple w, out HTuple covXYZW)
For a stereo configuration with unknown camera parameters the geometric
relation between the two images is defined by the fundamental matrix.
The operator vector_to_fundamental_matrixvector_to_fundamental_matrixVectorToFundamentalMatrixvector_to_fundamental_matrixVectorToFundamentalMatrixVectorToFundamentalMatrix determines the fundamental
matrix FMatrixFMatrixFMatrixFMatrixFMatrixFMatrix from given point correspondences
(Rows1Rows1Rows1Rows1Rows1rows1,Cols1Cols1Cols1Cols1Cols1cols1), (Rows2Rows2Rows2Rows2Rows2rows2,Cols2Cols2Cols2Cols2Cols2cols2), that
fulfill the epipolar constraint:
Note the column/row ordering in the point coordinates: 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 eight. Then, MethodMethodMethodMethodMethodmethod is chosen
to be 'normalized_dlt'"normalized_dlt""normalized_dlt""normalized_dlt""normalized_dlt""normalized_dlt" or 'gold_standard'"gold_standard""gold_standard""gold_standard""gold_standard""gold_standard".
If left and right camera are identical and the relative orientation between
them is a pure translation then choose MethodMethodMethodMethodMethodmethod equal to
'trans_normalized_dlt'"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""trans_gold_standard".
In this special case the minimum number of correspondences is only two.
The typical application of the motion beeing a pure translation is that of 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 direct-linear-transformation
('normalized_dlt') and the gold-standard-algorithm ('gold_standard').
Like the motion case,
the algorithm can be selected with the parameter MethodMethodMethodMethodMethodmethod.
For MethodMethodMethodMethodMethodmethod = 'normalized_dlt'"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""trans_normalized_dlt", a linear algorithm minimizes an algebraic
error based on the above epipolar constraint.
This algorithm offers a good compromise between speed
and accuracy.
For MethodMethodMethodMethodMethodmethod = 'gold_standard'"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""trans_gold_standard",
a mathematically optimal, but slower optimization is used, which
minimizes the geometric backprojection error of reconstructed
projective 3D points. In this case, in addition to the fundamental
matrix its
covariance matrix CovFMatCovFMatCovFMatCovFMatCovFMatcovFMat is output, along with the projective
coordinates (XXXXXx,YYYYYy,ZZZZZz,WWWWWw) of the
reconstructed
points and their covariances CovXYZWCovXYZWCovXYZWCovXYZWCovXYZWcovXYZW.
Let n be the number of points. Then the concatenated
covariances are stored in a 16xn tuple.
If an optimal gold-standard-algorithm is chosen the covariances of the image
points (CovRR1CovRR1CovRR1CovRR1CovRR1covRR1, CovRC1CovRC1CovRC1CovRC1CovRC1covRC1, CovCC1CovCC1CovCC1CovCC1CovCC1covCC1, CovRR2CovRR2CovRR2CovRR2CovRR2covRR2,
CovRC2CovRC2CovRC2CovRC2CovRC2covRC2, CovCC2CovCC2CovCC2CovCC2CovCC2covCC2) can be incorporated in the computation.
They can be provided for example by the operator points_foerstnerpoints_foerstnerPointsFoerstnerpoints_foerstnerPointsFoerstnerPointsFoerstner.
If the point covariances are unknown, which is the default, empty tuples
are input. In this case the optimization algorithm internally assumes
uniform and equal covariances for all points.
The value ErrorErrorErrorErrorErrorerror indicates the overall quality of the optimization
procedure and is the mean euclidian distance in pixels between the
points and their corresponding epipolar lines.
If the correspondence between the points are not known,
match_fundamental_matrix_ransacmatch_fundamental_matrix_ransacMatchFundamentalMatrixRansacmatch_fundamental_matrix_ransacMatchFundamentalMatrixRansacMatchFundamentalMatrixRansac should be used instead.
- Multithreading type: reentrant (runs in parallel with non-exclusive operators).
- Multithreading scope: global (may be called from any thread).
- Processed without parallelization.
Input points in image 1 (row coordinate).
Restriction: length(Rows1) >= 8 || length(Rows1) >= 2
Input points in image 1 (column coordinate).
Restriction: length(Cols1) == length(Rows1)
Input points in image 2 (row coordinate).
Restriction: length(Rows2) == length(Rows1)
Input points in image 2 (column coordinate).
Restriction: length(Cols2) == length(Rows1)
Row coordinate variance of the points in image 1.
Default value: []
Covariance of the points in image 1.
Default value: []
Column coordinate variance of the points in image 1.
Default value: []
Row coordinate variance of the points in image 2.
Default value: []
Covariance of the points in image 2.
Default value: []
Column coordinate variance of the points in image 2.
Default value: []
Estimation algorithm.
Default value:
'normalized_dlt'
"normalized_dlt"
"normalized_dlt"
"normalized_dlt"
"normalized_dlt"
"normalized_dlt"
List of values: 'gold_standard'"gold_standard""gold_standard""gold_standard""gold_standard""gold_standard", 'normalized_dlt'"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_gold_standard", 'trans_normalized_dlt'"trans_normalized_dlt""trans_normalized_dlt""trans_normalized_dlt""trans_normalized_dlt""trans_normalized_dlt"
Computed fundamental matrix.
9x9 covariance matrix of the
fundamental matrix.
Root-Mean-Square of the epipolar distance error.
XXXXXx (output_control) real-array → HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)
X coordinates of the reconstructed points in
projective 3D space.
YYYYYy (output_control) real-array → HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)
Y coordinates of the reconstructed points in
projective 3D space.
ZZZZZz (output_control) real-array → HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)
Z coordinates of the reconstructed points in
projective 3D space.
WWWWWw (output_control) real-array → HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)
W coordinates of the reconstructed points in
projective 3D space.
Covariance matrices of the reconstructed 3D points.
match_fundamental_matrix_ransacmatch_fundamental_matrix_ransacMatchFundamentalMatrixRansacmatch_fundamental_matrix_ransacMatchFundamentalMatrixRansacMatchFundamentalMatrixRansac
gen_binocular_proj_rectificationgen_binocular_proj_rectificationGenBinocularProjRectificationgen_binocular_proj_rectificationGenBinocularProjRectificationGenBinocularProjRectification
vector_to_essential_matrixvector_to_essential_matrixVectorToEssentialMatrixvector_to_essential_matrixVectorToEssentialMatrixVectorToEssentialMatrix,
vector_to_rel_posevector_to_rel_poseVectorToRelPosevector_to_rel_poseVectorToRelPoseVectorToRelPose
Richard Hartley, Andrew Zisserman: “Multiple View Geometry in
Computer Vision”; Cambridge University Press, Cambridge; 2000.
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.
3D Metrology