boofcv.alg.geo.pose
Class P3PGrunert
- java.lang.Object
-
- boofcv.alg.geo.pose.P3PGrunert
-
- All Implemented Interfaces:
- P3PLineDistance
public class P3PGrunert extends java.lang.Object implements P3PLineDistance
Solves for the 3 unknown distances between camera center and 3 observed points by finding the roots of a 4th order polynomial, This is probably the first solution to the P3P problem and first proposed in 1841 by Grunert. This implementation is based off the discussion in [1]. There are up to four solutions.
See
P3PLineDistancefor a more detailed problem description.[1] Haralick, Robert M. and Lee, Chung-Nan and Ottenberg, Karsten and Nolle, Michael, "Review and analysis of solutions of the three point perspective pose estimation problem" Int. J. Comput. Vision, 1994 vol 13, no. 13, pages 331-356
-
-
Constructor Summary
Constructors Constructor and Description P3PGrunert(PolynomialRoots rootFinder)Specifies the polynomial root finder.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method and Description static doublecomputeCosine(Point2D_F64 a, Point2D_F64 b)FastQueue<PointDistance3>getSolutions()Returns a set of solutions.static doublepow2(double a)booleanprocess(Point2D_F64 obs1, Point2D_F64 obs2, Point2D_F64 obs3, double length23, double length13, double length12)Solve for the distance between the camera's origin and each of the 3 points in 3D space.
-
-
-
Constructor Detail
-
P3PGrunert
public P3PGrunert(PolynomialRoots rootFinder)
Specifies the polynomial root finder.- Parameters:
rootFinder- Root finder for real 4th order roots.
-
-
Method Detail
-
process
public boolean process(Point2D_F64 obs1, Point2D_F64 obs2, Point2D_F64 obs3, double length23, double length13, double length12)
Description copied from interface:P3PLineDistanceSolve for the distance between the camera's origin and each of the 3 points in 3D space.- Specified by:
processin interfaceP3PLineDistance- Parameters:
obs1- Observation of P1 in normalized image coordinatesobs2- Observation of P2 in normalized image coordinatesobs3- Observation of P3 in normalized image coordinateslength23- Distance between points P2 and P3length13- Distance between points P1 and P3length12- Distance between points P1 and P2- Returns:
- true if successful or false if it failed to generate any solutions
-
pow2
public static double pow2(double a)
-
computeCosine
public static double computeCosine(Point2D_F64 a, Point2D_F64 b)
-
getSolutions
public FastQueue<PointDistance3> getSolutions()
Description copied from interface:P3PLineDistanceReturns a set of solutions. Each solution contains the distance to the respective point.- Specified by:
getSolutionsin interfaceP3PLineDistance- Returns:
- List of solutions.
-
-
DataMelt 3.0 © DataMelt by jWork.ORG