<!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::CFeatureTracker_KL Struct 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="structmrpt_1_1vision_1_1_c_feature_tracker___k_l.html">CFeatureTracker_KL</a> </li> </ul> </div> </div> <div class="header"> <div class="summary"> <a href="#pub-methods">Public Member Functions</a> | <a href="#pub-attribs">Public Attributes</a> | <a href="#pro-methods">Protected Member Functions</a> | <a href="#pro-attribs">Protected Attributes</a> | <a href="#pri-methods">Private Member Functions</a> </div> <div class="headertitle"> <div class="title">mrpt::vision::CFeatureTracker_KL Struct Reference<div class="ingroups"><a class="el" href="group__vision__tracking.html">Feature detection and tracking</a></div></div> </div> </div> <div class="contents"> <!-- doxytag: class="mrpt::vision::CFeatureTracker_KL" --><!-- doxytag: inherits="mrpt::vision::CGenericFeatureTracker" --><hr/><a name="details" id="details"></a><h2>Detailed Description</h2> <div class="textblock"><p>Track a set of features from old_img -> new_img using sparse optimal flow (classic KL method). </p> <p>See <a class="el" href="structmrpt_1_1vision_1_1_c_generic_feature_tracker.html" title="A virtual interface for all feature trackers, implementing the part of feature tracking that is commo...">CGenericFeatureTracker</a> for a more detailed explanation on how to use this class.</p> <p>List of additional parameters in "extra_params" (apart from those in <a class="el" href="structmrpt_1_1vision_1_1_c_generic_feature_tracker.html" title="A virtual interface for all feature trackers, implementing the part of feature tracking that is commo...">CGenericFeatureTracker</a>) accepted by this class:</p> <ul> <li>"window_width" (Default=15)</li> <li>"window_height" (Default=15)</li> <li>"LK_levels" (Default=3) Number of pyramids to build for LK tracking (this parameter only has effects when tracking with CImage's, not with CImagePyramid's).</li> <li>"LK_max_iters" (Default=10) Max. number of iterations in LK tracking.</li> <li>"LK_epsilon" (Default=0.1) Minimum epsilon step in interations of LK_tracking.</li> <li>"LK_max_tracking_error" (Default=150.0) The maximum "tracking error" of LK tracking such as a feature is marked as "lost".</li> </ul> <dl class="see"><dt><b>See also:</b></dt><dd>OpenCV's method cvCalcOpticalFlowPyrLK </dd></dl> </div> <p><code>#include <<a class="el" href="tracking_8h_source.html">mrpt/vision/tracking.h</a>></code></p> <div class="dynheader"> Inheritance diagram for mrpt::vision::CFeatureTracker_KL:</div> <div class="dyncontent"> <div class="center"><img src="structmrpt_1_1vision_1_1_c_feature_tracker___k_l__inherit__graph.png" border="0" usemap="#mrpt_1_1vision_1_1_c_feature_tracker___k_l_inherit__map" alt="Inheritance graph"/></div> <map name="mrpt_1_1vision_1_1_c_feature_tracker___k_l_inherit__map" id="mrpt_1_1vision_1_1_c_feature_tracker___k_l_inherit__map"> <area shape="rect" id="node2" href="structmrpt_1_1vision_1_1_c_generic_feature_tracker.html" title="A virtual interface for all feature trackers, implementing the part of feature tracking that is commo..." alt="" coords="5,5,245,32"/></map> <center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div> <p><a href="structmrpt_1_1vision_1_1_c_feature_tracker___k_l-members.html">List of all members.</a></p> <table class="memberdecls"> <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="structmrpt_1_1vision_1_1_c_feature_tracker___k_l.html#a373ad62f96b95208a133a5b5a6cc2251">CFeatureTracker_KL</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Default ctor. <a href="#a373ad62f96b95208a133a5b5a6cc2251"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="structmrpt_1_1vision_1_1_c_feature_tracker___k_l.html#ace6e4e53b82d1144ffa8072396c8b6d7">CFeatureTracker_KL</a> (<a class="el" href="namespacemrpt_1_1utils.html#a694777f2a3544999baea34e43a42eceb">mrpt::utils::TParametersDouble</a> extraParams)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Ctor with extra parameters. <a href="#ace6e4e53b82d1144ffa8072396c8b6d7"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="structmrpt_1_1vision_1_1_c_generic_feature_tracker.html#a7a4aedef8113a7096b405f93408f39e5">trackFeatures</a> (const <a class="el" href="classmrpt_1_1utils_1_1_c_image.html">CImage</a> &old_img, const <a class="el" href="classmrpt_1_1utils_1_1_c_image.html">CImage</a> &new_img, <a class="el" href="group__mrptvision__features.html#ga1a3cacefe1829fabd578ba8cc6fe6638">TSimpleFeatureList</a> &inout_featureList)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Perform feature tracking from "old_img" to "new_img", with a (possibly empty) list of previously tracked features "inout_featureList". <a href="#a7a4aedef8113a7096b405f93408f39e5"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="structmrpt_1_1vision_1_1_c_generic_feature_tracker.html#ad1e5d08962342da83ce8f3e248585c64">trackFeatures</a> (const <a class="el" href="classmrpt_1_1utils_1_1_c_image.html">CImage</a> &old_img, const <a class="el" href="classmrpt_1_1utils_1_1_c_image.html">CImage</a> &new_img, <a class="el" href="classmrpt_1_1vision_1_1_c_feature_list.html">CFeatureList</a> &inout_featureList)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="structmrpt_1_1vision_1_1_c_generic_feature_tracker.html#a909e30defb4b5b9c15aded317346ec5c">trackFeaturesNewList</a> (const <a class="el" href="classmrpt_1_1utils_1_1_c_image.html">CImage</a> &old_img, const <a class="el" href="classmrpt_1_1utils_1_1_c_image.html">CImage</a> &new_img, const <a class="el" href="classmrpt_1_1vision_1_1_c_feature_list.html">vision::CFeatureList</a> &in_featureList, <a class="el" href="classmrpt_1_1vision_1_1_c_feature_list.html">vision::CFeatureList</a> &out_featureList)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">A wrapper around the basic <a class="el" href="structmrpt_1_1vision_1_1_c_generic_feature_tracker.html#a7a4aedef8113a7096b405f93408f39e5" title="Perform feature tracking from "old_img" to "new_img", with a (possibly empty) list of previously trac...">trackFeatures()</a> method, but keeping the original list of features unmodified and returns the tracked ones in a new list. <a href="#a909e30defb4b5b9c15aded317346ec5c"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classmrpt_1_1utils_1_1_c_time_logger.html">mrpt::utils::CTimeLogger</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="structmrpt_1_1vision_1_1_c_generic_feature_tracker.html#a9c210bd84d54c5ce72fe1e93933b49bf">getProfiler</a> () const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns a read-only reference to the internal time logger. <a href="#a9c210bd84d54c5ce72fe1e93933b49bf"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmrpt_1_1utils_1_1_c_time_logger.html">mrpt::utils::CTimeLogger</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="structmrpt_1_1vision_1_1_c_generic_feature_tracker.html#af5538fb8d752b810c7bac461a7043f3d">getProfiler</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns a reference to the internal time logger. <a href="#af5538fb8d752b810c7bac461a7043f3d"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="structmrpt_1_1vision_1_1_c_generic_feature_tracker.html#aa9453970afc0eda64c1be01ccf7f4566">enableTimeLogger</a> (bool enable=true)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns a read-only reference to the internal time logger. <a href="#aa9453970afc0eda64c1be01ccf7f4566"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="structmrpt_1_1vision_1_1_c_generic_feature_tracker.html#ad1d65969e0219c7e132c1cb9f27d2484">getDetectorAdaptiveThreshold</a> () const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the current adaptive threshold used by the FAST(ER) detector to find out new features in empty areas. <a href="#ad1d65969e0219c7e132c1cb9f27d2484"></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="namespacemrpt_1_1utils.html#a694777f2a3544999baea34e43a42eceb">mrpt::utils::TParametersDouble</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structmrpt_1_1vision_1_1_c_generic_feature_tracker.html#a2b81ed2b0cb9fb13cbd9d75296bf73cf">extra_params</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Optional list of extra parameters to the algorithm. <a href="#a2b81ed2b0cb9fb13cbd9d75296bf73cf"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structmrpt_1_1vision_1_1_c_generic_feature_tracker_1_1_t_extra_output_info.html">TExtraOutputInfo</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structmrpt_1_1vision_1_1_c_generic_feature_tracker.html#a8d097a7479a5363be5a282fa49d7366a">last_execution_extra_info</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Updated with each call to <a class="el" href="structmrpt_1_1vision_1_1_c_generic_feature_tracker.html#a7a4aedef8113a7096b405f93408f39e5" title="Perform feature tracking from "old_img" to "new_img", with a (possibly empty) list of previously trac...">trackFeatures()</a> <a href="#a8d097a7479a5363be5a282fa49d7366a"></a><br/></td></tr> <tr><td colspan="2"><h2><a name="pro-methods"></a> Protected Member Functions</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="structmrpt_1_1vision_1_1_c_feature_tracker___k_l.html#add913f70bb67ad062cac7033723bb325">trackFeatures_impl</a> (const <a class="el" href="classmrpt_1_1utils_1_1_c_image.html">CImage</a> &old_img, const <a class="el" href="classmrpt_1_1utils_1_1_c_image.html">CImage</a> &new_img, <a class="el" href="classmrpt_1_1vision_1_1_c_feature_list.html">vision::CFeatureList</a> &inout_featureList)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">This version falls back to the version with TSimpleFeatureList if the derived class does not implement it. <a href="#add913f70bb67ad062cac7033723bb325"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="structmrpt_1_1vision_1_1_c_feature_tracker___k_l.html#ae9adf18523beb42d78ad599fe9df8945">trackFeatures_impl</a> (const <a class="el" href="classmrpt_1_1utils_1_1_c_image.html">CImage</a> &old_img, const <a class="el" href="classmrpt_1_1utils_1_1_c_image.html">CImage</a> &new_img, <a class="el" href="group__mrptvision__features.html#ga1a3cacefe1829fabd578ba8cc6fe6638">TSimpleFeatureList</a> &inout_featureList)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">The tracking method implementation, to be implemented in children classes. <a href="#ae9adf18523beb42d78ad599fe9df8945"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="structmrpt_1_1vision_1_1_c_generic_feature_tracker.html#aa4ef8adf2c873e88f78bb9b795b18bb5">updateAdaptiveNewFeatsThreshold</a> (const size_t nNewlyDetectedFeats, const size_t desired_num_features)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Adapts the threshold <em>m_detector_adaptive_thres</em> according to the real and desired number of features just detected. <a href="#aa4ef8adf2c873e88f78bb9b795b18bb5"></a><br/></td></tr> <tr><td colspan="2"><h2><a name="pro-attribs"></a> Protected Attributes</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmrpt_1_1utils_1_1_c_time_logger.html">mrpt::utils::CTimeLogger</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structmrpt_1_1vision_1_1_c_generic_feature_tracker.html#af9203d9f912c98716ba879041f58ff6e">m_timlog</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">the internal time logger, disabled by default. <a href="#af9203d9f912c98716ba879041f58ff6e"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__mrptvision__features.html#ga1a3cacefe1829fabd578ba8cc6fe6638">mrpt::vision::TSimpleFeatureList</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structmrpt_1_1vision_1_1_c_generic_feature_tracker.html#aa80dc7e788fa6aee664d04fa49bdd4e5">m_newly_detected_feats</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">This field is clared by <em><a class="el" href="structmrpt_1_1vision_1_1_c_generic_feature_tracker.html#a7a4aedef8113a7096b405f93408f39e5" title="Perform feature tracking from "old_img" to "new_img", with a (possibly empty) list of previously trac...">trackFeatures()</a></em> before calling <em><a class="el" href="structmrpt_1_1vision_1_1_c_generic_feature_tracker.html#a2c09df67032622b49a9a694f294fb5d7" title="The tracking method implementation, to be implemented in children classes.">trackFeatures_impl()</a></em>, and can be filled out with newly defected FAST(ER) features in the latter. <a href="#aa80dc7e788fa6aee664d04fa49bdd4e5"></a><br/></td></tr> <tr><td colspan="2"><h2><a name="pri-methods"></a> Private Member Functions</h2></td></tr> <tr><td class="memTemplParams" colspan="2">template<typename FEATLIST > </td></tr> <tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="structmrpt_1_1vision_1_1_c_feature_tracker___k_l.html#a0bd318bdfaf698024e4848a96e79ed72">trackFeatures_impl_templ</a> (const <a class="el" href="classmrpt_1_1utils_1_1_c_image.html">CImage</a> &old_img, const <a class="el" href="classmrpt_1_1utils_1_1_c_image.html">CImage</a> &new_img, FEATLIST &inout_featureList)</td></tr> </table> <hr/><h2>Constructor & Destructor Documentation</h2> <a class="anchor" id="a373ad62f96b95208a133a5b5a6cc2251"></a><!-- doxytag: member="mrpt::vision::CFeatureTracker_KL::CFeatureTracker_KL" ref="a373ad62f96b95208a133a5b5a6cc2251" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">mrpt::vision::CFeatureTracker_KL::CFeatureTracker_KL </td> <td>(</td> <td class="paramname"></td><td>)</td> <td><code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Default ctor. </p> <p>Definition at line <a class="el" href="tracking_8h_source.html#l00257">257</a> of file <a class="el" href="tracking_8h_source.html">tracking.h</a>.</p> </div> </div> <a class="anchor" id="ace6e4e53b82d1144ffa8072396c8b6d7"></a><!-- doxytag: member="mrpt::vision::CFeatureTracker_KL::CFeatureTracker_KL" ref="ace6e4e53b82d1144ffa8072396c8b6d7" args="(mrpt::utils::TParametersDouble extraParams)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">mrpt::vision::CFeatureTracker_KL::CFeatureTracker_KL </td> <td>(</td> <td class="paramtype"><a class="el" href="namespacemrpt_1_1utils.html#a694777f2a3544999baea34e43a42eceb">mrpt::utils::TParametersDouble</a> </td> <td class="paramname"><em>extraParams</em></td><td>)</td> <td><code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Ctor with extra parameters. </p> <p>Definition at line <a class="el" href="tracking_8h_source.html#l00259">259</a> of file <a class="el" href="tracking_8h_source.html">tracking.h</a>.</p> </div> </div> <hr/><h2>Member Function Documentation</h2> <a class="anchor" id="aa9453970afc0eda64c1be01ccf7f4566"></a><!-- doxytag: member="mrpt::vision::CFeatureTracker_KL::enableTimeLogger" ref="aa9453970afc0eda64c1be01ccf7f4566" args="(bool enable=true)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void mrpt::vision::CGenericFeatureTracker::enableTimeLogger </td> <td>(</td> <td class="paramtype">bool </td> <td class="paramname"><em>enable</em> = <code>true</code></td><td>)</td> <td><code> [inline, inherited]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Returns a read-only reference to the internal time logger. </p> <p>Definition at line <a class="el" href="tracking_8h_source.html#l00185">185</a> of file <a class="el" href="tracking_8h_source.html">tracking.h</a>.</p> </div> </div> <a class="anchor" id="ad1d65969e0219c7e132c1cb9f27d2484"></a><!-- doxytag: member="mrpt::vision::CFeatureTracker_KL::getDetectorAdaptiveThreshold" ref="ad1d65969e0219c7e132c1cb9f27d2484" args="() const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int mrpt::vision::CGenericFeatureTracker::getDetectorAdaptiveThreshold </td> <td>(</td> <td class="paramname"></td><td>)</td> <td> const<code> [inline, inherited]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Returns the current adaptive threshold used by the FAST(ER) detector to find out new features in empty areas. </p> <p>Definition at line <a class="el" href="tracking_8h_source.html#l00188">188</a> of file <a class="el" href="tracking_8h_source.html">tracking.h</a>.</p> </div> </div> <a class="anchor" id="a9c210bd84d54c5ce72fe1e93933b49bf"></a><!-- doxytag: member="mrpt::vision::CFeatureTracker_KL::getProfiler" ref="a9c210bd84d54c5ce72fe1e93933b49bf" args="() const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const <a class="el" href="classmrpt_1_1utils_1_1_c_time_logger.html">mrpt::utils::CTimeLogger</a>& mrpt::vision::CGenericFeatureTracker::getProfiler </td> <td>(</td> <td class="paramname"></td><td>)</td> <td> const<code> [inline, inherited]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Returns a read-only reference to the internal time logger. </p> <p>Definition at line <a class="el" href="tracking_8h_source.html#l00180">180</a> of file <a class="el" href="tracking_8h_source.html">tracking.h</a>.</p> </div> </div> <a class="anchor" id="af5538fb8d752b810c7bac461a7043f3d"></a><!-- doxytag: member="mrpt::vision::CFeatureTracker_KL::getProfiler" ref="af5538fb8d752b810c7bac461a7043f3d" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classmrpt_1_1utils_1_1_c_time_logger.html">mrpt::utils::CTimeLogger</a>& mrpt::vision::CGenericFeatureTracker::getProfiler </td> <td>(</td> <td class="paramname"></td><td>)</td> <td><code> [inline, inherited]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Returns a reference to the internal time logger. </p> <p>Definition at line <a class="el" href="tracking_8h_source.html#l00182">182</a> of file <a class="el" href="tracking_8h_source.html">tracking.h</a>.</p> </div> </div> <a class="anchor" id="a7a4aedef8113a7096b405f93408f39e5"></a><!-- doxytag: member="mrpt::vision::CFeatureTracker_KL::trackFeatures" ref="a7a4aedef8113a7096b405f93408f39e5" args="(const CImage &old_img, const CImage &new_img, TSimpleFeatureList &inout_featureList)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void mrpt::vision::CGenericFeatureTracker::trackFeatures </td> <td>(</td> <td class="paramtype">const <a class="el" href="classmrpt_1_1utils_1_1_c_image.html">CImage</a> & </td> <td class="paramname"><em>old_img</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classmrpt_1_1utils_1_1_c_image.html">CImage</a> & </td> <td class="paramname"><em>new_img</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group__mrptvision__features.html#ga1a3cacefe1829fabd578ba8cc6fe6638">TSimpleFeatureList</a> & </td> <td class="paramname"><em>inout_featureList</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [inherited]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Perform feature tracking from "old_img" to "new_img", with a (possibly empty) list of previously tracked features "inout_featureList". </p> <p>This is a list of parameters (in "extraParams") accepted by ALL implementations of feature tracker (see each derived class for more specific parameters).</p> <ul> <li>"add_new_features" (Default=0). If set to "1", new features will be also added to the existing ones in areas of the image poor of features. This method does:</li> </ul> <p>Convert old and new images to grayscale, if they're in color.</p> <ul> <li>Call the pure virtual "trackFeatures_impl" method.</li> <li>Implement the optional detection of new features if "add_new_features"!=0. </li> </ul> </div> </div> <a class="anchor" id="ad1e5d08962342da83ce8f3e248585c64"></a><!-- doxytag: member="mrpt::vision::CFeatureTracker_KL::trackFeatures" ref="ad1e5d08962342da83ce8f3e248585c64" args="(const CImage &old_img, const CImage &new_img, CFeatureList &inout_featureList)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void mrpt::vision::CGenericFeatureTracker::trackFeatures </td> <td>(</td> <td class="paramtype">const <a class="el" href="classmrpt_1_1utils_1_1_c_image.html">CImage</a> & </td> <td class="paramname"><em>old_img</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classmrpt_1_1utils_1_1_c_image.html">CImage</a> & </td> <td class="paramname"><em>new_img</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="classmrpt_1_1vision_1_1_c_feature_list.html">CFeatureList</a> & </td> <td class="paramname"><em>inout_featureList</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [inherited]</code></td> </tr> </table> </div> <div class="memdoc"> <p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p> </div> </div> <a class="anchor" id="add913f70bb67ad062cac7033723bb325"></a><!-- doxytag: member="mrpt::vision::CFeatureTracker_KL::trackFeatures_impl" ref="add913f70bb67ad062cac7033723bb325" args="(const CImage &old_img, const CImage &new_img, vision::CFeatureList &inout_featureList)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">virtual void mrpt::vision::CFeatureTracker_KL::trackFeatures_impl </td> <td>(</td> <td class="paramtype">const <a class="el" href="classmrpt_1_1utils_1_1_c_image.html">CImage</a> & </td> <td class="paramname"><em>old_img</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classmrpt_1_1utils_1_1_c_image.html">CImage</a> & </td> <td class="paramname"><em>new_img</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="classmrpt_1_1vision_1_1_c_feature_list.html">vision::CFeatureList</a> & </td> <td class="paramname"><em>inout_featureList</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [protected, virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>This version falls back to the version with TSimpleFeatureList if the derived class does not implement it. </p> <p>Implements <a class="el" href="structmrpt_1_1vision_1_1_c_generic_feature_tracker.html#a56521d3ec55f008bb081adc62019a9e1">mrpt::vision::CGenericFeatureTracker</a>.</p> </div> </div> <a class="anchor" id="ae9adf18523beb42d78ad599fe9df8945"></a><!-- doxytag: member="mrpt::vision::CFeatureTracker_KL::trackFeatures_impl" ref="ae9adf18523beb42d78ad599fe9df8945" args="(const CImage &old_img, const CImage &new_img, TSimpleFeatureList &inout_featureList)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">virtual void mrpt::vision::CFeatureTracker_KL::trackFeatures_impl </td> <td>(</td> <td class="paramtype">const <a class="el" href="classmrpt_1_1utils_1_1_c_image.html">CImage</a> & </td> <td class="paramname"><em>old_img</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classmrpt_1_1utils_1_1_c_image.html">CImage</a> & </td> <td class="paramname"><em>new_img</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group__mrptvision__features.html#ga1a3cacefe1829fabd578ba8cc6fe6638">TSimpleFeatureList</a> & </td> <td class="paramname"><em>inout_featureList</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [protected, virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>The tracking method implementation, to be implemented in children classes. </p> <p>Implements <a class="el" href="structmrpt_1_1vision_1_1_c_generic_feature_tracker.html#a2c09df67032622b49a9a694f294fb5d7">mrpt::vision::CGenericFeatureTracker</a>.</p> </div> </div> <a class="anchor" id="a0bd318bdfaf698024e4848a96e79ed72"></a><!-- doxytag: member="mrpt::vision::CFeatureTracker_KL::trackFeatures_impl_templ" ref="a0bd318bdfaf698024e4848a96e79ed72" args="(const CImage &old_img, const CImage &new_img, FEATLIST &inout_featureList)" --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename FEATLIST > </div> <table class="memname"> <tr> <td class="memname">void mrpt::vision::CFeatureTracker_KL::trackFeatures_impl_templ </td> <td>(</td> <td class="paramtype">const <a class="el" href="classmrpt_1_1utils_1_1_c_image.html">CImage</a> & </td> <td class="paramname"><em>old_img</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classmrpt_1_1utils_1_1_c_image.html">CImage</a> & </td> <td class="paramname"><em>new_img</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">FEATLIST & </td> <td class="paramname"><em>inout_featureList</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="a909e30defb4b5b9c15aded317346ec5c"></a><!-- doxytag: member="mrpt::vision::CFeatureTracker_KL::trackFeaturesNewList" ref="a909e30defb4b5b9c15aded317346ec5c" args="(const CImage &old_img, const CImage &new_img, const vision::CFeatureList &in_featureList, vision::CFeatureList &out_featureList)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void mrpt::vision::CGenericFeatureTracker::trackFeaturesNewList </td> <td>(</td> <td class="paramtype">const <a class="el" href="classmrpt_1_1utils_1_1_c_image.html">CImage</a> & </td> <td class="paramname"><em>old_img</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classmrpt_1_1utils_1_1_c_image.html">CImage</a> & </td> <td class="paramname"><em>new_img</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classmrpt_1_1vision_1_1_c_feature_list.html">vision::CFeatureList</a> & </td> <td class="paramname"><em>in_featureList</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="classmrpt_1_1vision_1_1_c_feature_list.html">vision::CFeatureList</a> & </td> <td class="paramname"><em>out_featureList</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [inline, inherited]</code></td> </tr> </table> </div> <div class="memdoc"> <p>A wrapper around the basic <a class="el" href="structmrpt_1_1vision_1_1_c_generic_feature_tracker.html#a7a4aedef8113a7096b405f93408f39e5" title="Perform feature tracking from "old_img" to "new_img", with a (possibly empty) list of previously trac...">trackFeatures()</a> method, but keeping the original list of features unmodified and returns the tracked ones in a new list. </p> <p>Definition at line <a class="el" href="tracking_8h_source.html#l00165">165</a> of file <a class="el" href="tracking_8h_source.html">tracking.h</a>.</p> <p>References <a class="el" href="_c_feature_8h_source.html#l00285">mrpt::vision::CFeatureList::begin()</a>, and <a class="el" href="_c_feature_8h_source.html#l00286">mrpt::vision::CFeatureList::end()</a>.</p> </div> </div> <a class="anchor" id="aa4ef8adf2c873e88f78bb9b795b18bb5"></a><!-- doxytag: member="mrpt::vision::CFeatureTracker_KL::updateAdaptiveNewFeatsThreshold" ref="aa4ef8adf2c873e88f78bb9b795b18bb5" args="(const size_t nNewlyDetectedFeats, const size_t desired_num_features)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void mrpt::vision::CGenericFeatureTracker::updateAdaptiveNewFeatsThreshold </td> <td>(</td> <td class="paramtype">const size_t </td> <td class="paramname"><em>nNewlyDetectedFeats</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const size_t </td> <td class="paramname"><em>desired_num_features</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [protected, inherited]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Adapts the threshold <em>m_detector_adaptive_thres</em> according to the real and desired number of features just detected. </p> </div> </div> <hr/><h2>Member Data Documentation</h2> <a class="anchor" id="a2b81ed2b0cb9fb13cbd9d75296bf73cf"></a><!-- doxytag: member="mrpt::vision::CFeatureTracker_KL::extra_params" ref="a2b81ed2b0cb9fb13cbd9d75296bf73cf" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="namespacemrpt_1_1utils.html#a694777f2a3544999baea34e43a42eceb">mrpt::utils::TParametersDouble</a> <a class="el" href="structmrpt_1_1vision_1_1_c_generic_feature_tracker.html#a2b81ed2b0cb9fb13cbd9d75296bf73cf">mrpt::vision::CGenericFeatureTracker::extra_params</a><code> [inherited]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Optional list of extra parameters to the algorithm. </p> <p>Definition at line <a class="el" href="tracking_8h_source.html#l00133">133</a> of file <a class="el" href="tracking_8h_source.html">tracking.h</a>.</p> </div> </div> <a class="anchor" id="a8d097a7479a5363be5a282fa49d7366a"></a><!-- doxytag: member="mrpt::vision::CFeatureTracker_KL::last_execution_extra_info" ref="a8d097a7479a5363be5a282fa49d7366a" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="structmrpt_1_1vision_1_1_c_generic_feature_tracker_1_1_t_extra_output_info.html">TExtraOutputInfo</a> <a class="el" href="structmrpt_1_1vision_1_1_c_generic_feature_tracker.html#a8d097a7479a5363be5a282fa49d7366a">mrpt::vision::CGenericFeatureTracker::last_execution_extra_info</a><code> [inherited]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Updated with each call to <a class="el" href="structmrpt_1_1vision_1_1_c_generic_feature_tracker.html#a7a4aedef8113a7096b405f93408f39e5" title="Perform feature tracking from "old_img" to "new_img", with a (possibly empty) list of previously trac...">trackFeatures()</a> </p> <p>Definition at line <a class="el" href="tracking_8h_source.html#l00196">196</a> of file <a class="el" href="tracking_8h_source.html">tracking.h</a>.</p> </div> </div> <a class="anchor" id="aa80dc7e788fa6aee664d04fa49bdd4e5"></a><!-- doxytag: member="mrpt::vision::CFeatureTracker_KL::m_newly_detected_feats" ref="aa80dc7e788fa6aee664d04fa49bdd4e5" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="group__mrptvision__features.html#ga1a3cacefe1829fabd578ba8cc6fe6638">mrpt::vision::TSimpleFeatureList</a> <a class="el" href="structmrpt_1_1vision_1_1_c_generic_feature_tracker.html#aa80dc7e788fa6aee664d04fa49bdd4e5">mrpt::vision::CGenericFeatureTracker::m_newly_detected_feats</a><code> [protected, inherited]</code></td> </tr> </table> </div> <div class="memdoc"> <p>This field is clared by <em><a class="el" href="structmrpt_1_1vision_1_1_c_generic_feature_tracker.html#a7a4aedef8113a7096b405f93408f39e5" title="Perform feature tracking from "old_img" to "new_img", with a (possibly empty) list of previously trac...">trackFeatures()</a></em> before calling <em><a class="el" href="structmrpt_1_1vision_1_1_c_generic_feature_tracker.html#a2c09df67032622b49a9a694f294fb5d7" title="The tracking method implementation, to be implemented in children classes.">trackFeatures_impl()</a></em>, and can be filled out with newly defected FAST(ER) features in the latter. </p> <p>If it's not the case, feats will be computed anyway if the user enabled the "add_new_features" option. </p> <p>Definition at line <a class="el" href="tracking_8h_source.html#l00217">217</a> of file <a class="el" href="tracking_8h_source.html">tracking.h</a>.</p> </div> </div> <a class="anchor" id="af9203d9f912c98716ba879041f58ff6e"></a><!-- doxytag: member="mrpt::vision::CFeatureTracker_KL::m_timlog" ref="af9203d9f912c98716ba879041f58ff6e" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classmrpt_1_1utils_1_1_c_time_logger.html">mrpt::utils::CTimeLogger</a> <a class="el" href="structmrpt_1_1vision_1_1_c_generic_feature_tracker.html#af9203d9f912c98716ba879041f58ff6e">mrpt::vision::CGenericFeatureTracker::m_timlog</a><code> [protected, inherited]</code></td> </tr> </table> </div> <div class="memdoc"> <p>the internal time logger, disabled by default. </p> <p>Definition at line <a class="el" href="tracking_8h_source.html#l00211">211</a> of file <a class="el" href="tracking_8h_source.html">tracking.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>