Files
rtabmap/api/latest/Features2d_8h_source.html
T

923 lines
151 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: corelib/include/rtabmap/core/Features2d.h Source File</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.12</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>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function() { init_codefold(0); });
/* @license-end */
</script>
</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('Features2d_8h_source.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="headertitle"><div class="title">Features2d.h</div></div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">/*</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment">Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment">All rights reserved.</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment"></span> </div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment">Redistribution and use in source and binary forms, with or without</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment">modification, are permitted provided that the following conditions are met:</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment"> * Redistributions of source code must retain the above copyright</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment"> notice, this list of conditions and the following disclaimer.</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment"> * Redistributions in binary form must reproduce the above copyright</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment"> notice, this list of conditions and the following disclaimer in the</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment"> documentation and/or other materials provided with the distribution.</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment"> * Neither the name of the Universite de Sherbrooke nor the</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="comment"> names of its contributors may be used to endorse or promote products</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="comment"> derived from this software without specific prior written permission.</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="comment"></span> </div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="comment">THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS IS&quot; AND</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment">ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="comment">WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="comment">DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="comment">DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="comment">(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="comment">LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="comment">ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="comment">(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS</span></div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="comment">SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</span></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="comment">*/</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span> </div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span><span class="preprocessor">#ifndef FEATURES2D_H_</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="preprocessor">#define FEATURES2D_H_</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> </div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span><span class="preprocessor">#include &quot;rtabmap/core/rtabmap_core_export.h&quot;</span> <span class="comment">// DLL export/import defines</span></div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span> </div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span><span class="preprocessor">#include &lt;opencv2/highgui/highgui.hpp&gt;</span></div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span><span class="preprocessor">#include &lt;opencv2/core/core.hpp&gt;</span></div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span><span class="preprocessor">#if CV_MAJOR_VERSION &lt; 5</span></div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span><span class="preprocessor">#include &lt;opencv2/features2d/features2d.hpp&gt;</span></div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span><span class="preprocessor">#include &lt;opencv2/features.hpp&gt;</span></div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span><span class="preprocessor">#include &lt;list&gt;</span></div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span><span class="preprocessor">#include &lt;numeric&gt;</span></div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span><span class="preprocessor">#include &quot;rtabmap/core/Parameters.h&quot;</span></div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span><span class="preprocessor">#include &quot;rtabmap/core/SensorData.h&quot;</span></div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> </div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span><span class="preprocessor">#if CV_MAJOR_VERSION &lt; 3</span></div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span><span class="keyword">namespace </span>cv{</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span><span class="keyword">class </span>SURF;</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span><span class="keyword">class </span>SIFT;</div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span><span class="keyword">namespace </span>gpu {</div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> <span class="keyword">class </span>SURF_GPU;</div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> <span class="keyword">class </span>ORB_GPU;</div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> <span class="keyword">class </span>FAST_GPU;</div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> <span class="keyword">class </span>GoodFeaturesToTrackDetector_GPU;</div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span>}</div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span>}</div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span><span class="keyword">typedef</span> cv::SIFT CV_SIFT;</div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span><span class="keyword">typedef</span> cv::SURF CV_SURF;</div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span><span class="keyword">typedef</span> cv::FastFeatureDetector CV_FAST;</div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span><span class="keyword">typedef</span> cv::FREAK CV_FREAK;</div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span><span class="keyword">typedef</span> cv::GFTTDetector CV_GFTT;</div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span><span class="keyword">typedef</span> cv::BriefDescriptorExtractor CV_BRIEF;</div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span><span class="keyword">typedef</span> cv::BRISK CV_BRISK;</div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span><span class="keyword">typedef</span> cv::gpu::SURF_GPU CV_SURF_GPU;</div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span><span class="keyword">typedef</span> cv::gpu::ORB_GPU CV_ORB_GPU;</div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span><span class="keyword">typedef</span> cv::gpu::FAST_GPU CV_FAST_GPU;</div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span><span class="keyword">typedef</span> cv::gpu::GoodFeaturesToTrackDetector_GPU CV_GFTT_GPU;</div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span><span class="keyword">namespace </span>cv{</div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span><span class="keyword">namespace </span>xfeatures2d {</div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span><span class="keyword">class </span>FREAK;</div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span><span class="keyword">class </span>DAISY;</div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span><span class="keyword">class </span>BriefDescriptorExtractor;</div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span><span class="preprocessor">#if (CV_MAJOR_VERSION == 4 &amp;&amp; CV_MINOR_VERSION &lt;= 3) || (CV_MAJOR_VERSION == 3 &amp;&amp; (CV_MINOR_VERSION &lt; 4 || (CV_MINOR_VERSION==4 &amp;&amp; CV_SUBMINOR_VERSION&lt;11)))</span></div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span><span class="keyword">class </span>SIFT;</div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span><span class="keyword">class </span>SURF;</div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span><span class="preprocessor">#if (CV_MAJOR_VERSION == 5)</span></div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span><span class="keyword">class </span>BRISK;</div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span><span class="keyword">class </span>KAZE;</div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span>}</div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span><span class="keyword">namespace </span>cuda {</div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span><span class="keyword">class </span>FastFeatureDetector;</div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span><span class="keyword">class </span>ORB;</div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span><span class="keyword">class </span>SURF_CUDA;</div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span><span class="keyword">class </span>CornersDetector;</div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span>}</div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span>}</div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span><span class="preprocessor">#if (CV_MAJOR_VERSION == 4 &amp;&amp; CV_MINOR_VERSION &lt;= 3) || (CV_MAJOR_VERSION == 3 &amp;&amp; (CV_MINOR_VERSION &lt; 4 || (CV_MINOR_VERSION==4 &amp;&amp; CV_SUBMINOR_VERSION&lt;11)))</span></div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span><span class="keyword">typedef</span> cv::xfeatures2d::SIFT CV_SIFT;</div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span><span class="keyword">typedef</span> cv::SIFT CV_SIFT; <span class="comment">// SIFT is back in features2d since 4.4.0 / 3.4.11</span></div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span><span class="keyword">typedef</span> cv::xfeatures2d::SURF CV_SURF;</div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span><span class="keyword">typedef</span> cv::FastFeatureDetector CV_FAST;</div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span><span class="keyword">typedef</span> cv::xfeatures2d::FREAK CV_FREAK;</div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span><span class="keyword">typedef</span> cv::xfeatures2d::DAISY CV_DAISY;</div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span><span class="keyword">typedef</span> cv::GFTTDetector CV_GFTT;</div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span><span class="keyword">typedef</span> cv::xfeatures2d::BriefDescriptorExtractor CV_BRIEF;</div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span><span class="preprocessor">#if (CV_MAJOR_VERSION &lt; 5)</span></div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span><span class="keyword">typedef</span> cv::BRISK CV_BRISK;</div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span><span class="keyword">typedef</span> cv::KAZE CV_KAZE;</div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span><span class="keyword">typedef</span> cv::xfeatures2d::BRISK CV_BRISK;</div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span><span class="keyword">typedef</span> cv::xfeatures2d::KAZE CV_KAZE;</div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span><span class="keyword">typedef</span> cv::ORB CV_ORB;</div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span><span class="keyword">typedef</span> cv::cuda::SURF_CUDA CV_SURF_GPU;</div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span><span class="keyword">typedef</span> cv::cuda::ORB CV_ORB_GPU;</div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span><span class="keyword">typedef</span> cv::cuda::FastFeatureDetector CV_FAST_GPU;</div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span><span class="keyword">typedef</span> cv::cuda::CornersDetector CV_GFTT_GPU;</div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> </div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span><span class="comment">// CudaSift fork: https://github.com/matlabbe/CudaSift</span></div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span><span class="keyword">class </span>SiftData;</div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> </div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span><span class="keyword">namespace </span><a class="code hl_namespace" href="namespacertabmap.html">rtabmap</a> {</div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> </div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span><span class="keyword">class </span>ORBextractor;</div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span><span class="keyword">class </span>SPDetector;</div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span><span class="keyword">class </span>SPDetectorRpautrat;</div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> </div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span><span class="keyword">class </span>Stereo;</div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span><span class="preprocessor">#if CV_MAJOR_VERSION &lt; 3</span></div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span><span class="keyword">class </span>CV_ORB;</div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> </div>
<div class="foldopen" id="foldopen00145" data-start="{" data-end="};">
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"><a class="line" href="classrtabmap_1_1Feature2D.html"> 145</a></span><span class="keyword">class </span>RTABMAP_CORE_EXPORT <a class="code hl_class" href="classrtabmap_1_1Feature2D.html">Feature2D</a> {</div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span><span class="keyword">public</span>:</div>
<div class="foldopen" id="foldopen00148" data-start="{" data-end="};">
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"><a class="line" href="classrtabmap_1_1Feature2D.html#a7453189891e489bbcff1f2c971d04fde"> 148</a></span> <span class="keyword">enum</span> <a class="code hl_enumeration" href="classrtabmap_1_1Feature2D.html#a7453189891e489bbcff1f2c971d04fde">Type</a> {kFeatureUndef=-1,</div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> kFeatureSurf=0,</div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> kFeatureSift=1,</div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> kFeatureOrb=2,</div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> kFeatureFastFreak=3,</div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> kFeatureFastBrief=4,</div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> kFeatureGfttFreak=5,</div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> kFeatureGfttBrief=6,</div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> kFeatureBrisk=7,</div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> kFeatureGfttOrb=8, <span class="comment">//new 0.10.11</span></div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span> kFeatureKaze=9, <span class="comment">//new 0.13.2</span></div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> kFeatureOrbOctree=10, <span class="comment">//new 0.19.2</span></div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span> kFeatureSuperPointTorch=11, <span class="comment">//new 0.19.7</span></div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span> kFeatureSurfFreak=12, <span class="comment">//new 0.20.4</span></div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span> kFeatureGfttDaisy=13, <span class="comment">//new 0.20.6</span></div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span> kFeatureSurfDaisy=14, <span class="comment">//new 0.20.6</span></div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> kFeaturePyDetector=15, <span class="comment">//new 0.20.8</span></div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span> kFeatureSuperPointRpautrat=16, <span class="comment">// new 0.23.3</span></div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> kFeatureEnd}; <span class="comment">// Sentinel: always keep last. Used to iterate through types.</span></div>
</div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> </div>
<div class="foldopen" id="foldopen00169" data-start="{" data-end="}">
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"><a class="line" href="classrtabmap_1_1Feature2D.html#a98050ef4da598e5b35bc32317bc58b84"> 169</a></span> <span class="keyword">static</span> std::string <a class="code hl_function" href="classrtabmap_1_1Feature2D.html#a98050ef4da598e5b35bc32317bc58b84">typeName</a>(<a class="code hl_enumeration" href="classrtabmap_1_1Feature2D.html#a7453189891e489bbcff1f2c971d04fde">Type</a> type)</div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span> {</div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span> <span class="keywordflow">switch</span>(type){</div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> <span class="keywordflow">case</span> kFeatureSurf:</div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span> <span class="keywordflow">return</span> <span class="stringliteral">&quot;SURF&quot;</span>;</div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span> <span class="keywordflow">case</span> kFeatureSift:</div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span> <span class="keywordflow">return</span> <span class="stringliteral">&quot;SIFT&quot;</span>;</div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span> <span class="keywordflow">case</span> kFeatureOrb:</div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span> <span class="keywordflow">return</span> <span class="stringliteral">&quot;ORB&quot;</span>;</div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span> <span class="keywordflow">case</span> kFeatureFastFreak:</div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> <span class="keywordflow">return</span> <span class="stringliteral">&quot;FAST+FREAK&quot;</span>;</div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> <span class="keywordflow">case</span> kFeatureFastBrief:</div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> <span class="keywordflow">return</span> <span class="stringliteral">&quot;FAST+BRIEF&quot;</span>;</div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> <span class="keywordflow">case</span> kFeatureGfttFreak:</div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span> <span class="keywordflow">return</span> <span class="stringliteral">&quot;GFTT+Freak&quot;</span>;</div>
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span> <span class="keywordflow">case</span> kFeatureGfttBrief:</div>
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span> <span class="keywordflow">return</span> <span class="stringliteral">&quot;GFTT+Brief&quot;</span>;</div>
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span> <span class="keywordflow">case</span> kFeatureBrisk:</div>
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span> <span class="keywordflow">return</span> <span class="stringliteral">&quot;BRISK&quot;</span>;</div>
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span> <span class="keywordflow">case</span> kFeatureGfttOrb:</div>
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span> <span class="keywordflow">return</span> <span class="stringliteral">&quot;GFTT+ORB&quot;</span>;</div>
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span> <span class="keywordflow">case</span> kFeatureKaze:</div>
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span> <span class="keywordflow">return</span> <span class="stringliteral">&quot;KAZE&quot;</span>;</div>
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span> <span class="keywordflow">case</span> kFeatureOrbOctree:</div>
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span> <span class="keywordflow">return</span> <span class="stringliteral">&quot;ORB-OCTREE&quot;</span>;</div>
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span> <span class="keywordflow">case</span> kFeatureSuperPointTorch:</div>
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span> <span class="keywordflow">return</span> <span class="stringliteral">&quot;SUPERPOINT&quot;</span>;</div>
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span> <span class="keywordflow">case</span> kFeatureSurfFreak:</div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span> <span class="keywordflow">return</span> <span class="stringliteral">&quot;SURF+Freak&quot;</span>;</div>
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span> <span class="keywordflow">case</span> kFeatureGfttDaisy:</div>
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span> <span class="keywordflow">return</span> <span class="stringliteral">&quot;GFTT+Daisy&quot;</span>;</div>
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</span> <span class="keywordflow">case</span> kFeatureSurfDaisy:</div>
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"> 201</span> <span class="keywordflow">return</span> <span class="stringliteral">&quot;SURF+Daisy&quot;</span>;</div>
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"> 202</span> <span class="keywordflow">case</span> kFeaturePyDetector:</div>
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span> <span class="keywordflow">return</span> <span class="stringliteral">&quot;PyDetector&quot;</span>;</div>
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"> 204</span> <span class="keywordflow">case</span> kFeatureSuperPointRpautrat:</div>
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"> 205</span> <span class="keywordflow">return</span> <span class="stringliteral">&quot;SUPERPOINT-RPAUTRAT&quot;</span>;</div>
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</span> <span class="keywordflow">default</span>:</div>
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span> <span class="keywordflow">return</span> <span class="stringliteral">&quot;Unknown&quot;</span>;</div>
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span> }</div>
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"> 209</span> }</div>
</div>
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"> 210</span> </div>
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"><a class="line" href="classrtabmap_1_1Feature2D.html#a58ac3dff96e882f0e4bbbf8a8ffc435d"> 212</a></span> <span class="keyword">static</span> <a class="code hl_class" href="classrtabmap_1_1Feature2D.html">Feature2D</a> * <a class="code hl_function" href="classrtabmap_1_1Feature2D.html#a58ac3dff96e882f0e4bbbf8a8ffc435d">create</a>(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a> &amp; parameters = <a class="code hl_typedef" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a>());</div>
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"><a class="line" href="classrtabmap_1_1Feature2D.html#ab9deec7c0e26722736aeeaeb5541ac3a"> 214</a></span> <span class="keyword">static</span> <a class="code hl_class" href="classrtabmap_1_1Feature2D.html">Feature2D</a> * <a class="code hl_function" href="classrtabmap_1_1Feature2D.html#ab9deec7c0e26722736aeeaeb5541ac3a">create</a>(<a class="code hl_enumeration" href="classrtabmap_1_1Feature2D.html#a7453189891e489bbcff1f2c971d04fde">Feature2D::Type</a> type, <span class="keyword">const</span> <a class="code hl_typedef" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a> &amp; parameters = <a class="code hl_typedef" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a>());</div>
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span> </div>
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"><a class="line" href="classrtabmap_1_1Feature2D.html#a6020550480c25d36f0b4255629e75ee2"> 217</a></span> <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classrtabmap_1_1Feature2D.html#a6020550480c25d36f0b4255629e75ee2">isAvailable</a>(<a class="code hl_enumeration" href="classrtabmap_1_1Feature2D.html#a7453189891e489bbcff1f2c971d04fde">Feature2D::Type</a> type);</div>
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"> 218</span> </div>
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"><a class="line" href="classrtabmap_1_1Feature2D.html#aadbb5a7611eb94ea6925115999bc0f4e"> 220</a></span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classrtabmap_1_1Feature2D.html#aadbb5a7611eb94ea6925115999bc0f4e">filterKeypointsByDepth</a>(</div>
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span> std::vector&lt;cv::KeyPoint&gt; &amp; keypoints,</div>
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span> <span class="keyword">const</span> cv::Mat &amp; depth,</div>
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"> 223</span> <span class="keywordtype">float</span> minDepth,</div>
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"> 224</span> <span class="keywordtype">float</span> maxDepth);</div>
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"> 225</span> <span class="keyword">static</span> <span class="keywordtype">void</span> filterKeypointsByDepth(</div>
<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"> 226</span> std::vector&lt;cv::KeyPoint&gt; &amp; keypoints,</div>
<div class="line"><a id="l00227" name="l00227"></a><span class="lineno"> 227</span> cv::Mat &amp; descriptors,</div>
<div class="line"><a id="l00228" name="l00228"></a><span class="lineno"> 228</span> <span class="keyword">const</span> cv::Mat &amp; depth,</div>
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"> 229</span> <span class="keywordtype">float</span> minDepth,</div>
<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"> 230</span> <span class="keywordtype">float</span> maxDepth);</div>
<div class="line"><a id="l00231" name="l00231"></a><span class="lineno"> 231</span> <span class="keyword">static</span> <span class="keywordtype">void</span> filterKeypointsByDepth(</div>
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"> 232</span> std::vector&lt;cv::KeyPoint&gt; &amp; keypoints,</div>
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span> cv::Mat &amp; descriptors,</div>
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span> std::vector&lt;cv::Point3f&gt; &amp; keypoints3D,</div>
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"> 235</span> <span class="keywordtype">float</span> minDepth,</div>
<div class="line"><a id="l00236" name="l00236"></a><span class="lineno"> 236</span> <span class="keywordtype">float</span> maxDepth);</div>
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"> 237</span> </div>
<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"><a class="line" href="classrtabmap_1_1Feature2D.html#a32fa09026282be6a729483bfe57d31ec"> 239</a></span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classrtabmap_1_1Feature2D.html#a32fa09026282be6a729483bfe57d31ec">filterKeypointsByDisparity</a>(</div>
<div class="line"><a id="l00240" name="l00240"></a><span class="lineno"> 240</span> std::vector&lt;cv::KeyPoint&gt; &amp; keypoints,</div>
<div class="line"><a id="l00241" name="l00241"></a><span class="lineno"> 241</span> <span class="keyword">const</span> cv::Mat &amp; disparity,</div>
<div class="line"><a id="l00242" name="l00242"></a><span class="lineno"> 242</span> <span class="keywordtype">float</span> minDisparity);</div>
<div class="line"><a id="l00243" name="l00243"></a><span class="lineno"> 243</span> <span class="keyword">static</span> <span class="keywordtype">void</span> filterKeypointsByDisparity(</div>
<div class="line"><a id="l00244" name="l00244"></a><span class="lineno"> 244</span> std::vector&lt;cv::KeyPoint&gt; &amp; keypoints,</div>
<div class="line"><a id="l00245" name="l00245"></a><span class="lineno"> 245</span> cv::Mat &amp; descriptors,</div>
<div class="line"><a id="l00246" name="l00246"></a><span class="lineno"> 246</span> <span class="keyword">const</span> cv::Mat &amp; disparity,</div>
<div class="line"><a id="l00247" name="l00247"></a><span class="lineno"> 247</span> <span class="keywordtype">float</span> minDisparity);</div>
<div class="line"><a id="l00248" name="l00248"></a><span class="lineno"> 248</span> </div>
<div class="line"><a id="l00250" name="l00250"></a><span class="lineno"><a class="line" href="classrtabmap_1_1Feature2D.html#aa5c0258ede589769bc50c6d6071d595c"> 250</a></span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classrtabmap_1_1Feature2D.html#aa5c0258ede589769bc50c6d6071d595c">limitKeypoints</a>(std::vector&lt;cv::KeyPoint&gt; &amp; keypoints, <span class="keywordtype">int</span> maxKeypoints, <span class="keyword">const</span> cv::Size &amp; imageSize = cv::Size(), <span class="keywordtype">bool</span> ssc = <span class="keyword">false</span>);</div>
<div class="line"><a id="l00251" name="l00251"></a><span class="lineno"> 251</span> <span class="keyword">static</span> <span class="keywordtype">void</span> limitKeypoints(std::vector&lt;cv::KeyPoint&gt; &amp; keypoints, cv::Mat &amp; descriptors, <span class="keywordtype">int</span> maxKeypoints, <span class="keyword">const</span> cv::Size &amp; imageSize = cv::Size(), <span class="keywordtype">bool</span> ssc = <span class="keyword">false</span>);</div>
<div class="line"><a id="l00252" name="l00252"></a><span class="lineno"> 252</span> <span class="keyword">static</span> <span class="keywordtype">void</span> limitKeypoints(std::vector&lt;cv::KeyPoint&gt; &amp; keypoints, std::vector&lt;cv::Point3f&gt; &amp; keypoints3D, cv::Mat &amp; descriptors, <span class="keywordtype">int</span> maxKeypoints, <span class="keyword">const</span> cv::Size &amp; imageSize = cv::Size(), <span class="keywordtype">bool</span> ssc = <span class="keyword">false</span>);</div>
<div class="line"><a id="l00253" name="l00253"></a><span class="lineno"> 253</span> <span class="keyword">static</span> <span class="keywordtype">void</span> limitKeypoints(<span class="keyword">const</span> std::vector&lt;cv::KeyPoint&gt; &amp; keypoints, std::vector&lt;bool&gt; &amp; inliers, <span class="keywordtype">int</span> maxKeypoints, <span class="keyword">const</span> cv::Size &amp; imageSize = cv::Size(), <span class="keywordtype">bool</span> ssc = <span class="keyword">false</span>);</div>
<div class="line"><a id="l00254" name="l00254"></a><span class="lineno"> 254</span> <span class="keyword">static</span> <span class="keywordtype">void</span> limitKeypoints(<span class="keyword">const</span> std::vector&lt;cv::KeyPoint&gt; &amp; keypoints, std::vector&lt;bool&gt; &amp; inliers, <span class="keywordtype">int</span> maxKeypoints, <span class="keyword">const</span> cv::Size &amp; imageSize, <span class="keywordtype">int</span> gridRows, <span class="keywordtype">int</span> gridCols, <span class="keywordtype">bool</span> ssc = <span class="keyword">false</span>);</div>
<div class="line"><a id="l00255" name="l00255"></a><span class="lineno"> 255</span> </div>
<div class="line"><a id="l00257" name="l00257"></a><span class="lineno"><a class="line" href="classrtabmap_1_1Feature2D.html#a8bdfa57df68506fecb6342b9f5bc98e8"> 257</a></span> <span class="keyword">static</span> cv::Rect <a class="code hl_function" href="classrtabmap_1_1Feature2D.html#a8bdfa57df68506fecb6342b9f5bc98e8">computeRoi</a>(<span class="keyword">const</span> cv::Mat &amp; image, <span class="keyword">const</span> std::string &amp; roiRatios);</div>
<div class="line"><a id="l00258" name="l00258"></a><span class="lineno"> 258</span> <span class="keyword">static</span> cv::Rect computeRoi(<span class="keyword">const</span> cv::Mat &amp; image, <span class="keyword">const</span> std::vector&lt;float&gt; &amp; roiRatios);</div>
<div class="line"><a id="l00259" name="l00259"></a><span class="lineno"> 259</span> </div>
<div class="line"><a id="l00260" name="l00260"></a><span class="lineno"> 260</span> <span class="keywordtype">int</span> getMaxFeatures()<span class="keyword"> const </span>{<span class="keywordflow">return</span> maxFeatures_;}</div>
<div class="line"><a id="l00261" name="l00261"></a><span class="lineno"> 261</span> <span class="keywordtype">bool</span> getSSC()<span class="keyword"> const </span>{<span class="keywordflow">return</span> SSC_;}</div>
<div class="line"><a id="l00262" name="l00262"></a><span class="lineno"> 262</span> <span class="keywordtype">float</span> getMinDepth()<span class="keyword"> const </span>{<span class="keywordflow">return</span> _minDepth;}</div>
<div class="line"><a id="l00263" name="l00263"></a><span class="lineno"> 263</span> <span class="keywordtype">float</span> getMaxDepth()<span class="keyword"> const </span>{<span class="keywordflow">return</span> _maxDepth;}</div>
<div class="line"><a id="l00264" name="l00264"></a><span class="lineno"> 264</span> <span class="keywordtype">int</span> getGridRows()<span class="keyword"> const </span>{<span class="keywordflow">return</span> gridRows_;}</div>
<div class="line"><a id="l00265" name="l00265"></a><span class="lineno"> 265</span> <span class="keywordtype">int</span> getGridCols()<span class="keyword"> const </span>{<span class="keywordflow">return</span> gridCols_;}</div>
<div class="line"><a id="l00266" name="l00266"></a><span class="lineno"> 266</span> </div>
<div class="line"><a id="l00267" name="l00267"></a><span class="lineno"> 267</span><span class="keyword">public</span>:</div>
<div class="line"><a id="l00268" name="l00268"></a><span class="lineno"> 268</span> <span class="keyword">virtual</span> ~Feature2D();</div>
<div class="line"><a id="l00269" name="l00269"></a><span class="lineno"> 269</span> </div>
<div class="line"><a id="l00271" name="l00271"></a><span class="lineno"><a class="line" href="classrtabmap_1_1Feature2D.html#a78d70d2150b42203ffd1c94d79661248"> 271</a></span> std::vector&lt;cv::KeyPoint&gt; <a class="code hl_function" href="classrtabmap_1_1Feature2D.html#a78d70d2150b42203ffd1c94d79661248">generateKeypoints</a>(</div>
<div class="line"><a id="l00272" name="l00272"></a><span class="lineno"> 272</span> <span class="keyword">const</span> cv::Mat &amp; image,</div>
<div class="line"><a id="l00273" name="l00273"></a><span class="lineno"> 273</span> <span class="keyword">const</span> cv::Mat &amp; mask = cv::Mat());</div>
<div class="line"><a id="l00275" name="l00275"></a><span class="lineno"><a class="line" href="classrtabmap_1_1Feature2D.html#abaca942668ac3d2f16d3e78797ff0fb9"> 275</a></span> cv::Mat <a class="code hl_function" href="classrtabmap_1_1Feature2D.html#abaca942668ac3d2f16d3e78797ff0fb9">generateDescriptors</a>(</div>
<div class="line"><a id="l00276" name="l00276"></a><span class="lineno"> 276</span> <span class="keyword">const</span> cv::Mat &amp; image,</div>
<div class="line"><a id="l00277" name="l00277"></a><span class="lineno"> 277</span> std::vector&lt;cv::KeyPoint&gt; &amp; keypoints) <span class="keyword">const</span>;</div>
<div class="line"><a id="l00279" name="l00279"></a><span class="lineno"><a class="line" href="classrtabmap_1_1Feature2D.html#ae01a548fe993a7aa309cce96645693ce"> 279</a></span> std::vector&lt;cv::Point3f&gt; <a class="code hl_function" href="classrtabmap_1_1Feature2D.html#ae01a548fe993a7aa309cce96645693ce">generateKeypoints3D</a>(</div>
<div class="line"><a id="l00280" name="l00280"></a><span class="lineno"> 280</span> <span class="keyword">const</span> <a class="code hl_class" href="classrtabmap_1_1SensorData.html">SensorData</a> &amp; data,</div>
<div class="line"><a id="l00281" name="l00281"></a><span class="lineno"> 281</span> <span class="keyword">const</span> std::vector&lt;cv::KeyPoint&gt; &amp; keypoints) <span class="keyword">const</span>;</div>
<div class="line"><a id="l00282" name="l00282"></a><span class="lineno"> 282</span> </div>
<div class="line"><a id="l00283" name="l00283"></a><span class="lineno"> 283</span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> parseParameters(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a> &amp; parameters);</div>
<div class="line"><a id="l00284" name="l00284"></a><span class="lineno"> 284</span> <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code hl_typedef" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a> &amp; getParameters()<span class="keyword"> const </span>{<span class="keywordflow">return</span> parameters_;}</div>
<div class="line"><a id="l00285" name="l00285"></a><span class="lineno"> 285</span> <span class="keyword">virtual</span> <a class="code hl_enumeration" href="classrtabmap_1_1Feature2D.html#a7453189891e489bbcff1f2c971d04fde">Feature2D::Type</a> getType() <span class="keyword">const</span> = 0;</div>
<div class="line"><a id="l00286" name="l00286"></a><span class="lineno"> 286</span> </div>
<div class="line"><a id="l00294" name="l00294"></a><span class="lineno"><a class="line" href="classrtabmap_1_1Feature2D.html#a8d330b2b7db059f59c257cde6c9b6a99"> 294</a></span> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classrtabmap_1_1Feature2D.html#a8d330b2b7db059f59c257cde6c9b6a99">isGpuAvailable</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> <span class="keyword">false</span>;}</div>
<div class="line"><a id="l00295" name="l00295"></a><span class="lineno"> 295</span> </div>
<div class="line"><a id="l00296" name="l00296"></a><span class="lineno"> 296</span><span class="keyword">protected</span>:</div>
<div class="line"><a id="l00297" name="l00297"></a><span class="lineno"> 297</span> <a class="code hl_class" href="classrtabmap_1_1Feature2D.html">Feature2D</a>(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a> &amp; parameters = <a class="code hl_typedef" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a>());</div>
<div class="line"><a id="l00298" name="l00298"></a><span class="lineno"> 298</span> </div>
<div class="line"><a id="l00299" name="l00299"></a><span class="lineno"> 299</span><span class="keyword">private</span>:</div>
<div class="line"><a id="l00300" name="l00300"></a><span class="lineno"> 300</span> <span class="keyword">virtual</span> std::vector&lt;cv::KeyPoint&gt; generateKeypointsImpl(<span class="keyword">const</span> cv::Mat &amp; image, <span class="keyword">const</span> cv::Rect &amp; roi, <span class="keyword">const</span> cv::Mat &amp; mask = cv::Mat()) = 0;</div>
<div class="line"><a id="l00301" name="l00301"></a><span class="lineno"> 301</span> <span class="keyword">virtual</span> cv::Mat generateDescriptorsImpl(<span class="keyword">const</span> cv::Mat &amp; image, std::vector&lt;cv::KeyPoint&gt; &amp; keypoints) <span class="keyword">const</span> = 0;</div>
<div class="line"><a id="l00302" name="l00302"></a><span class="lineno"> 302</span> </div>
<div class="line"><a id="l00303" name="l00303"></a><span class="lineno"> 303</span><span class="keyword">private</span>:</div>
<div class="line"><a id="l00304" name="l00304"></a><span class="lineno"> 304</span> <a class="code hl_typedef" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a> parameters_;</div>
<div class="line"><a id="l00305" name="l00305"></a><span class="lineno"> 305</span> <span class="keywordtype">int</span> maxFeatures_;</div>
<div class="line"><a id="l00306" name="l00306"></a><span class="lineno"> 306</span> <span class="keywordtype">bool</span> SSC_;</div>
<div class="line"><a id="l00307" name="l00307"></a><span class="lineno"> 307</span> <span class="keywordtype">float</span> _maxDepth; <span class="comment">// 0=inf</span></div>
<div class="line"><a id="l00308" name="l00308"></a><span class="lineno"> 308</span> <span class="keywordtype">float</span> _minDepth;</div>
<div class="line"><a id="l00309" name="l00309"></a><span class="lineno"> 309</span> std::vector&lt;float&gt; _roiRatios; <span class="comment">// size 4</span></div>
<div class="line"><a id="l00310" name="l00310"></a><span class="lineno"> 310</span> <span class="keywordtype">int</span> _subPixWinSize;</div>
<div class="line"><a id="l00311" name="l00311"></a><span class="lineno"> 311</span> <span class="keywordtype">int</span> _subPixIterations;</div>
<div class="line"><a id="l00312" name="l00312"></a><span class="lineno"> 312</span> <span class="keywordtype">double</span> _subPixEps;</div>
<div class="line"><a id="l00313" name="l00313"></a><span class="lineno"> 313</span> <span class="keywordtype">int</span> gridRows_;</div>
<div class="line"><a id="l00314" name="l00314"></a><span class="lineno"> 314</span> <span class="keywordtype">int</span> gridCols_;</div>
<div class="line"><a id="l00315" name="l00315"></a><span class="lineno"> 315</span> <span class="comment">// Stereo stuff</span></div>
<div class="line"><a id="l00316" name="l00316"></a><span class="lineno"> 316</span> <a class="code hl_class" href="classrtabmap_1_1Stereo.html">Stereo</a> * _stereo;</div>
<div class="line"><a id="l00317" name="l00317"></a><span class="lineno"> 317</span>};</div>
</div>
<div class="line"><a id="l00318" name="l00318"></a><span class="lineno"> 318</span> </div>
<div class="foldopen" id="foldopen00320" data-start="{" data-end="};">
<div class="line"><a id="l00320" name="l00320"></a><span class="lineno"><a class="line" href="classrtabmap_1_1SURF.html"> 320</a></span><span class="keyword">class </span>RTABMAP_CORE_EXPORT <a class="code hl_class" href="classrtabmap_1_1SURF.html">SURF</a> : <span class="keyword">public</span> <a class="code hl_class" href="classrtabmap_1_1Feature2D.html">Feature2D</a></div>
<div class="line"><a id="l00321" name="l00321"></a><span class="lineno"> 321</span>{</div>
<div class="line"><a id="l00322" name="l00322"></a><span class="lineno"> 322</span><span class="keyword">public</span>:</div>
<div class="line"><a id="l00323" name="l00323"></a><span class="lineno"> 323</span> <a class="code hl_class" href="classrtabmap_1_1SURF.html">SURF</a>(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a> &amp; parameters = <a class="code hl_typedef" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a>());</div>
<div class="line"><a id="l00324" name="l00324"></a><span class="lineno"> 324</span> <span class="keyword">virtual</span> <a class="code hl_class" href="classrtabmap_1_1SURF.html">~SURF</a>();</div>
<div class="line"><a id="l00325" name="l00325"></a><span class="lineno"> 325</span> </div>
<div class="line"><a id="l00326" name="l00326"></a><span class="lineno"> 326</span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> parseParameters(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a> &amp; parameters) <span class="keyword">override</span>;</div>
<div class="line"><a id="l00327" name="l00327"></a><span class="lineno"> 327</span> <span class="keyword">virtual</span> <a class="code hl_enumeration" href="classrtabmap_1_1Feature2D.html#a7453189891e489bbcff1f2c971d04fde">Feature2D::Type</a> getType()<span class="keyword"> const override </span>{<span class="keywordflow">return</span> kFeatureSurf;}</div>
<div class="line"><a id="l00328" name="l00328"></a><span class="lineno"><a class="line" href="classrtabmap_1_1SURF.html#a1150923dbf7e1bfd066dba0c3b22db57"> 328</a></span> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classrtabmap_1_1SURF.html#a1150923dbf7e1bfd066dba0c3b22db57">isGpuAvailable</a>() <span class="keyword">const override</span>;</div>
<div class="line"><a id="l00329" name="l00329"></a><span class="lineno"> 329</span> </div>
<div class="line"><a id="l00330" name="l00330"></a><span class="lineno"> 330</span><span class="keyword">private</span>:</div>
<div class="line"><a id="l00331" name="l00331"></a><span class="lineno"> 331</span> <span class="keyword">virtual</span> std::vector&lt;cv::KeyPoint&gt; generateKeypointsImpl(<span class="keyword">const</span> cv::Mat &amp; image, <span class="keyword">const</span> cv::Rect &amp; roi, <span class="keyword">const</span> cv::Mat &amp; mask = cv::Mat()) <span class="keyword">override</span>;</div>
<div class="line"><a id="l00332" name="l00332"></a><span class="lineno"> 332</span> <span class="keyword">virtual</span> cv::Mat generateDescriptorsImpl(<span class="keyword">const</span> cv::Mat &amp; image, std::vector&lt;cv::KeyPoint&gt; &amp; keypoints) <span class="keyword">const override</span>;</div>
<div class="line"><a id="l00333" name="l00333"></a><span class="lineno"> 333</span> </div>
<div class="line"><a id="l00334" name="l00334"></a><span class="lineno"> 334</span><span class="keyword">private</span>:</div>
<div class="line"><a id="l00335" name="l00335"></a><span class="lineno"> 335</span> <span class="keywordtype">double</span> hessianThreshold_;</div>
<div class="line"><a id="l00336" name="l00336"></a><span class="lineno"> 336</span> <span class="keywordtype">int</span> nOctaves_;</div>
<div class="line"><a id="l00337" name="l00337"></a><span class="lineno"> 337</span> <span class="keywordtype">int</span> nOctaveLayers_;</div>
<div class="line"><a id="l00338" name="l00338"></a><span class="lineno"> 338</span> <span class="keywordtype">bool</span> extended_;</div>
<div class="line"><a id="l00339" name="l00339"></a><span class="lineno"> 339</span> <span class="keywordtype">bool</span> upright_;</div>
<div class="line"><a id="l00340" name="l00340"></a><span class="lineno"> 340</span> <span class="keywordtype">float</span> gpuKeypointsRatio_;</div>
<div class="line"><a id="l00341" name="l00341"></a><span class="lineno"> 341</span> <span class="keywordtype">bool</span> gpuVersion_;</div>
<div class="line"><a id="l00342" name="l00342"></a><span class="lineno"> 342</span> </div>
<div class="line"><a id="l00343" name="l00343"></a><span class="lineno"> 343</span> cv::Ptr&lt;CV_SURF&gt; _surf;</div>
<div class="line"><a id="l00344" name="l00344"></a><span class="lineno"> 344</span> cv::Ptr&lt;CV_SURF_GPU&gt; _gpuSurf;</div>
<div class="line"><a id="l00345" name="l00345"></a><span class="lineno"> 345</span>};</div>
</div>
<div class="line"><a id="l00346" name="l00346"></a><span class="lineno"> 346</span> </div>
<div class="foldopen" id="foldopen00348" data-start="{" data-end="};">
<div class="line"><a id="l00348" name="l00348"></a><span class="lineno"><a class="line" href="classrtabmap_1_1SIFT.html"> 348</a></span><span class="keyword">class </span>RTABMAP_CORE_EXPORT <a class="code hl_class" href="classrtabmap_1_1SIFT.html">SIFT</a> : <span class="keyword">public</span> <a class="code hl_class" href="classrtabmap_1_1Feature2D.html">Feature2D</a></div>
<div class="line"><a id="l00349" name="l00349"></a><span class="lineno"> 349</span>{</div>
<div class="line"><a id="l00350" name="l00350"></a><span class="lineno"> 350</span><span class="keyword">public</span>:</div>
<div class="line"><a id="l00351" name="l00351"></a><span class="lineno"> 351</span> <a class="code hl_class" href="classrtabmap_1_1SIFT.html">SIFT</a>(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a> &amp; parameters = <a class="code hl_typedef" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a>());</div>
<div class="line"><a id="l00352" name="l00352"></a><span class="lineno"> 352</span> <span class="keyword">virtual</span> <a class="code hl_class" href="classrtabmap_1_1SIFT.html">~SIFT</a>();</div>
<div class="line"><a id="l00353" name="l00353"></a><span class="lineno"> 353</span> </div>
<div class="line"><a id="l00354" name="l00354"></a><span class="lineno"> 354</span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> parseParameters(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a> &amp; parameters) <span class="keyword">override</span>;</div>
<div class="line"><a id="l00355" name="l00355"></a><span class="lineno"> 355</span> <span class="keyword">virtual</span> <a class="code hl_enumeration" href="classrtabmap_1_1Feature2D.html#a7453189891e489bbcff1f2c971d04fde">Feature2D::Type</a> getType()<span class="keyword"> const override </span>{<span class="keywordflow">return</span> kFeatureSift;}</div>
<div class="line"><a id="l00356" name="l00356"></a><span class="lineno"><a class="line" href="classrtabmap_1_1SIFT.html#ad089f68ffc9ef1b42b5a9c2d5a5ecd81"> 356</a></span> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classrtabmap_1_1SIFT.html#ad089f68ffc9ef1b42b5a9c2d5a5ecd81">isGpuAvailable</a>() <span class="keyword">const override</span>;</div>
<div class="line"><a id="l00357" name="l00357"></a><span class="lineno"> 357</span> </div>
<div class="line"><a id="l00358" name="l00358"></a><span class="lineno"> 358</span><span class="keyword">private</span>:</div>
<div class="line"><a id="l00359" name="l00359"></a><span class="lineno"> 359</span> <span class="keyword">virtual</span> std::vector&lt;cv::KeyPoint&gt; generateKeypointsImpl(<span class="keyword">const</span> cv::Mat &amp; image, <span class="keyword">const</span> cv::Rect &amp; roi, <span class="keyword">const</span> cv::Mat &amp; mask = cv::Mat()) <span class="keyword">override</span>;</div>
<div class="line"><a id="l00360" name="l00360"></a><span class="lineno"> 360</span> <span class="keyword">virtual</span> cv::Mat generateDescriptorsImpl(<span class="keyword">const</span> cv::Mat &amp; image, std::vector&lt;cv::KeyPoint&gt; &amp; keypoints) <span class="keyword">const override</span>;</div>
<div class="line"><a id="l00361" name="l00361"></a><span class="lineno"> 361</span> </div>
<div class="line"><a id="l00362" name="l00362"></a><span class="lineno"> 362</span><span class="keyword">private</span>:</div>
<div class="line"><a id="l00363" name="l00363"></a><span class="lineno"> 363</span> <span class="keywordtype">int</span> nOctaveLayers_;</div>
<div class="line"><a id="l00364" name="l00364"></a><span class="lineno"> 364</span> <span class="keywordtype">double</span> contrastThreshold_;</div>
<div class="line"><a id="l00365" name="l00365"></a><span class="lineno"> 365</span> <span class="keywordtype">double</span> edgeThreshold_;</div>
<div class="line"><a id="l00366" name="l00366"></a><span class="lineno"> 366</span> <span class="keywordtype">double</span> sigma_;</div>
<div class="line"><a id="l00367" name="l00367"></a><span class="lineno"> 367</span> <span class="keywordtype">bool</span> preciseUpscale_;</div>
<div class="line"><a id="l00368" name="l00368"></a><span class="lineno"> 368</span> <span class="keywordtype">bool</span> rootSIFT_;</div>
<div class="line"><a id="l00369" name="l00369"></a><span class="lineno"> 369</span> <span class="keywordtype">bool</span> gpu_;</div>
<div class="line"><a id="l00370" name="l00370"></a><span class="lineno"> 370</span> <span class="keywordtype">float</span> gaussianThreshold_;</div>
<div class="line"><a id="l00371" name="l00371"></a><span class="lineno"> 371</span> <span class="keywordtype">float</span> maxGaussianThreshold_;</div>
<div class="line"><a id="l00372" name="l00372"></a><span class="lineno"> 372</span> <span class="keywordtype">bool</span> upscale_;</div>
<div class="line"><a id="l00373" name="l00373"></a><span class="lineno"> 373</span> </div>
<div class="line"><a id="l00374" name="l00374"></a><span class="lineno"> 374</span> cv::Ptr&lt;CV_SIFT&gt; sift_;</div>
<div class="line"><a id="l00375" name="l00375"></a><span class="lineno"> 375</span> SiftData * cudaSiftData_;</div>
<div class="line"><a id="l00376" name="l00376"></a><span class="lineno"> 376</span> <span class="keywordtype">float</span> * cudaSiftMemory_;</div>
<div class="line"><a id="l00377" name="l00377"></a><span class="lineno"> 377</span> cv::Size cudaSiftMemorySize_;</div>
<div class="line"><a id="l00378" name="l00378"></a><span class="lineno"> 378</span> cv::Mat cudaSiftDescriptors_;</div>
<div class="line"><a id="l00379" name="l00379"></a><span class="lineno"> 379</span> <span class="keywordtype">bool</span> cudaSiftUpscaling_;</div>
<div class="line"><a id="l00380" name="l00380"></a><span class="lineno"> 380</span>};</div>
</div>
<div class="line"><a id="l00381" name="l00381"></a><span class="lineno"> 381</span> </div>
<div class="foldopen" id="foldopen00383" data-start="{" data-end="};">
<div class="line"><a id="l00383" name="l00383"></a><span class="lineno"><a class="line" href="classrtabmap_1_1ORB.html"> 383</a></span><span class="keyword">class </span>RTABMAP_CORE_EXPORT <a class="code hl_class" href="classrtabmap_1_1ORB.html">ORB</a> : <span class="keyword">public</span> <a class="code hl_class" href="classrtabmap_1_1Feature2D.html">Feature2D</a></div>
<div class="line"><a id="l00384" name="l00384"></a><span class="lineno"> 384</span>{</div>
<div class="line"><a id="l00385" name="l00385"></a><span class="lineno"> 385</span><span class="keyword">public</span>:</div>
<div class="line"><a id="l00386" name="l00386"></a><span class="lineno"> 386</span> <a class="code hl_class" href="classrtabmap_1_1ORB.html">ORB</a>(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a> &amp; parameters = <a class="code hl_typedef" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a>());</div>
<div class="line"><a id="l00387" name="l00387"></a><span class="lineno"> 387</span> <span class="keyword">virtual</span> <a class="code hl_class" href="classrtabmap_1_1ORB.html">~ORB</a>();</div>
<div class="line"><a id="l00388" name="l00388"></a><span class="lineno"> 388</span> </div>
<div class="line"><a id="l00389" name="l00389"></a><span class="lineno"> 389</span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> parseParameters(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a> &amp; parameters) <span class="keyword">override</span>;</div>
<div class="line"><a id="l00390" name="l00390"></a><span class="lineno"> 390</span> <span class="keyword">virtual</span> <a class="code hl_enumeration" href="classrtabmap_1_1Feature2D.html#a7453189891e489bbcff1f2c971d04fde">Feature2D::Type</a> getType()<span class="keyword"> const override </span>{<span class="keywordflow">return</span> kFeatureOrb;}</div>
<div class="line"><a id="l00391" name="l00391"></a><span class="lineno"><a class="line" href="classrtabmap_1_1ORB.html#a7b5e3e7cc41dd04e517c5332f04d3a0a"> 391</a></span> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classrtabmap_1_1ORB.html#a7b5e3e7cc41dd04e517c5332f04d3a0a">isGpuAvailable</a>() <span class="keyword">const override</span>;</div>
<div class="line"><a id="l00392" name="l00392"></a><span class="lineno"> 392</span> </div>
<div class="line"><a id="l00393" name="l00393"></a><span class="lineno"> 393</span><span class="keyword">private</span>:</div>
<div class="line"><a id="l00394" name="l00394"></a><span class="lineno"> 394</span> <span class="keyword">virtual</span> std::vector&lt;cv::KeyPoint&gt; generateKeypointsImpl(<span class="keyword">const</span> cv::Mat &amp; image, <span class="keyword">const</span> cv::Rect &amp; roi, <span class="keyword">const</span> cv::Mat &amp; mask = cv::Mat()) <span class="keyword">override</span>;</div>
<div class="line"><a id="l00395" name="l00395"></a><span class="lineno"> 395</span> <span class="keyword">virtual</span> cv::Mat generateDescriptorsImpl(<span class="keyword">const</span> cv::Mat &amp; image, std::vector&lt;cv::KeyPoint&gt; &amp; keypoints) <span class="keyword">const override</span>;</div>
<div class="line"><a id="l00396" name="l00396"></a><span class="lineno"> 396</span> </div>
<div class="line"><a id="l00397" name="l00397"></a><span class="lineno"> 397</span><span class="keyword">private</span>:</div>
<div class="line"><a id="l00398" name="l00398"></a><span class="lineno"> 398</span> <span class="keywordtype">float</span> scaleFactor_;</div>
<div class="line"><a id="l00399" name="l00399"></a><span class="lineno"> 399</span> <span class="keywordtype">int</span> nLevels_;</div>
<div class="line"><a id="l00400" name="l00400"></a><span class="lineno"> 400</span> <span class="keywordtype">int</span> edgeThreshold_;</div>
<div class="line"><a id="l00401" name="l00401"></a><span class="lineno"> 401</span> <span class="keywordtype">int</span> firstLevel_;</div>
<div class="line"><a id="l00402" name="l00402"></a><span class="lineno"> 402</span> <span class="keywordtype">int</span> WTA_K_;</div>
<div class="line"><a id="l00403" name="l00403"></a><span class="lineno"> 403</span> <span class="keywordtype">int</span> scoreType_;</div>
<div class="line"><a id="l00404" name="l00404"></a><span class="lineno"> 404</span> <span class="keywordtype">int</span> patchSize_;</div>
<div class="line"><a id="l00405" name="l00405"></a><span class="lineno"> 405</span> <span class="keywordtype">bool</span> gpu_;</div>
<div class="line"><a id="l00406" name="l00406"></a><span class="lineno"> 406</span> </div>
<div class="line"><a id="l00407" name="l00407"></a><span class="lineno"> 407</span> <span class="keywordtype">int</span> fastThreshold_;</div>
<div class="line"><a id="l00408" name="l00408"></a><span class="lineno"> 408</span> <span class="keywordtype">bool</span> nonmaxSuppresion_;</div>
<div class="line"><a id="l00409" name="l00409"></a><span class="lineno"> 409</span> </div>
<div class="line"><a id="l00410" name="l00410"></a><span class="lineno"> 410</span> cv::Ptr&lt;CV_ORB&gt; _orb;</div>
<div class="line"><a id="l00411" name="l00411"></a><span class="lineno"> 411</span> cv::Ptr&lt;CV_ORB_GPU&gt; _gpuOrb;</div>
<div class="line"><a id="l00412" name="l00412"></a><span class="lineno"> 412</span>};</div>
</div>
<div class="line"><a id="l00413" name="l00413"></a><span class="lineno"> 413</span> </div>
<div class="foldopen" id="foldopen00415" data-start="{" data-end="};">
<div class="line"><a id="l00415" name="l00415"></a><span class="lineno"><a class="line" href="classrtabmap_1_1FAST.html"> 415</a></span><span class="keyword">class </span>RTABMAP_CORE_EXPORT <a class="code hl_class" href="classrtabmap_1_1FAST.html">FAST</a> : <span class="keyword">public</span> <a class="code hl_class" href="classrtabmap_1_1Feature2D.html">Feature2D</a></div>
<div class="line"><a id="l00416" name="l00416"></a><span class="lineno"> 416</span>{</div>
<div class="line"><a id="l00417" name="l00417"></a><span class="lineno"> 417</span><span class="keyword">public</span>:</div>
<div class="line"><a id="l00418" name="l00418"></a><span class="lineno"> 418</span> <a class="code hl_class" href="classrtabmap_1_1FAST.html">FAST</a>(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a> &amp; parameters = <a class="code hl_typedef" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a>());</div>
<div class="line"><a id="l00419" name="l00419"></a><span class="lineno"> 419</span> <span class="keyword">virtual</span> <a class="code hl_class" href="classrtabmap_1_1FAST.html">~FAST</a>();</div>
<div class="line"><a id="l00420" name="l00420"></a><span class="lineno"> 420</span> </div>
<div class="line"><a id="l00421" name="l00421"></a><span class="lineno"> 421</span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> parseParameters(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a> &amp; parameters) <span class="keyword">override</span>;</div>
<div class="line"><a id="l00422" name="l00422"></a><span class="lineno"> 422</span> <span class="keyword">virtual</span> <a class="code hl_enumeration" href="classrtabmap_1_1Feature2D.html#a7453189891e489bbcff1f2c971d04fde">Feature2D::Type</a> getType()<span class="keyword"> const override </span>{<span class="keywordflow">return</span> kFeatureUndef;}</div>
<div class="line"><a id="l00423" name="l00423"></a><span class="lineno"><a class="line" href="classrtabmap_1_1FAST.html#a1418ac4de2bdf5815df888a4d1f50b2e"> 423</a></span> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classrtabmap_1_1FAST.html#a1418ac4de2bdf5815df888a4d1f50b2e">isGpuAvailable</a>() <span class="keyword">const override</span>;</div>
<div class="line"><a id="l00424" name="l00424"></a><span class="lineno"> 424</span> </div>
<div class="line"><a id="l00425" name="l00425"></a><span class="lineno"> 425</span><span class="keyword">private</span>:</div>
<div class="line"><a id="l00426" name="l00426"></a><span class="lineno"> 426</span> <span class="keyword">virtual</span> std::vector&lt;cv::KeyPoint&gt; generateKeypointsImpl(<span class="keyword">const</span> cv::Mat &amp; image, <span class="keyword">const</span> cv::Rect &amp; roi, <span class="keyword">const</span> cv::Mat &amp; mask = cv::Mat()) <span class="keyword">override</span>;</div>
<div class="line"><a id="l00427" name="l00427"></a><span class="lineno"> 427</span> <span class="keyword">virtual</span> cv::Mat generateDescriptorsImpl(<span class="keyword">const</span> cv::Mat &amp;, std::vector&lt;cv::KeyPoint&gt; &amp;)<span class="keyword"> const override </span>{<span class="keywordflow">return</span> cv::Mat();}</div>
<div class="line"><a id="l00428" name="l00428"></a><span class="lineno"> 428</span> </div>
<div class="line"><a id="l00429" name="l00429"></a><span class="lineno"> 429</span><span class="keyword">private</span>:</div>
<div class="line"><a id="l00430" name="l00430"></a><span class="lineno"> 430</span> <span class="keywordtype">int</span> threshold_;</div>
<div class="line"><a id="l00431" name="l00431"></a><span class="lineno"> 431</span> <span class="keywordtype">bool</span> nonmaxSuppression_;</div>
<div class="line"><a id="l00432" name="l00432"></a><span class="lineno"> 432</span> <span class="keywordtype">bool</span> gpu_;</div>
<div class="line"><a id="l00433" name="l00433"></a><span class="lineno"> 433</span> <span class="keywordtype">double</span> gpuKeypointsRatio_;</div>
<div class="line"><a id="l00434" name="l00434"></a><span class="lineno"> 434</span> <span class="keywordtype">int</span> minThreshold_;</div>
<div class="line"><a id="l00435" name="l00435"></a><span class="lineno"> 435</span> <span class="keywordtype">int</span> maxThreshold_;</div>
<div class="line"><a id="l00436" name="l00436"></a><span class="lineno"> 436</span> <span class="keywordtype">int</span> gridRows_;</div>
<div class="line"><a id="l00437" name="l00437"></a><span class="lineno"> 437</span> <span class="keywordtype">int</span> gridCols_;</div>
<div class="line"><a id="l00438" name="l00438"></a><span class="lineno"> 438</span> <span class="keywordtype">int</span> fastCV_;</div>
<div class="line"><a id="l00439" name="l00439"></a><span class="lineno"> 439</span> </div>
<div class="line"><a id="l00440" name="l00440"></a><span class="lineno"> 440</span> <span class="keywordtype">bool</span> fastCVinit_;</div>
<div class="line"><a id="l00441" name="l00441"></a><span class="lineno"> 441</span> <span class="keywordtype">int</span> fastCVMaxFeatures_;</div>
<div class="line"><a id="l00442" name="l00442"></a><span class="lineno"> 442</span> <span class="keywordtype">int</span> fastCVLastImageHeight_;</div>
<div class="line"><a id="l00443" name="l00443"></a><span class="lineno"> 443</span> uint32_t* fastCVCorners_= NULL;</div>
<div class="line"><a id="l00444" name="l00444"></a><span class="lineno"> 444</span> uint32_t* fastCVCornerScores_ = NULL;</div>
<div class="line"><a id="l00445" name="l00445"></a><span class="lineno"> 445</span> <span class="keywordtype">void</span>* fastCVTempBuf_ = NULL;</div>
<div class="line"><a id="l00446" name="l00446"></a><span class="lineno"> 446</span> </div>
<div class="line"><a id="l00447" name="l00447"></a><span class="lineno"> 447</span> cv::Ptr&lt;cv::FeatureDetector&gt; _fast;</div>
<div class="line"><a id="l00448" name="l00448"></a><span class="lineno"> 448</span> cv::Ptr&lt;CV_FAST_GPU&gt; _gpuFast;</div>
<div class="line"><a id="l00449" name="l00449"></a><span class="lineno"> 449</span>};</div>
</div>
<div class="line"><a id="l00450" name="l00450"></a><span class="lineno"> 450</span> </div>
<div class="foldopen" id="foldopen00452" data-start="{" data-end="};">
<div class="line"><a id="l00452" name="l00452"></a><span class="lineno"><a class="line" href="classrtabmap_1_1FAST__BRIEF.html"> 452</a></span><span class="keyword">class </span>RTABMAP_CORE_EXPORT <a class="code hl_class" href="classrtabmap_1_1FAST__BRIEF.html">FAST_BRIEF</a> : <span class="keyword">public</span> <a class="code hl_class" href="classrtabmap_1_1FAST.html">FAST</a></div>
<div class="line"><a id="l00453" name="l00453"></a><span class="lineno"> 453</span>{</div>
<div class="line"><a id="l00454" name="l00454"></a><span class="lineno"> 454</span><span class="keyword">public</span>:</div>
<div class="line"><a id="l00455" name="l00455"></a><span class="lineno"> 455</span> <a class="code hl_class" href="classrtabmap_1_1FAST__BRIEF.html">FAST_BRIEF</a>(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a> &amp; parameters = <a class="code hl_typedef" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a>());</div>
<div class="line"><a id="l00456" name="l00456"></a><span class="lineno"> 456</span> <span class="keyword">virtual</span> <a class="code hl_class" href="classrtabmap_1_1FAST__BRIEF.html">~FAST_BRIEF</a>();</div>
<div class="line"><a id="l00457" name="l00457"></a><span class="lineno"> 457</span> </div>
<div class="line"><a id="l00458" name="l00458"></a><span class="lineno"> 458</span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> parseParameters(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a> &amp; parameters) <span class="keyword">override</span>;</div>
<div class="line"><a id="l00459" name="l00459"></a><span class="lineno"> 459</span> <span class="keyword">virtual</span> <a class="code hl_enumeration" href="classrtabmap_1_1Feature2D.html#a7453189891e489bbcff1f2c971d04fde">Feature2D::Type</a> getType()<span class="keyword"> const override </span>{<span class="keywordflow">return</span> kFeatureFastBrief;}</div>
<div class="line"><a id="l00460" name="l00460"></a><span class="lineno"> 460</span> </div>
<div class="line"><a id="l00461" name="l00461"></a><span class="lineno"> 461</span><span class="keyword">private</span>:</div>
<div class="line"><a id="l00462" name="l00462"></a><span class="lineno"> 462</span> <span class="keyword">virtual</span> cv::Mat generateDescriptorsImpl(<span class="keyword">const</span> cv::Mat &amp; image, std::vector&lt;cv::KeyPoint&gt; &amp; keypoints) <span class="keyword">const override</span>;</div>
<div class="line"><a id="l00463" name="l00463"></a><span class="lineno"> 463</span> </div>
<div class="line"><a id="l00464" name="l00464"></a><span class="lineno"> 464</span><span class="keyword">private</span>:</div>
<div class="line"><a id="l00465" name="l00465"></a><span class="lineno"> 465</span> <span class="keywordtype">int</span> bytes_;</div>
<div class="line"><a id="l00466" name="l00466"></a><span class="lineno"> 466</span> </div>
<div class="line"><a id="l00467" name="l00467"></a><span class="lineno"> 467</span> cv::Ptr&lt;CV_BRIEF&gt; _brief;</div>
<div class="line"><a id="l00468" name="l00468"></a><span class="lineno"> 468</span>};</div>
</div>
<div class="line"><a id="l00469" name="l00469"></a><span class="lineno"> 469</span> </div>
<div class="foldopen" id="foldopen00471" data-start="{" data-end="};">
<div class="line"><a id="l00471" name="l00471"></a><span class="lineno"><a class="line" href="classrtabmap_1_1FAST__FREAK.html"> 471</a></span><span class="keyword">class </span>RTABMAP_CORE_EXPORT <a class="code hl_class" href="classrtabmap_1_1FAST__FREAK.html">FAST_FREAK</a> : <span class="keyword">public</span> <a class="code hl_class" href="classrtabmap_1_1FAST.html">FAST</a></div>
<div class="line"><a id="l00472" name="l00472"></a><span class="lineno"> 472</span>{</div>
<div class="line"><a id="l00473" name="l00473"></a><span class="lineno"> 473</span><span class="keyword">public</span>:</div>
<div class="line"><a id="l00474" name="l00474"></a><span class="lineno"> 474</span> <a class="code hl_class" href="classrtabmap_1_1FAST__FREAK.html">FAST_FREAK</a>(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a> &amp; parameters = <a class="code hl_typedef" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a>());</div>
<div class="line"><a id="l00475" name="l00475"></a><span class="lineno"> 475</span> <span class="keyword">virtual</span> <a class="code hl_class" href="classrtabmap_1_1FAST__FREAK.html">~FAST_FREAK</a>();</div>
<div class="line"><a id="l00476" name="l00476"></a><span class="lineno"> 476</span> </div>
<div class="line"><a id="l00477" name="l00477"></a><span class="lineno"> 477</span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> parseParameters(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a> &amp; parameters) <span class="keyword">override</span>;</div>
<div class="line"><a id="l00478" name="l00478"></a><span class="lineno"> 478</span> <span class="keyword">virtual</span> <a class="code hl_enumeration" href="classrtabmap_1_1Feature2D.html#a7453189891e489bbcff1f2c971d04fde">Feature2D::Type</a> getType()<span class="keyword"> const override </span>{<span class="keywordflow">return</span> kFeatureFastFreak;}</div>
<div class="line"><a id="l00479" name="l00479"></a><span class="lineno"> 479</span> </div>
<div class="line"><a id="l00480" name="l00480"></a><span class="lineno"> 480</span><span class="keyword">private</span>:</div>
<div class="line"><a id="l00481" name="l00481"></a><span class="lineno"> 481</span> <span class="keyword">virtual</span> cv::Mat generateDescriptorsImpl(<span class="keyword">const</span> cv::Mat &amp; image, std::vector&lt;cv::KeyPoint&gt; &amp; keypoints) <span class="keyword">const override</span>;</div>
<div class="line"><a id="l00482" name="l00482"></a><span class="lineno"> 482</span> </div>
<div class="line"><a id="l00483" name="l00483"></a><span class="lineno"> 483</span><span class="keyword">private</span>:</div>
<div class="line"><a id="l00484" name="l00484"></a><span class="lineno"> 484</span> <span class="keywordtype">bool</span> orientationNormalized_;</div>
<div class="line"><a id="l00485" name="l00485"></a><span class="lineno"> 485</span> <span class="keywordtype">bool</span> scaleNormalized_;</div>
<div class="line"><a id="l00486" name="l00486"></a><span class="lineno"> 486</span> <span class="keywordtype">float</span> patternScale_;</div>
<div class="line"><a id="l00487" name="l00487"></a><span class="lineno"> 487</span> <span class="keywordtype">int</span> nOctaves_;</div>
<div class="line"><a id="l00488" name="l00488"></a><span class="lineno"> 488</span> </div>
<div class="line"><a id="l00489" name="l00489"></a><span class="lineno"> 489</span> cv::Ptr&lt;CV_FREAK&gt; _freak;</div>
<div class="line"><a id="l00490" name="l00490"></a><span class="lineno"> 490</span>};</div>
</div>
<div class="line"><a id="l00491" name="l00491"></a><span class="lineno"> 491</span> </div>
<div class="foldopen" id="foldopen00493" data-start="{" data-end="};">
<div class="line"><a id="l00493" name="l00493"></a><span class="lineno"><a class="line" href="classrtabmap_1_1GFTT.html"> 493</a></span><span class="keyword">class </span>RTABMAP_CORE_EXPORT <a class="code hl_class" href="classrtabmap_1_1GFTT.html">GFTT</a> : <span class="keyword">public</span> <a class="code hl_class" href="classrtabmap_1_1Feature2D.html">Feature2D</a></div>
<div class="line"><a id="l00494" name="l00494"></a><span class="lineno"> 494</span>{</div>
<div class="line"><a id="l00495" name="l00495"></a><span class="lineno"> 495</span><span class="keyword">public</span>:</div>
<div class="line"><a id="l00496" name="l00496"></a><span class="lineno"> 496</span> <a class="code hl_class" href="classrtabmap_1_1GFTT.html">GFTT</a>(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a> &amp; parameters = <a class="code hl_typedef" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a>());</div>
<div class="line"><a id="l00497" name="l00497"></a><span class="lineno"> 497</span> <span class="keyword">virtual</span> <a class="code hl_class" href="classrtabmap_1_1GFTT.html">~GFTT</a>();</div>
<div class="line"><a id="l00498" name="l00498"></a><span class="lineno"> 498</span> </div>
<div class="line"><a id="l00499" name="l00499"></a><span class="lineno"> 499</span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> parseParameters(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a> &amp; parameters) <span class="keyword">override</span>;</div>
<div class="line"><a id="l00500" name="l00500"></a><span class="lineno"><a class="line" href="classrtabmap_1_1GFTT.html#a05151f04cf624576783837dc48ddf744"> 500</a></span> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classrtabmap_1_1GFTT.html#a05151f04cf624576783837dc48ddf744">isGpuAvailable</a>() <span class="keyword">const override</span>;</div>
<div class="line"><a id="l00501" name="l00501"></a><span class="lineno"> 501</span> </div>
<div class="line"><a id="l00502" name="l00502"></a><span class="lineno"> 502</span><span class="keyword">private</span>:</div>
<div class="line"><a id="l00503" name="l00503"></a><span class="lineno"> 503</span> <span class="keyword">virtual</span> std::vector&lt;cv::KeyPoint&gt; generateKeypointsImpl(<span class="keyword">const</span> cv::Mat &amp; image, <span class="keyword">const</span> cv::Rect &amp; roi, <span class="keyword">const</span> cv::Mat &amp; mask = cv::Mat()) <span class="keyword">override</span>;</div>
<div class="line"><a id="l00504" name="l00504"></a><span class="lineno"> 504</span> </div>
<div class="line"><a id="l00505" name="l00505"></a><span class="lineno"> 505</span><span class="keyword">private</span>:</div>
<div class="line"><a id="l00506" name="l00506"></a><span class="lineno"> 506</span> <span class="keywordtype">double</span> _qualityLevel;</div>
<div class="line"><a id="l00507" name="l00507"></a><span class="lineno"> 507</span> <span class="keywordtype">double</span> _minDistance;</div>
<div class="line"><a id="l00508" name="l00508"></a><span class="lineno"> 508</span> <span class="keywordtype">int</span> _blockSize;</div>
<div class="line"><a id="l00509" name="l00509"></a><span class="lineno"> 509</span> <span class="keywordtype">bool</span> _useHarrisDetector;</div>
<div class="line"><a id="l00510" name="l00510"></a><span class="lineno"> 510</span> <span class="keywordtype">double</span> _k;</div>
<div class="line"><a id="l00511" name="l00511"></a><span class="lineno"> 511</span> <span class="keywordtype">bool</span> _gpu;</div>
<div class="line"><a id="l00512" name="l00512"></a><span class="lineno"> 512</span> </div>
<div class="line"><a id="l00513" name="l00513"></a><span class="lineno"> 513</span> cv::Ptr&lt;CV_GFTT&gt; _gftt;</div>
<div class="line"><a id="l00514" name="l00514"></a><span class="lineno"> 514</span> cv::Ptr&lt;CV_GFTT_GPU&gt; _gpuGftt;</div>
<div class="line"><a id="l00515" name="l00515"></a><span class="lineno"> 515</span>};</div>
</div>
<div class="line"><a id="l00516" name="l00516"></a><span class="lineno"> 516</span> </div>
<div class="foldopen" id="foldopen00518" data-start="{" data-end="};">
<div class="line"><a id="l00518" name="l00518"></a><span class="lineno"><a class="line" href="classrtabmap_1_1GFTT__BRIEF.html"> 518</a></span><span class="keyword">class </span>RTABMAP_CORE_EXPORT <a class="code hl_class" href="classrtabmap_1_1GFTT__BRIEF.html">GFTT_BRIEF</a> : <span class="keyword">public</span> <a class="code hl_class" href="classrtabmap_1_1GFTT.html">GFTT</a></div>
<div class="line"><a id="l00519" name="l00519"></a><span class="lineno"> 519</span>{</div>
<div class="line"><a id="l00520" name="l00520"></a><span class="lineno"> 520</span><span class="keyword">public</span>:</div>
<div class="line"><a id="l00521" name="l00521"></a><span class="lineno"> 521</span> <a class="code hl_class" href="classrtabmap_1_1GFTT__BRIEF.html">GFTT_BRIEF</a>(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a> &amp; parameters = <a class="code hl_typedef" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a>());</div>
<div class="line"><a id="l00522" name="l00522"></a><span class="lineno"> 522</span> <span class="keyword">virtual</span> <a class="code hl_class" href="classrtabmap_1_1GFTT__BRIEF.html">~GFTT_BRIEF</a>();</div>
<div class="line"><a id="l00523" name="l00523"></a><span class="lineno"> 523</span> </div>
<div class="line"><a id="l00524" name="l00524"></a><span class="lineno"> 524</span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> parseParameters(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a> &amp; parameters) <span class="keyword">override</span>;</div>
<div class="line"><a id="l00525" name="l00525"></a><span class="lineno"> 525</span> <span class="keyword">virtual</span> <a class="code hl_enumeration" href="classrtabmap_1_1Feature2D.html#a7453189891e489bbcff1f2c971d04fde">Feature2D::Type</a> getType()<span class="keyword"> const override </span>{<span class="keywordflow">return</span> kFeatureGfttBrief;}</div>
<div class="line"><a id="l00526" name="l00526"></a><span class="lineno"> 526</span> </div>
<div class="line"><a id="l00527" name="l00527"></a><span class="lineno"> 527</span><span class="keyword">private</span>:</div>
<div class="line"><a id="l00528" name="l00528"></a><span class="lineno"> 528</span> <span class="keyword">virtual</span> cv::Mat generateDescriptorsImpl(<span class="keyword">const</span> cv::Mat &amp; image, std::vector&lt;cv::KeyPoint&gt; &amp; keypoints) <span class="keyword">const override</span>;</div>
<div class="line"><a id="l00529" name="l00529"></a><span class="lineno"> 529</span> </div>
<div class="line"><a id="l00530" name="l00530"></a><span class="lineno"> 530</span><span class="keyword">private</span>:</div>
<div class="line"><a id="l00531" name="l00531"></a><span class="lineno"> 531</span> <span class="keywordtype">int</span> bytes_;</div>
<div class="line"><a id="l00532" name="l00532"></a><span class="lineno"> 532</span> </div>
<div class="line"><a id="l00533" name="l00533"></a><span class="lineno"> 533</span> cv::Ptr&lt;CV_BRIEF&gt; _brief;</div>
<div class="line"><a id="l00534" name="l00534"></a><span class="lineno"> 534</span>};</div>
</div>
<div class="line"><a id="l00535" name="l00535"></a><span class="lineno"> 535</span> </div>
<div class="foldopen" id="foldopen00537" data-start="{" data-end="};">
<div class="line"><a id="l00537" name="l00537"></a><span class="lineno"><a class="line" href="classrtabmap_1_1GFTT__FREAK.html"> 537</a></span><span class="keyword">class </span>RTABMAP_CORE_EXPORT <a class="code hl_class" href="classrtabmap_1_1GFTT__FREAK.html">GFTT_FREAK</a> : <span class="keyword">public</span> <a class="code hl_class" href="classrtabmap_1_1GFTT.html">GFTT</a></div>
<div class="line"><a id="l00538" name="l00538"></a><span class="lineno"> 538</span>{</div>
<div class="line"><a id="l00539" name="l00539"></a><span class="lineno"> 539</span><span class="keyword">public</span>:</div>
<div class="line"><a id="l00540" name="l00540"></a><span class="lineno"> 540</span> <a class="code hl_class" href="classrtabmap_1_1GFTT__FREAK.html">GFTT_FREAK</a>(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a> &amp; parameters = <a class="code hl_typedef" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a>());</div>
<div class="line"><a id="l00541" name="l00541"></a><span class="lineno"> 541</span> <span class="keyword">virtual</span> <a class="code hl_class" href="classrtabmap_1_1GFTT__FREAK.html">~GFTT_FREAK</a>();</div>
<div class="line"><a id="l00542" name="l00542"></a><span class="lineno"> 542</span> </div>
<div class="line"><a id="l00543" name="l00543"></a><span class="lineno"> 543</span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> parseParameters(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a> &amp; parameters) <span class="keyword">override</span>;</div>
<div class="line"><a id="l00544" name="l00544"></a><span class="lineno"> 544</span> <span class="keyword">virtual</span> <a class="code hl_enumeration" href="classrtabmap_1_1Feature2D.html#a7453189891e489bbcff1f2c971d04fde">Feature2D::Type</a> getType()<span class="keyword"> const override </span>{<span class="keywordflow">return</span> kFeatureGfttFreak;}</div>
<div class="line"><a id="l00545" name="l00545"></a><span class="lineno"> 545</span> </div>
<div class="line"><a id="l00546" name="l00546"></a><span class="lineno"> 546</span><span class="keyword">private</span>:</div>
<div class="line"><a id="l00547" name="l00547"></a><span class="lineno"> 547</span> <span class="keyword">virtual</span> cv::Mat generateDescriptorsImpl(<span class="keyword">const</span> cv::Mat &amp; image, std::vector&lt;cv::KeyPoint&gt; &amp; keypoints) <span class="keyword">const override</span>;</div>
<div class="line"><a id="l00548" name="l00548"></a><span class="lineno"> 548</span> </div>
<div class="line"><a id="l00549" name="l00549"></a><span class="lineno"> 549</span><span class="keyword">private</span>:</div>
<div class="line"><a id="l00550" name="l00550"></a><span class="lineno"> 550</span> <span class="keywordtype">bool</span> orientationNormalized_;</div>
<div class="line"><a id="l00551" name="l00551"></a><span class="lineno"> 551</span> <span class="keywordtype">bool</span> scaleNormalized_;</div>
<div class="line"><a id="l00552" name="l00552"></a><span class="lineno"> 552</span> <span class="keywordtype">float</span> patternScale_;</div>
<div class="line"><a id="l00553" name="l00553"></a><span class="lineno"> 553</span> <span class="keywordtype">int</span> nOctaves_;</div>
<div class="line"><a id="l00554" name="l00554"></a><span class="lineno"> 554</span> </div>
<div class="line"><a id="l00555" name="l00555"></a><span class="lineno"> 555</span> cv::Ptr&lt;CV_FREAK&gt; _freak;</div>
<div class="line"><a id="l00556" name="l00556"></a><span class="lineno"> 556</span>};</div>
</div>
<div class="line"><a id="l00557" name="l00557"></a><span class="lineno"> 557</span> </div>
<div class="foldopen" id="foldopen00559" data-start="{" data-end="};">
<div class="line"><a id="l00559" name="l00559"></a><span class="lineno"><a class="line" href="classrtabmap_1_1SURF__FREAK.html"> 559</a></span><span class="keyword">class </span>RTABMAP_CORE_EXPORT <a class="code hl_class" href="classrtabmap_1_1SURF__FREAK.html">SURF_FREAK</a> : <span class="keyword">public</span> <a class="code hl_class" href="classrtabmap_1_1SURF.html">SURF</a></div>
<div class="line"><a id="l00560" name="l00560"></a><span class="lineno"> 560</span>{</div>
<div class="line"><a id="l00561" name="l00561"></a><span class="lineno"> 561</span><span class="keyword">public</span>:</div>
<div class="line"><a id="l00562" name="l00562"></a><span class="lineno"> 562</span> <a class="code hl_class" href="classrtabmap_1_1SURF__FREAK.html">SURF_FREAK</a>(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a> &amp; parameters = <a class="code hl_typedef" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a>());</div>
<div class="line"><a id="l00563" name="l00563"></a><span class="lineno"> 563</span> <span class="keyword">virtual</span> <a class="code hl_class" href="classrtabmap_1_1SURF__FREAK.html">~SURF_FREAK</a>();</div>
<div class="line"><a id="l00564" name="l00564"></a><span class="lineno"> 564</span> </div>
<div class="line"><a id="l00565" name="l00565"></a><span class="lineno"> 565</span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> parseParameters(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a> &amp; parameters) <span class="keyword">override</span>;</div>
<div class="line"><a id="l00566" name="l00566"></a><span class="lineno"> 566</span> <span class="keyword">virtual</span> <a class="code hl_enumeration" href="classrtabmap_1_1Feature2D.html#a7453189891e489bbcff1f2c971d04fde">Feature2D::Type</a> getType()<span class="keyword"> const override </span>{<span class="keywordflow">return</span> kFeatureSurfFreak;}</div>
<div class="line"><a id="l00567" name="l00567"></a><span class="lineno"> 567</span> </div>
<div class="line"><a id="l00568" name="l00568"></a><span class="lineno"> 568</span><span class="keyword">private</span>:</div>
<div class="line"><a id="l00569" name="l00569"></a><span class="lineno"> 569</span> <span class="keyword">virtual</span> cv::Mat generateDescriptorsImpl(<span class="keyword">const</span> cv::Mat &amp; image, std::vector&lt;cv::KeyPoint&gt; &amp; keypoints) <span class="keyword">const override</span>;</div>
<div class="line"><a id="l00570" name="l00570"></a><span class="lineno"> 570</span> </div>
<div class="line"><a id="l00571" name="l00571"></a><span class="lineno"> 571</span><span class="keyword">private</span>:</div>
<div class="line"><a id="l00572" name="l00572"></a><span class="lineno"> 572</span> <span class="keywordtype">bool</span> orientationNormalized_;</div>
<div class="line"><a id="l00573" name="l00573"></a><span class="lineno"> 573</span> <span class="keywordtype">bool</span> scaleNormalized_;</div>
<div class="line"><a id="l00574" name="l00574"></a><span class="lineno"> 574</span> <span class="keywordtype">float</span> patternScale_;</div>
<div class="line"><a id="l00575" name="l00575"></a><span class="lineno"> 575</span> <span class="keywordtype">int</span> nOctaves_;</div>
<div class="line"><a id="l00576" name="l00576"></a><span class="lineno"> 576</span> </div>
<div class="line"><a id="l00577" name="l00577"></a><span class="lineno"> 577</span> cv::Ptr&lt;CV_FREAK&gt; _freak;</div>
<div class="line"><a id="l00578" name="l00578"></a><span class="lineno"> 578</span>};</div>
</div>
<div class="line"><a id="l00579" name="l00579"></a><span class="lineno"> 579</span> </div>
<div class="foldopen" id="foldopen00581" data-start="{" data-end="};">
<div class="line"><a id="l00581" name="l00581"></a><span class="lineno"><a class="line" href="classrtabmap_1_1GFTT__ORB.html"> 581</a></span><span class="keyword">class </span>RTABMAP_CORE_EXPORT <a class="code hl_class" href="classrtabmap_1_1GFTT__ORB.html">GFTT_ORB</a> : <span class="keyword">public</span> <a class="code hl_class" href="classrtabmap_1_1GFTT.html">GFTT</a></div>
<div class="line"><a id="l00582" name="l00582"></a><span class="lineno"> 582</span>{</div>
<div class="line"><a id="l00583" name="l00583"></a><span class="lineno"> 583</span><span class="keyword">public</span>:</div>
<div class="line"><a id="l00584" name="l00584"></a><span class="lineno"> 584</span> <a class="code hl_class" href="classrtabmap_1_1GFTT__ORB.html">GFTT_ORB</a>(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a> &amp; parameters = <a class="code hl_typedef" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a>());</div>
<div class="line"><a id="l00585" name="l00585"></a><span class="lineno"> 585</span> <span class="keyword">virtual</span> <a class="code hl_class" href="classrtabmap_1_1GFTT__ORB.html">~GFTT_ORB</a>();</div>
<div class="line"><a id="l00586" name="l00586"></a><span class="lineno"> 586</span> </div>
<div class="line"><a id="l00587" name="l00587"></a><span class="lineno"> 587</span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> parseParameters(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a> &amp; parameters) <span class="keyword">override</span>;</div>
<div class="line"><a id="l00588" name="l00588"></a><span class="lineno"> 588</span> <span class="keyword">virtual</span> <a class="code hl_enumeration" href="classrtabmap_1_1Feature2D.html#a7453189891e489bbcff1f2c971d04fde">Feature2D::Type</a> getType()<span class="keyword"> const override </span>{<span class="keywordflow">return</span> kFeatureGfttOrb;}</div>
<div class="line"><a id="l00589" name="l00589"></a><span class="lineno"> 589</span> </div>
<div class="line"><a id="l00590" name="l00590"></a><span class="lineno"> 590</span><span class="keyword">private</span>:</div>
<div class="line"><a id="l00591" name="l00591"></a><span class="lineno"> 591</span> <span class="keyword">virtual</span> cv::Mat generateDescriptorsImpl(<span class="keyword">const</span> cv::Mat &amp; image, std::vector&lt;cv::KeyPoint&gt; &amp; keypoints) <span class="keyword">const override</span>;</div>
<div class="line"><a id="l00592" name="l00592"></a><span class="lineno"> 592</span> </div>
<div class="line"><a id="l00593" name="l00593"></a><span class="lineno"> 593</span><span class="keyword">private</span>:</div>
<div class="line"><a id="l00594" name="l00594"></a><span class="lineno"> 594</span> <a class="code hl_class" href="classrtabmap_1_1ORB.html">ORB</a> _orb;</div>
<div class="line"><a id="l00595" name="l00595"></a><span class="lineno"> 595</span>};</div>
</div>
<div class="line"><a id="l00596" name="l00596"></a><span class="lineno"> 596</span> </div>
<div class="foldopen" id="foldopen00598" data-start="{" data-end="};">
<div class="line"><a id="l00598" name="l00598"></a><span class="lineno"><a class="line" href="classrtabmap_1_1BRISK.html"> 598</a></span><span class="keyword">class </span>RTABMAP_CORE_EXPORT <a class="code hl_class" href="classrtabmap_1_1BRISK.html">BRISK</a> : <span class="keyword">public</span> <a class="code hl_class" href="classrtabmap_1_1Feature2D.html">Feature2D</a></div>
<div class="line"><a id="l00599" name="l00599"></a><span class="lineno"> 599</span>{</div>
<div class="line"><a id="l00600" name="l00600"></a><span class="lineno"> 600</span><span class="keyword">public</span>:</div>
<div class="line"><a id="l00601" name="l00601"></a><span class="lineno"> 601</span> <a class="code hl_class" href="classrtabmap_1_1BRISK.html">BRISK</a>(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a> &amp; parameters = <a class="code hl_typedef" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a>());</div>
<div class="line"><a id="l00602" name="l00602"></a><span class="lineno"> 602</span> <span class="keyword">virtual</span> <a class="code hl_class" href="classrtabmap_1_1BRISK.html">~BRISK</a>();</div>
<div class="line"><a id="l00603" name="l00603"></a><span class="lineno"> 603</span> </div>
<div class="line"><a id="l00604" name="l00604"></a><span class="lineno"> 604</span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> parseParameters(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a> &amp; parameters) <span class="keyword">override</span>;</div>
<div class="line"><a id="l00605" name="l00605"></a><span class="lineno"> 605</span> <span class="keyword">virtual</span> <a class="code hl_enumeration" href="classrtabmap_1_1Feature2D.html#a7453189891e489bbcff1f2c971d04fde">Feature2D::Type</a> getType()<span class="keyword"> const override </span>{<span class="keywordflow">return</span> kFeatureBrisk;}</div>
<div class="line"><a id="l00606" name="l00606"></a><span class="lineno"> 606</span> </div>
<div class="line"><a id="l00607" name="l00607"></a><span class="lineno"> 607</span><span class="keyword">private</span>:</div>
<div class="line"><a id="l00608" name="l00608"></a><span class="lineno"> 608</span> <span class="keyword">virtual</span> std::vector&lt;cv::KeyPoint&gt; generateKeypointsImpl(<span class="keyword">const</span> cv::Mat &amp; image, <span class="keyword">const</span> cv::Rect &amp; roi, <span class="keyword">const</span> cv::Mat &amp; mask = cv::Mat()) <span class="keyword">override</span>;</div>
<div class="line"><a id="l00609" name="l00609"></a><span class="lineno"> 609</span> <span class="keyword">virtual</span> cv::Mat generateDescriptorsImpl(<span class="keyword">const</span> cv::Mat &amp; image, std::vector&lt;cv::KeyPoint&gt; &amp; keypoints) <span class="keyword">const override</span>;</div>
<div class="line"><a id="l00610" name="l00610"></a><span class="lineno"> 610</span> </div>
<div class="line"><a id="l00611" name="l00611"></a><span class="lineno"> 611</span><span class="keyword">private</span>:</div>
<div class="line"><a id="l00612" name="l00612"></a><span class="lineno"> 612</span> <span class="keywordtype">int</span> thresh_;</div>
<div class="line"><a id="l00613" name="l00613"></a><span class="lineno"> 613</span> <span class="keywordtype">int</span> octaves_;</div>
<div class="line"><a id="l00614" name="l00614"></a><span class="lineno"> 614</span> <span class="keywordtype">float</span> patternScale_;</div>
<div class="line"><a id="l00615" name="l00615"></a><span class="lineno"> 615</span> </div>
<div class="line"><a id="l00616" name="l00616"></a><span class="lineno"> 616</span> cv::Ptr&lt;CV_BRISK&gt; brisk_;</div>
<div class="line"><a id="l00617" name="l00617"></a><span class="lineno"> 617</span>};</div>
</div>
<div class="line"><a id="l00618" name="l00618"></a><span class="lineno"> 618</span> </div>
<div class="foldopen" id="foldopen00620" data-start="{" data-end="};">
<div class="line"><a id="l00620" name="l00620"></a><span class="lineno"><a class="line" href="classrtabmap_1_1KAZE.html"> 620</a></span><span class="keyword">class </span>RTABMAP_CORE_EXPORT <a class="code hl_class" href="classrtabmap_1_1KAZE.html">KAZE</a> : <span class="keyword">public</span> <a class="code hl_class" href="classrtabmap_1_1Feature2D.html">Feature2D</a></div>
<div class="line"><a id="l00621" name="l00621"></a><span class="lineno"> 621</span>{</div>
<div class="line"><a id="l00622" name="l00622"></a><span class="lineno"> 622</span><span class="keyword">public</span>:</div>
<div class="line"><a id="l00623" name="l00623"></a><span class="lineno"> 623</span> <a class="code hl_class" href="classrtabmap_1_1KAZE.html">KAZE</a>(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a> &amp; parameters = <a class="code hl_typedef" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a>());</div>
<div class="line"><a id="l00624" name="l00624"></a><span class="lineno"> 624</span> <span class="keyword">virtual</span> <a class="code hl_class" href="classrtabmap_1_1KAZE.html">~KAZE</a>();</div>
<div class="line"><a id="l00625" name="l00625"></a><span class="lineno"> 625</span> </div>
<div class="line"><a id="l00626" name="l00626"></a><span class="lineno"> 626</span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> parseParameters(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a> &amp; parameters) <span class="keyword">override</span>;</div>
<div class="line"><a id="l00627" name="l00627"></a><span class="lineno"> 627</span> <span class="keyword">virtual</span> <a class="code hl_enumeration" href="classrtabmap_1_1Feature2D.html#a7453189891e489bbcff1f2c971d04fde">Feature2D::Type</a> getType()<span class="keyword"> const override </span>{ <span class="keywordflow">return</span> kFeatureKaze; }</div>
<div class="line"><a id="l00628" name="l00628"></a><span class="lineno"> 628</span> </div>
<div class="line"><a id="l00629" name="l00629"></a><span class="lineno"> 629</span><span class="keyword">private</span>:</div>
<div class="line"><a id="l00630" name="l00630"></a><span class="lineno"> 630</span> <span class="keyword">virtual</span> std::vector&lt;cv::KeyPoint&gt; generateKeypointsImpl(<span class="keyword">const</span> cv::Mat &amp; image, <span class="keyword">const</span> cv::Rect &amp; roi, <span class="keyword">const</span> cv::Mat &amp; mask = cv::Mat()) <span class="keyword">override</span>;</div>
<div class="line"><a id="l00631" name="l00631"></a><span class="lineno"> 631</span> <span class="keyword">virtual</span> cv::Mat generateDescriptorsImpl(<span class="keyword">const</span> cv::Mat &amp; image, std::vector&lt;cv::KeyPoint&gt; &amp; keypoints) <span class="keyword">const override</span>;</div>
<div class="line"><a id="l00632" name="l00632"></a><span class="lineno"> 632</span> </div>
<div class="line"><a id="l00633" name="l00633"></a><span class="lineno"> 633</span><span class="keyword">private</span>:</div>
<div class="line"><a id="l00634" name="l00634"></a><span class="lineno"> 634</span> <span class="keywordtype">bool</span> extended_;</div>
<div class="line"><a id="l00635" name="l00635"></a><span class="lineno"> 635</span> <span class="keywordtype">bool</span> upright_;</div>
<div class="line"><a id="l00636" name="l00636"></a><span class="lineno"> 636</span> <span class="keywordtype">float</span> threshold_;</div>
<div class="line"><a id="l00637" name="l00637"></a><span class="lineno"> 637</span> <span class="keywordtype">int</span> nOctaves_;</div>
<div class="line"><a id="l00638" name="l00638"></a><span class="lineno"> 638</span> <span class="keywordtype">int</span> nOctaveLayers_;</div>
<div class="line"><a id="l00639" name="l00639"></a><span class="lineno"> 639</span> <span class="keywordtype">int</span> diffusivity_;</div>
<div class="line"><a id="l00640" name="l00640"></a><span class="lineno"> 640</span> </div>
<div class="line"><a id="l00641" name="l00641"></a><span class="lineno"> 641</span><span class="preprocessor">#if CV_MAJOR_VERSION &gt; 2</span></div>
<div class="line"><a id="l00642" name="l00642"></a><span class="lineno"> 642</span> cv::Ptr&lt;CV_KAZE&gt; kaze_;</div>
<div class="line"><a id="l00643" name="l00643"></a><span class="lineno"> 643</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00644" name="l00644"></a><span class="lineno"> 644</span>};</div>
</div>
<div class="line"><a id="l00645" name="l00645"></a><span class="lineno"> 645</span> </div>
<div class="foldopen" id="foldopen00647" data-start="{" data-end="};">
<div class="line"><a id="l00647" name="l00647"></a><span class="lineno"><a class="line" href="classrtabmap_1_1ORBOctree.html"> 647</a></span><span class="keyword">class </span>RTABMAP_CORE_EXPORT <a class="code hl_class" href="classrtabmap_1_1ORBOctree.html">ORBOctree</a> : <span class="keyword">public</span> <a class="code hl_class" href="classrtabmap_1_1Feature2D.html">Feature2D</a></div>
<div class="line"><a id="l00648" name="l00648"></a><span class="lineno"> 648</span>{</div>
<div class="line"><a id="l00649" name="l00649"></a><span class="lineno"> 649</span><span class="keyword">public</span>:</div>
<div class="line"><a id="l00650" name="l00650"></a><span class="lineno"> 650</span> <a class="code hl_class" href="classrtabmap_1_1ORBOctree.html">ORBOctree</a>(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a> &amp; parameters = <a class="code hl_typedef" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a>());</div>
<div class="line"><a id="l00651" name="l00651"></a><span class="lineno"> 651</span> <span class="keyword">virtual</span> <a class="code hl_class" href="classrtabmap_1_1ORBOctree.html">~ORBOctree</a>();</div>
<div class="line"><a id="l00652" name="l00652"></a><span class="lineno"> 652</span> </div>
<div class="line"><a id="l00653" name="l00653"></a><span class="lineno"> 653</span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> parseParameters(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a> &amp; parameters) <span class="keyword">override</span>;</div>
<div class="line"><a id="l00654" name="l00654"></a><span class="lineno"> 654</span> <span class="keyword">virtual</span> <a class="code hl_enumeration" href="classrtabmap_1_1Feature2D.html#a7453189891e489bbcff1f2c971d04fde">Feature2D::Type</a> getType()<span class="keyword"> const override </span>{<span class="keywordflow">return</span> kFeatureOrbOctree;}</div>
<div class="line"><a id="l00655" name="l00655"></a><span class="lineno"> 655</span> </div>
<div class="line"><a id="l00656" name="l00656"></a><span class="lineno"> 656</span><span class="keyword">private</span>:</div>
<div class="line"><a id="l00657" name="l00657"></a><span class="lineno"> 657</span> <span class="keyword">virtual</span> std::vector&lt;cv::KeyPoint&gt; generateKeypointsImpl(<span class="keyword">const</span> cv::Mat &amp; image, <span class="keyword">const</span> cv::Rect &amp; roi, <span class="keyword">const</span> cv::Mat &amp; mask = cv::Mat()) <span class="keyword">override</span>;</div>
<div class="line"><a id="l00658" name="l00658"></a><span class="lineno"> 658</span> <span class="keyword">virtual</span> cv::Mat generateDescriptorsImpl(<span class="keyword">const</span> cv::Mat &amp; image, std::vector&lt;cv::KeyPoint&gt; &amp; keypoints) <span class="keyword">const override</span>;</div>
<div class="line"><a id="l00659" name="l00659"></a><span class="lineno"> 659</span> </div>
<div class="line"><a id="l00660" name="l00660"></a><span class="lineno"> 660</span><span class="keyword">private</span>:</div>
<div class="line"><a id="l00661" name="l00661"></a><span class="lineno"> 661</span> <span class="keywordtype">float</span> scaleFactor_;</div>
<div class="line"><a id="l00662" name="l00662"></a><span class="lineno"> 662</span> <span class="keywordtype">int</span> nLevels_;</div>
<div class="line"><a id="l00663" name="l00663"></a><span class="lineno"> 663</span> <span class="keywordtype">int</span> patchSize_;</div>
<div class="line"><a id="l00664" name="l00664"></a><span class="lineno"> 664</span> <span class="keywordtype">int</span> edgeThreshold_;</div>
<div class="line"><a id="l00665" name="l00665"></a><span class="lineno"> 665</span> <span class="keywordtype">int</span> fastThreshold_;</div>
<div class="line"><a id="l00666" name="l00666"></a><span class="lineno"> 666</span> <span class="keywordtype">int</span> fastMinThreshold_;</div>
<div class="line"><a id="l00667" name="l00667"></a><span class="lineno"> 667</span> </div>
<div class="line"><a id="l00668" name="l00668"></a><span class="lineno"> 668</span> cv::Ptr&lt;ORBextractor&gt; _orb;</div>
<div class="line"><a id="l00669" name="l00669"></a><span class="lineno"> 669</span> cv::Mat descriptors_;</div>
<div class="line"><a id="l00670" name="l00670"></a><span class="lineno"> 670</span>};</div>
</div>
<div class="line"><a id="l00671" name="l00671"></a><span class="lineno"> 671</span> </div>
<div class="foldopen" id="foldopen00673" data-start="{" data-end="};">
<div class="line"><a id="l00673" name="l00673"></a><span class="lineno"><a class="line" href="classrtabmap_1_1SuperPointTorch.html"> 673</a></span><span class="keyword">class </span>RTABMAP_CORE_EXPORT <a class="code hl_class" href="classrtabmap_1_1SuperPointTorch.html">SuperPointTorch</a> : <span class="keyword">public</span> <a class="code hl_class" href="classrtabmap_1_1Feature2D.html">Feature2D</a></div>
<div class="line"><a id="l00674" name="l00674"></a><span class="lineno"> 674</span>{</div>
<div class="line"><a id="l00675" name="l00675"></a><span class="lineno"> 675</span><span class="keyword">public</span>:</div>
<div class="line"><a id="l00676" name="l00676"></a><span class="lineno"> 676</span> <a class="code hl_class" href="classrtabmap_1_1SuperPointTorch.html">SuperPointTorch</a>(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a> &amp; parameters = <a class="code hl_typedef" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a>());</div>
<div class="line"><a id="l00677" name="l00677"></a><span class="lineno"> 677</span> <span class="keyword">virtual</span> <a class="code hl_class" href="classrtabmap_1_1SuperPointTorch.html">~SuperPointTorch</a>();</div>
<div class="line"><a id="l00678" name="l00678"></a><span class="lineno"> 678</span> </div>
<div class="line"><a id="l00679" name="l00679"></a><span class="lineno"> 679</span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> parseParameters(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a> &amp; parameters) <span class="keyword">override</span>;</div>
<div class="line"><a id="l00680" name="l00680"></a><span class="lineno"> 680</span> <span class="keyword">virtual</span> <a class="code hl_enumeration" href="classrtabmap_1_1Feature2D.html#a7453189891e489bbcff1f2c971d04fde">Feature2D::Type</a> getType()<span class="keyword"> const override </span>{ <span class="keywordflow">return</span> kFeatureSuperPointTorch; }</div>
<div class="line"><a id="l00681" name="l00681"></a><span class="lineno"><a class="line" href="classrtabmap_1_1SuperPointTorch.html#aee69f6089f657449d3813b440abbaa25"> 681</a></span> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classrtabmap_1_1SuperPointTorch.html#aee69f6089f657449d3813b440abbaa25">isGpuAvailable</a>() <span class="keyword">const override</span>;</div>
<div class="line"><a id="l00682" name="l00682"></a><span class="lineno"> 682</span> </div>
<div class="line"><a id="l00683" name="l00683"></a><span class="lineno"> 683</span><span class="keyword">private</span>:</div>
<div class="line"><a id="l00684" name="l00684"></a><span class="lineno"> 684</span> <span class="keyword">virtual</span> std::vector&lt;cv::KeyPoint&gt; generateKeypointsImpl(<span class="keyword">const</span> cv::Mat &amp; image, <span class="keyword">const</span> cv::Rect &amp; roi, <span class="keyword">const</span> cv::Mat &amp; mask = cv::Mat()) <span class="keyword">override</span>;</div>
<div class="line"><a id="l00685" name="l00685"></a><span class="lineno"> 685</span> <span class="keyword">virtual</span> cv::Mat generateDescriptorsImpl(<span class="keyword">const</span> cv::Mat &amp; image, std::vector&lt;cv::KeyPoint&gt; &amp; keypoints) <span class="keyword">const override</span>;</div>
<div class="line"><a id="l00686" name="l00686"></a><span class="lineno"> 686</span> </div>
<div class="line"><a id="l00687" name="l00687"></a><span class="lineno"> 687</span> cv::Ptr&lt;SPDetector&gt; superPoint_;</div>
<div class="line"><a id="l00688" name="l00688"></a><span class="lineno"> 688</span> </div>
<div class="line"><a id="l00689" name="l00689"></a><span class="lineno"> 689</span> std::string path_;</div>
<div class="line"><a id="l00690" name="l00690"></a><span class="lineno"> 690</span> <span class="keywordtype">float</span> threshold_;</div>
<div class="line"><a id="l00691" name="l00691"></a><span class="lineno"> 691</span> <span class="keywordtype">bool</span> nms_;</div>
<div class="line"><a id="l00692" name="l00692"></a><span class="lineno"> 692</span> <span class="keywordtype">int</span> minDistance_;</div>
<div class="line"><a id="l00693" name="l00693"></a><span class="lineno"> 693</span> <span class="keywordtype">bool</span> cuda_;</div>
<div class="line"><a id="l00694" name="l00694"></a><span class="lineno"> 694</span>};</div>
</div>
<div class="line"><a id="l00695" name="l00695"></a><span class="lineno"> 695</span> </div>
<div class="foldopen" id="foldopen00697" data-start="{" data-end="};">
<div class="line"><a id="l00697" name="l00697"></a><span class="lineno"><a class="line" href="classrtabmap_1_1SuperPointRpautrat.html"> 697</a></span><span class="keyword">class </span>RTABMAP_CORE_EXPORT <a class="code hl_class" href="classrtabmap_1_1SuperPointRpautrat.html">SuperPointRpautrat</a> : <span class="keyword">public</span> <a class="code hl_class" href="classrtabmap_1_1Feature2D.html">Feature2D</a></div>
<div class="line"><a id="l00698" name="l00698"></a><span class="lineno"> 698</span>{</div>
<div class="line"><a id="l00699" name="l00699"></a><span class="lineno"> 699</span><span class="keyword">public</span>:</div>
<div class="line"><a id="l00700" name="l00700"></a><span class="lineno"> 700</span> <a class="code hl_class" href="classrtabmap_1_1SuperPointRpautrat.html">SuperPointRpautrat</a>(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a> &amp; parameters = <a class="code hl_typedef" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a>());</div>
<div class="line"><a id="l00701" name="l00701"></a><span class="lineno"> 701</span> <span class="keyword">virtual</span> <a class="code hl_class" href="classrtabmap_1_1SuperPointRpautrat.html">~SuperPointRpautrat</a>();</div>
<div class="line"><a id="l00702" name="l00702"></a><span class="lineno"> 702</span> </div>
<div class="line"><a id="l00703" name="l00703"></a><span class="lineno"> 703</span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> parseParameters(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a> &amp; parameters) <span class="keyword">override</span>;</div>
<div class="line"><a id="l00704" name="l00704"></a><span class="lineno"> 704</span> <span class="keyword">virtual</span> <a class="code hl_enumeration" href="classrtabmap_1_1Feature2D.html#a7453189891e489bbcff1f2c971d04fde">Feature2D::Type</a> getType()<span class="keyword"> const override </span>{ <span class="keywordflow">return</span> kFeatureSuperPointRpautrat; }</div>
<div class="line"><a id="l00705" name="l00705"></a><span class="lineno"><a class="line" href="classrtabmap_1_1SuperPointRpautrat.html#ac041c8738dc391661ba21331bf78d344"> 705</a></span> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classrtabmap_1_1SuperPointRpautrat.html#ac041c8738dc391661ba21331bf78d344">isGpuAvailable</a>() <span class="keyword">const override</span>;</div>
<div class="line"><a id="l00706" name="l00706"></a><span class="lineno"> 706</span> </div>
<div class="line"><a id="l00707" name="l00707"></a><span class="lineno"> 707</span><span class="keyword">private</span>:</div>
<div class="line"><a id="l00708" name="l00708"></a><span class="lineno"> 708</span> <span class="keyword">virtual</span> std::vector&lt;cv::KeyPoint&gt; generateKeypointsImpl(<span class="keyword">const</span> cv::Mat &amp; image, <span class="keyword">const</span> cv::Rect &amp; roi, <span class="keyword">const</span> cv::Mat &amp; mask = cv::Mat()) <span class="keyword">override</span>;</div>
<div class="line"><a id="l00709" name="l00709"></a><span class="lineno"> 709</span> <span class="keyword">virtual</span> cv::Mat generateDescriptorsImpl(<span class="keyword">const</span> cv::Mat &amp; image, std::vector&lt;cv::KeyPoint&gt; &amp; keypoints) <span class="keyword">const override</span>;</div>
<div class="line"><a id="l00710" name="l00710"></a><span class="lineno"> 710</span> </div>
<div class="line"><a id="l00711" name="l00711"></a><span class="lineno"> 711</span> cv::Ptr&lt;SPDetectorRpautrat&gt; superPoint_;</div>
<div class="line"><a id="l00712" name="l00712"></a><span class="lineno"> 712</span> </div>
<div class="line"><a id="l00713" name="l00713"></a><span class="lineno"> 713</span> std::string superpointWeightsPath_;</div>
<div class="line"><a id="l00714" name="l00714"></a><span class="lineno"> 714</span> std::string superpointModelPath_;</div>
<div class="line"><a id="l00715" name="l00715"></a><span class="lineno"> 715</span> std::string outputDir_;</div>
<div class="line"><a id="l00716" name="l00716"></a><span class="lineno"> 716</span> <span class="keywordtype">float</span> threshold_;</div>
<div class="line"><a id="l00717" name="l00717"></a><span class="lineno"> 717</span> <span class="keywordtype">bool</span> nms_;</div>
<div class="line"><a id="l00718" name="l00718"></a><span class="lineno"> 718</span> <span class="keywordtype">int</span> minDistance_;</div>
<div class="line"><a id="l00719" name="l00719"></a><span class="lineno"> 719</span> <span class="keywordtype">bool</span> cuda_;</div>
<div class="line"><a id="l00720" name="l00720"></a><span class="lineno"> 720</span>};</div>
</div>
<div class="line"><a id="l00721" name="l00721"></a><span class="lineno"> 721</span> </div>
<div class="foldopen" id="foldopen00723" data-start="{" data-end="};">
<div class="line"><a id="l00723" name="l00723"></a><span class="lineno"><a class="line" href="classrtabmap_1_1GFTT__DAISY.html"> 723</a></span><span class="keyword">class </span>RTABMAP_CORE_EXPORT <a class="code hl_class" href="classrtabmap_1_1GFTT__DAISY.html">GFTT_DAISY</a> : <span class="keyword">public</span> <a class="code hl_class" href="classrtabmap_1_1GFTT.html">GFTT</a></div>
<div class="line"><a id="l00724" name="l00724"></a><span class="lineno"> 724</span>{</div>
<div class="line"><a id="l00725" name="l00725"></a><span class="lineno"> 725</span><span class="keyword">public</span>:</div>
<div class="line"><a id="l00726" name="l00726"></a><span class="lineno"> 726</span> <a class="code hl_class" href="classrtabmap_1_1GFTT__DAISY.html">GFTT_DAISY</a>(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a> &amp; parameters = <a class="code hl_typedef" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a>());</div>
<div class="line"><a id="l00727" name="l00727"></a><span class="lineno"> 727</span> <span class="keyword">virtual</span> <a class="code hl_class" href="classrtabmap_1_1GFTT__DAISY.html">~GFTT_DAISY</a>();</div>
<div class="line"><a id="l00728" name="l00728"></a><span class="lineno"> 728</span> </div>
<div class="line"><a id="l00729" name="l00729"></a><span class="lineno"> 729</span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> parseParameters(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a> &amp; parameters) <span class="keyword">override</span>;</div>
<div class="line"><a id="l00730" name="l00730"></a><span class="lineno"> 730</span> <span class="keyword">virtual</span> <a class="code hl_enumeration" href="classrtabmap_1_1Feature2D.html#a7453189891e489bbcff1f2c971d04fde">Feature2D::Type</a> getType()<span class="keyword"> const override </span>{<span class="keywordflow">return</span> kFeatureGfttDaisy;}</div>
<div class="line"><a id="l00731" name="l00731"></a><span class="lineno"> 731</span> </div>
<div class="line"><a id="l00732" name="l00732"></a><span class="lineno"> 732</span><span class="keyword">private</span>:</div>
<div class="line"><a id="l00733" name="l00733"></a><span class="lineno"> 733</span> <span class="keyword">virtual</span> cv::Mat generateDescriptorsImpl(<span class="keyword">const</span> cv::Mat &amp; image, std::vector&lt;cv::KeyPoint&gt; &amp; keypoints) <span class="keyword">const override</span>;</div>
<div class="line"><a id="l00734" name="l00734"></a><span class="lineno"> 734</span> </div>
<div class="line"><a id="l00735" name="l00735"></a><span class="lineno"> 735</span><span class="keyword">private</span>:</div>
<div class="line"><a id="l00736" name="l00736"></a><span class="lineno"> 736</span> <span class="keywordtype">bool</span> orientationNormalized_;</div>
<div class="line"><a id="l00737" name="l00737"></a><span class="lineno"> 737</span> <span class="keywordtype">bool</span> scaleNormalized_;</div>
<div class="line"><a id="l00738" name="l00738"></a><span class="lineno"> 738</span> <span class="keywordtype">float</span> patternScale_;</div>
<div class="line"><a id="l00739" name="l00739"></a><span class="lineno"> 739</span> <span class="keywordtype">int</span> nOctaves_;</div>
<div class="line"><a id="l00740" name="l00740"></a><span class="lineno"> 740</span> </div>
<div class="line"><a id="l00741" name="l00741"></a><span class="lineno"> 741</span><span class="preprocessor">#if CV_MAJOR_VERSION &gt; 2</span></div>
<div class="line"><a id="l00742" name="l00742"></a><span class="lineno"> 742</span> cv::Ptr&lt;CV_DAISY&gt; _daisy;</div>
<div class="line"><a id="l00743" name="l00743"></a><span class="lineno"> 743</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00744" name="l00744"></a><span class="lineno"> 744</span>};</div>
</div>
<div class="line"><a id="l00745" name="l00745"></a><span class="lineno"> 745</span> </div>
<div class="foldopen" id="foldopen00747" data-start="{" data-end="};">
<div class="line"><a id="l00747" name="l00747"></a><span class="lineno"><a class="line" href="classrtabmap_1_1SURF__DAISY.html"> 747</a></span><span class="keyword">class </span>RTABMAP_CORE_EXPORT <a class="code hl_class" href="classrtabmap_1_1SURF__DAISY.html">SURF_DAISY</a> : <span class="keyword">public</span> <a class="code hl_class" href="classrtabmap_1_1SURF.html">SURF</a></div>
<div class="line"><a id="l00748" name="l00748"></a><span class="lineno"> 748</span>{</div>
<div class="line"><a id="l00749" name="l00749"></a><span class="lineno"> 749</span><span class="keyword">public</span>:</div>
<div class="line"><a id="l00750" name="l00750"></a><span class="lineno"> 750</span> <a class="code hl_class" href="classrtabmap_1_1SURF__DAISY.html">SURF_DAISY</a>(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a> &amp; parameters = <a class="code hl_typedef" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a>());</div>
<div class="line"><a id="l00751" name="l00751"></a><span class="lineno"> 751</span> <span class="keyword">virtual</span> <a class="code hl_class" href="classrtabmap_1_1SURF__DAISY.html">~SURF_DAISY</a>();</div>
<div class="line"><a id="l00752" name="l00752"></a><span class="lineno"> 752</span> </div>
<div class="line"><a id="l00753" name="l00753"></a><span class="lineno"> 753</span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> parseParameters(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a> &amp; parameters) <span class="keyword">override</span>;</div>
<div class="line"><a id="l00754" name="l00754"></a><span class="lineno"> 754</span> <span class="keyword">virtual</span> <a class="code hl_enumeration" href="classrtabmap_1_1Feature2D.html#a7453189891e489bbcff1f2c971d04fde">Feature2D::Type</a> getType()<span class="keyword"> const override </span>{<span class="keywordflow">return</span> kFeatureSurfDaisy;}</div>
<div class="line"><a id="l00755" name="l00755"></a><span class="lineno"> 755</span> </div>
<div class="line"><a id="l00756" name="l00756"></a><span class="lineno"> 756</span><span class="keyword">private</span>:</div>
<div class="line"><a id="l00757" name="l00757"></a><span class="lineno"> 757</span> <span class="keyword">virtual</span> cv::Mat generateDescriptorsImpl(<span class="keyword">const</span> cv::Mat &amp; image, std::vector&lt;cv::KeyPoint&gt; &amp; keypoints) <span class="keyword">const override</span>;</div>
<div class="line"><a id="l00758" name="l00758"></a><span class="lineno"> 758</span> </div>
<div class="line"><a id="l00759" name="l00759"></a><span class="lineno"> 759</span><span class="keyword">private</span>:</div>
<div class="line"><a id="l00760" name="l00760"></a><span class="lineno"> 760</span> <span class="keywordtype">bool</span> orientationNormalized_;</div>
<div class="line"><a id="l00761" name="l00761"></a><span class="lineno"> 761</span> <span class="keywordtype">bool</span> scaleNormalized_;</div>
<div class="line"><a id="l00762" name="l00762"></a><span class="lineno"> 762</span> <span class="keywordtype">float</span> patternScale_;</div>
<div class="line"><a id="l00763" name="l00763"></a><span class="lineno"> 763</span> <span class="keywordtype">int</span> nOctaves_;</div>
<div class="line"><a id="l00764" name="l00764"></a><span class="lineno"> 764</span> </div>
<div class="line"><a id="l00765" name="l00765"></a><span class="lineno"> 765</span><span class="preprocessor">#if CV_MAJOR_VERSION &gt; 2</span></div>
<div class="line"><a id="l00766" name="l00766"></a><span class="lineno"> 766</span> cv::Ptr&lt;CV_DAISY&gt; _daisy;</div>
<div class="line"><a id="l00767" name="l00767"></a><span class="lineno"> 767</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00768" name="l00768"></a><span class="lineno"> 768</span>};</div>
</div>
<div class="line"><a id="l00769" name="l00769"></a><span class="lineno"> 769</span> </div>
<div class="line"><a id="l00770" name="l00770"></a><span class="lineno"> 770</span>}</div>
<div class="line"><a id="l00771" name="l00771"></a><span class="lineno"> 771</span> </div>
<div class="line"><a id="l00772" name="l00772"></a><span class="lineno"> 772</span><span class="preprocessor">#endif </span><span class="comment">/* FEATURES2D_H_ */</span><span class="preprocessor"></span></div>
<div class="ttc" id="aclassrtabmap_1_1BRISK_html"><div class="ttname"><a href="classrtabmap_1_1BRISK.html">rtabmap::BRISK</a></div><div class="ttdoc">BRISK detector and descriptor.</div><div class="ttdef"><b>Definition</b> <a href="Features2d_8h_source.html#l00598">Features2d.h:599</a></div></div>
<div class="ttc" id="aclassrtabmap_1_1FAST__BRIEF_html"><div class="ttname"><a href="classrtabmap_1_1FAST__BRIEF.html">rtabmap::FAST_BRIEF</a></div><div class="ttdoc">FAST corners + BRIEF descriptors.</div><div class="ttdef"><b>Definition</b> <a href="Features2d_8h_source.html#l00452">Features2d.h:453</a></div></div>
<div class="ttc" id="aclassrtabmap_1_1FAST__FREAK_html"><div class="ttname"><a href="classrtabmap_1_1FAST__FREAK.html">rtabmap::FAST_FREAK</a></div><div class="ttdoc">FAST corners + FREAK descriptors.</div><div class="ttdef"><b>Definition</b> <a href="Features2d_8h_source.html#l00471">Features2d.h:472</a></div></div>
<div class="ttc" id="aclassrtabmap_1_1FAST_html"><div class="ttname"><a href="classrtabmap_1_1FAST.html">rtabmap::FAST</a></div><div class="ttdoc">FAST corner detector only (no descriptor).</div><div class="ttdef"><b>Definition</b> <a href="Features2d_8h_source.html#l00415">Features2d.h:416</a></div></div>
<div class="ttc" id="aclassrtabmap_1_1FAST_html_a1418ac4de2bdf5815df888a4d1f50b2e"><div class="ttname"><a href="classrtabmap_1_1FAST.html#a1418ac4de2bdf5815df888a4d1f50b2e">rtabmap::FAST::isGpuAvailable</a></div><div class="ttdeci">virtual bool isGpuAvailable() const override</div><div class="ttdoc">Returns true when a GPU/CUDA code path could be used by this detector on this host: i....</div></div>
<div class="ttc" id="aclassrtabmap_1_1Feature2D_html"><div class="ttname"><a href="classrtabmap_1_1Feature2D.html">rtabmap::Feature2D</a></div><div class="ttdoc">Abstract 2D feature detector and descriptor extractor for visual SLAM.</div><div class="ttdef"><b>Definition</b> <a href="Features2d_8h_source.html#l00145">Features2d.h:145</a></div></div>
<div class="ttc" id="aclassrtabmap_1_1Feature2D_html_a32fa09026282be6a729483bfe57d31ec"><div class="ttname"><a href="classrtabmap_1_1Feature2D.html#a32fa09026282be6a729483bfe57d31ec">rtabmap::Feature2D::filterKeypointsByDisparity</a></div><div class="ttdeci">static void filterKeypointsByDisparity(std::vector&lt; cv::KeyPoint &gt; &amp;keypoints, const cv::Mat &amp;disparity, float minDisparity)</div><div class="ttdoc">Keeps keypoints with stereo disparity ≥ minDisparity.</div></div>
<div class="ttc" id="aclassrtabmap_1_1Feature2D_html_a58ac3dff96e882f0e4bbbf8a8ffc435d"><div class="ttname"><a href="classrtabmap_1_1Feature2D.html#a58ac3dff96e882f0e4bbbf8a8ffc435d">rtabmap::Feature2D::create</a></div><div class="ttdeci">static Feature2D * create(const ParametersMap &amp;parameters=ParametersMap())</div><div class="ttdoc">Creates a detector from Kp/DetectorStrategy in parameters. Caller owns the pointer.</div></div>
<div class="ttc" id="aclassrtabmap_1_1Feature2D_html_a6020550480c25d36f0b4255629e75ee2"><div class="ttname"><a href="classrtabmap_1_1Feature2D.html#a6020550480c25d36f0b4255629e75ee2">rtabmap::Feature2D::isAvailable</a></div><div class="ttdeci">static bool isAvailable(Feature2D::Type type)</div><div class="ttdoc">Returns true if type is available (RTAB-Map is built with it).</div></div>
<div class="ttc" id="aclassrtabmap_1_1Feature2D_html_a7453189891e489bbcff1f2c971d04fde"><div class="ttname"><a href="classrtabmap_1_1Feature2D.html#a7453189891e489bbcff1f2c971d04fde">rtabmap::Feature2D::Type</a></div><div class="ttdeci">Type</div><div class="ttdoc">Built-in detector/descriptor strategy (Kp/DetectorStrategy).</div><div class="ttdef"><b>Definition</b> <a href="Features2d_8h_source.html#l00148">Features2d.h:148</a></div></div>
<div class="ttc" id="aclassrtabmap_1_1Feature2D_html_a78d70d2150b42203ffd1c94d79661248"><div class="ttname"><a href="classrtabmap_1_1Feature2D.html#a78d70d2150b42203ffd1c94d79661248">rtabmap::Feature2D::generateKeypoints</a></div><div class="ttdeci">std::vector&lt; cv::KeyPoint &gt; generateKeypoints(const cv::Mat &amp;image, const cv::Mat &amp;mask=cv::Mat())</div><div class="ttdoc">Detects keypoints in a grayscale image (CV_8UC1); optional depth or 8U mask.</div></div>
<div class="ttc" id="aclassrtabmap_1_1Feature2D_html_a8bdfa57df68506fecb6342b9f5bc98e8"><div class="ttname"><a href="classrtabmap_1_1Feature2D.html#a8bdfa57df68506fecb6342b9f5bc98e8">rtabmap::Feature2D::computeRoi</a></div><div class="ttdeci">static cv::Rect computeRoi(const cv::Mat &amp;image, const std::string &amp;roiRatios)</div><div class="ttdoc">ROI from Kp/RoiRatios string (&quot;left top right bottom&quot; fractions).</div></div>
<div class="ttc" id="aclassrtabmap_1_1Feature2D_html_a8d330b2b7db059f59c257cde6c9b6a99"><div class="ttname"><a href="classrtabmap_1_1Feature2D.html#a8d330b2b7db059f59c257cde6c9b6a99">rtabmap::Feature2D::isGpuAvailable</a></div><div class="ttdeci">virtual bool isGpuAvailable() const</div><div class="ttdoc">Returns true when a GPU/CUDA code path could be used by this detector on this host: i....</div><div class="ttdef"><b>Definition</b> <a href="Features2d_8h_source.html#l00294">Features2d.h:294</a></div></div>
<div class="ttc" id="aclassrtabmap_1_1Feature2D_html_a98050ef4da598e5b35bc32317bc58b84"><div class="ttname"><a href="classrtabmap_1_1Feature2D.html#a98050ef4da598e5b35bc32317bc58b84">rtabmap::Feature2D::typeName</a></div><div class="ttdeci">static std::string typeName(Type type)</div><div class="ttdef"><b>Definition</b> <a href="Features2d_8h_source.html#l00169">Features2d.h:169</a></div></div>
<div class="ttc" id="aclassrtabmap_1_1Feature2D_html_aa5c0258ede589769bc50c6d6071d595c"><div class="ttname"><a href="classrtabmap_1_1Feature2D.html#aa5c0258ede589769bc50c6d6071d595c">rtabmap::Feature2D::limitKeypoints</a></div><div class="ttdeci">static void limitKeypoints(std::vector&lt; cv::KeyPoint &gt; &amp;keypoints, int maxKeypoints, const cv::Size &amp;imageSize=cv::Size(), bool ssc=false)</div><div class="ttdoc">Reduces keypoint count (by response or SSC spatial distribution).</div></div>
<div class="ttc" id="aclassrtabmap_1_1Feature2D_html_aadbb5a7611eb94ea6925115999bc0f4e"><div class="ttname"><a href="classrtabmap_1_1Feature2D.html#aadbb5a7611eb94ea6925115999bc0f4e">rtabmap::Feature2D::filterKeypointsByDepth</a></div><div class="ttdeci">static void filterKeypointsByDepth(std::vector&lt; cv::KeyPoint &gt; &amp;keypoints, const cv::Mat &amp;depth, float minDepth, float maxDepth)</div><div class="ttdoc">Keeps keypoints whose depth at (u,v) is in (minDepth, maxDepth).</div></div>
<div class="ttc" id="aclassrtabmap_1_1Feature2D_html_ab9deec7c0e26722736aeeaeb5541ac3a"><div class="ttname"><a href="classrtabmap_1_1Feature2D.html#ab9deec7c0e26722736aeeaeb5541ac3a">rtabmap::Feature2D::create</a></div><div class="ttdeci">static Feature2D * create(Feature2D::Type type, const ParametersMap &amp;parameters=ParametersMap())</div><div class="ttdoc">Creates a detector of the given type. Caller owns the pointer.</div></div>
<div class="ttc" id="aclassrtabmap_1_1Feature2D_html_abaca942668ac3d2f16d3e78797ff0fb9"><div class="ttname"><a href="classrtabmap_1_1Feature2D.html#abaca942668ac3d2f16d3e78797ff0fb9">rtabmap::Feature2D::generateDescriptors</a></div><div class="ttdeci">cv::Mat generateDescriptors(const cv::Mat &amp;image, std::vector&lt; cv::KeyPoint &gt; &amp;keypoints) const</div><div class="ttdoc">Computes descriptors for keypoints (may shrink the list in some detectors).</div></div>
<div class="ttc" id="aclassrtabmap_1_1Feature2D_html_ae01a548fe993a7aa309cce96645693ce"><div class="ttname"><a href="classrtabmap_1_1Feature2D.html#ae01a548fe993a7aa309cce96645693ce">rtabmap::Feature2D::generateKeypoints3D</a></div><div class="ttdeci">std::vector&lt; cv::Point3f &gt; generateKeypoints3D(const SensorData &amp;data, const std::vector&lt; cv::KeyPoint &gt; &amp;keypoints) const</div><div class="ttdoc">Back-projects keypoints to 3D using depth or stereo in data.</div></div>
<div class="ttc" id="aclassrtabmap_1_1GFTT__BRIEF_html"><div class="ttname"><a href="classrtabmap_1_1GFTT__BRIEF.html">rtabmap::GFTT_BRIEF</a></div><div class="ttdoc">GFTT corners + BRIEF descriptors.</div><div class="ttdef"><b>Definition</b> <a href="Features2d_8h_source.html#l00518">Features2d.h:519</a></div></div>
<div class="ttc" id="aclassrtabmap_1_1GFTT__DAISY_html"><div class="ttname"><a href="classrtabmap_1_1GFTT__DAISY.html">rtabmap::GFTT_DAISY</a></div><div class="ttdoc">GFTT corners + DAISY descriptors (OpenCV 3+ xfeatures2d).</div><div class="ttdef"><b>Definition</b> <a href="Features2d_8h_source.html#l00723">Features2d.h:724</a></div></div>
<div class="ttc" id="aclassrtabmap_1_1GFTT__FREAK_html"><div class="ttname"><a href="classrtabmap_1_1GFTT__FREAK.html">rtabmap::GFTT_FREAK</a></div><div class="ttdoc">GFTT corners + FREAK descriptors.</div><div class="ttdef"><b>Definition</b> <a href="Features2d_8h_source.html#l00537">Features2d.h:538</a></div></div>
<div class="ttc" id="aclassrtabmap_1_1GFTT__ORB_html"><div class="ttname"><a href="classrtabmap_1_1GFTT__ORB.html">rtabmap::GFTT_ORB</a></div><div class="ttdoc">GFTT corners + ORB descriptors (common default when SURF is unavailable).</div><div class="ttdef"><b>Definition</b> <a href="Features2d_8h_source.html#l00581">Features2d.h:582</a></div></div>
<div class="ttc" id="aclassrtabmap_1_1GFTT_html"><div class="ttname"><a href="classrtabmap_1_1GFTT.html">rtabmap::GFTT</a></div><div class="ttdoc">Good-features-to-track detector (Shi–Tomasi / Harris).</div><div class="ttdef"><b>Definition</b> <a href="Features2d_8h_source.html#l00493">Features2d.h:494</a></div></div>
<div class="ttc" id="aclassrtabmap_1_1GFTT_html_a05151f04cf624576783837dc48ddf744"><div class="ttname"><a href="classrtabmap_1_1GFTT.html#a05151f04cf624576783837dc48ddf744">rtabmap::GFTT::isGpuAvailable</a></div><div class="ttdeci">virtual bool isGpuAvailable() const override</div><div class="ttdoc">Returns true when a GPU/CUDA code path could be used by this detector on this host: i....</div></div>
<div class="ttc" id="aclassrtabmap_1_1KAZE_html"><div class="ttname"><a href="classrtabmap_1_1KAZE.html">rtabmap::KAZE</a></div><div class="ttdoc">KAZE detector and descriptor (OpenCV 3+).</div><div class="ttdef"><b>Definition</b> <a href="Features2d_8h_source.html#l00620">Features2d.h:621</a></div></div>
<div class="ttc" id="aclassrtabmap_1_1ORBOctree_html"><div class="ttname"><a href="classrtabmap_1_1ORBOctree.html">rtabmap::ORBOctree</a></div><div class="ttdoc">ORB with octree spatial distribution (RTAB-Map must be built with OCTREE enabled).</div><div class="ttdef"><b>Definition</b> <a href="Features2d_8h_source.html#l00647">Features2d.h:648</a></div></div>
<div class="ttc" id="aclassrtabmap_1_1ORB_html"><div class="ttname"><a href="classrtabmap_1_1ORB.html">rtabmap::ORB</a></div><div class="ttdoc">ORB detector and descriptor (optional GPU).</div><div class="ttdef"><b>Definition</b> <a href="Features2d_8h_source.html#l00383">Features2d.h:384</a></div></div>
<div class="ttc" id="aclassrtabmap_1_1ORB_html_a7b5e3e7cc41dd04e517c5332f04d3a0a"><div class="ttname"><a href="classrtabmap_1_1ORB.html#a7b5e3e7cc41dd04e517c5332f04d3a0a">rtabmap::ORB::isGpuAvailable</a></div><div class="ttdeci">virtual bool isGpuAvailable() const override</div><div class="ttdoc">Returns true when a GPU/CUDA code path could be used by this detector on this host: i....</div></div>
<div class="ttc" id="aclassrtabmap_1_1SIFT_html"><div class="ttname"><a href="classrtabmap_1_1SIFT.html">rtabmap::SIFT</a></div><div class="ttdoc">SIFT detector and descriptor (optional GPU / CudaSift).</div><div class="ttdef"><b>Definition</b> <a href="Features2d_8h_source.html#l00348">Features2d.h:349</a></div></div>
<div class="ttc" id="aclassrtabmap_1_1SIFT_html_ad089f68ffc9ef1b42b5a9c2d5a5ecd81"><div class="ttname"><a href="classrtabmap_1_1SIFT.html#ad089f68ffc9ef1b42b5a9c2d5a5ecd81">rtabmap::SIFT::isGpuAvailable</a></div><div class="ttdeci">virtual bool isGpuAvailable() const override</div><div class="ttdoc">Returns true when a GPU/CUDA code path could be used by this detector on this host: i....</div></div>
<div class="ttc" id="aclassrtabmap_1_1SURF__DAISY_html"><div class="ttname"><a href="classrtabmap_1_1SURF__DAISY.html">rtabmap::SURF_DAISY</a></div><div class="ttdoc">SURF detector + DAISY descriptors (OpenCV 3+ xfeatures2d).</div><div class="ttdef"><b>Definition</b> <a href="Features2d_8h_source.html#l00747">Features2d.h:748</a></div></div>
<div class="ttc" id="aclassrtabmap_1_1SURF__FREAK_html"><div class="ttname"><a href="classrtabmap_1_1SURF__FREAK.html">rtabmap::SURF_FREAK</a></div><div class="ttdoc">SURF detector + FREAK descriptors.</div><div class="ttdef"><b>Definition</b> <a href="Features2d_8h_source.html#l00559">Features2d.h:560</a></div></div>
<div class="ttc" id="aclassrtabmap_1_1SURF_html"><div class="ttname"><a href="classrtabmap_1_1SURF.html">rtabmap::SURF</a></div><div class="ttdoc">SURF detector and descriptor (non-free / xfeatures2d depending on OpenCV build).</div><div class="ttdef"><b>Definition</b> <a href="Features2d_8h_source.html#l00320">Features2d.h:321</a></div></div>
<div class="ttc" id="aclassrtabmap_1_1SURF_html_a1150923dbf7e1bfd066dba0c3b22db57"><div class="ttname"><a href="classrtabmap_1_1SURF.html#a1150923dbf7e1bfd066dba0c3b22db57">rtabmap::SURF::isGpuAvailable</a></div><div class="ttdeci">virtual bool isGpuAvailable() const override</div><div class="ttdoc">Returns true when a GPU/CUDA code path could be used by this detector on this host: i....</div></div>
<div class="ttc" id="aclassrtabmap_1_1SensorData_html"><div class="ttname"><a href="classrtabmap_1_1SensorData.html">rtabmap::SensorData</a></div><div class="ttdoc">Container class for all sensor data captured at a specific time.</div><div class="ttdef"><b>Definition</b> <a href="SensorData_8h_source.html#l00096">SensorData.h:97</a></div></div>
<div class="ttc" id="aclassrtabmap_1_1Stereo_html"><div class="ttname"><a href="classrtabmap_1_1Stereo.html">rtabmap::Stereo</a></div><div class="ttdoc">Sparse stereo matching using block matching.</div><div class="ttdef"><b>Definition</b> <a href="Stereo_8h_source.html#l00055">Stereo.h:55</a></div></div>
<div class="ttc" id="aclassrtabmap_1_1SuperPointRpautrat_html"><div class="ttname"><a href="classrtabmap_1_1SuperPointRpautrat.html">rtabmap::SuperPointRpautrat</a></div><div class="ttdoc">SuperPoint (rpautrat) via Torch + Python (RTAB-Map must be built with libtorch and Python support).</div><div class="ttdef"><b>Definition</b> <a href="Features2d_8h_source.html#l00697">Features2d.h:698</a></div></div>
<div class="ttc" id="aclassrtabmap_1_1SuperPointRpautrat_html_ac041c8738dc391661ba21331bf78d344"><div class="ttname"><a href="classrtabmap_1_1SuperPointRpautrat.html#ac041c8738dc391661ba21331bf78d344">rtabmap::SuperPointRpautrat::isGpuAvailable</a></div><div class="ttdeci">virtual bool isGpuAvailable() const override</div><div class="ttdoc">Returns true when a GPU/CUDA code path could be used by this detector on this host: i....</div></div>
<div class="ttc" id="aclassrtabmap_1_1SuperPointTorch_html"><div class="ttname"><a href="classrtabmap_1_1SuperPointTorch.html">rtabmap::SuperPointTorch</a></div><div class="ttdoc">SuperPoint via LibTorch (RTAB-Map must be built with libtorch support).</div><div class="ttdef"><b>Definition</b> <a href="Features2d_8h_source.html#l00673">Features2d.h:674</a></div></div>
<div class="ttc" id="aclassrtabmap_1_1SuperPointTorch_html_aee69f6089f657449d3813b440abbaa25"><div class="ttname"><a href="classrtabmap_1_1SuperPointTorch.html#aee69f6089f657449d3813b440abbaa25">rtabmap::SuperPointTorch::isGpuAvailable</a></div><div class="ttdeci">virtual bool isGpuAvailable() const override</div><div class="ttdoc">Returns true when a GPU/CUDA code path could be used by this detector on this host: i....</div></div>
<div class="ttc" id="anamespacertabmap_html"><div class="ttname"><a href="namespacertabmap.html">rtabmap</a></div><div class="ttdef"><b>Definition</b> <a href="BayesFilter_8h_source.html#l00042">BayesFilter.h:42</a></div></div>
<div class="ttc" id="anamespacertabmap_html_ad08b6f1796a27dd7316c99c385e2cc55"><div class="ttname"><a href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">rtabmap::ParametersMap</a></div><div class="ttdeci">std::map&lt; std::string, std::string &gt; ParametersMap</div><div class="ttdoc">Parameter keys mapped to their values, as used by every configurable class (see Parameters).</div><div class="ttdef"><b>Definition</b> <a href="Parameters_8h_source.html#l00044">Parameters.h:44</a></div></div>
</div><!-- fragment --></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="dir_04d49acea3c42cab2afcd35cb2f2a48f.html">corelib</a></li><li class="navelem"><a class="el" href="dir_e996b11fd4b3a747423759b16a8ba4a6.html">include</a></li><li class="navelem"><a class="el" href="dir_ff01f7bc5399ccf9ff1cc91d1f45726a.html">rtabmap</a></li><li class="navelem"><a class="el" href="dir_884419f21456e80aa47bc1d0c2ab0140.html">core</a></li><li class="navelem"><b>Features2d.h</b></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>