reconst3d_from_fundamental_matrixT_reconst3d_from_fundamental_matrixReconst3dFromFundamentalMatrixReconst3dFromFundamentalMatrixreconst3d_from_fundamental_matrix (Operator)
reconst3d_from_fundamental_matrixT_reconst3d_from_fundamental_matrixReconst3dFromFundamentalMatrixReconst3dFromFundamentalMatrixreconst3d_from_fundamental_matrix
— Compute the projective 3d reconstruction of points based on the fundamental
matrix.
Signature
reconst3d_from_fundamental_matrix( : : Rows1, Cols1, Rows2, Cols2, CovRR1, CovRC1, CovCC1, CovRR2, CovRC2, CovCC2, FMatrix, CovFMat : X, Y, Z, W, CovXYZW)
Herror T_reconst3d_from_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 FMatrix, const Htuple CovFMat, Htuple* X, Htuple* Y, Htuple* Z, Htuple* W, Htuple* CovXYZW)
void Reconst3dFromFundamentalMatrix(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& FMatrix, const HTuple& CovFMat, HTuple* X, HTuple* Y, HTuple* Z, HTuple* W, HTuple* CovXYZW)
void HHomMat2D::Reconst3dFromFundamentalMatrix(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& CovFMat, HTuple* X, HTuple* Y, HTuple* Z, HTuple* W, HTuple* CovXYZW) const
void HHomMat2D::Reconst3dFromFundamentalMatrix(double Rows1, double Cols1, double Rows2, double Cols2, double CovRR1, double CovRC1, double CovCC1, double CovRR2, double CovRC2, double CovCC2, const HTuple& CovFMat, double* X, double* Y, double* Z, double* W, double* CovXYZW) const
static void HOperatorSet.Reconst3dFromFundamentalMatrix(HTuple rows1, HTuple cols1, HTuple rows2, HTuple cols2, HTuple covRR1, HTuple covRC1, HTuple covCC1, HTuple covRR2, HTuple covRC2, HTuple covCC2, HTuple FMatrix, HTuple covFMat, out HTuple x, out HTuple y, out HTuple z, out HTuple w, out HTuple covXYZW)
void HHomMat2D.Reconst3dFromFundamentalMatrix(HTuple rows1, HTuple cols1, HTuple rows2, HTuple cols2, HTuple covRR1, HTuple covRC1, HTuple covCC1, HTuple covRR2, HTuple covRC2, HTuple covCC2, HTuple covFMat, out HTuple x, out HTuple y, out HTuple z, out HTuple w, out HTuple covXYZW)
void HHomMat2D.Reconst3dFromFundamentalMatrix(double rows1, double cols1, double rows2, double cols2, double covRR1, double covRC1, double covCC1, double covRR2, double covRC2, double covCC2, HTuple covFMat, out double x, out double y, out double z, out double w, out double covXYZW)
def reconst3d_from_fundamental_matrix(rows_1: MaybeSequence[Union[float, int]], cols_1: MaybeSequence[Union[float, int]], rows_2: MaybeSequence[Union[float, int]], cols_2: MaybeSequence[Union[float, int]], cov_rr1: MaybeSequence[Union[float, int]], cov_rc1: MaybeSequence[Union[float, int]], cov_cc1: MaybeSequence[Union[float, int]], cov_rr2: MaybeSequence[Union[float, int]], cov_rc2: MaybeSequence[Union[float, int]], cov_cc2: MaybeSequence[Union[float, int]], fmatrix: Sequence[float], cov_fmat: Sequence[float]) -> Tuple[Sequence[float], Sequence[float], Sequence[float], Sequence[float], Sequence[float]]
def reconst3d_from_fundamental_matrix_s(rows_1: MaybeSequence[Union[float, int]], cols_1: MaybeSequence[Union[float, int]], rows_2: MaybeSequence[Union[float, int]], cols_2: MaybeSequence[Union[float, int]], cov_rr1: MaybeSequence[Union[float, int]], cov_rc1: MaybeSequence[Union[float, int]], cov_cc1: MaybeSequence[Union[float, int]], cov_rr2: MaybeSequence[Union[float, int]], cov_rc2: MaybeSequence[Union[float, int]], cov_cc2: MaybeSequence[Union[float, int]], fmatrix: Sequence[float], cov_fmat: Sequence[float]) -> Tuple[float, float, float, float, float]
Description
A pair of stereo images is called weakly calibrated if the fundamental
matrix, which defines the geometric relation between the two images,
is known. Given such a fundamental matrix FMatrixFMatrixFMatrixFMatrixfmatrix
and a set of corresponding points
(Rows1Rows1Rows1rows1rows_1
,Cols1Cols1Cols1cols1cols_1
) and (Rows2Rows2Rows2rows2rows_2
,Cols2Cols2Cols2cols2cols_2
) the
operator
reconst3d_from_fundamental_matrixreconst3d_from_fundamental_matrixReconst3dFromFundamentalMatrixReconst3dFromFundamentalMatrixreconst3d_from_fundamental_matrix
determines the three-dimensional
space points projecting onto these image points. This 3D reconstruction is
purely projective and the projective coordinates are returned by the
four-vector (XXXxx
,YYYyy
,ZZZzz
,WWWww
). This type of
reconstruction is also known as projective triangulation.
If additionally the covariances CovRR1CovRR1CovRR1covRR1cov_rr1
, CovRC1CovRC1CovRC1covRC1cov_rc1
,
CovCC1CovCC1CovCC1covCC1cov_cc1
and CovRR2CovRR2CovRR2covRR2cov_rr2
, CovRC2CovRC2CovRC2covRC2cov_rc2
, CovCC2CovCC2CovCC2covCC2cov_cc2
of the image points are given the covariances of the reconstructed
points CovXYZWCovXYZWCovXYZWcovXYZWcov_xyzw
are computed too.
Let n be the number of points. Then the concatenated
covariances are stored in a 16xn tuple.
The computation of the covariances is more precise if the covariance
of the fundamental matrix CovFMatCovFMatCovFMatcovFMatcov_fmat
is provided.
The operator reconst3d_from_fundamental_matrixreconst3d_from_fundamental_matrixReconst3dFromFundamentalMatrixReconst3dFromFundamentalMatrixreconst3d_from_fundamental_matrix
is typically used
after match_fundamental_matrix_ransacmatch_fundamental_matrix_ransacMatchFundamentalMatrixRansacMatchFundamentalMatrixRansacmatch_fundamental_matrix_ransac
to perform 3d
reconstruction.
This will save computational cost compared with the deployment of
vector_to_fundamental_matrixvector_to_fundamental_matrixVectorToFundamentalMatrixVectorToFundamentalMatrixvector_to_fundamental_matrix
.
reconst3d_from_fundamental_matrixreconst3d_from_fundamental_matrixReconst3dFromFundamentalMatrixReconst3dFromFundamentalMatrixreconst3d_from_fundamental_matrix
is the projective equivalent to the
Euclidean reconstruction operator intersect_lines_of_sightintersect_lines_of_sightIntersectLinesOfSightIntersectLinesOfSightintersect_lines_of_sight
.
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
Rows1Rows1Rows1rows1rows_1
(input_control) number(-array) →
HTupleMaybeSequence[Union[float, int]]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Input points in image 1 (row coordinate).
Cols1Cols1Cols1cols1cols_1
(input_control) number(-array) →
HTupleMaybeSequence[Union[float, int]]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Input points in image 1 (column coordinate).
Rows2Rows2Rows2rows2rows_2
(input_control) number(-array) →
HTupleMaybeSequence[Union[float, int]]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Input points in image 2 (row coordinate).
Cols2Cols2Cols2cols2cols_2
(input_control) number(-array) →
HTupleMaybeSequence[Union[float, int]]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Input points in image 2 (column coordinate).
CovRR1CovRR1CovRR1covRR1cov_rr1
(input_control) number(-array) →
HTupleMaybeSequence[Union[float, int]]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Row coordinate variance of the points in image 1.
Default:
[]
CovRC1CovRC1CovRC1covRC1cov_rc1
(input_control) number(-array) →
HTupleMaybeSequence[Union[float, int]]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Covariance of the points in image 1.
Default:
[]
CovCC1CovCC1CovCC1covCC1cov_cc1
(input_control) number(-array) →
HTupleMaybeSequence[Union[float, int]]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Column coordinate variance of the points in image 1.
Default:
[]
CovRR2CovRR2CovRR2covRR2cov_rr2
(input_control) number(-array) →
HTupleMaybeSequence[Union[float, int]]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Row coordinate variance of the points in image 2.
Default:
[]
CovRC2CovRC2CovRC2covRC2cov_rc2
(input_control) number(-array) →
HTupleMaybeSequence[Union[float, int]]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Covariance of the points in image 2.
Default:
[]
CovCC2CovCC2CovCC2covCC2cov_cc2
(input_control) number(-array) →
HTupleMaybeSequence[Union[float, int]]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Column coordinate variance of the points in image 2.
Default:
[]
FMatrixFMatrixFMatrixFMatrixfmatrix
(input_control) hom_mat2d →
HHomMat2D, HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)
Fundamental matrix.
CovFMatCovFMatCovFMatcovFMatcov_fmat
(input_control) real-array →
HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)
9x9 covariance matrix of the
fundamental matrix.
Default:
[]
XXXxx
(output_control) real(-array) →
HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)
X coordinates of the reconstructed points
in projective 3D space.
YYYyy
(output_control) real(-array) →
HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)
Y coordinates of the reconstructed points
in projective 3D space.
ZZZzz
(output_control) real(-array) →
HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)
Z coordinates of the reconstructed points
in projective 3D space.
WWWww
(output_control) real(-array) →
HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)
W coordinates of the reconstructed points
in projective 3D space.
CovXYZWCovXYZWCovXYZWcovXYZWcov_xyzw
(output_control) real(-array) →
HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)
Covariance matrices of the reconstructed points.
Possible Predecessors
match_fundamental_matrix_ransacmatch_fundamental_matrix_ransacMatchFundamentalMatrixRansacMatchFundamentalMatrixRansacmatch_fundamental_matrix_ransac
Alternatives
vector_to_fundamental_matrixvector_to_fundamental_matrixVectorToFundamentalMatrixVectorToFundamentalMatrixvector_to_fundamental_matrix
,
intersect_lines_of_sightintersect_lines_of_sightIntersectLinesOfSightIntersectLinesOfSightintersect_lines_of_sight
References
Richard Hartley, Andrew Zisserman: “Multiple View Geometry in
Computer Vision”; Cambridge University Press, Cambridge; 2000.
Module
3D Metrology