Package boofcv.alg.geo
Class DecomposeProjectiveToMetric
java.lang.Object
boofcv.alg.geo.DecomposeProjectiveToMetric
Decomposes metric camera matrices as well as projective with known intrinsic parameters.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected DMatrixRMajprotected DMatrixRMajprotected DMatrixRMajprotected DMatrixRMajprotected DMatrixRMajprotected DMatrixRMajprotected QRDecomposition<DMatrixRMaj>doubleIndicates how far the singular values deviated from their expected value.protected SingularValueDecomposition_F64<DMatrixRMaj> -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbooleandecomposeMetricCamera(DMatrixRMaj cameraMatrix, DMatrixRMaj K, Se3_F64 worldToView) Decomposes a metric camera matrix P=K*[R|T], where A is an upper triangular camera calibration matrix, R is a rotation matrix, and T is a translation vector.booleanprojectiveToMetric(DMatrixRMaj cameraMatrix, DMatrixRMaj H, Se3_F64 worldToView, DMatrixRMaj K) Elevates a projective camera matrix into a metric one using the rectifying homography.booleanprojectiveToMetricKnownK(DMatrixRMaj cameraMatrix, DMatrixRMaj H, DMatrixRMaj K, Se3_F64 worldToView) Convert the projective camera matrix into a metric transform given the rectifying homography and a known calibration matrix.
-
Field Details
-
qr
-
Pv
-
A_p
-
A
-
svd
-
P_metric
-
P_rt
-
K_inv
-
singularError
public double singularErrorIndicates how far the singular values deviated from their expected value. zero means perfect match
-
-
Constructor Details
-
DecomposeProjectiveToMetric
public DecomposeProjectiveToMetric()
-
-
Method Details
-
projectiveToMetricKnownK
public boolean projectiveToMetricKnownK(DMatrixRMaj cameraMatrix, DMatrixRMaj H, DMatrixRMaj K, Se3_F64 worldToView) Convert the projective camera matrix into a metric transform given the rectifying homography and a known calibration matrix. This simplifies the math compared to
projectiveToMetric(org.ejml.data.DMatrixRMaj, org.ejml.data.DMatrixRMaj, georegression.struct.se.Se3_F64, org.ejml.data.DMatrixRMaj)where it needs to extract `K`.P = K*[R|T]*Hwhere H is the inverse of the rectifying homography. A goodness of fit error can be accessed usingsingularError.- Parameters:
cameraMatrix- (Input) camera matrix. 3x4H- (Input) Rectifying homography. 4x4K- (Input) Known calibration matrixworldToView- (Output) transform from world to camera view- Returns:
- true if the decomposition was successful
-
projectiveToMetric
public boolean projectiveToMetric(DMatrixRMaj cameraMatrix, DMatrixRMaj H, Se3_F64 worldToView, DMatrixRMaj K) Elevates a projective camera matrix into a metric one using the rectifying homography. Extracts calibration and Se3 pose.P'=P*H K,R,t = decompose(P')
where P is the camera matrix, H is the homography, (K,R,t) are the intrinsic calibration matrix, rotation, and translation- Parameters:
cameraMatrix- (Input) camera matrix. 3x4H- (Input) Rectifying homography. 4x4worldToView- (Output) Transform from world to camera viewK- (Output) Camera calibration matrix- See Also:
-
decomposeMetricCamera
Decomposes a metric camera matrix P=K*[R|T], where A is an upper triangular camera calibration matrix, R is a rotation matrix, and T is a translation vector. If
PerspectiveOps.createCameraMatrix(org.ejml.data.DMatrixRMaj, georegression.struct.point.Vector3D_F64, org.ejml.data.DMatrixRMaj, org.ejml.data.DMatrixRMaj)is called using the returned value you will get an equivalent camera matrix.- NOTE: There are multiple valid solutions to this problem and only one solution is returned.
- NOTE: The camera center will be on the plane at infinity.
- Parameters:
cameraMatrix- Input: Camera matrix, 3 by 4K- Output: Camera calibration matrix, 3 by 3.worldToView- Output: The rotation and translation.- Returns:
- true if decompose was successful
-