Class EssentialNister5

java.lang.Object
boofcv.alg.geo.f.EssentialNister5

public class EssentialNister5 extends Object

Finds the essential matrix given exactly 5 corresponding points. The approach is described in details in [1] and works by linearlizing the problem then solving for the roots in a polynomial. It is considered one of the fastest and most stable solutions for the 5-point problem.

THIS IMPLEMENTATION DOES NOT CONTAIN ALL THE OPTIMIZATIONS OUTLIED IN [1]. A full implementation is quite involved. Example: SVD instead of the proposed QR factorization.

NOTE: This solution could be generalized for an arbitrary number of points. However, it would complicate the algorithm even more and isn't considered to be worth the effort.

[1] David Nister "An Efficient Solution to the Five-Point Relative Pose Problem" Pattern Analysis and Machine Intelligence, 2004

  • Constructor Details

    • EssentialNister5

      public EssentialNister5()
  • Method Details

    • processNormalized

      public boolean processNormalized(List<AssociatedPair> points, DogArray<DMatrixRMaj> solutions)
      Computes the essential matrix from point correspondences in normalized image coordinates.
      Parameters:
      points - Input: List of points correspondences in normalized image coordinates
      solutions - Output: Storage for the found solutions. .
      Returns:
      true for success or false if a fault has been detected
    • processPointing

      public boolean processPointing(List<AssociatedPair3D> points, DogArray<DMatrixRMaj> solutions)
      Computes the essential matrix from point correspondences represented by pointing vectors
      Parameters:
      points - Input: List of points correspondences as 3D pointing vectors
      solutions - Output: Storage for the found solutions. .
      Returns:
      true for success or false if a fault has been detected