|
void | IPPE::homographyFromSquarePoints (cv::InputArray _targetPts, double halfLength, cv::OutputArray _H) |
| Closed-form solution for the homography mapping with four corner correspondences of a square (it maps source points to target points). The source points are the four corners of a zero-centred squared defined by: point 0: [-squareLength / 2.0, squareLength / 2.0] point 1: [squareLength / 2.0, squareLength / 2.0] point 2: [squareLength / 2.0, -squareLength / 2.0] point 3: [-squareLength / 2.0, -squareLength / 2.0]. More...
|
|
void | IPPE::IPPComputeRotations (double j00, double j01, double j10, double j11, double p, double q, cv::OutputArray _R1, cv::OutputArray _R2) |
| Computes the two rotation solutions from the Jacobian of a homography matrix H. For highest accuracy the Jacobian should be computed at the centroid of the point correspondences (see the IPPE paper for the explaination of this). For a point (ux,uy) on the model plane, suppose the homography H maps (ux,uy) to a point (p,q) in the image (in normalised pixel coordinates). The Jacobian matrix [J00, J01; J10,J11] is the Jacobian of the mapping evaluated at (ux,uy). More...
|
|
void | IPPE::IPPComputeTranslation (cv::InputArray _objectPoints, cv::InputArray _imgPoints, cv::InputArray _R, cv::OutputArray _t) |
| Computes the translation solution for a given rotation solution. More...
|
|
void | IPPE::IPPERot2vec (cv::InputArray _R, cv::OutputArray _r) |
| Fast conversion from a rotation matrix to a rotation vector using Rodrigues' formula. More...
|
|
int | IPPE::IPPEvalBestPose (cv::InputArray _R1, cv::InputArray _R2, cv::InputArray _t1, cv::InputArray _t2, cv::InputArray _objectPoints, cv::InputArray _undistortedPoints) |
| Determines which of the two pose solutions from IPPE has the lowest reprojection error. More...
|
|
float | IPPE::IPPEvalReprojectionError (cv::InputArray _R, cv::InputArray _t, cv::InputArray _objectPoints, cv::InputArray _undistortedPoints) |
| Determines the reprojection error of a pose solution. More...
|
|
std::vector< cv::Mat > | IPPE::solvePnP (const std::vector< cv::Point3f > &objPoints, const std::vector< cv::Point2f > &imgPoints, cv::InputArray cameraMatrix, cv::InputArray distCoeffs) |
|
std::vector< std::pair< cv::Mat, double > > | IPPE::solvePnP_ (const std::vector< cv::Point3f > &objPoints, const std::vector< cv::Point2f > &imgPoints, cv::InputArray cameraMatrix, cv::InputArray distCoeffs) |
|
void | IPPE::solvePoseOfCentredSquare (float squareLength, cv::InputArray imagePoints, cv::InputArray cameraMatrix, cv::InputArray distCoeffs, cv::OutputArray _rvec1, cv::OutputArray _tvec1, float &reprojErr1, cv::OutputArray _rvec2, cv::OutputArray _tvec2, float &reprojErr2) |
| Finds the two possible poses of a square planar object given its four corner correspondences in an image using IPPE. These poses are sorted so that the first one is the one with the lowest reprojection error. The second pose is needed if the problem is ambiguous. The problem is ambiguous when the projection of the model is close to affine, which in practice happens if it is small or viewed from a large distance. In these cases there are two pose solutions that can correctly align the correspondences (up to noise), so it is impossible to select the right one from just the reprojection error. IPPE gives you both the solutions, rather than just a single solution (which in ambiguous cases would be wrong 50% of the time). Geometrically, the two poses roughly correspond to a reflection of the model about a plane whose normal passes through the line-of-sight from the camera centre to the model's centre. For more details about these ambiguities, please refer to the IPPE paper. More...
|
|