<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> <title>mrpt::vision::CCamModel Class Reference</title> <link href="doxygen.css" rel="stylesheet" type="text/css"> <link href="tabs.css" rel="stylesheet" type="text/css"> </head><body> <div align="left"><a href="http://www.mrpt.org/">Main MRPT website</a> > <b>C++ reference</b> </div> <div align="right"> <a href="index.html"><img border="0" src="mrpt_logo.png" alt="MRPT logo"></a> </div> <!-- Generated by Doxygen 1.7.5 --> <script type="text/javascript"> var searchBox = new SearchBox("searchBox", "search",false,'Search'); </script> <div id="navrow1" class="tabs"> <ul class="tablist"> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="pages.html"><span>Related Pages</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li> <li><a href="namespaces.html"><span>Namespaces</span></a></li> <li class="current"><a href="annotated.html"><span>Classes</span></a></li> <li><a href="files.html"><span>Files</span></a></li> <li> <div id="MSearchBox" class="MSearchBoxInactive"> <div class="left"> <form id="FSearchBox" action="search.php" method="get"> <img id="MSearchSelect" src="search/mag.png" alt=""/> <input type="text" id="MSearchField" name="query" value="Search" size="20" accesskey="S" onfocus="searchBox.OnSearchFieldFocus(true)" onblur="searchBox.OnSearchFieldFocus(false)"/> </form> </div><div class="right"></div> </div> </li> </ul> </div> <div id="navrow2" class="tabs2"> <ul class="tablist"> <li><a href="annotated.html"><span>Class List</span></a></li> <li><a href="classes.html"><span>Class Index</span></a></li> <li><a href="inherits.html"><span>Class Hierarchy</span></a></li> <li><a href="functions.html"><span>Class Members</span></a></li> </ul> </div> <div id="nav-path" class="navpath"> <ul> <li class="navelem"><a class="el" href="namespacemrpt.html">mrpt</a> </li> <li class="navelem"><a class="el" href="namespacemrpt_1_1vision.html">vision</a> </li> <li class="navelem"><a class="el" href="classmrpt_1_1vision_1_1_c_cam_model.html">CCamModel</a> </li> </ul> </div> </div> <div class="header"> <div class="summary"> <a href="#nested-classes">Classes</a> | <a href="#pub-methods">Public Member Functions</a> | <a href="#pub-attribs">Public Attributes</a> | <a href="#pro-static-methods">Static Protected Member Functions</a> | <a href="#pri-methods">Private Member Functions</a> </div> <div class="headertitle"> <div class="title">mrpt::vision::CCamModel Class Reference<div class="ingroups"><a class="el" href="group__mrpt__vision__grp.html">[mrpt-vision]</a></div></div> </div> </div> <div class="contents"> <!-- doxytag: class="mrpt::vision::CCamModel" --><!-- doxytag: inherits="mrpt::utils::CLoadableOptions" --><hr/><a name="details" id="details"></a><h2>Detailed Description</h2> <div class="textblock"><p>This class represent a pinhole camera model for Monocular SLAM and implements some associated Jacobians. </p> <p>The camera parameters are accessible in the public member <a class="el" href="classmrpt_1_1vision_1_1_c_cam_model.html#a6816942b827143fc7de3b7dff2cabe50" title="The parameters of a camera.">CCamModel::cam</a></p> <ul> <li>Versions:<ul> <li>First version: By Antonio J. Ortiz de Galistea.</li> <li>2009-2010: Rewritten by various authors.</li> </ul> </li> </ul> <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classmrpt_1_1utils_1_1_t_camera.html" title="Structure to hold the parameters of a pinhole camera model.">mrpt::utils::TCamera</a>, CMonoSlam, the application <a href="http://www.mrpt.org/Application:camera-calib-gui">camera-calib-gui</a> for calibrating a camera </dd></dl> </div> <p><code>#include <<a class="el" href="_c_cam_model_8h_source.html">mrpt/vision/CCamModel.h</a>></code></p> <div class="dynheader"> Inheritance diagram for mrpt::vision::CCamModel:</div> <div class="dyncontent"> <div class="center"><img src="classmrpt_1_1vision_1_1_c_cam_model__inherit__graph.png" border="0" usemap="#mrpt_1_1vision_1_1_c_cam_model_inherit__map" alt="Inheritance graph"/></div> <map name="mrpt_1_1vision_1_1_c_cam_model_inherit__map" id="mrpt_1_1vision_1_1_c_cam_model_inherit__map"> <area shape="rect" id="node2" href="classmrpt_1_1utils_1_1_c_loadable_options.html" title="This is a virtual base class for sets of options than can be loaded from and/or saved to configuratio..." alt="" coords="5,5,200,32"/></map> <center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div> <p><a href="classmrpt_1_1vision_1_1_c_cam_model-members.html">List of all members.</a></p> <table class="memberdecls"> <tr><td colspan="2"><h2><a name="nested-classes"></a> Classes</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structmrpt_1_1vision_1_1_c_cam_model_1_1_camera_temp_variables.html">CameraTempVariables</a></td></tr> <tr><td colspan="2"><h2><a name="pub-methods"></a> Public Member Functions</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1vision_1_1_c_cam_model.html#af68c1ffa23618aa33c8d2c1800730ba5">CCamModel</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Default Constructor. <a href="#af68c1ffa23618aa33c8d2c1800730ba5"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1vision_1_1_c_cam_model.html#a4177ba64df53e6c3d8885d9a51a7aa29">loadFromConfigFile</a> (const <a class="el" href="classmrpt_1_1utils_1_1_c_config_file_base.html">mrpt::utils::CConfigFileBase</a> &source, const <a class="el" href="classstd_1_1string.html">std::string</a> &section)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">This method loads the options from a ".ini"-like file or memory-stored string list. <a href="#a4177ba64df53e6c3d8885d9a51a7aa29"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1vision_1_1_c_cam_model.html#a5705f7e872caceb4c63a7defb8cd1f84">dumpToTextStream</a> (<a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">CStream</a> &out) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">This method displays clearly all the contents of the structure in textual form, sending it to a CStream. <a href="#a5705f7e872caceb4c63a7defb8cd1f84"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1vision_1_1_c_cam_model.html#a4b43221c7de4e33a1379b5a7d3dcee23">CCamModel</a> (const <a class="el" href="classmrpt_1_1utils_1_1_c_config_file_base.html">mrpt::utils::CConfigFileBase</a> &cfgIni)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Constructor from a ini file. <a href="#a4b43221c7de4e33a1379b5a7d3dcee23"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1vision_1_1_c_cam_model.html#ad2d7e966997489f7580f876f4d1d962e">jacob_undistor_fm</a> (const <a class="el" href="structmrpt_1_1utils_1_1_t_pixel_coordf.html">mrpt::vision::TPixelCoordf</a> &uvd, <a class="el" href="namespacemrpt_1_1math.html#a3814c2b868f059d6a7ab0d8ecd2311d6">math::CMatrixDouble</a> &J_undist)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Jacobian for undistortion the image coordinates. <a href="#ad2d7e966997489f7580f876f4d1d962e"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1vision_1_1_c_cam_model.html#a5af4fe63a215e0d2b72b44c626b36f53">jacob_undistor</a> (const <a class="el" href="structmrpt_1_1utils_1_1_t_pixel_coordf.html">mrpt::vision::TPixelCoordf</a> &p, <a class="el" href="namespacemrpt_1_1math.html#a3814c2b868f059d6a7ab0d8ecd2311d6">mrpt::math::CMatrixDouble</a> &J_undist)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the image coordinates undistorted. <a href="#a5af4fe63a215e0d2b72b44c626b36f53"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1vision_1_1_c_cam_model.html#af5900ebe4ef2984ef125b200606be18e">distort_a_point</a> (const <a class="el" href="structmrpt_1_1utils_1_1_t_pixel_coordf.html">mrpt::vision::TPixelCoordf</a> &p, <a class="el" href="structmrpt_1_1utils_1_1_t_pixel_coordf.html">mrpt::vision::TPixelCoordf</a> &distorted_p)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Return the pixel position distorted by the camera. <a href="#af5900ebe4ef2984ef125b200606be18e"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1vision_1_1_c_cam_model.html#a59215f0b898787f5c67986577ae9558a">undistort_point</a> (const <a class="el" href="structmrpt_1_1utils_1_1_t_pixel_coordf.html">mrpt::vision::TPixelCoordf</a> &p, <a class="el" href="structmrpt_1_1utils_1_1_t_pixel_coordf.html">mrpt::vision::TPixelCoordf</a> &undistorted_p)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Return the pixel position undistorted by the camera The input values 'col' and 'row' will be replace for the new values (undistorted) <a href="#a59215f0b898787f5c67986577ae9558a"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1vision_1_1_c_cam_model.html#a7a82b9e52ad8b9fbc1178758d920e4a6">project_3D_point</a> (const <a class="el" href="structmrpt_1_1math_1_1_t_point3_d.html">mrpt::math::TPoint3D</a> &p3D, <a class="el" href="structmrpt_1_1utils_1_1_t_pixel_coordf.html">mrpt::vision::TPixelCoordf</a> &distorted_p) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Return the (distorted) pixel position of a 3D point given in coordinates relative to the camera (+Z pointing forward, +X to the right) <a href="#a7a82b9e52ad8b9fbc1178758d920e4a6"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1vision_1_1_c_cam_model.html#a600b6858566dbc595cebf08ebf59489a">unproject_3D_point</a> (const <a class="el" href="structmrpt_1_1utils_1_1_t_pixel_coordf.html">mrpt::vision::TPixelCoordf</a> &distorted_p, <a class="el" href="structmrpt_1_1math_1_1_t_point3_d.html">mrpt::math::TPoint3D</a> &p3D) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Return the 3D location of a point (at a fixed distance z=1), for the given (distorted) pixel position. <a href="#a600b6858566dbc595cebf08ebf59489a"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1vision_1_1_c_cam_model.html#a346237d88bbed9b33993e2ff4cb5b46d">jacobian_project_with_distortion</a> (const <a class="el" href="structmrpt_1_1math_1_1_t_point3_d.html">mrpt::math::TPoint3D</a> &p3D, <a class="el" href="namespacemrpt_1_1math.html#a3814c2b868f059d6a7ab0d8ecd2311d6">math::CMatrixDouble</a> &dh_dy) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Jacobian of the projection of 3D points (with distortion), as done in project_3D_point <img class="formulaInl" alt="$ \frac{\partial h}{\partial y} $" src="form_117.png"/>, evaluated at the point p3D (read below the full explanation) <a href="#a346237d88bbed9b33993e2ff4cb5b46d"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1vision_1_1_c_cam_model.html#a14710adbc4b2856ff80e5b0207715de1">jacobian_unproject_with_distortion</a> (const <a class="el" href="structmrpt_1_1utils_1_1_t_pixel_coordf.html">mrpt::vision::TPixelCoordf</a> &p, <a class="el" href="namespacemrpt_1_1math.html#a3814c2b868f059d6a7ab0d8ecd2311d6">math::CMatrixDouble</a> &dy_dh) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Jacobian of the unprojection of a pixel (with distortion) back into a 3D point, as done in unproject_3D_point <img class="formulaInl" alt="$ \frac{\partial y}{\partial h} $" src="form_125.png"/>, evaluated at the pixel p. <a href="#a14710adbc4b2856ff80e5b0207715de1"></a><br/></td></tr> <tr><td class="memTemplParams" colspan="2">template<typename T , typename POINT > </td></tr> <tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classmrpt_1_1vision_1_1_c_cam_model.html#ab914ab4628377de3c857634a7136b206">getTemporaryVariablesForTransform</a> (const POINT &p, <a class="el" href="structmrpt_1_1vision_1_1_c_cam_model_1_1_camera_temp_variables.html">CameraTempVariables</a>< T > &v) const </td></tr> <tr><td class="memTemplParams" colspan="2">template<typename T , typename POINT , typename PIXEL > </td></tr> <tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classmrpt_1_1vision_1_1_c_cam_model.html#a07aa2cb171327074ad3cb76582a73754">getFullProjection</a> (const POINT &pIn, PIXEL &pOut) const </td></tr> <tr><td class="memTemplParams" colspan="2">template<typename T , typename PIXEL > </td></tr> <tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classmrpt_1_1vision_1_1_c_cam_model.html#aa441286f9758c0a034d23c7078a4a777">getFullProjectionT</a> (const <a class="el" href="structmrpt_1_1vision_1_1_c_cam_model_1_1_camera_temp_variables.html">CameraTempVariables</a>< T > &tmp, PIXEL &pOut) const </td></tr> <tr><td class="memTemplParams" colspan="2">template<typename T , typename POINT , typename MATRIX > </td></tr> <tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classmrpt_1_1vision_1_1_c_cam_model.html#a1bc967a04b265249c56070b178ea9b15">getFullJacobian</a> (const POINT &pIn, MATRIX &mOut) const </td></tr> <tr><td class="memTemplParams" colspan="2">template<typename T , typename POINT , typename MATRIX > </td></tr> <tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classmrpt_1_1vision_1_1_c_cam_model.html#a842faddd778d61f88c1f6f8bf684e88e">getFullJacobianT</a> (const POINT &pIn, const <a class="el" href="structmrpt_1_1vision_1_1_c_cam_model_1_1_camera_temp_variables.html">CameraTempVariables</a>< T > &tmp, MATRIX &mOut) const </td></tr> <tr><td class="memTemplParams" colspan="2">template<typename POINTIN , typename POINTOUT , typename MAT22 > </td></tr> <tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classmrpt_1_1vision_1_1_c_cam_model.html#aa7689e25c2dc657a50d73a7fad413d0d">getFullInverseModelWithJacobian</a> (const POINTIN &pIn, POINTOUT &pOut, MAT22 &jOut) const </td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1utils_1_1_c_loadable_options.html#a1ce8e0f241fe85f78095e23d37b2b635">loadFromConfigFileName</a> (const <a class="el" href="classstd_1_1string.html">std::string</a> &config_file, const <a class="el" href="classstd_1_1string.html">std::string</a> &section)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Behaves like loadFromConfigFile, but you can pass directly a file name and a temporary <a class="el" href="classmrpt_1_1utils_1_1_c_config_file.html" title="This class allows loading and storing values and vectors of different types from ".ini" files easily.">CConfigFile</a> object will be created automatically to load the file. <a href="#a1ce8e0f241fe85f78095e23d37b2b635"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1utils_1_1_c_loadable_options.html#a913c3433af4564cedeb25e24ace1cf28">saveToConfigFile</a> (<a class="el" href="classmrpt_1_1utils_1_1_c_config_file_base.html">mrpt::utils::CConfigFileBase</a> &source, const <a class="el" href="classstd_1_1string.html">std::string</a> &section)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">This method saves the options to a ".ini"-like file or memory-stored string list. <a href="#a913c3433af4564cedeb25e24ace1cf28"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1utils_1_1_c_loadable_options.html#aa059b0160ed9881c284bcea9a42c51f8">saveToConfigFileName</a> (const <a class="el" href="classstd_1_1string.html">std::string</a> &config_file, const <a class="el" href="classstd_1_1string.html">std::string</a> &section)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Behaves like saveToConfigFile, but you can pass directly a file name and a temporary <a class="el" href="classmrpt_1_1utils_1_1_c_config_file.html" title="This class allows loading and storing values and vectors of different types from ".ini" files easily.">CConfigFile</a> object will be created automatically to save the file. <a href="#aa059b0160ed9881c284bcea9a42c51f8"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1utils_1_1_c_loadable_options.html#a37c6d8d52b1d9bdacaf073e6910bdd7f">dumpToConsole</a> () const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">This method must display clearly all the contents of the structure in textual form, sending it to a <a class="el" href="classmrpt_1_1utils_1_1_c_stream.html" title="This base class is used to provide a unified interface to files,memory buffers,..Please see the deriv...">CStream</a>. <a href="#a37c6d8d52b1d9bdacaf073e6910bdd7f"></a><br/></td></tr> <tr><td colspan="2"><h2><a name="pub-attribs"></a> Public Attributes</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmrpt_1_1utils_1_1_t_camera.html">mrpt::utils::TCamera</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1vision_1_1_c_cam_model.html#a6816942b827143fc7de3b7dff2cabe50">cam</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">The parameters of a camera. <a href="#a6816942b827143fc7de3b7dff2cabe50"></a><br/></td></tr> <tr><td colspan="2"><h2><a name="pro-static-methods"></a> Static Protected Member Functions</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1utils_1_1_c_loadable_options.html#a886e9903515fdb12d4f052a7fd582bb6">dumpVar_int</a> (<a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">CStream</a> &out, const char *varName, int v)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Used to print variable info from dumpToTextStream with the macro LOADABLEOPTS_DUMP_VAR. <a href="#a886e9903515fdb12d4f052a7fd582bb6"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1utils_1_1_c_loadable_options.html#a18862f2d04fc18dd2c2662331156189f">dumpVar_float</a> (<a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">CStream</a> &out, const char *varName, float v)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1utils_1_1_c_loadable_options.html#ac4ee21d250d3b3574790ceac343a27a9">dumpVar_double</a> (<a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">CStream</a> &out, const char *varName, double v)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1utils_1_1_c_loadable_options.html#a63837b199914f55d8f0bd950f598fe14">dumpVar_bool</a> (<a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">CStream</a> &out, const char *varName, bool v)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1utils_1_1_c_loadable_options.html#a60b1c6599953f1d593e6a7b0421e5a77">dumpVar_string</a> (<a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">CStream</a> &out, const char *varName, const <a class="el" href="classstd_1_1string.html">std::string</a> &v)</td></tr> <tr><td colspan="2"><h2><a name="pri-methods"></a> Private Member Functions</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmrpt_1_1math_1_1_c_matrix_fixed_numeric.html">CMatrixFixedNumeric</a>< double, 2, 2 > </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1vision_1_1_c_cam_model.html#acc285978efc02edd77a5571f50cf21cb">firstInverseJacobian</a> () const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmrpt_1_1math_1_1_c_matrix_fixed_numeric.html">CMatrixFixedNumeric</a>< double, 4, 2 > </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1vision_1_1_c_cam_model.html#aca310dda5e61a8a8a46bcf4ff32d8dda">secondInverseJacobian</a> () const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmrpt_1_1math_1_1_c_matrix_fixed_numeric.html">CMatrixFixedNumeric</a>< double, 3, 4 > </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1vision_1_1_c_cam_model.html#a3d472fbd80a0dff3c8a2f1e6052dc98c">thirdInverseJacobian</a> () const </td></tr> </table> <hr/><h2>Constructor & Destructor Documentation</h2> <a class="anchor" id="af68c1ffa23618aa33c8d2c1800730ba5"></a><!-- doxytag: member="mrpt::vision::CCamModel::CCamModel" ref="af68c1ffa23618aa33c8d2c1800730ba5" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">mrpt::vision::CCamModel::CCamModel </td> <td>(</td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Default Constructor. </p> </div> </div> <a class="anchor" id="a4b43221c7de4e33a1379b5a7d3dcee23"></a><!-- doxytag: member="mrpt::vision::CCamModel::CCamModel" ref="a4b43221c7de4e33a1379b5a7d3dcee23" args="(const mrpt::utils::CConfigFileBase &cfgIni)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">mrpt::vision::CCamModel::CCamModel </td> <td>(</td> <td class="paramtype">const <a class="el" href="classmrpt_1_1utils_1_1_c_config_file_base.html">mrpt::utils::CConfigFileBase</a> & </td> <td class="paramname"><em>cfgIni</em></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Constructor from a ini file. </p> </div> </div> <hr/><h2>Member Function Documentation</h2> <a class="anchor" id="af5900ebe4ef2984ef125b200606be18e"></a><!-- doxytag: member="mrpt::vision::CCamModel::distort_a_point" ref="af5900ebe4ef2984ef125b200606be18e" args="(const mrpt::vision::TPixelCoordf &p, mrpt::vision::TPixelCoordf &distorted_p)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void mrpt::vision::CCamModel::distort_a_point </td> <td>(</td> <td class="paramtype">const <a class="el" href="structmrpt_1_1utils_1_1_t_pixel_coordf.html">mrpt::vision::TPixelCoordf</a> & </td> <td class="paramname"><em>p</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="structmrpt_1_1utils_1_1_t_pixel_coordf.html">mrpt::vision::TPixelCoordf</a> & </td> <td class="paramname"><em>distorted_p</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Return the pixel position distorted by the camera. </p> </div> </div> <a class="anchor" id="a37c6d8d52b1d9bdacaf073e6910bdd7f"></a><!-- doxytag: member="mrpt::vision::CCamModel::dumpToConsole" ref="a37c6d8d52b1d9bdacaf073e6910bdd7f" args="() const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void mrpt::utils::CLoadableOptions::dumpToConsole </td> <td>(</td> <td class="paramname"></td><td>)</td> <td> const<code> [inherited]</code></td> </tr> </table> </div> <div class="memdoc"> <p>This method must display clearly all the contents of the structure in textual form, sending it to a <a class="el" href="classmrpt_1_1utils_1_1_c_stream.html" title="This base class is used to provide a unified interface to files,memory buffers,..Please see the deriv...">CStream</a>. </p> </div> </div> <a class="anchor" id="a5705f7e872caceb4c63a7defb8cd1f84"></a><!-- doxytag: member="mrpt::vision::CCamModel::dumpToTextStream" ref="a5705f7e872caceb4c63a7defb8cd1f84" args="(CStream &out) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void mrpt::vision::CCamModel::dumpToTextStream </td> <td>(</td> <td class="paramtype"><a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">CStream</a> & </td> <td class="paramname"><em>out</em></td><td>)</td> <td> const<code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>This method displays clearly all the contents of the structure in textual form, sending it to a CStream. </p> <p>Implements <a class="el" href="classmrpt_1_1utils_1_1_c_loadable_options.html#adbe314b74deedfe953290ebf48750883">mrpt::utils::CLoadableOptions</a>.</p> </div> </div> <a class="anchor" id="a63837b199914f55d8f0bd950f598fe14"></a><!-- doxytag: member="mrpt::vision::CCamModel::dumpVar_bool" ref="a63837b199914f55d8f0bd950f598fe14" args="(CStream &out, const char *varName, bool v)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static void mrpt::utils::CLoadableOptions::dumpVar_bool </td> <td>(</td> <td class="paramtype"><a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">CStream</a> & </td> <td class="paramname"><em>out</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"><em>varName</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">bool </td> <td class="paramname"><em>v</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [static, protected, inherited]</code></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="ac4ee21d250d3b3574790ceac343a27a9"></a><!-- doxytag: member="mrpt::vision::CCamModel::dumpVar_double" ref="ac4ee21d250d3b3574790ceac343a27a9" args="(CStream &out, const char *varName, double v)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static void mrpt::utils::CLoadableOptions::dumpVar_double </td> <td>(</td> <td class="paramtype"><a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">CStream</a> & </td> <td class="paramname"><em>out</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"><em>varName</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">double </td> <td class="paramname"><em>v</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [static, protected, inherited]</code></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="a18862f2d04fc18dd2c2662331156189f"></a><!-- doxytag: member="mrpt::vision::CCamModel::dumpVar_float" ref="a18862f2d04fc18dd2c2662331156189f" args="(CStream &out, const char *varName, float v)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static void mrpt::utils::CLoadableOptions::dumpVar_float </td> <td>(</td> <td class="paramtype"><a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">CStream</a> & </td> <td class="paramname"><em>out</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"><em>varName</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">float </td> <td class="paramname"><em>v</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [static, protected, inherited]</code></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="a886e9903515fdb12d4f052a7fd582bb6"></a><!-- doxytag: member="mrpt::vision::CCamModel::dumpVar_int" ref="a886e9903515fdb12d4f052a7fd582bb6" args="(CStream &out, const char *varName, int v)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static void mrpt::utils::CLoadableOptions::dumpVar_int </td> <td>(</td> <td class="paramtype"><a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">CStream</a> & </td> <td class="paramname"><em>out</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"><em>varName</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"><em>v</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [static, protected, inherited]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Used to print variable info from dumpToTextStream with the macro LOADABLEOPTS_DUMP_VAR. </p> </div> </div> <a class="anchor" id="a60b1c6599953f1d593e6a7b0421e5a77"></a><!-- doxytag: member="mrpt::vision::CCamModel::dumpVar_string" ref="a60b1c6599953f1d593e6a7b0421e5a77" args="(CStream &out, const char *varName, const std::string &v)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static void mrpt::utils::CLoadableOptions::dumpVar_string </td> <td>(</td> <td class="paramtype"><a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">CStream</a> & </td> <td class="paramname"><em>out</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"><em>varName</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classstd_1_1string.html">std::string</a> & </td> <td class="paramname"><em>v</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [static, protected, inherited]</code></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="acc285978efc02edd77a5571f50cf21cb"></a><!-- doxytag: member="mrpt::vision::CCamModel::firstInverseJacobian" ref="acc285978efc02edd77a5571f50cf21cb" args="() const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classmrpt_1_1math_1_1_c_matrix_fixed_numeric.html">CMatrixFixedNumeric</a><double,2,2> mrpt::vision::CCamModel::firstInverseJacobian </td> <td>(</td> <td class="paramname"></td><td>)</td> <td> const<code> [inline, private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="_c_cam_model_8h_source.html#l00224">224</a> of file <a class="el" href="_c_cam_model_8h_source.html">CCamModel.h</a>.</p> </div> </div> <a class="anchor" id="aa7689e25c2dc657a50d73a7fad413d0d"></a><!-- doxytag: member="mrpt::vision::CCamModel::getFullInverseModelWithJacobian" ref="aa7689e25c2dc657a50d73a7fad413d0d" args="(const POINTIN &pIn, POINTOUT &pOut, MAT22 &jOut) const " --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename POINTIN , typename POINTOUT , typename MAT22 > </div> <table class="memname"> <tr> <td class="memname">void mrpt::vision::CCamModel::getFullInverseModelWithJacobian </td> <td>(</td> <td class="paramtype">const POINTIN & </td> <td class="paramname"><em>pIn</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">POINTOUT & </td> <td class="paramname"><em>pOut</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">MAT22 & </td> <td class="paramname"><em>jOut</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td> const<code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="_c_cam_model_8h_source.html#l00251">251</a> of file <a class="el" href="_c_cam_model_8h_source.html">CCamModel.h</a>.</p> <p>References <a class="el" href="bits_8h_source.html#l00161">mrpt::utils::square()</a>.</p> </div> </div> <a class="anchor" id="a1bc967a04b265249c56070b178ea9b15"></a><!-- doxytag: member="mrpt::vision::CCamModel::getFullJacobian" ref="a1bc967a04b265249c56070b178ea9b15" args="(const POINT &pIn, MATRIX &mOut) const " --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename T , typename POINT , typename MATRIX > </div> <table class="memname"> <tr> <td class="memname">void mrpt::vision::CCamModel::getFullJacobian </td> <td>(</td> <td class="paramtype">const POINT & </td> <td class="paramname"><em>pIn</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">MATRIX & </td> <td class="paramname"><em>mOut</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td> const<code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="_c_cam_model_8h_source.html#l00179">179</a> of file <a class="el" href="_c_cam_model_8h_source.html">CCamModel.h</a>.</p> </div> </div> <a class="anchor" id="a842faddd778d61f88c1f6f8bf684e88e"></a><!-- doxytag: member="mrpt::vision::CCamModel::getFullJacobianT" ref="a842faddd778d61f88c1f6f8bf684e88e" args="(const POINT &pIn, const CameraTempVariables< T > &tmp, MATRIX &mOut) const " --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename T , typename POINT , typename MATRIX > </div> <table class="memname"> <tr> <td class="memname">void mrpt::vision::CCamModel::getFullJacobianT </td> <td>(</td> <td class="paramtype">const POINT & </td> <td class="paramname"><em>pIn</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="structmrpt_1_1vision_1_1_c_cam_model_1_1_camera_temp_variables.html">CameraTempVariables</a>< T > & </td> <td class="paramname"><em>tmp</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">MATRIX & </td> <td class="paramname"><em>mOut</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td> const<code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="_c_cam_model_8h_source.html#l00185">185</a> of file <a class="el" href="_c_cam_model_8h_source.html">CCamModel.h</a>.</p> <p>References <a class="el" href="bits_8h_source.html#l00161">mrpt::utils::square()</a>, <a class="el" href="_c_cam_model_8h_source.html#l00152">mrpt::vision::CCamModel::CameraTempVariables::R</a>, <a class="el" href="_c_cam_model_8h_source.html#l00150">mrpt::vision::CCamModel::CameraTempVariables::x_</a>, <a class="el" href="_c_cam_model_8h_source.html#l00150">mrpt::vision::CCamModel::CameraTempVariables::y_</a>, and <a class="el" href="_c_cam_model_8h_source.html#l00153">mrpt::vision::CCamModel::CameraTempVariables::K</a>.</p> </div> </div> <a class="anchor" id="a07aa2cb171327074ad3cb76582a73754"></a><!-- doxytag: member="mrpt::vision::CCamModel::getFullProjection" ref="a07aa2cb171327074ad3cb76582a73754" args="(const POINT &pIn, PIXEL &pOut) const " --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename T , typename POINT , typename PIXEL > </div> <table class="memname"> <tr> <td class="memname">void mrpt::vision::CCamModel::getFullProjection </td> <td>(</td> <td class="paramtype">const POINT & </td> <td class="paramname"><em>pIn</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">PIXEL & </td> <td class="paramname"><em>pOut</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td> const<code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="_c_cam_model_8h_source.html#l00168">168</a> of file <a class="el" href="_c_cam_model_8h_source.html">CCamModel.h</a>.</p> </div> </div> <a class="anchor" id="aa441286f9758c0a034d23c7078a4a777"></a><!-- doxytag: member="mrpt::vision::CCamModel::getFullProjectionT" ref="aa441286f9758c0a034d23c7078a4a777" args="(const CameraTempVariables< T > &tmp, PIXEL &pOut) const " --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename T , typename PIXEL > </div> <table class="memname"> <tr> <td class="memname">void mrpt::vision::CCamModel::getFullProjectionT </td> <td>(</td> <td class="paramtype">const <a class="el" href="structmrpt_1_1vision_1_1_c_cam_model_1_1_camera_temp_variables.html">CameraTempVariables</a>< T > & </td> <td class="paramname"><em>tmp</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">PIXEL & </td> <td class="paramname"><em>pOut</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td> const<code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="_c_cam_model_8h_source.html#l00174">174</a> of file <a class="el" href="_c_cam_model_8h_source.html">CCamModel.h</a>.</p> <p>References <a class="el" href="_c_cam_model_8h_source.html#l00154">mrpt::vision::CCamModel::CameraTempVariables::x__</a>, and <a class="el" href="_c_cam_model_8h_source.html#l00154">mrpt::vision::CCamModel::CameraTempVariables::y__</a>.</p> </div> </div> <a class="anchor" id="ab914ab4628377de3c857634a7136b206"></a><!-- doxytag: member="mrpt::vision::CCamModel::getTemporaryVariablesForTransform" ref="ab914ab4628377de3c857634a7136b206" args="(const POINT &p, CameraTempVariables< T > &v) const " --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename T , typename POINT > </div> <table class="memname"> <tr> <td class="memname">void mrpt::vision::CCamModel::getTemporaryVariablesForTransform </td> <td>(</td> <td class="paramtype">const POINT & </td> <td class="paramname"><em>p</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="structmrpt_1_1vision_1_1_c_cam_model_1_1_camera_temp_variables.html">CameraTempVariables</a>< T > & </td> <td class="paramname"><em>v</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td> const<code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="_c_cam_model_8h_source.html#l00156">156</a> of file <a class="el" href="_c_cam_model_8h_source.html">CCamModel.h</a>.</p> <p>References <a class="el" href="_c_cam_model_8h_source.html#l00150">mrpt::vision::CCamModel::CameraTempVariables::x_</a>, <a class="el" href="_c_cam_model_8h_source.html#l00150">mrpt::vision::CCamModel::CameraTempVariables::y_</a>, <a class="el" href="_c_cam_model_8h_source.html#l00151">mrpt::vision::CCamModel::CameraTempVariables::x_2</a>, <a class="el" href="bits_8h_source.html#l00161">mrpt::utils::square()</a>, <a class="el" href="_c_cam_model_8h_source.html#l00151">mrpt::vision::CCamModel::CameraTempVariables::y_2</a>, <a class="el" href="_c_cam_model_8h_source.html#l00152">mrpt::vision::CCamModel::CameraTempVariables::R</a>, <a class="el" href="_c_cam_model_8h_source.html#l00153">mrpt::vision::CCamModel::CameraTempVariables::K</a>, <a class="el" href="_c_cam_model_8h_source.html#l00154">mrpt::vision::CCamModel::CameraTempVariables::x__</a>, and <a class="el" href="_c_cam_model_8h_source.html#l00154">mrpt::vision::CCamModel::CameraTempVariables::y__</a>.</p> </div> </div> <a class="anchor" id="a5af4fe63a215e0d2b72b44c626b36f53"></a><!-- doxytag: member="mrpt::vision::CCamModel::jacob_undistor" ref="a5af4fe63a215e0d2b72b44c626b36f53" args="(const mrpt::vision::TPixelCoordf &p, mrpt::math::CMatrixDouble &J_undist)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void mrpt::vision::CCamModel::jacob_undistor </td> <td>(</td> <td class="paramtype">const <a class="el" href="structmrpt_1_1utils_1_1_t_pixel_coordf.html">mrpt::vision::TPixelCoordf</a> & </td> <td class="paramname"><em>p</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="namespacemrpt_1_1math.html#a3814c2b868f059d6a7ab0d8ecd2311d6">mrpt::math::CMatrixDouble</a> & </td> <td class="paramname"><em>J_undist</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Calculate the image coordinates undistorted. </p> </div> </div> <a class="anchor" id="ad2d7e966997489f7580f876f4d1d962e"></a><!-- doxytag: member="mrpt::vision::CCamModel::jacob_undistor_fm" ref="ad2d7e966997489f7580f876f4d1d962e" args="(const mrpt::vision::TPixelCoordf &uvd, math::CMatrixDouble &J_undist)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void mrpt::vision::CCamModel::jacob_undistor_fm </td> <td>(</td> <td class="paramtype">const <a class="el" href="structmrpt_1_1utils_1_1_t_pixel_coordf.html">mrpt::vision::TPixelCoordf</a> & </td> <td class="paramname"><em>uvd</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="namespacemrpt_1_1math.html#a3814c2b868f059d6a7ab0d8ecd2311d6">math::CMatrixDouble</a> & </td> <td class="paramname"><em>J_undist</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Jacobian for undistortion the image coordinates. </p> </div> </div> <a class="anchor" id="a346237d88bbed9b33993e2ff4cb5b46d"></a><!-- doxytag: member="mrpt::vision::CCamModel::jacobian_project_with_distortion" ref="a346237d88bbed9b33993e2ff4cb5b46d" args="(const mrpt::math::TPoint3D &p3D, math::CMatrixDouble &dh_dy) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void mrpt::vision::CCamModel::jacobian_project_with_distortion </td> <td>(</td> <td class="paramtype">const <a class="el" href="structmrpt_1_1math_1_1_t_point3_d.html">mrpt::math::TPoint3D</a> & </td> <td class="paramname"><em>p3D</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="namespacemrpt_1_1math.html#a3814c2b868f059d6a7ab0d8ecd2311d6">math::CMatrixDouble</a> & </td> <td class="paramname"><em>dh_dy</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td> const</td> </tr> </table> </div> <div class="memdoc"> <p>Jacobian of the projection of 3D points (with distortion), as done in project_3D_point <img class="formulaInl" alt="$ \frac{\partial h}{\partial y} $" src="form_117.png"/>, evaluated at the point p3D (read below the full explanation) </p> <p>We define <img class="formulaInl" alt="$ h = (h_x ~ h_y) $" src="form_118.png"/> as the projected point in pixels (origin at the top-left corner), and <img class="formulaInl" alt="$ y=( y_x ~ y_y ~ y_z ) $" src="form_119.png"/> as the 3D point in space, in coordinates relative to the camera (+Z pointing forwards).</p> <p>Then this method computes the 2x3 Jacobian:</p> <p class="formulaDsp"> <img class="formulaDsp" alt="\[ \frac{\partial h}{\partial y} = \frac{\partial h}{\partial u} \frac{\partial u}{\partial y} \]" src="form_120.png"/> </p> <p>With:</p> <p class="formulaDsp"> <img class="formulaDsp" alt="\[ \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) \]" src="form_121.png"/> </p> <p>where <img class="formulaInl" alt="$ f_x, f_y $" src="form_122.png"/> is the focal length in units of pixel sizes in x and y, respectively. And, if we define:</p> <p class="formulaDsp"> <img class="formulaDsp" alt="\[ f = 1+ 2 k_1 (u_x^2+u_y^2) \]" src="form_123.png"/> </p> <p>then:</p> <p class="formulaDsp"> <img class="formulaDsp" alt="\[ \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) \]" src="form_124.png"/> </p> <dl class="note"><dt><b>Note:</b></dt><dd>JLBC: Added in March, 2009. Should be equivalent to Davison's WideCamera::ProjectionJacobian </dd></dl> <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classmrpt_1_1vision_1_1_c_cam_model.html#a7a82b9e52ad8b9fbc1178758d920e4a6" title="Return the (distorted) pixel position of a 3D point given in coordinates relative to the camera (+Z p...">project_3D_point</a> </dd></dl> </div> </div> <a class="anchor" id="a14710adbc4b2856ff80e5b0207715de1"></a><!-- doxytag: member="mrpt::vision::CCamModel::jacobian_unproject_with_distortion" ref="a14710adbc4b2856ff80e5b0207715de1" args="(const mrpt::vision::TPixelCoordf &p, math::CMatrixDouble &dy_dh) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void mrpt::vision::CCamModel::jacobian_unproject_with_distortion </td> <td>(</td> <td class="paramtype">const <a class="el" href="structmrpt_1_1utils_1_1_t_pixel_coordf.html">mrpt::vision::TPixelCoordf</a> & </td> <td class="paramname"><em>p</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="namespacemrpt_1_1math.html#a3814c2b868f059d6a7ab0d8ecd2311d6">math::CMatrixDouble</a> & </td> <td class="paramname"><em>dy_dh</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td> const</td> </tr> </table> </div> <div class="memdoc"> <p>Jacobian of the unprojection of a pixel (with distortion) back into a 3D point, as done in unproject_3D_point <img class="formulaInl" alt="$ \frac{\partial y}{\partial h} $" src="form_125.png"/>, evaluated at the pixel p. </p> <dl class="note"><dt><b>Note:</b></dt><dd>JLBC: Added in March, 2009. Should be equivalent to Davison's WideCamera::UnprojectionJacobian </dd></dl> <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classmrpt_1_1vision_1_1_c_cam_model.html#a600b6858566dbc595cebf08ebf59489a" title="Return the 3D location of a point (at a fixed distance z=1), for the given (distorted) pixel position...">unproject_3D_point</a> </dd></dl> </div> </div> <a class="anchor" id="a4177ba64df53e6c3d8885d9a51a7aa29"></a><!-- doxytag: member="mrpt::vision::CCamModel::loadFromConfigFile" ref="a4177ba64df53e6c3d8885d9a51a7aa29" args="(const mrpt::utils::CConfigFileBase &source, const std::string &section)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void mrpt::vision::CCamModel::loadFromConfigFile </td> <td>(</td> <td class="paramtype">const <a class="el" href="classmrpt_1_1utils_1_1_c_config_file_base.html">mrpt::utils::CConfigFileBase</a> & </td> <td class="paramname"><em>source</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classstd_1_1string.html">std::string</a> & </td> <td class="paramname"><em>section</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>This method loads the options from a ".ini"-like file or memory-stored string list. </p> <p>Implements <a class="el" href="classmrpt_1_1utils_1_1_c_loadable_options.html#ae2373fce5f2c8d3f0bdad21433becad2">mrpt::utils::CLoadableOptions</a>.</p> </div> </div> <a class="anchor" id="a1ce8e0f241fe85f78095e23d37b2b635"></a><!-- doxytag: member="mrpt::vision::CCamModel::loadFromConfigFileName" ref="a1ce8e0f241fe85f78095e23d37b2b635" args="(const std::string &config_file, const std::string &section)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void mrpt::utils::CLoadableOptions::loadFromConfigFileName </td> <td>(</td> <td class="paramtype">const <a class="el" href="classstd_1_1string.html">std::string</a> & </td> <td class="paramname"><em>config_file</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classstd_1_1string.html">std::string</a> & </td> <td class="paramname"><em>section</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [inherited]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Behaves like loadFromConfigFile, but you can pass directly a file name and a temporary <a class="el" href="classmrpt_1_1utils_1_1_c_config_file.html" title="This class allows loading and storing values and vectors of different types from ".ini" files easily.">CConfigFile</a> object will be created automatically to load the file. </p> <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classmrpt_1_1utils_1_1_c_loadable_options.html#ae2373fce5f2c8d3f0bdad21433becad2" title="This method load the options from a ".ini"-like file or memory-stored string list.">loadFromConfigFile</a> </dd></dl> </div> </div> <a class="anchor" id="a7a82b9e52ad8b9fbc1178758d920e4a6"></a><!-- doxytag: member="mrpt::vision::CCamModel::project_3D_point" ref="a7a82b9e52ad8b9fbc1178758d920e4a6" args="(const mrpt::math::TPoint3D &p3D, mrpt::vision::TPixelCoordf &distorted_p) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void mrpt::vision::CCamModel::project_3D_point </td> <td>(</td> <td class="paramtype">const <a class="el" href="structmrpt_1_1math_1_1_t_point3_d.html">mrpt::math::TPoint3D</a> & </td> <td class="paramname"><em>p3D</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="structmrpt_1_1utils_1_1_t_pixel_coordf.html">mrpt::vision::TPixelCoordf</a> & </td> <td class="paramname"><em>distorted_p</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td> const</td> </tr> </table> </div> <div class="memdoc"> <p>Return the (distorted) pixel position of a 3D point given in coordinates relative to the camera (+Z pointing forward, +X to the right) </p> <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classmrpt_1_1vision_1_1_c_cam_model.html#a600b6858566dbc595cebf08ebf59489a" title="Return the 3D location of a point (at a fixed distance z=1), for the given (distorted) pixel position...">unproject_3D_point</a> </dd></dl> </div> </div> <a class="anchor" id="a913c3433af4564cedeb25e24ace1cf28"></a><!-- doxytag: member="mrpt::vision::CCamModel::saveToConfigFile" ref="a913c3433af4564cedeb25e24ace1cf28" args="(mrpt::utils::CConfigFileBase &source, const std::string &section)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">virtual void mrpt::utils::CLoadableOptions::saveToConfigFile </td> <td>(</td> <td class="paramtype"><a class="el" href="classmrpt_1_1utils_1_1_c_config_file_base.html">mrpt::utils::CConfigFileBase</a> & </td> <td class="paramname"><em>source</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classstd_1_1string.html">std::string</a> & </td> <td class="paramname"><em>section</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [inline, virtual, inherited]</code></td> </tr> </table> </div> <div class="memdoc"> <p>This method saves the options to a ".ini"-like file or memory-stored string list. </p> <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classmrpt_1_1utils_1_1_c_loadable_options.html#ae2373fce5f2c8d3f0bdad21433becad2" title="This method load the options from a ".ini"-like file or memory-stored string list.">loadFromConfigFile</a>, <a class="el" href="classmrpt_1_1utils_1_1_c_loadable_options.html#aa059b0160ed9881c284bcea9a42c51f8" title="Behaves like saveToConfigFile, but you can pass directly a file name and a temporary CConfigFile obje...">saveToConfigFileName</a> </dd></dl> <p>Reimplemented in <a class="el" href="structmrpt_1_1vision_1_1_t_multi_res_desc_options.html#ab41c594d4e248ace4a2b6c7e4d082a1c">mrpt::vision::TMultiResDescOptions</a>, and <a class="el" href="structmrpt_1_1vision_1_1_t_multi_res_desc_match_options.html#a0ddc0e48338f1c420ed1e9a34d106865">mrpt::vision::TMultiResDescMatchOptions</a>.</p> <p>Definition at line <a class="el" href="_c_loadable_options_8h_source.html#l00087">87</a> of file <a class="el" href="_c_loadable_options_8h_source.html">CLoadableOptions.h</a>.</p> <p>References <a class="el" href="mrpt__macros_8h_source.html#l00131">THROW_EXCEPTION</a>.</p> </div> </div> <a class="anchor" id="aa059b0160ed9881c284bcea9a42c51f8"></a><!-- doxytag: member="mrpt::vision::CCamModel::saveToConfigFileName" ref="aa059b0160ed9881c284bcea9a42c51f8" args="(const std::string &config_file, const std::string &section)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void mrpt::utils::CLoadableOptions::saveToConfigFileName </td> <td>(</td> <td class="paramtype">const <a class="el" href="classstd_1_1string.html">std::string</a> & </td> <td class="paramname"><em>config_file</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classstd_1_1string.html">std::string</a> & </td> <td class="paramname"><em>section</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [inherited]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Behaves like saveToConfigFile, but you can pass directly a file name and a temporary <a class="el" href="classmrpt_1_1utils_1_1_c_config_file.html" title="This class allows loading and storing values and vectors of different types from ".ini" files easily.">CConfigFile</a> object will be created automatically to save the file. </p> <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classmrpt_1_1utils_1_1_c_loadable_options.html#a913c3433af4564cedeb25e24ace1cf28" title="This method saves the options to a ".ini"-like file or memory-stored string list.">saveToConfigFile</a>, <a class="el" href="classmrpt_1_1utils_1_1_c_loadable_options.html#a1ce8e0f241fe85f78095e23d37b2b635" title="Behaves like loadFromConfigFile, but you can pass directly a file name and a temporary CConfigFile ob...">loadFromConfigFileName</a> </dd></dl> </div> </div> <a class="anchor" id="aca310dda5e61a8a8a46bcf4ff32d8dda"></a><!-- doxytag: member="mrpt::vision::CCamModel::secondInverseJacobian" ref="aca310dda5e61a8a8a46bcf4ff32d8dda" args="() const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classmrpt_1_1math_1_1_c_matrix_fixed_numeric.html">CMatrixFixedNumeric</a><double,4,2> mrpt::vision::CCamModel::secondInverseJacobian </td> <td>(</td> <td class="paramname"></td><td>)</td> <td> const<code> [inline, private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="_c_cam_model_8h_source.html#l00230">230</a> of file <a class="el" href="_c_cam_model_8h_source.html">CCamModel.h</a>.</p> </div> </div> <a class="anchor" id="a3d472fbd80a0dff3c8a2f1e6052dc98c"></a><!-- doxytag: member="mrpt::vision::CCamModel::thirdInverseJacobian" ref="a3d472fbd80a0dff3c8a2f1e6052dc98c" args="() const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classmrpt_1_1math_1_1_c_matrix_fixed_numeric.html">CMatrixFixedNumeric</a><double,3,4> mrpt::vision::CCamModel::thirdInverseJacobian </td> <td>(</td> <td class="paramname"></td><td>)</td> <td> const<code> [inline, private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="_c_cam_model_8h_source.html#l00238">238</a> of file <a class="el" href="_c_cam_model_8h_source.html">CCamModel.h</a>.</p> </div> </div> <a class="anchor" id="a59215f0b898787f5c67986577ae9558a"></a><!-- doxytag: member="mrpt::vision::CCamModel::undistort_point" ref="a59215f0b898787f5c67986577ae9558a" args="(const mrpt::vision::TPixelCoordf &p, mrpt::vision::TPixelCoordf &undistorted_p)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void mrpt::vision::CCamModel::undistort_point </td> <td>(</td> <td class="paramtype">const <a class="el" href="structmrpt_1_1utils_1_1_t_pixel_coordf.html">mrpt::vision::TPixelCoordf</a> & </td> <td class="paramname"><em>p</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="structmrpt_1_1utils_1_1_t_pixel_coordf.html">mrpt::vision::TPixelCoordf</a> & </td> <td class="paramname"><em>undistorted_p</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Return the pixel position undistorted by the camera The input values 'col' and 'row' will be replace for the new values (undistorted) </p> </div> </div> <a class="anchor" id="a600b6858566dbc595cebf08ebf59489a"></a><!-- doxytag: member="mrpt::vision::CCamModel::unproject_3D_point" ref="a600b6858566dbc595cebf08ebf59489a" args="(const mrpt::vision::TPixelCoordf &distorted_p, mrpt::math::TPoint3D &p3D) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void mrpt::vision::CCamModel::unproject_3D_point </td> <td>(</td> <td class="paramtype">const <a class="el" href="structmrpt_1_1utils_1_1_t_pixel_coordf.html">mrpt::vision::TPixelCoordf</a> & </td> <td class="paramname"><em>distorted_p</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="structmrpt_1_1math_1_1_t_point3_d.html">mrpt::math::TPoint3D</a> & </td> <td class="paramname"><em>p3D</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td> const</td> </tr> </table> </div> <div class="memdoc"> <p>Return the 3D location of a point (at a fixed distance z=1), for the given (distorted) pixel position. </p> <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classmrpt_1_1vision_1_1_c_cam_model.html#a7a82b9e52ad8b9fbc1178758d920e4a6" title="Return the (distorted) pixel position of a 3D point given in coordinates relative to the camera (+Z p...">project_3D_point</a> </dd></dl> <dl class="note"><dt><b>Note:</b></dt><dd>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. </dd></dl> </div> </div> <hr/><h2>Member Data Documentation</h2> <a class="anchor" id="a6816942b827143fc7de3b7dff2cabe50"></a><!-- doxytag: member="mrpt::vision::CCamModel::cam" ref="a6816942b827143fc7de3b7dff2cabe50" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classmrpt_1_1utils_1_1_t_camera.html">mrpt::utils::TCamera</a> <a class="el" href="classmrpt_1_1vision_1_1_c_cam_model.html#a6816942b827143fc7de3b7dff2cabe50">mrpt::vision::CCamModel::cam</a></td> </tr> </table> </div> <div class="memdoc"> <p>The parameters of a camera. </p> <p>Definition at line <a class="el" href="_c_cam_model_8h_source.html#l00054">54</a> of file <a class="el" href="_c_cam_model_8h_source.html">CCamModel.h</a>.</p> </div> </div> </div> <br><hr><br> <table border="0" width="100%"> <tr> <td> Page generated by <a href="http://www.doxygen.org" target="_blank">Doxygen 1.7.5</a> for MRPT 0.9.5 SVN: at Sun Sep 25 17:20:18 UTC 2011</td><td></td> <td width="100"> </td> <td width="150"> </td></tr> </table> </body></html>