MRPT logo

mrpt::vision::CCamModel Class Reference

This class represent the camera model for Monocular SLAM. More...

#include <mrpt/vision/CCamModel.h>

Inheritance diagram for mrpt::vision::CCamModel:

mrpt::utils::CLoadableOptions

List of all members.

Public Member Functions

 CCamModel ()
 Defalult Constructor.
void loadFromConfigFile (const mrpt::utils::CConfigFileBase &source, const std::string &section)
 This method loads the options from a ".ini"-like file or memory-stored string list.
void dumpToTextStream (CStream &out) const
 This method displays clearly all the contents of the structure in textual form, sending it to a CStream.
 CCamModel (const mrpt::utils::CConfigFileBase &cfgIni)
 Constructor from a init file.
unsigned int cam_nrows () const
 Return the rows number for a image captured by the camera.
unsigned int cam_ncols () const
 Return the columns number for a image captured by the camera.
double cam_cx () const
 Return the 'x' position of the optic center over the image.
double cam_cy () const
 Return the 'y' position of the optic center over the image.
double cam_k1 () const
 Return the first parameter of radial distortion.
double cam_k2 () const
 Return the second parameter of radial distortion.
double cam_fx () const
 Return the focal distance of the camera, in 'x' PIXELS (Element (1,1) in the camera matrix).
double cam_fy () const
 Return the focal distance of the camera, in 'y' PIXELS (Element (2,2) in the camera matrix).
void jacob_undistor_fm (const mrpt::vision::TPixelCoordf &uvd, math::CMatrixDouble &J_undist)
 Jacobian for undistortion the image coordinates.
void jacob_undistor (const mrpt::vision::TPixelCoordf &p, mrpt::math::CMatrixDouble &J_undist)
 Calculate the image coordinates undistorted.
void distort_a_point (const mrpt::vision::TPixelCoordf &p, mrpt::vision::TPixelCoordf &distorted_p)
 Return the pixel position distorted by the camera.
void undistort_point (const mrpt::vision::TPixelCoordf &p, mrpt::vision::TPixelCoordf &undistorted_p)
 Return the pixel position undistorted by the camera The input values 'col' and 'row' will be replace for the new values (undistorted).
void project_3D_point (const mrpt::math::TPoint3D &p3D, mrpt::vision::TPixelCoordf &distorted_p) const
 Return the (distorted) pixel position of a 3D point given in coordinates relative to the camera (+Z pointing forward, +X to the right).
void unproject_3D_point (const mrpt::vision::TPixelCoordf &distorted_p, mrpt::math::TPoint3D &p3D) const
 Return the 3D location of a point (at a fixed distance z=1), for the given (distorted) pixel position.
void jacobian_project_with_distortion (const mrpt::math::TPoint3D &p3D, math::CMatrixDouble &dh_dy) const
 Jacobian of the projection of 3D points (with distortion), as done in project_3D_point $ \frac{\partial h}{\partial y} $, evaluated at the point p3D (read below the full explanation).
void jacobian_unproject_with_distortion (const mrpt::vision::TPixelCoordf &p, math::CMatrixDouble &dy_dh) const

Protected Attributes

vision::TCamera cam


Detailed Description

This class represent the camera model for Monocular SLAM.

For now, the only model is the pinhole model.

See also:
CMonoSlam, , the application camera-calib-gui for calibrating a camera

Definition at line 71 of file CCamModel.h.


Constructor & Destructor Documentation

mrpt::vision::CCamModel::CCamModel (  ) 

Defalult Constructor.

mrpt::vision::CCamModel::CCamModel ( const mrpt::utils::CConfigFileBase cfgIni  ) 

Constructor from a init file.


Member Function Documentation

double mrpt::vision::CCamModel::cam_cx (  )  const [inline]

Return the 'x' position of the optic center over the image.

Definition at line 105 of file CCamModel.h.

double mrpt::vision::CCamModel::cam_cy (  )  const [inline]

Return the 'y' position of the optic center over the image.

Definition at line 109 of file CCamModel.h.

double mrpt::vision::CCamModel::cam_fx (  )  const [inline]

Return the focal distance of the camera, in 'x' PIXELS (Element (1,1) in the camera matrix).

Definition at line 121 of file CCamModel.h.

double mrpt::vision::CCamModel::cam_fy (  )  const [inline]

Return the focal distance of the camera, in 'y' PIXELS (Element (2,2) in the camera matrix).

Definition at line 125 of file CCamModel.h.

double mrpt::vision::CCamModel::cam_k1 (  )  const [inline]

Return the first parameter of radial distortion.

Definition at line 113 of file CCamModel.h.

double mrpt::vision::CCamModel::cam_k2 (  )  const [inline]

Return the second parameter of radial distortion.

