This class is used for Pose estimation from a known landmark using a monocular camera.
The toolkit comprises of state of the art PnP (Perspective n Point) algorithms
The Python Bindings pnp_perf_comp.py can be used to generate performance comparison using standard tests between the different algorithms.
Definition at line 47 of file pnp_algos.h.
#include <mrpt/vision/pnp_algos.h>
Public Member Functions | |
bool | dls (const Eigen::Ref< Eigen::MatrixXd > obj_pts, const Eigen::Ref< Eigen::MatrixXd > img_pts, int n, const Eigen::Ref< Eigen::MatrixXd > cam_intrinsic, Eigen::Ref< Eigen::MatrixXd > pose_mat) |
[3] Direct Least Squares (DLS) - PnP : Algorithm formulates position as a function of rotation. More... | |
bool | epnp (const Eigen::Ref< Eigen::MatrixXd > obj_pts, const Eigen::Ref< Eigen::MatrixXd > img_pts, int n, const Eigen::Ref< Eigen::MatrixXd > cam_intrinsic, Eigen::Ref< Eigen::MatrixXd > pose_mat) |
[8] Efficient-PnP (EPnP) - Algorithm takes 4 control points based on n points and uses the control points to compute the pose More... | |
bool | upnp (const Eigen::Ref< Eigen::MatrixXd > obj_pts, const Eigen::Ref< Eigen::MatrixXd > img_pts, int n, const Eigen::Ref< Eigen::MatrixXd > cam_intrinsic, Eigen::Ref< Eigen::MatrixXd > pose_mat) |
[5] Unified-PnP (UPnP) : Algorithm to compute pose from unknown camera intrinsic matrix More... | |
bool | p3p (const Eigen::Ref< Eigen::MatrixXd > obj_pts, const Eigen::Ref< Eigen::MatrixXd > img_pts, int n, const Eigen::Ref< Eigen::MatrixXd > cam_intrinsic, Eigen::Ref< Eigen::MatrixXd > pose_mat) |
[4] P3P - A closed form solution for n=3, 2D-3D correspondences More... | |
bool | rpnp (const Eigen::Ref< Eigen::MatrixXd > obj_pts, const Eigen::Ref< Eigen::MatrixXd > img_pts, int n, const Eigen::Ref< Eigen::MatrixXd > cam_intrinsic, Eigen::Ref< Eigen::MatrixXd > pose_mat) |
[6] Robust (R-PnP)- A closed form solution with intermediate P3P computations More... | |
bool | ppnp (const Eigen::Ref< Eigen::MatrixXd > obj_pts, const Eigen::Ref< Eigen::MatrixXd > img_pts, int n, const Eigen::Ref< Eigen::MatrixXd > cam_intrinsic, Eigen::Ref< Eigen::MatrixXd > pose_mat) |
[2] Procrustes-PnP(PPnP) Algorithm : Iterative SVD based algorithm More... | |
bool | posit (const Eigen::Ref< Eigen::MatrixXd > obj_pts, const Eigen::Ref< Eigen::MatrixXd > img_pts, int n, const Eigen::Ref< Eigen::MatrixXd > cam_intrinsic, Eigen::Ref< Eigen::MatrixXd > pose_mat) |
[1] Pose from Orthogoanlity and Scaling :Iterative (POSIT) - A Geometric algorithm to compute scale and orthogonality independently More... | |
bool | lhm (const Eigen::Ref< Eigen::MatrixXd > obj_pts, const Eigen::Ref< Eigen::MatrixXd > img_pts, int n, const Eigen::Ref< Eigen::MatrixXd > cam_intrinsic, Eigen::Ref< Eigen::MatrixXd > pose_mat) |
[7] Lu-Hager-Mjolsness(LHM)-PnP algorithm : Iterative algorithm to reduce object space error More... | |
bool mrpt::vision::pnp::CPnP::dls | ( | const Eigen::Ref< Eigen::MatrixXd > | obj_pts, |
const Eigen::Ref< Eigen::MatrixXd > | img_pts, | ||
int | n, | ||
const Eigen::Ref< Eigen::MatrixXd > | cam_intrinsic, | ||
Eigen::Ref< Eigen::MatrixXd > | pose_mat | ||
) |
[3] Direct Least Squares (DLS) - PnP : Algorithm formulates position as a function of rotation.
Use Cayley's rotation theorem to represent the rotation using parameters ($s_1, s_2, s_3$). Solve the rotation using multi-variate polynomial expressions
[in] | obj_pts | Object points in Camera Co-ordinate system {C} nX3 (only 4 points used) array [p_x, p_y, p_z] |
[in] | img_pts | Image points in pixels nX3 (only 4 points used) array containing pixel data from camera [u, v, 1] |
[in] | n | number of 2D-3D correspondences |
[in] | cam_intrinsic | Camera Intrinsic matrix |
[out] | pose_mat | Output pose vector 6X1, pose_mat[0:2]-> Translation, pose_mat[3:5] -> Quaternion vector component |
Definition at line 45 of file pnp_algos.cpp.
References mrpt::vision::pnp::dls::compute_pose().
bool mrpt::vision::pnp::CPnP::epnp | ( | const Eigen::Ref< Eigen::MatrixXd > | obj_pts, |
const Eigen::Ref< Eigen::MatrixXd > | img_pts, | ||
int | n, | ||
const Eigen::Ref< Eigen::MatrixXd > | cam_intrinsic, | ||
Eigen::Ref< Eigen::MatrixXd > | pose_mat | ||
) |
[8] Efficient-PnP (EPnP) - Algorithm takes 4 control points based on n points and uses the control points to compute the pose
[in] | obj_pts | Object points in Camera Co-ordinate system {C} nX3 (only 4 points used) array [p_x, p_y, p_z] |
[in] | img_pts | Image points in pixels nX3 (only 4 points used) array containing pixel data from camera [u, v, 1] |
[in] | n | number of 2D-3D correspondences |
[in] | cam_intrinsic | Camera Intrinsic matrix |
[out] | pose_mat | Output pose vector 6X1, pose_mat[0:2]-> Translation, pose_mat[3:5] -> Quaternion vector component |
Definition at line 110 of file pnp_algos.cpp.
References mrpt::vision::pnp::epnp::compute_pose().
bool mrpt::vision::pnp::CPnP::lhm | ( | const Eigen::Ref< Eigen::MatrixXd > | obj_pts, |
const Eigen::Ref< Eigen::MatrixXd > | img_pts, | ||
int | n, | ||
const Eigen::Ref< Eigen::MatrixXd > | cam_intrinsic, | ||
Eigen::Ref< Eigen::MatrixXd > | pose_mat | ||
) |
[7] Lu-Hager-Mjolsness(LHM)-PnP algorithm : Iterative algorithm to reduce object space error
[in] | obj_pts | Object points in Camera Co-ordinate system {C} nX3 array [p_x p_y p_z] |
[in] | img_pts | Image points in pixels nX3 array containing pixel data from camera [u, v, 1] |
[in] | n | number of 2D-3D correspondences |
[in] | cam_intrinsic | Camera Intrinsic matrix |
[out] | pose_mat | Output pose vector 6X1, pose_mat[0:2]-> Translation, pose_mat[3:5] -> Quaternion vector component |
Definition at line 442 of file pnp_algos.cpp.
References mrpt::vision::pnp::lhm::compute_pose(), and R.
bool mrpt::vision::pnp::CPnP::p3p | ( | const Eigen::Ref< Eigen::MatrixXd > | obj_pts, |
const Eigen::Ref< Eigen::MatrixXd > | img_pts, | ||
int | n, | ||
const Eigen::Ref< Eigen::MatrixXd > | cam_intrinsic, | ||
Eigen::Ref< Eigen::MatrixXd > | pose_mat | ||
) |
[4] P3P - A closed form solution for n=3, 2D-3D correspondences
[in] | obj_pts | Object points in Camera Co-ordinate system {C} nX3 (only 4 points used) array [p_x, p_y, p_z] |
[in] | img_pts | Image points in pixels nX3 (only 4 points used) array containing pixel data from camera [u, v, 1] |
[in] | n | number of 2D-3D correspondences |
[in] | cam_intrinsic | Camera Intrinsic matrix |
[out] | pose_mat | Output pose vector 6X1, pose_mat[0:2]-> Translation, pose_mat[3:5] -> Quaternion vector component |
Definition at line 239 of file pnp_algos.cpp.
References R.
bool mrpt::vision::pnp::CPnP::posit | ( | const Eigen::Ref< Eigen::MatrixXd > | obj_pts, |
const Eigen::Ref< Eigen::MatrixXd > | img_pts, | ||
int | n, | ||
const Eigen::Ref< Eigen::MatrixXd > | cam_intrinsic, | ||
Eigen::Ref< Eigen::MatrixXd > | pose_mat | ||
) |
[1] Pose from Orthogoanlity and Scaling :Iterative (POSIT) - A Geometric algorithm to compute scale and orthogonality independently
[in] | obj_pts | Object points in Camera Co-ordinate system {C} nX3 array [p_x, p_y, p_z] |
[in] | img_pts | Image points in pixels nX3 array containing pixel data from camera [u, v, 1] |
[in] | n | number of 2D-3D correspondences |
[in] | cam_intrinsic | Camera Intrinsic matrix |
[out] | pose_mat | Output pose vector 6X1, pose_mat[0:2]-> Translation, pose_mat[3:5] -> Quaternion vector component |
Definition at line 390 of file pnp_algos.cpp.
References R.
bool mrpt::vision::pnp::CPnP::ppnp | ( | const Eigen::Ref< Eigen::MatrixXd > | obj_pts, |
const Eigen::Ref< Eigen::MatrixXd > | img_pts, | ||
int | n, | ||
const Eigen::Ref< Eigen::MatrixXd > | cam_intrinsic, | ||
Eigen::Ref< Eigen::MatrixXd > | pose_mat | ||
) |
[2] Procrustes-PnP(PPnP) Algorithm : Iterative SVD based algorithm
[in] | obj_pts | Object points in Camera Co-ordinate system {C} nX3 array [p_x, p_y, p_z] |
[in] | img_pts | Image points in pixels nX3 array containing pixel data from camera [u, v, 1] |
[in] | n | number of 2D-3D correspondences |
[in] | cam_intrinsic | Camera Intrinsic matrix |
[out] | pose_mat | Output pose vector 6X1, pose_mat[0:2]-> Translation, pose_mat[3:5] -> Quaternion vector component |
Definition at line 339 of file pnp_algos.cpp.
References R.
bool mrpt::vision::pnp::CPnP::rpnp | ( | const Eigen::Ref< Eigen::MatrixXd > | obj_pts, |
const Eigen::Ref< Eigen::MatrixXd > | img_pts, | ||
int | n, | ||
const Eigen::Ref< Eigen::MatrixXd > | cam_intrinsic, | ||
Eigen::Ref< Eigen::MatrixXd > | pose_mat | ||
) |
[6] Robust (R-PnP)- A closed form solution with intermediate P3P computations
[in] | obj_pts | Object points in Camera Co-ordinate system {C} nX3 (only 4 points used) array [p_x, p_y, p_z] |
[in] | img_pts | Image points in pixels nX3 (only 4 points used) array containing pixel data from camera [u, v, 1] |
[in] | n | number of 2D-3D correspondences |
[in] | cam_intrinsic | Camera Intrinsic matrix |
[out] | pose_mat | Output pose vector 6X1, pose_mat[0:2]-> Translation, pose_mat[3:5] -> Quaternion vector component |
Definition at line 290 of file pnp_algos.cpp.
References R.
bool mrpt::vision::pnp::CPnP::upnp | ( | const Eigen::Ref< Eigen::MatrixXd > | obj_pts, |
const Eigen::Ref< Eigen::MatrixXd > | img_pts, | ||
int | n, | ||
const Eigen::Ref< Eigen::MatrixXd > | cam_intrinsic, | ||
Eigen::Ref< Eigen::MatrixXd > | pose_mat | ||
) |
[5] Unified-PnP (UPnP) : Algorithm to compute pose from unknown camera intrinsic matrix
[in] | obj_pts | Object points in Camera Co-ordinate system {C} nX3 (only 4 points used) array [p_x, p_y, p_z] |
[in] | img_pts | Image points in pixels nX3 (only 4 points used) array containing pixel data from camera [u, v, 1] |
[in] | n | number of 2D-3D correspondences |
[in] | cam_intrinsic | Camera Intrinsic matrix |
[out] | pose_mat | Output pose vector 6X1, pose_mat[0:2]-> Translation, pose_mat[3:5] -> Quaternion vector component |
Definition at line 174 of file pnp_algos.cpp.
References mrpt::vision::pnp::upnp::compute_pose().
Page generated by Doxygen 1.8.14 for MRPT 1.5.7 Git: 5902e14cc Wed Apr 24 15:04:01 2019 +0200 at lun oct 28 01:39:17 CET 2019 |