Class DecomposeEssential
Decomposed the essential matrix into a rigid body motion; rotation and translation. This is the rigid body
transformation from the first camera frame into the second camera frame. A total f four possible motions
will be found and the ambiguity can be removed by calling PositiveDepthConstraintCheck
on each hypothesis.
An essential matrix is defined as E=cross(T)*R, where cross(T) is a cross product matrix, T is translation vector, and R is a 3x3 rotation matrix.
This decomposition follows the treatment in found in page 259 of "Multiple View Geometry in Computer Vision" by Richard Hartley and Andrew Zisserman.
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionboolean
Computes the decomposition from an essential matrix.void
decompose
(DMatrixRMaj U, DMatrixRMaj V) Compute the decomposition given the SVD of E=U*S*VT.Returns the four possible solutions found in the decomposition.
-
Constructor Details
-
DecomposeEssential
public DecomposeEssential()
-
-
Method Details
-
decompose
Computes the decomposition from an essential matrix.- Parameters:
E
- essential matrix
-
decompose
Compute the decomposition given the SVD of E=U*S*VT.- Parameters:
U
- Orthogonal matrix from SVD.V
- Orthogonal matrix from SVD.
-
getSolutions
Returns the four possible solutions found in the decomposition. The returned motions go from the first into the second camera frame.
WARNING: This list is modified on each call to decompose. Create a copy of any solution that needs to be saved.
- Returns:
- Four possible solutions to the decomposition
-