Class EssentialNister5
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 Summary
-
Method Summary
Modifier and TypeMethodDescriptionboolean
processNormalized
(List<AssociatedPair> points, DogArray<DMatrixRMaj> solutions) Computes the essential matrix from point correspondences in normalized image coordinates.boolean
processPointing
(List<AssociatedPair3D> points, DogArray<DMatrixRMaj> solutions) Computes the essential matrix from point correspondences represented by pointing vectors
-
Constructor Details
-
EssentialNister5
public EssentialNister5()
-
-
Method Details
-
processNormalized
Computes the essential matrix from point correspondences in normalized image coordinates.- Parameters:
points
- Input: List of points correspondences in normalized image coordinatessolutions
- Output: Storage for the found solutions. .- Returns:
- true for success or false if a fault has been detected
-
processPointing
Computes the essential matrix from point correspondences represented by pointing vectors- Parameters:
points
- Input: List of points correspondences as 3D pointing vectorssolutions
- Output: Storage for the found solutions. .- Returns:
- true for success or false if a fault has been detected
-