Main MRPT website > C++ reference for MRPT 1.5.6
List of all members | Public Member Functions
mrpt::vision::pnp::CPnP Class Reference

Detailed Description

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.

Performance comparison Results

Author
Chandra Mangipudi
Date
17/08/16

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...
 

Member Function Documentation

◆ dls()

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

Parameters
[in]obj_ptsObject points in Camera Co-ordinate system {C} nX3 (only 4 points used) array [p_x, p_y, p_z]
[in]img_ptsImage points in pixels nX3 (only 4 points used) array containing pixel data from camera [u, v, 1]
[in]nnumber of 2D-3D correspondences
[in]cam_intrinsicCamera Intrinsic matrix
[out]pose_matOutput pose vector 6X1, pose_mat[0:2]-> Translation, pose_mat[3:5] -> Quaternion vector component
Returns
success flag

Definition at line 45 of file pnp_algos.cpp.

References mrpt::vision::pnp::dls::compute_pose().

◆ epnp()

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

Parameters
[in]obj_ptsObject points in Camera Co-ordinate system {C} nX3 (only 4 points used) array [p_x, p_y, p_z]
[in]img_ptsImage points in pixels nX3 (only 4 points used) array containing pixel data from camera [u, v, 1]
[in]nnumber of 2D-3D correspondences
[in]cam_intrinsicCamera Intrinsic matrix
[out]pose_matOutput pose vector 6X1, pose_mat[0:2]-> Translation, pose_mat[3:5] -> Quaternion vector component
Returns
success flag

Definition at line 110 of file pnp_algos.cpp.

References mrpt::vision::pnp::epnp::compute_pose().

◆ lhm()

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

Parameters
[in]obj_ptsObject points in Camera Co-ordinate system {C} nX3 array [p_x p_y p_z]
[in]img_ptsImage points in pixels nX3 array containing pixel data from camera [u, v, 1]
[in]nnumber of 2D-3D correspondences
[in]cam_intrinsicCamera Intrinsic matrix
[out]pose_matOutput pose vector 6X1, pose_mat[0:2]-> Translation, pose_mat[3:5] -> Quaternion vector component
Returns
success flag

Definition at line 442 of file pnp_algos.cpp.

References mrpt::vision::pnp::lhm::compute_pose(), and R.

◆ p3p()

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

Parameters
[in]obj_ptsObject points in Camera Co-ordinate system {C} nX3 (only 4 points used) array [p_x, p_y, p_z]
[in]img_ptsImage points in pixels nX3 (only 4 points used) array containing pixel data from camera [u, v, 1]
[in]nnumber of 2D-3D correspondences
[in]cam_intrinsicCamera Intrinsic matrix
[out]pose_matOutput pose vector 6X1, pose_mat[0:2]-> Translation, pose_mat[3:5] -> Quaternion vector component
Returns
success flag

Definition at line 239 of file pnp_algos.cpp.

References R.

◆ posit()

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

Parameters
[in]obj_ptsObject points in Camera Co-ordinate system {C} nX3 array [p_x, p_y, p_z]
[in]img_ptsImage points in pixels nX3 array containing pixel data from camera [u, v, 1]
[in]nnumber of 2D-3D correspondences
[in]cam_intrinsicCamera Intrinsic matrix
[out]pose_matOutput pose vector 6X1, pose_mat[0:2]-> Translation, pose_mat[3:5] -> Quaternion vector component
Returns
success flag

Definition at line 390 of file pnp_algos.cpp.

References R.

◆ ppnp()

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

Parameters
[in]obj_ptsObject points in Camera Co-ordinate system {C} nX3 array [p_x, p_y, p_z]
[in]img_ptsImage points in pixels nX3 array containing pixel data from camera [u, v, 1]
[in]nnumber of 2D-3D correspondences
[in]cam_intrinsicCamera Intrinsic matrix
[out]pose_matOutput pose vector 6X1, pose_mat[0:2]-> Translation, pose_mat[3:5] -> Quaternion vector component
Returns
success flag

Definition at line 339 of file pnp_algos.cpp.

References R.

◆ rpnp()

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

Parameters
[in]obj_ptsObject points in Camera Co-ordinate system {C} nX3 (only 4 points used) array [p_x, p_y, p_z]
[in]img_ptsImage points in pixels nX3 (only 4 points used) array containing pixel data from camera [u, v, 1]
[in]nnumber of 2D-3D correspondences
[in]cam_intrinsicCamera Intrinsic matrix
[out]pose_matOutput pose vector 6X1, pose_mat[0:2]-> Translation, pose_mat[3:5] -> Quaternion vector component
Returns
success flag

Definition at line 290 of file pnp_algos.cpp.

References R.

◆ upnp()

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

Parameters
[in]obj_ptsObject points in Camera Co-ordinate system {C} nX3 (only 4 points used) array [p_x, p_y, p_z]
[in]img_ptsImage points in pixels nX3 (only 4 points used) array containing pixel data from camera [u, v, 1]
[in]nnumber of 2D-3D correspondences
[in]cam_intrinsicCamera Intrinsic matrix
[out]pose_matOutput pose vector 6X1, pose_mat[0:2]-> Translation, pose_mat[3:5] -> Quaternion vector component
Returns
success flag

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.6 Git: 4c65e8431 Tue Apr 24 08:18:17 2018 +0200 at lun oct 28 01:35:26 CET 2019