Definition at line 117 of file CCamModel.h.

unsigned int mrpt::vision::CCamModel::cam_ncols (  )  const [inline]

Return the columns number for a image captured by the camera.

Definition at line 101 of file CCamModel.h.

unsigned int mrpt::vision::CCamModel::cam_nrows (  )  const [inline]

Return the rows number for a image captured by the camera.

Definition at line 97 of file CCamModel.h.

void mrpt::vision::CCamModel::distort_a_point ( const mrpt::vision::TPixelCoordf p,
mrpt::vision::TPixelCoordf distorted_p 
)

Return the pixel position distorted by the camera.

void mrpt::vision::CCamModel::dumpToTextStream ( CStream out  )  const [virtual]

This method displays clearly all the contents of the structure in textual form, sending it to a CStream.

Implements mrpt::utils::CLoadableOptions.

void mrpt::vision::CCamModel::jacob_undistor ( const mrpt::vision::TPixelCoordf p,
mrpt::math::CMatrixDouble J_undist 
)

Calculate the image coordinates undistorted.

void mrpt::vision::CCamModel::jacob_undistor_fm ( const mrpt::vision::TPixelCoordf uvd,
math::CMatrixDouble J_undist 
)

Jacobian for undistortion the image coordinates.

void mrpt::vision::CCamModel::jacobian_project_with_distortion ( const mrpt::math::TPoint3D p3D,
math::CMatrixDouble dh_dy 
) const

Jacobian of the projection of 3D points (with distortion), as done in project_3D_point $ \frac{\partial h}{\partial y} $, evaluated at the point p3D (read below the full explanation).

We define $ h = (h_x ~ h_y) $ as the projected point in pixels (origin at the top-left corner), and $ y=( y_x ~ y_y ~ y_z ) $ as the 3D point in space, in coordinates relative to the camera (+Z pointing forwards).

Then this method computes the 2x3 Jacobian:

\[ \frac{\partial h}{\partial y} = \frac{\partial h}{\partial u} \frac{\partial u}{\partial y} \]

With:

\[ \frac{\partial u}{\partial y} = \left( \begin{array}{ccc} \frac{f_x}{y_z} & 0 & - y \frac{f_x}{y_z^2} \\ 0 & \frac{f_y}{y_z} & - y \frac{f_y}{y_z^2} \\ \end{array} \right) \]

where $ f_x, f_y $ is the focal length in units of pixel sizes in x and y, respectively. And, if we define:

\[ f = 1+ 2 k_1 (u_x^2+u_y^2) \]

then:

\[ \frac{\partial h}{\partial u} = \left( \begin{array}{cc} \frac{ 1+2 k_1 u_y^2 }{f^{3/2}} & -\frac{2 u_x u_y k_1 }{f^{3/2}} \\ -\frac{2 u_x u_y k_1 }{f^{3/2}} & \frac{ 1+2 k_1 u_x^2 }{f^{3/2}} \end{array} \right) \]

Note:
JLBC: Added in March, 2009. Should be equivalent to Davison's WideCamera::ProjectionJacobian
See also:
project_3D_point

void mrpt::vision::CCamModel::jacobian_unproject_with_distortion ( const mrpt::vision::TPixelCoordf p,
math::CMatrixDouble dy_dh 
) const

void mrpt::vision::CCamModel::loadFromConfigFile ( const mrpt::utils::CConfigFileBase source,
const std::string &  section 
) [virtual]

This method loads the options from a ".ini"-like file or memory-stored string list.

Implements mrpt::utils::CLoadableOptions.

void mrpt::vision::CCamModel::project_3D_point ( const mrpt::math::TPoint3D p3D,
mrpt::vision::TPixelCoordf distorted_p 
) const

Return the (distorted) pixel position of a 3D point given in coordinates relative to the camera (+Z pointing forward, +X to the right).

See also:
unproject_3D_point

void mrpt::vision::CCamModel::undistort_point ( const mrpt::vision::TPixelCoordf p,
mrpt::vision::TPixelCoordf undistorted_p 
)

Return the pixel position undistorted by the camera The input values 'col' and 'row' will be replace for the new values (undistorted).

void mrpt::vision::CCamModel::unproject_3D_point ( const mrpt::vision::TPixelCoordf distorted_p,
mrpt::math::TPoint3D p3D 
) const

Return the 3D location of a point (at a fixed distance z=1), for the given (distorted) pixel position.

See also:
project_3D_point
Note:
Of course, there is a depth ambiguity, so the returned 3D point must be considered a direction from the camera focus, or a vector, rather than a meaninful physical point.


Member Data Documentation

Definition at line 74 of file CCamModel.h.




Page generated by Doxygen 1.5.7.1 for MRPT 0.7.1 SVN: at Mon Aug 17 22:58:25 EDT 2009