Operator Reference

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