Files
rtabmap/api/latest/classrtabmap_1_1Feature2D.html
T

584 lines
44 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!-- HTML header for doxygen 1.9.8-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>RTAB-Map: rtabmap::Feature2D Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygen-awesome.css" rel="stylesheet" type="text/css"/>
<link href="custom.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript">window.RTABMAP_DOC_ROOT="";</script>
<script type="text/javascript" src="../versions.js"></script>
<script type="text/javascript" src="version-switcher.js"></script>
<script type="text/javascript" src="doxygen-awesome-darkmode-toggle.js"></script>
<script type="text/javascript">DoxygenAwesomeDarkModeToggle.init();</script>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">RTAB-Map<span id="projectnumber">&#160;0.23.13</span>
</div>
<div id="projectbrief">Real-Time Appearance-Based Mapping</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function(){initNavTree('classrtabmap_1_1Feature2D.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="classrtabmap_1_1Feature2D-members.html">List of all members</a> </div>
<div class="headertitle"><div class="title">rtabmap::Feature2D Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div></div>
</div><!--header-->
<div class="contents">
<p>Abstract 2D feature detector and descriptor extractor for visual SLAM.
<a href="classrtabmap_1_1Feature2D.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="Features2d_8h_source.html">Features2d.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for rtabmap::Feature2D:</div>
<div class="dyncontent">
<div class="center"><img src="classrtabmap_1_1Feature2D__inherit__graph.png" border="0" usemap="#artabmap_1_1Feature2D_inherit__map" alt="Inheritance graph"/></div>
<map name="artabmap_1_1Feature2D_inherit__map" id="artabmap_1_1Feature2D_inherit__map">
<area shape="rect" title="Abstract 2D feature detector and descriptor extractor for visual SLAM." alt="" coords="5,252,157,277"/>
<area shape="rect" href="classrtabmap_1_1BRISK.html" title="BRISK detector and descriptor." alt="" coords="249,17,373,43"/>
<area shape="poly" title=" " alt="" coords="88,238,103,197,127,146,160,95,181,72,204,52,225,40,248,33,249,38,227,45,207,56,184,76,164,98,131,149,108,199,93,240"/>
<area shape="rect" href="classrtabmap_1_1FAST.html" title="FAST corner detector only (no descriptor)." alt="" coords="253,67,369,92"/>
<area shape="poly" title=" " alt="" coords="95,239,138,176,169,143,204,113,228,99,254,90,256,94,230,104,207,118,173,146,142,180,99,242"/>
<area shape="rect" href="classrtabmap_1_1GFTT.html" title="Good&#45;features&#45;to&#45;track detector (Shi–Tomasi / Harris)." alt="" coords="251,128,370,153"/>
<area shape="poly" title=" " alt="" coords="102,240,147,200,174,180,204,162,250,147,252,152,206,167,177,184,150,204,106,244"/>
<area shape="rect" href="classrtabmap_1_1KAZE.html" title="KAZE detector and descriptor (OpenCV 3+)." alt="" coords="251,177,371,203"/>
<area shape="poly" title=" " alt="" coords="121,244,205,211,250,199,251,204,206,217,123,249"/>
<area shape="rect" href="classrtabmap_1_1ORB.html" title="ORB detector and descriptor (optional GPU)." alt="" coords="254,227,367,252"/>
<area shape="poly" title=" " alt="" coords="171,252,254,243,254,248,171,257"/>
<area shape="rect" href="classrtabmap_1_1ORBOctree.html" title="ORB with octree spatial distribution (RTAB&#45;Map must be built with OCTREE enabled)." alt="" coords="233,276,389,301"/>
<area shape="poly" title=" " alt="" coords="172,271,233,278,232,283,171,277"/>
<area shape="rect" href="classrtabmap_1_1SIFT.html" title="SIFT detector and descriptor (optional GPU / CudaSift)." alt="" coords="255,325,367,351"/>
<area shape="poly" title=" " alt="" coords="125,280,206,310,255,324,254,329,205,315,123,285"/>
<area shape="rect" href="classrtabmap_1_1SURF.html" title="SURF detector and descriptor (non&#45;free / xfeatures2d depending on OpenCV build)." alt="" coords="251,375,371,400"/>
<area shape="poly" title=" " alt="" coords="107,285,151,324,206,360,251,375,250,380,204,364,148,328,103,289"/>
<area shape="rect" href="classrtabmap_1_1SuperPointRpautrat.html" title="SuperPoint (rpautrat) via Torch + Python (RTAB&#45;Map must be built with libtorch and Python support)." alt="" coords="205,424,416,449"/>
<area shape="poly" title=" " alt="" coords="99,288,142,349,172,382,207,409,234,422,232,426,204,414,168,386,138,353,94,291"/>
<area shape="rect" href="classrtabmap_1_1SuperPointTorch.html" title="SuperPoint via LibTorch (RTAB&#45;Map must be built with libtorch support)." alt="" coords="216,473,405,499"/>
<area shape="poly" title=" " alt="" coords="94,289,109,328,133,374,166,421,207,460,227,471,225,476,204,464,162,424,129,377,105,330,89,291"/>
<area shape="rect" href="classrtabmap_1_1FAST__BRIEF.html" title="FAST corners + BRIEF descriptors." alt="" coords="469,5,630,31"/>
<area shape="poly" title=" " alt="" coords="378,61,415,51,502,28,503,33,417,57,379,66"/>
<area shape="rect" href="classrtabmap_1_1FAST__FREAK.html" title="FAST corners + FREAK descriptors." alt="" coords="466,55,633,80"/>
<area shape="poly" title=" " alt="" coords="382,73,466,69,466,74,383,78"/>
<area shape="rect" href="classrtabmap_1_1GFTT__BRIEF.html" title="GFTT corners + BRIEF descriptors." alt="" coords="468,104,631,129"/>
<area shape="poly" title=" " alt="" coords="384,131,467,122,468,127,384,136"/>
<area shape="rect" href="classrtabmap_1_1GFTT__DAISY.html" title="GFTT corners + DAISY descriptors (OpenCV 3+ xfeatures2d)." alt="" coords="467,153,631,179"/>
<area shape="poly" title=" " alt="" coords="384,146,467,155,467,160,383,151"/>
<area shape="rect" href="classrtabmap_1_1GFTT__FREAK.html" title="GFTT corners + FREAK descriptors." alt="" coords="465,203,633,228"/>
<area shape="poly" title=" " alt="" coords="384,152,417,162,441,175,465,188,501,200,499,205,463,192,439,179,415,167,382,157"/>
<area shape="rect" href="classrtabmap_1_1GFTT__ORB.html" title="GFTT corners + ORB descriptors (common default when SURF is unavailable)." alt="" coords="473,252,626,277"/>
<area shape="poly" title=" " alt="" coords="385,147,418,163,435,181,443,201,450,219,466,237,488,250,485,254,462,241,445,222,438,203,430,184,414,167,382,152"/>
<area shape="rect" href="classrtabmap_1_1SURF__DAISY.html" title="SURF detector + DAISY descriptors (OpenCV 3+ xfeatures2d)." alt="" coords="466,349,633,375"/>
<area shape="poly" title=" " alt="" coords="384,377,466,368,466,373,385,382"/>
<area shape="rect" href="classrtabmap_1_1SURF__FREAK.html" title="SURF detector + FREAK descriptors." alt="" coords="464,399,635,424"/>
<area shape="poly" title=" " alt="" coords="385,392,464,400,463,405,384,397"/>
</map>
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-types" name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:a7453189891e489bbcff1f2c971d04fde" id="r_a7453189891e489bbcff1f2c971d04fde"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1Feature2D.html#a7453189891e489bbcff1f2c971d04fde">Type</a> { <br />
&#160;&#160;<b>kFeatureUndef</b> =-1
, <b>kFeatureSurf</b> =0
, <b>kFeatureSift</b> =1
, <b>kFeatureOrb</b> =2
, <br />
&#160;&#160;<b>kFeatureFastFreak</b> =3
, <b>kFeatureFastBrief</b> =4
, <b>kFeatureGfttFreak</b> =5
, <b>kFeatureGfttBrief</b> =6
, <br />
&#160;&#160;<b>kFeatureBrisk</b> =7
, <b>kFeatureGfttOrb</b> =8
, <b>kFeatureKaze</b> =9
, <b>kFeatureOrbOctree</b> =10
, <br />
&#160;&#160;<b>kFeatureSuperPointTorch</b> =11
, <b>kFeatureSurfFreak</b> =12
, <b>kFeatureGfttDaisy</b> =13
, <b>kFeatureSurfDaisy</b> =14
, <br />
&#160;&#160;<b>kFeaturePyDetector</b> =15
, <b>kFeatureSuperPointRpautrat</b> =16
, <b>kFeatureEnd</b>
<br />
}</td></tr>
<tr class="memdesc:a7453189891e489bbcff1f2c971d04fde"><td class="mdescLeft">&#160;</td><td class="mdescRight">Built-in detector/descriptor strategy (Kp/DetectorStrategy). <a href="classrtabmap_1_1Feature2D.html#a7453189891e489bbcff1f2c971d04fde">More...</a><br /></td></tr>
<tr class="separator:a7453189891e489bbcff1f2c971d04fde"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:aefcc5503f62c875b061a11171c82ebf6" id="r_aefcc5503f62c875b061a11171c82ebf6"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1Feature2D.html#aefcc5503f62c875b061a11171c82ebf6">getMaxFeatures</a> () const</td></tr>
<tr class="separator:aefcc5503f62c875b061a11171c82ebf6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae6fff7ef38ac404f371daca34960d365" id="r_ae6fff7ef38ac404f371daca34960d365"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1Feature2D.html#ae6fff7ef38ac404f371daca34960d365">getSSC</a> () const</td></tr>
<tr class="separator:ae6fff7ef38ac404f371daca34960d365"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abae817ba195bace21531febe0ee8e76e" id="r_abae817ba195bace21531febe0ee8e76e"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1Feature2D.html#abae817ba195bace21531febe0ee8e76e">getMinDepth</a> () const</td></tr>
<tr class="separator:abae817ba195bace21531febe0ee8e76e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1f8cee3995f02d65fe093a2e5ede7db7" id="r_a1f8cee3995f02d65fe093a2e5ede7db7"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1Feature2D.html#a1f8cee3995f02d65fe093a2e5ede7db7">getMaxDepth</a> () const</td></tr>
<tr class="separator:a1f8cee3995f02d65fe093a2e5ede7db7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac8a91e9df9c43e0f87f3a02f6a21db34" id="r_ac8a91e9df9c43e0f87f3a02f6a21db34"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1Feature2D.html#ac8a91e9df9c43e0f87f3a02f6a21db34">getGridRows</a> () const</td></tr>
<tr class="separator:ac8a91e9df9c43e0f87f3a02f6a21db34"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a04c6e4b63641d379aa227a06bd9e1084" id="r_a04c6e4b63641d379aa227a06bd9e1084"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1Feature2D.html#a04c6e4b63641d379aa227a06bd9e1084">getGridCols</a> () const</td></tr>
<tr class="separator:a04c6e4b63641d379aa227a06bd9e1084"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a78d70d2150b42203ffd1c94d79661248" id="r_a78d70d2150b42203ffd1c94d79661248"><td class="memItemLeft" align="right" valign="top"><a id="a78d70d2150b42203ffd1c94d79661248" name="a78d70d2150b42203ffd1c94d79661248"></a>
std::vector&lt; cv::KeyPoint &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>generateKeypoints</b> (const cv::Mat &amp;image, const cv::Mat &amp;mask=cv::Mat())</td></tr>
<tr class="memdesc:a78d70d2150b42203ffd1c94d79661248"><td class="mdescLeft">&#160;</td><td class="mdescRight">Detects keypoints in a grayscale <code>image</code> (CV_8UC1); optional depth or 8U mask. <br /></td></tr>
<tr class="separator:a78d70d2150b42203ffd1c94d79661248"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abaca942668ac3d2f16d3e78797ff0fb9" id="r_abaca942668ac3d2f16d3e78797ff0fb9"><td class="memItemLeft" align="right" valign="top"><a id="abaca942668ac3d2f16d3e78797ff0fb9" name="abaca942668ac3d2f16d3e78797ff0fb9"></a>
cv::Mat&#160;</td><td class="memItemRight" valign="bottom"><b>generateDescriptors</b> (const cv::Mat &amp;image, std::vector&lt; cv::KeyPoint &gt; &amp;keypoints) const</td></tr>
<tr class="memdesc:abaca942668ac3d2f16d3e78797ff0fb9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Computes descriptors for <code>keypoints</code> (may shrink the list in some detectors). <br /></td></tr>
<tr class="separator:abaca942668ac3d2f16d3e78797ff0fb9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae01a548fe993a7aa309cce96645693ce" id="r_ae01a548fe993a7aa309cce96645693ce"><td class="memItemLeft" align="right" valign="top"><a id="ae01a548fe993a7aa309cce96645693ce" name="ae01a548fe993a7aa309cce96645693ce"></a>
std::vector&lt; cv::Point3f &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>generateKeypoints3D</b> (const <a class="el" href="classrtabmap_1_1SensorData.html">SensorData</a> &amp;data, const std::vector&lt; cv::KeyPoint &gt; &amp;keypoints) const</td></tr>
<tr class="memdesc:ae01a548fe993a7aa309cce96645693ce"><td class="mdescLeft">&#160;</td><td class="mdescRight">Back-projects keypoints to 3D using depth or stereo in <code>data</code>. <br /></td></tr>
<tr class="separator:ae01a548fe993a7aa309cce96645693ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5ba06900b00cf2786165d01c8c9a59a1" id="r_a5ba06900b00cf2786165d01c8c9a59a1"><td class="memItemLeft" align="right" valign="top"><a id="a5ba06900b00cf2786165d01c8c9a59a1" name="a5ba06900b00cf2786165d01c8c9a59a1"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>parseParameters</b> (const <a class="el" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a> &amp;parameters)</td></tr>
<tr class="separator:a5ba06900b00cf2786165d01c8c9a59a1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9c52665128219cb0e923febe2b25c852" id="r_a9c52665128219cb0e923febe2b25c852"><td class="memItemLeft" align="right" valign="top">virtual const <a class="el" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1Feature2D.html#a9c52665128219cb0e923febe2b25c852">getParameters</a> () const</td></tr>
<tr class="separator:a9c52665128219cb0e923febe2b25c852"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa9292a8f0c85f2bdbdaf2de861110c2c" id="r_aa9292a8f0c85f2bdbdaf2de861110c2c"><td class="memItemLeft" align="right" valign="top"><a id="aa9292a8f0c85f2bdbdaf2de861110c2c" name="aa9292a8f0c85f2bdbdaf2de861110c2c"></a>
virtual <a class="el" href="classrtabmap_1_1Feature2D.html#a7453189891e489bbcff1f2c971d04fde">Feature2D::Type</a>&#160;</td><td class="memItemRight" valign="bottom"><b>getType</b> () const =0</td></tr>
<tr class="separator:aa9292a8f0c85f2bdbdaf2de861110c2c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8d330b2b7db059f59c257cde6c9b6a99" id="r_a8d330b2b7db059f59c257cde6c9b6a99"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1Feature2D.html#a8d330b2b7db059f59c257cde6c9b6a99">isGpuAvailable</a> () const</td></tr>
<tr class="memdesc:a8d330b2b7db059f59c257cde6c9b6a99"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true when a GPU/CUDA code path <b>could</b> be used by this detector on this host: i.e. the build was compiled with the matching GPU support AND a CUDA-capable device is detected at runtime. This is a capability probe &ndash; it does NOT reflect whether the current instance is actually configured to run on GPU (that depends on per-detector parameters like SURF/GpuVersion). Defaults to false; subclasses with a GPU backend override it. <br /></td></tr>
<tr class="separator:a8d330b2b7db059f59c257cde6c9b6a99"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-static-methods" name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:a98050ef4da598e5b35bc32317bc58b84" id="r_a98050ef4da598e5b35bc32317bc58b84"><td class="memItemLeft" align="right" valign="top">static std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1Feature2D.html#a98050ef4da598e5b35bc32317bc58b84">typeName</a> (<a class="el" href="classrtabmap_1_1Feature2D.html#a7453189891e489bbcff1f2c971d04fde">Type</a> type)</td></tr>
<tr class="separator:a98050ef4da598e5b35bc32317bc58b84"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a58ac3dff96e882f0e4bbbf8a8ffc435d" id="r_a58ac3dff96e882f0e4bbbf8a8ffc435d"><td class="memItemLeft" align="right" valign="top"><a id="a58ac3dff96e882f0e4bbbf8a8ffc435d" name="a58ac3dff96e882f0e4bbbf8a8ffc435d"></a>
static <a class="el" href="classrtabmap_1_1Feature2D.html">Feature2D</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>create</b> (const <a class="el" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a> &amp;parameters=<a class="el" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a>())</td></tr>
<tr class="memdesc:a58ac3dff96e882f0e4bbbf8a8ffc435d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a detector from <b>Kp/DetectorStrategy</b> in <code>parameters</code>. Caller owns the pointer. <br /></td></tr>
<tr class="separator:a58ac3dff96e882f0e4bbbf8a8ffc435d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab9deec7c0e26722736aeeaeb5541ac3a" id="r_ab9deec7c0e26722736aeeaeb5541ac3a"><td class="memItemLeft" align="right" valign="top"><a id="ab9deec7c0e26722736aeeaeb5541ac3a" name="ab9deec7c0e26722736aeeaeb5541ac3a"></a>
static <a class="el" href="classrtabmap_1_1Feature2D.html">Feature2D</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>create</b> (<a class="el" href="classrtabmap_1_1Feature2D.html#a7453189891e489bbcff1f2c971d04fde">Feature2D::Type</a> type, const <a class="el" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a> &amp;parameters=<a class="el" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a>())</td></tr>
<tr class="memdesc:ab9deec7c0e26722736aeeaeb5541ac3a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a detector of the given <code>type</code>. Caller owns the pointer. <br /></td></tr>
<tr class="separator:ab9deec7c0e26722736aeeaeb5541ac3a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6020550480c25d36f0b4255629e75ee2" id="r_a6020550480c25d36f0b4255629e75ee2"><td class="memItemLeft" align="right" valign="top"><a id="a6020550480c25d36f0b4255629e75ee2" name="a6020550480c25d36f0b4255629e75ee2"></a>
static bool&#160;</td><td class="memItemRight" valign="bottom"><b>isAvailable</b> (<a class="el" href="classrtabmap_1_1Feature2D.html#a7453189891e489bbcff1f2c971d04fde">Feature2D::Type</a> type)</td></tr>
<tr class="memdesc:a6020550480c25d36f0b4255629e75ee2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if <code>type</code> is available (RTAB-Map is built with it). <br /></td></tr>
<tr class="separator:a6020550480c25d36f0b4255629e75ee2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aadbb5a7611eb94ea6925115999bc0f4e" id="r_aadbb5a7611eb94ea6925115999bc0f4e"><td class="memItemLeft" align="right" valign="top"><a id="aadbb5a7611eb94ea6925115999bc0f4e" name="aadbb5a7611eb94ea6925115999bc0f4e"></a>
static void&#160;</td><td class="memItemRight" valign="bottom"><b>filterKeypointsByDepth</b> (std::vector&lt; cv::KeyPoint &gt; &amp;keypoints, const cv::Mat &amp;depth, float minDepth, float maxDepth)</td></tr>
<tr class="memdesc:aadbb5a7611eb94ea6925115999bc0f4e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Keeps keypoints whose depth at (u,v) is in (<code>minDepth</code>, <code>maxDepth</code>). <br /></td></tr>
<tr class="separator:aadbb5a7611eb94ea6925115999bc0f4e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a52e47fa8c16e76b07bb1b5b5f62ef544" id="r_a52e47fa8c16e76b07bb1b5b5f62ef544"><td class="memItemLeft" align="right" valign="top"><a id="a52e47fa8c16e76b07bb1b5b5f62ef544" name="a52e47fa8c16e76b07bb1b5b5f62ef544"></a>
static void&#160;</td><td class="memItemRight" valign="bottom"><b>filterKeypointsByDepth</b> (std::vector&lt; cv::KeyPoint &gt; &amp;keypoints, cv::Mat &amp;descriptors, const cv::Mat &amp;depth, float minDepth, float maxDepth)</td></tr>
<tr class="separator:a52e47fa8c16e76b07bb1b5b5f62ef544"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af6a47b5afb6c5f7232dde3f209467498" id="r_af6a47b5afb6c5f7232dde3f209467498"><td class="memItemLeft" align="right" valign="top"><a id="af6a47b5afb6c5f7232dde3f209467498" name="af6a47b5afb6c5f7232dde3f209467498"></a>
static void&#160;</td><td class="memItemRight" valign="bottom"><b>filterKeypointsByDepth</b> (std::vector&lt; cv::KeyPoint &gt; &amp;keypoints, cv::Mat &amp;descriptors, std::vector&lt; cv::Point3f &gt; &amp;keypoints3D, float minDepth, float maxDepth)</td></tr>
<tr class="separator:af6a47b5afb6c5f7232dde3f209467498"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a32fa09026282be6a729483bfe57d31ec" id="r_a32fa09026282be6a729483bfe57d31ec"><td class="memItemLeft" align="right" valign="top"><a id="a32fa09026282be6a729483bfe57d31ec" name="a32fa09026282be6a729483bfe57d31ec"></a>
static void&#160;</td><td class="memItemRight" valign="bottom"><b>filterKeypointsByDisparity</b> (std::vector&lt; cv::KeyPoint &gt; &amp;keypoints, const cv::Mat &amp;disparity, float minDisparity)</td></tr>
<tr class="memdesc:a32fa09026282be6a729483bfe57d31ec"><td class="mdescLeft">&#160;</td><td class="mdescRight">Keeps keypoints with stereo disparity ≥ <code>minDisparity</code>. <br /></td></tr>
<tr class="separator:a32fa09026282be6a729483bfe57d31ec"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afc2ca7b0b852514c24af8667faee8163" id="r_afc2ca7b0b852514c24af8667faee8163"><td class="memItemLeft" align="right" valign="top"><a id="afc2ca7b0b852514c24af8667faee8163" name="afc2ca7b0b852514c24af8667faee8163"></a>
static void&#160;</td><td class="memItemRight" valign="bottom"><b>filterKeypointsByDisparity</b> (std::vector&lt; cv::KeyPoint &gt; &amp;keypoints, cv::Mat &amp;descriptors, const cv::Mat &amp;disparity, float minDisparity)</td></tr>
<tr class="separator:afc2ca7b0b852514c24af8667faee8163"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa5c0258ede589769bc50c6d6071d595c" id="r_aa5c0258ede589769bc50c6d6071d595c"><td class="memItemLeft" align="right" valign="top"><a id="aa5c0258ede589769bc50c6d6071d595c" name="aa5c0258ede589769bc50c6d6071d595c"></a>
static void&#160;</td><td class="memItemRight" valign="bottom"><b>limitKeypoints</b> (std::vector&lt; cv::KeyPoint &gt; &amp;keypoints, int maxKeypoints, const cv::Size &amp;imageSize=cv::Size(), bool ssc=false)</td></tr>
<tr class="memdesc:aa5c0258ede589769bc50c6d6071d595c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reduces keypoint count (by response or SSC spatial distribution). <br /></td></tr>
<tr class="separator:aa5c0258ede589769bc50c6d6071d595c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aba0cc0c4da22671572421b9f3f2d43a4" id="r_aba0cc0c4da22671572421b9f3f2d43a4"><td class="memItemLeft" align="right" valign="top"><a id="aba0cc0c4da22671572421b9f3f2d43a4" name="aba0cc0c4da22671572421b9f3f2d43a4"></a>
static void&#160;</td><td class="memItemRight" valign="bottom"><b>limitKeypoints</b> (std::vector&lt; cv::KeyPoint &gt; &amp;keypoints, cv::Mat &amp;descriptors, int maxKeypoints, const cv::Size &amp;imageSize=cv::Size(), bool ssc=false)</td></tr>
<tr class="separator:aba0cc0c4da22671572421b9f3f2d43a4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a87afad19a8c82d27ba2996d7f9fde198" id="r_a87afad19a8c82d27ba2996d7f9fde198"><td class="memItemLeft" align="right" valign="top"><a id="a87afad19a8c82d27ba2996d7f9fde198" name="a87afad19a8c82d27ba2996d7f9fde198"></a>
static void&#160;</td><td class="memItemRight" valign="bottom"><b>limitKeypoints</b> (std::vector&lt; cv::KeyPoint &gt; &amp;keypoints, std::vector&lt; cv::Point3f &gt; &amp;keypoints3D, cv::Mat &amp;descriptors, int maxKeypoints, const cv::Size &amp;imageSize=cv::Size(), bool ssc=false)</td></tr>
<tr class="separator:a87afad19a8c82d27ba2996d7f9fde198"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad53a028d97f969424afea055405782be" id="r_ad53a028d97f969424afea055405782be"><td class="memItemLeft" align="right" valign="top"><a id="ad53a028d97f969424afea055405782be" name="ad53a028d97f969424afea055405782be"></a>
static void&#160;</td><td class="memItemRight" valign="bottom"><b>limitKeypoints</b> (const std::vector&lt; cv::KeyPoint &gt; &amp;keypoints, std::vector&lt; bool &gt; &amp;inliers, int maxKeypoints, const cv::Size &amp;imageSize=cv::Size(), bool ssc=false)</td></tr>
<tr class="separator:ad53a028d97f969424afea055405782be"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3960ad23c8ccd412590311c5fe27b6e1" id="r_a3960ad23c8ccd412590311c5fe27b6e1"><td class="memItemLeft" align="right" valign="top"><a id="a3960ad23c8ccd412590311c5fe27b6e1" name="a3960ad23c8ccd412590311c5fe27b6e1"></a>
static void&#160;</td><td class="memItemRight" valign="bottom"><b>limitKeypoints</b> (const std::vector&lt; cv::KeyPoint &gt; &amp;keypoints, std::vector&lt; bool &gt; &amp;inliers, int maxKeypoints, const cv::Size &amp;imageSize, int gridRows, int gridCols, bool ssc=false)</td></tr>
<tr class="separator:a3960ad23c8ccd412590311c5fe27b6e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8bdfa57df68506fecb6342b9f5bc98e8" id="r_a8bdfa57df68506fecb6342b9f5bc98e8"><td class="memItemLeft" align="right" valign="top"><a id="a8bdfa57df68506fecb6342b9f5bc98e8" name="a8bdfa57df68506fecb6342b9f5bc98e8"></a>
static cv::Rect&#160;</td><td class="memItemRight" valign="bottom"><b>computeRoi</b> (const cv::Mat &amp;image, const std::string &amp;roiRatios)</td></tr>
<tr class="memdesc:a8bdfa57df68506fecb6342b9f5bc98e8"><td class="mdescLeft">&#160;</td><td class="mdescRight">ROI from <b>Kp/RoiRatios</b> string (<code>"left top right bottom"</code> fractions). <br /></td></tr>
<tr class="separator:a8bdfa57df68506fecb6342b9f5bc98e8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a50e780ed12538f575f340d8347274bea" id="r_a50e780ed12538f575f340d8347274bea"><td class="memItemLeft" align="right" valign="top"><a id="a50e780ed12538f575f340d8347274bea" name="a50e780ed12538f575f340d8347274bea"></a>
static cv::Rect&#160;</td><td class="memItemRight" valign="bottom"><b>computeRoi</b> (const cv::Mat &amp;image, const std::vector&lt; float &gt; &amp;roiRatios)</td></tr>
<tr class="separator:a50e780ed12538f575f340d8347274bea"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pro-methods" name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:a698973e11d04dcd87ed15f61c328facd" id="r_a698973e11d04dcd87ed15f61c328facd"><td class="memItemLeft" align="right" valign="top"><a id="a698973e11d04dcd87ed15f61c328facd" name="a698973e11d04dcd87ed15f61c328facd"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>Feature2D</b> (const <a class="el" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a> &amp;parameters=<a class="el" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a>())</td></tr>
<tr class="separator:a698973e11d04dcd87ed15f61c328facd"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Abstract 2D feature detector and descriptor extractor for visual SLAM. </p>
<p>Factory <a class="el" href="classrtabmap_1_1Feature2D.html#a58ac3dff96e882f0e4bbbf8a8ffc435d">create()</a> builds a concrete detector from <a class="el" href="classrtabmap_1_1Feature2D.html#a7453189891e489bbcff1f2c971d04fde">Type</a> or from <b>Kp/DetectorStrategy</b> in a <a class="el" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a>. Common tuning keys include <b>Kp/MaxFeatures</b>, <b>Kp/GridRows</b>, <b>Kp/GridCols</b>, <b>Kp/SSC</b>, depth filters (<b>Kp/MinDepth</b>, <b>Kp/MaxDepth</b>), ROI (<b>Kp/RoiRatios</b>), and sub-pixel refinement.</p>
<p>Pipeline: <a class="el" href="classrtabmap_1_1Feature2D.html#a78d70d2150b42203ffd1c94d79661248">generateKeypoints()</a> (grid + ROI + optional mask) then <a class="el" href="classrtabmap_1_1Feature2D.html#abaca942668ac3d2f16d3e78797ff0fb9">generateDescriptors()</a>. Static helpers filter or cap keypoints before/after matching. <a class="el" href="classrtabmap_1_1Feature2D.html#ae01a548fe993a7aa309cce96645693ce">generateKeypoints3D()</a> projects features using stereo or depth when available in <a class="el" href="classrtabmap_1_1SensorData.html">SensorData</a>.</p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classrtabmap_1_1Memory.html" title="Three-tiered memory management (STM, WM, LTM) for RTAB-Map.">Memory</a> </dd>
<dd>
<a class="el" href="classrtabmap_1_1RegistrationVis.html" title="Visual registration between two signatures using features and geometry.">RegistrationVis</a> </dd></dl>
<p class="definition">Definition at line <a class="el" href="Features2d_8h_source.html#l00145">145</a> of file <a class="el" href="Features2d_8h_source.html">Features2d.h</a>.</p>
</div><h2 class="groupheader">Member Enumeration Documentation</h2>
<a id="a7453189891e489bbcff1f2c971d04fde" name="a7453189891e489bbcff1f2c971d04fde"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7453189891e489bbcff1f2c971d04fde">&#9670;&#160;</a></span>Type</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="classrtabmap_1_1Feature2D.html#a7453189891e489bbcff1f2c971d04fde">rtabmap::Feature2D::Type</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Built-in detector/descriptor strategy (Kp/DetectorStrategy). </p>
<p class="definition">Definition at line <a class="el" href="Features2d_8h_source.html#l00148">148</a> of file <a class="el" href="Features2d_8h_source.html">Features2d.h</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a98050ef4da598e5b35bc32317bc58b84" name="a98050ef4da598e5b35bc32317bc58b84"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a98050ef4da598e5b35bc32317bc58b84">&#9670;&#160;</a></span>typeName()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static std::string rtabmap::Feature2D::typeName </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classrtabmap_1_1Feature2D.html#a7453189891e489bbcff1f2c971d04fde">Type</a>&#160;</td>
<td class="paramname"><em>type</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>Human-readable name for <code>type</code> (e.g. <code>"ORB"</code>, <code>"GFTT+BRIEF"</code>). </dd></dl>
<p class="definition">Definition at line <a class="el" href="Features2d_8h_source.html#l00169">169</a> of file <a class="el" href="Features2d_8h_source.html">Features2d.h</a>.</p>
</div>
</div>
<a id="aefcc5503f62c875b061a11171c82ebf6" name="aefcc5503f62c875b061a11171c82ebf6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aefcc5503f62c875b061a11171c82ebf6">&#9670;&#160;</a></span>getMaxFeatures()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int rtabmap::Feature2D::getMaxFeatures </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="Features2d_8h_source.html#l00260">260</a> of file <a class="el" href="Features2d_8h_source.html">Features2d.h</a>.</p>
</div>
</div>
<a id="ae6fff7ef38ac404f371daca34960d365" name="ae6fff7ef38ac404f371daca34960d365"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae6fff7ef38ac404f371daca34960d365">&#9670;&#160;</a></span>getSSC()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool rtabmap::Feature2D::getSSC </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="Features2d_8h_source.html#l00261">261</a> of file <a class="el" href="Features2d_8h_source.html">Features2d.h</a>.</p>
</div>
</div>
<a id="abae817ba195bace21531febe0ee8e76e" name="abae817ba195bace21531febe0ee8e76e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abae817ba195bace21531febe0ee8e76e">&#9670;&#160;</a></span>getMinDepth()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">float rtabmap::Feature2D::getMinDepth </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="Features2d_8h_source.html#l00262">262</a> of file <a class="el" href="Features2d_8h_source.html">Features2d.h</a>.</p>
</div>
</div>
<a id="a1f8cee3995f02d65fe093a2e5ede7db7" name="a1f8cee3995f02d65fe093a2e5ede7db7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1f8cee3995f02d65fe093a2e5ede7db7">&#9670;&#160;</a></span>getMaxDepth()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">float rtabmap::Feature2D::getMaxDepth </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="Features2d_8h_source.html#l00263">263</a> of file <a class="el" href="Features2d_8h_source.html">Features2d.h</a>.</p>
</div>
</div>
<a id="ac8a91e9df9c43e0f87f3a02f6a21db34" name="ac8a91e9df9c43e0f87f3a02f6a21db34"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac8a91e9df9c43e0f87f3a02f6a21db34">&#9670;&#160;</a></span>getGridRows()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int rtabmap::Feature2D::getGridRows </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="Features2d_8h_source.html#l00264">264</a> of file <a class="el" href="Features2d_8h_source.html">Features2d.h</a>.</p>
</div>
</div>
<a id="a04c6e4b63641d379aa227a06bd9e1084" name="a04c6e4b63641d379aa227a06bd9e1084"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a04c6e4b63641d379aa227a06bd9e1084">&#9670;&#160;</a></span>getGridCols()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int rtabmap::Feature2D::getGridCols </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="Features2d_8h_source.html#l00265">265</a> of file <a class="el" href="Features2d_8h_source.html">Features2d.h</a>.</p>
</div>
</div>
<a id="a9c52665128219cb0e923febe2b25c852" name="a9c52665128219cb0e923febe2b25c852"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9c52665128219cb0e923febe2b25c852">&#9670;&#160;</a></span>getParameters()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual const <a class="el" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a> &amp; rtabmap::Feature2D::getParameters </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="Features2d_8h_source.html#l00284">284</a> of file <a class="el" href="Features2d_8h_source.html">Features2d.h</a>.</p>
</div>
</div>
<a id="a8d330b2b7db059f59c257cde6c9b6a99" name="a8d330b2b7db059f59c257cde6c9b6a99"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8d330b2b7db059f59c257cde6c9b6a99">&#9670;&#160;</a></span>isGpuAvailable()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual bool rtabmap::Feature2D::isGpuAvailable </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns true when a GPU/CUDA code path <b>could</b> be used by this detector on this host: i.e. the build was compiled with the matching GPU support AND a CUDA-capable device is detected at runtime. This is a capability probe &ndash; it does NOT reflect whether the current instance is actually configured to run on GPU (that depends on per-detector parameters like SURF/GpuVersion). Defaults to false; subclasses with a GPU backend override it. </p>
<p>Reimplemented in <a class="el" href="classrtabmap_1_1SURF.html#a1150923dbf7e1bfd066dba0c3b22db57">rtabmap::SURF</a>, <a class="el" href="classrtabmap_1_1SIFT.html#ad089f68ffc9ef1b42b5a9c2d5a5ecd81">rtabmap::SIFT</a>, <a class="el" href="classrtabmap_1_1ORB.html#a7b5e3e7cc41dd04e517c5332f04d3a0a">rtabmap::ORB</a>, <a class="el" href="classrtabmap_1_1FAST.html#a1418ac4de2bdf5815df888a4d1f50b2e">rtabmap::FAST</a>, <a class="el" href="classrtabmap_1_1GFTT.html#a05151f04cf624576783837dc48ddf744">rtabmap::GFTT</a>, <a class="el" href="classrtabmap_1_1SuperPointTorch.html#aee69f6089f657449d3813b440abbaa25">rtabmap::SuperPointTorch</a>, and <a class="el" href="classrtabmap_1_1SuperPointRpautrat.html#ac041c8738dc391661ba21331bf78d344">rtabmap::SuperPointRpautrat</a>.</p>
<p class="definition">Definition at line <a class="el" href="Features2d_8h_source.html#l00294">294</a> of file <a class="el" href="Features2d_8h_source.html">Features2d.h</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>corelib/include/rtabmap/core/<a class="el" href="Features2d_8h_source.html">Features2d.h</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespacertabmap.html">rtabmap</a></li><li class="navelem"><a class="el" href="classrtabmap_1_1Feature2D.html">Feature2D</a></li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
</ul>
</div>
</body>
</html>