Class DecomposeEssential


public class DecomposeEssential extends Object

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 Details

    • DecomposeEssential

      public DecomposeEssential()
  • Method Details

    • decompose

      public boolean decompose(DMatrixRMaj E)
      Computes the decomposition from an essential matrix.
      E - essential matrix
    • decompose

      public void decompose(DMatrixRMaj U, DMatrixRMaj V)
      Compute the decomposition given the SVD of E=U*S*VT.
      U - Orthogonal matrix from SVD.
      V - Orthogonal matrix from SVD.
    • getSolutions

      public List<Se3_F64> 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.

      Four possible solutions to the decomposition