2026-08-06 22:56:24 +00:00
<!-- HTML header for doxygen 1.9.8-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
< html xmlns = "http://www.w3.org/1999/xhtml" lang = "en-US" >
< head >
< meta http-equiv = "Content-Type" content = "text/xhtml;charset=UTF-8" />
< meta http-equiv = "X-UA-Compatible" content = "IE=11" />
< meta name = "generator" content = "Doxygen 1.9.8" />
< meta name = "viewport" content = "width=device-width, initial-scale=1" />
< title > RTAB-Map: rtabmap::VWDictionary Class Reference</ title >
< link href = "tabs.css" rel = "stylesheet" type = "text/css" />
< script type = "text/javascript" src = "jquery.js" ></ script >
< script type = "text/javascript" src = "dynsections.js" ></ script >
< link href = "navtree.css" rel = "stylesheet" type = "text/css" />
< script type = "text/javascript" src = "resize.js" ></ script >
< script type = "text/javascript" src = "navtreedata.js" ></ script >
< script type = "text/javascript" src = "navtree.js" ></ script >
< link href = "search/search.css" rel = "stylesheet" type = "text/css" />
< script type = "text/javascript" src = "search/searchdata.js" ></ script >
< script type = "text/javascript" src = "search/search.js" ></ script >
< link href = "doxygen.css" rel = "stylesheet" type = "text/css" />
< link href = "doxygen-awesome.css" rel = "stylesheet" type = "text/css" />
< link href = "custom.css" rel = "stylesheet" type = "text/css" />
< script type = "text/javascript" > window . RTABMAP_DOC_ROOT = "" ;</ script >
< script type = "text/javascript" src = "../versions.js" ></ script >
< script type = "text/javascript" src = "version-switcher.js" ></ script >
< script type = "text/javascript" src = "doxygen-awesome-darkmode-toggle.js" ></ script >
< script type = "text/javascript" > DoxygenAwesomeDarkModeToggle . init ();</ script >
</ head >
< body >
< div id = "top" > <!-- do not remove this div, it is closed by doxygen! -->
< div id = "titlearea" >
< table cellspacing = "0" cellpadding = "0" >
< tbody >
< tr id = "projectrow" >
< td id = "projectalign" >
2026-09-20 06:51:14 +00:00
< div id = "projectname" > RTAB-Map< span id = "projectnumber" >   0.23.12</ span >
2026-08-06 22:56:24 +00:00
</ 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&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&dn=expat.txt MIT */
$ ( function () {
initMenu ( '' , true , false , 'search.php' , 'Search' );
$ ( document ). ready ( function () { init_search (); });
});
/* @license-end */
</ script >
< div id = "main-nav" ></ div >
</ div > <!-- top -->
< div id = "side-nav" class = "ui-resizable side-nav-resizable" >
< div id = "nav-tree" >
< div id = "nav-tree-contents" >
< div id = "nav-sync" class = "sync" ></ div >
</ div >
</ div >
< div id = "splitbar" style = "-moz-user-select:none;"
class = "ui-resizable-handle" >
</ div >
</ div >
< script type = "text/javascript" >
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
$ ( document ). ready ( function (){ initNavTree ( 'classrtabmap_1_1VWDictionary.html' , '' ); initResizable (); });
/* @license-end */
</ script >
< div id = "doc-content" >
<!-- window showing the filter options -->
< div id = "MSearchSelectWindow"
onmouseover = "return searchBox.OnSearchSelectShow()"
onmouseout = "return searchBox.OnSearchSelectHide()"
onkeydown = "return searchBox.OnSearchSelectKey(event)" >
</ div >
<!-- iframe showing the search results (closed by default) -->
< div id = "MSearchResultsWindow" >
< div id = "MSearchResults" >
< div class = "SRPage" >
< div id = "SRIndex" >
< div id = "SRResults" ></ div >
< div class = "SRStatus" id = "Loading" > Loading...</ div >
< div class = "SRStatus" id = "Searching" > Searching...</ div >
< div class = "SRStatus" id = "NoMatches" > No Matches</ div >
</ div >
</ div >
</ div >
</ div >
< div class = "header" >
< div class = "summary" >
< a href = "#pub-types" > Public Types</ a > |
< a href = "#pub-methods" > Public Member Functions</ a > |
< a href = "#pub-static-methods" > Static Public Member Functions</ a > |
< a href = "#pub-static-attribs" > Static Public Attributes</ a > |
< a href = "#pro-methods" > Protected Member Functions</ a > |
< a href = "#pro-attribs" > Protected Attributes</ a > |
< a href = "classrtabmap_1_1VWDictionary-members.html" > List of all members</ a > </ div >
< div class = "headertitle" >< div class = "title" > rtabmap::VWDictionary Class Reference</ div ></ div >
</ div > <!--header-->
< div class = "contents" >
< p > Manages a dictionary of visual words for visual place recognition and loop closure detection.
< a href = "classrtabmap_1_1VWDictionary.html#details" > More...</ a ></ p >
< p >< code > #include < < a class = "el" href = "VWDictionary_8h_source.html" > VWDictionary.h</ a > > </ code ></ p >
< table class = "memberdecls" >
< tr class = "heading" >< td colspan = "2" >< h2 class = "groupheader" >< a id = "pub-types" name = "pub-types" ></ a >
Public Types</ h2 ></ td ></ tr >
< tr class = "memitem:a9466840dd5ad3dc914543a97421c3655" id = "r_a9466840dd5ad3dc914543a97421c3655" >< td class = "memItemLeft" align = "right" valign = "top" > enum   </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "classrtabmap_1_1VWDictionary.html#a9466840dd5ad3dc914543a97421c3655" > NNStrategy</ a > { < br />
   < a class = "el" href = "classrtabmap_1_1VWDictionary.html#a9466840dd5ad3dc914543a97421c3655ae4301e202dd36e997bf3298390c667f0" > kNNFlannNaive</ a >
, < a class = "el" href = "classrtabmap_1_1VWDictionary.html#a9466840dd5ad3dc914543a97421c3655aaa1ea80fc9ca8809ad9b959e2e1564c5" > kNNFlannKdTree</ a >
, < a class = "el" href = "classrtabmap_1_1VWDictionary.html#a9466840dd5ad3dc914543a97421c3655a89ab72d0bccd61bb11abbd1edf1e6992" > kNNFlannLSH</ a >
, < a class = "el" href = "classrtabmap_1_1VWDictionary.html#a9466840dd5ad3dc914543a97421c3655a1745dd334296b8a41cf0c88dcc8a7d5d" > kNNBruteForce</ a >
, < br />
   < a class = "el" href = "classrtabmap_1_1VWDictionary.html#a9466840dd5ad3dc914543a97421c3655a602d99d5bdef453a39339a0b45979451" > kNNBruteForceGPU</ a >
2026-08-16 17:18:46 +00:00
, < a class = "el" href = "classrtabmap_1_1VWDictionary.html#a9466840dd5ad3dc914543a97421c3655a994442dbb17b48ba9a9315edee24a7a1" > kNNFlannKdTreeSingle</ a >
, < a class = "el" href = "classrtabmap_1_1VWDictionary.html#a9466840dd5ad3dc914543a97421c3655a306c8d555b740267fa80a1ee673ef7c7" > kNNNanoFlannKdTree</ a >
2026-08-06 22:56:24 +00:00
, < a class = "el" href = "classrtabmap_1_1VWDictionary.html#a9466840dd5ad3dc914543a97421c3655afeba67ed0aafc39aa35b2a194e147ff9" > kNNUndef</ a >
< br />
}</ td ></ tr >
< tr class = "memdesc:a9466840dd5ad3dc914543a97421c3655" >< td class = "mdescLeft" >   </ td >< td class = "mdescRight" > Nearest neighbor search strategies for descriptor matching. < a href = "classrtabmap_1_1VWDictionary.html#a9466840dd5ad3dc914543a97421c3655" > More...</ a >< br /></ td ></ tr >
< tr class = "separator:a9466840dd5ad3dc914543a97421c3655" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
</ table >< table class = "memberdecls" >
< tr class = "heading" >< td colspan = "2" >< h2 class = "groupheader" >< a id = "pub-methods" name = "pub-methods" ></ a >
Public Member Functions</ h2 ></ td ></ tr >
< tr class = "memitem:ada3980b520d8411a1ebb3ce14e2f8734" id = "r_ada3980b520d8411a1ebb3ce14e2f8734" >< td class = "memItemLeft" align = "right" valign = "top" >   </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "classrtabmap_1_1VWDictionary.html#ada3980b520d8411a1ebb3ce14e2f8734" > VWDictionary</ a > (const < a class = "el" href = "namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55" > ParametersMap</ a > & parameters=< a class = "el" href = "namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55" > ParametersMap</ a > ())</ td ></ tr >
< tr class = "memdesc:ada3980b520d8411a1ebb3ce14e2f8734" >< td class = "mdescLeft" >   </ td >< td class = "mdescRight" > Constructor. < br /></ td ></ tr >
< tr class = "separator:ada3980b520d8411a1ebb3ce14e2f8734" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:af7f669f103368e30e31a028efbcac89d" id = "r_af7f669f103368e30e31a028efbcac89d" >< td class = "memItemLeft" align = "right" valign = "top" > virtual  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "classrtabmap_1_1VWDictionary.html#af7f669f103368e30e31a028efbcac89d" > ~VWDictionary</ a > ()</ td ></ tr >
< tr class = "memdesc:af7f669f103368e30e31a028efbcac89d" >< td class = "mdescLeft" >   </ td >< td class = "mdescRight" > Destructor. < br /></ td ></ tr >
< tr class = "separator:af7f669f103368e30e31a028efbcac89d" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:a89893faef6c96e3b19bfeab86094af81" id = "r_a89893faef6c96e3b19bfeab86094af81" >< td class = "memItemLeft" align = "right" valign = "top" > virtual void  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "classrtabmap_1_1VWDictionary.html#a89893faef6c96e3b19bfeab86094af81" > parseParameters</ a > (const < a class = "el" href = "namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55" > ParametersMap</ a > & parameters)</ td ></ tr >
< tr class = "memdesc:a89893faef6c96e3b19bfeab86094af81" >< td class = "mdescLeft" >   </ td >< td class = "mdescRight" > Parse and apply parameters from a parameters map. < br /></ td ></ tr >
< tr class = "separator:a89893faef6c96e3b19bfeab86094af81" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:a844ae27eb6d1f0674c8f7777451812c5" id = "r_a844ae27eb6d1f0674c8f7777451812c5" >< td class = "memItemLeft" align = "right" valign = "top" > virtual void  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "classrtabmap_1_1VWDictionary.html#a844ae27eb6d1f0674c8f7777451812c5" > update</ a > ()</ td ></ tr >
< tr class = "memdesc:a844ae27eb6d1f0674c8f7777451812c5" >< td class = "mdescLeft" >   </ td >< td class = "mdescRight" > Update the search index with newly added words. < br /></ td ></ tr >
< tr class = "separator:a844ae27eb6d1f0674c8f7777451812c5" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:a2998a6b11e102a2253ac592acf076841" id = "r_a2998a6b11e102a2253ac592acf076841" >< td class = "memItemLeft" align = "right" valign = "top" > virtual std::list< int >  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "classrtabmap_1_1VWDictionary.html#a2998a6b11e102a2253ac592acf076841" > addNewWords</ a > (const cv::Mat & descriptors, int signatureId)</ td ></ tr >
< tr class = "memdesc:a2998a6b11e102a2253ac592acf076841" >< td class = "mdescLeft" >   </ td >< td class = "mdescRight" > Add new visual words from descriptors. < br /></ td ></ tr >
< tr class = "separator:a2998a6b11e102a2253ac592acf076841" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:ad464ad961b0e4d4cd6dd7895e9ff3d59" id = "r_ad464ad961b0e4d4cd6dd7895e9ff3d59" >< td class = "memItemLeft" align = "right" valign = "top" > virtual void  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "classrtabmap_1_1VWDictionary.html#ad464ad961b0e4d4cd6dd7895e9ff3d59" > addWord</ a > (< a class = "el" href = "classrtabmap_1_1VisualWord.html" > VisualWord</ a > *vw)</ td ></ tr >
< tr class = "memdesc:ad464ad961b0e4d4cd6dd7895e9ff3d59" >< td class = "mdescLeft" >   </ td >< td class = "mdescRight" > Add an existing visual word to the dictionary. < br /></ td ></ tr >
< tr class = "separator:ad464ad961b0e4d4cd6dd7895e9ff3d59" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:ac2f21a98b70e91ab2e8a07151c508d1c" id = "r_ac2f21a98b70e91ab2e8a07151c508d1c" >< td class = "memItemLeft" align = "right" valign = "top" > std::vector< int >  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "classrtabmap_1_1VWDictionary.html#ac2f21a98b70e91ab2e8a07151c508d1c" > findNN</ a > (const std::list< < a class = "el" href = "classrtabmap_1_1VisualWord.html" > VisualWord</ a > * > & vws) const</ td ></ tr >
< tr class = "memdesc:ac2f21a98b70e91ab2e8a07151c508d1c" >< td class = "mdescLeft" >   </ td >< td class = "mdescRight" > Find nearest neighbor visual word IDs for a list of visual words. < br /></ td ></ tr >
< tr class = "separator:ac2f21a98b70e91ab2e8a07151c508d1c" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:aada11cf01b586ac8205f8bff0b1ab295" id = "r_aada11cf01b586ac8205f8bff0b1ab295" >< td class = "memItemLeft" align = "right" valign = "top" > std::vector< int >  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "classrtabmap_1_1VWDictionary.html#aada11cf01b586ac8205f8bff0b1ab295" > findNN</ a > (const cv::Mat & descriptors) const</ td ></ tr >
< tr class = "memdesc:aada11cf01b586ac8205f8bff0b1ab295" >< td class = "mdescLeft" >   </ td >< td class = "mdescRight" > Find nearest neighbor visual word IDs for descriptors. < br /></ td ></ tr >
< tr class = "separator:aada11cf01b586ac8205f8bff0b1ab295" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:aea2f0d043d043df37258dc225c62edec" id = "r_aea2f0d043d043df37258dc225c62edec" >< td class = "memItemLeft" align = "right" valign = "top" > bool  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "classrtabmap_1_1VWDictionary.html#aea2f0d043d043df37258dc225c62edec" > addWordRef</ a > (int wordId, int signatureId)</ td ></ tr >
< tr class = "memdesc:aea2f0d043d043df37258dc225c62edec" >< td class = "mdescLeft" >   </ td >< td class = "mdescRight" > Add a reference from a visual word to a signature. < br /></ td ></ tr >
< tr class = "separator:aea2f0d043d043df37258dc225c62edec" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:ac4a70358ca2db8e63c67a30383a1d34b" id = "r_ac4a70358ca2db8e63c67a30383a1d34b" >< td class = "memItemLeft" align = "right" valign = "top" > void  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "classrtabmap_1_1VWDictionary.html#ac4a70358ca2db8e63c67a30383a1d34b" > removeAllWordRef</ a > (int wordId, int signatureId)</ td ></ tr >
< tr class = "memdesc:ac4a70358ca2db8e63c67a30383a1d34b" >< td class = "mdescLeft" >   </ td >< td class = "mdescRight" > Remove all references from a visual word to a signature. < br /></ td ></ tr >
< tr class = "separator:ac4a70358ca2db8e63c67a30383a1d34b" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:a5cf9981cf11f8f93280b7d0c195159e1" id = "r_a5cf9981cf11f8f93280b7d0c195159e1" >< td class = "memItemLeft" align = "right" valign = "top" > const < a class = "el" href = "classrtabmap_1_1VisualWord.html" > VisualWord</ a > *  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "classrtabmap_1_1VWDictionary.html#a5cf9981cf11f8f93280b7d0c195159e1" > getWord</ a > (int id) const</ td ></ tr >
< tr class = "memdesc:a5cf9981cf11f8f93280b7d0c195159e1" >< td class = "mdescLeft" >   </ td >< td class = "mdescRight" > Get a visual word by ID. < br /></ td ></ tr >
< tr class = "separator:a5cf9981cf11f8f93280b7d0c195159e1" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:abbd007a028847ecbbdd50e3480ba95e3" id = "r_abbd007a028847ecbbdd50e3480ba95e3" >< td class = "memItemLeft" align = "right" valign = "top" >< a class = "el" href = "classrtabmap_1_1VisualWord.html" > VisualWord</ a > *  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "classrtabmap_1_1VWDictionary.html#abbd007a028847ecbbdd50e3480ba95e3" > getUnusedWord</ a > (int id) const</ td ></ tr >
< tr class = "memdesc:abbd007a028847ecbbdd50e3480ba95e3" >< td class = "mdescLeft" >   </ td >< td class = "mdescRight" > Get an unused visual word by ID. < br /></ td ></ tr >
< tr class = "separator:abbd007a028847ecbbdd50e3480ba95e3" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:af0b676e13c7dba437147520335289e97" id = "r_af0b676e13c7dba437147520335289e97" >< td class = "memItemLeft" align = "right" valign = "top" > void  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "classrtabmap_1_1VWDictionary.html#af0b676e13c7dba437147520335289e97" > setLastWordId</ a > (int id)</ td ></ tr >
< tr class = "memdesc:af0b676e13c7dba437147520335289e97" >< td class = "mdescLeft" >   </ td >< td class = "mdescRight" > Set the last word ID (used when loading from database) < br /></ td ></ tr >
< tr class = "separator:af0b676e13c7dba437147520335289e97" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:a6bcad4c04999469001b5ac03b8a61ab4" id = "r_a6bcad4c04999469001b5ac03b8a61ab4" >< td class = "memItemLeft" align = "right" valign = "top" > const std::map< int, < a class = "el" href = "classrtabmap_1_1VisualWord.html" > VisualWord</ a > * > &  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "classrtabmap_1_1VWDictionary.html#a6bcad4c04999469001b5ac03b8a61ab4" > getVisualWords</ a > () const</ td ></ tr >
< tr class = "memdesc:a6bcad4c04999469001b5ac03b8a61ab4" >< td class = "mdescLeft" >   </ td >< td class = "mdescRight" > Get all visual words. < br /></ td ></ tr >
< tr class = "separator:a6bcad4c04999469001b5ac03b8a61ab4" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:a454639bff3d95b2f9dd346413981d5c5" id = "r_a454639bff3d95b2f9dd346413981d5c5" >< td class = "memItemLeft" align = "right" valign = "top" > float  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "classrtabmap_1_1VWDictionary.html#a454639bff3d95b2f9dd346413981d5c5" > getNndrRatio</ a > () const</ td ></ tr >
< tr class = "memdesc:a454639bff3d95b2f9dd346413981d5c5" >< td class = "mdescLeft" >   </ td >< td class = "mdescRight" > Get the Nearest Neighbor Distance Ratio (NNDR) threshold. < br /></ td ></ tr >
< tr class = "separator:a454639bff3d95b2f9dd346413981d5c5" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:a293c09f00caf84bb991d73983a5f22c8" id = "r_a293c09f00caf84bb991d73983a5f22c8" >< td class = "memItemLeft" align = "right" valign = "top" > unsigned int  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "classrtabmap_1_1VWDictionary.html#a293c09f00caf84bb991d73983a5f22c8" > getNotIndexedWordsCount</ a > () const</ td ></ tr >
< tr class = "memdesc:a293c09f00caf84bb991d73983a5f22c8" >< td class = "mdescLeft" >   </ td >< td class = "mdescRight" > Get the count of words not yet indexed in the search tree. < br /></ td ></ tr >
< tr class = "separator:a293c09f00caf84bb991d73983a5f22c8" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:a65a99ae457b1c779233de57d190ca8da" id = "r_a65a99ae457b1c779233de57d190ca8da" >< td class = "memItemLeft" align = "right" valign = "top" > int  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "classrtabmap_1_1VWDictionary.html#a65a99ae457b1c779233de57d190ca8da" > getLastIndexedWordId</ a > () const</ td ></ tr >
< tr class = "memdesc:a65a99ae457b1c779233de57d190ca8da" >< td class = "mdescLeft" >   </ td >< td class = "mdescRight" > Get the ID of the last indexed word. < br /></ td ></ tr >
< tr class = "separator:a65a99ae457b1c779233de57d190ca8da" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:a98447a880fdcf91709f00d00cfd4e54d" id = "r_a98447a880fdcf91709f00d00cfd4e54d" >< td class = "memItemLeft" align = "right" valign = "top" > int  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "classrtabmap_1_1VWDictionary.html#a98447a880fdcf91709f00d00cfd4e54d" > getTotalActiveReferences</ a > () const</ td ></ tr >
< tr class = "memdesc:a98447a880fdcf91709f00d00cfd4e54d" >< td class = "mdescLeft" >   </ td >< td class = "mdescRight" > Get the total number of active word-to-signature references. < br /></ td ></ tr >
< tr class = "separator:a98447a880fdcf91709f00d00cfd4e54d" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:a6a0610e87964c3881dc70cae6cd9123c" id = "r_a6a0610e87964c3881dc70cae6cd9123c" >< td class = "memItemLeft" align = "right" valign = "top" > unsigned int  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "classrtabmap_1_1VWDictionary.html#a6a0610e87964c3881dc70cae6cd9123c" > getIndexedWordsCount</ a > () const</ td ></ tr >
< tr class = "memdesc:a6a0610e87964c3881dc70cae6cd9123c" >< td class = "mdescLeft" >   </ td >< td class = "mdescRight" > Get the count of words currently indexed in the search tree. < br /></ td ></ tr >
< tr class = "separator:a6a0610e87964c3881dc70cae6cd9123c" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:a63ec6a9b915eb939c2650e623feb0576" id = "r_a63ec6a9b915eb939c2650e623feb0576" >< td class = "memItemLeft" align = "right" valign = "top" > unsigned int  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "classrtabmap_1_1VWDictionary.html#a63ec6a9b915eb939c2650e623feb0576" > getIndexMemoryUsed</ a > () const</ td ></ tr >
< tr class = "memdesc:a63ec6a9b915eb939c2650e623feb0576" >< td class = "mdescLeft" >   </ td >< td class = "mdescRight" > Get the memory used by the search index. < br /></ td ></ tr >
< tr class = "separator:a63ec6a9b915eb939c2650e623feb0576" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:ac5177a75f402538b50ec6c36bdbc7307" id = "r_ac5177a75f402538b50ec6c36bdbc7307" >< td class = "memItemLeft" align = "right" valign = "top" > unsigned long  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "classrtabmap_1_1VWDictionary.html#ac5177a75f402538b50ec6c36bdbc7307" > getMemoryUsed</ a > () const</ td ></ tr >
< tr class = "memdesc:ac5177a75f402538b50ec6c36bdbc7307" >< td class = "mdescLeft" >   </ td >< td class = "mdescRight" > Get the total memory used by the dictionary. < br /></ td ></ tr >
< tr class = "separator:ac5177a75f402538b50ec6c36bdbc7307" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:af60e271facb40ff668c4bc24cff1b9cc" id = "r_af60e271facb40ff668c4bc24cff1b9cc" >< td class = "memItemLeft" align = "right" valign = "top" > bool  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "classrtabmap_1_1VWDictionary.html#af60e271facb40ff668c4bc24cff1b9cc" > setNNStrategy</ a > (< a class = "el" href = "classrtabmap_1_1VWDictionary.html#a9466840dd5ad3dc914543a97421c3655" > NNStrategy</ a > strategy)</ td ></ tr >
< tr class = "memdesc:af60e271facb40ff668c4bc24cff1b9cc" >< td class = "mdescLeft" >   </ td >< td class = "mdescRight" > Set the nearest neighbor search strategy. < br /></ td ></ tr >
< tr class = "separator:af60e271facb40ff668c4bc24cff1b9cc" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:ab1ec0db96328164864953f25d463bcbb" id = "r_ab1ec0db96328164864953f25d463bcbb" >< td class = "memItemLeft" align = "right" valign = "top" >< a class = "el" href = "classrtabmap_1_1VWDictionary.html#a9466840dd5ad3dc914543a97421c3655" > NNStrategy</ a >   </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "classrtabmap_1_1VWDictionary.html#ab1ec0db96328164864953f25d463bcbb" > getNNStrategy</ a > () const</ td ></ tr >
< tr class = "memdesc:ab1ec0db96328164864953f25d463bcbb" >< td class = "mdescLeft" >   </ td >< td class = "mdescRight" > Get the current nearest neighbor search strategy. < br /></ td ></ tr >
< tr class = "separator:ab1ec0db96328164864953f25d463bcbb" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:a706e209f6228c02730dd8ea501ab5369" id = "r_a706e209f6228c02730dd8ea501ab5369" >< td class = "memItemLeft" align = "right" valign = "top" > bool  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "classrtabmap_1_1VWDictionary.html#a706e209f6228c02730dd8ea501ab5369" > isIncremental</ a > () const</ td ></ tr >
< tr class = "memdesc:a706e209f6228c02730dd8ea501ab5369" >< td class = "mdescLeft" >   </ td >< td class = "mdescRight" > Check if the dictionary is in incremental mode. < br /></ td ></ tr >
< tr class = "separator:a706e209f6228c02730dd8ea501ab5369" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:a9f016aa45f3b3d5618d104fb799ca998" id = "r_a9f016aa45f3b3d5618d104fb799ca998" >< td class = "memItemLeft" align = "right" valign = "top" > bool  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "classrtabmap_1_1VWDictionary.html#a9f016aa45f3b3d5618d104fb799ca998" > isIncrementalFlann</ a > () const</ td ></ tr >
< tr class = "memdesc:a9f016aa45f3b3d5618d104fb799ca998" >< td class = "mdescLeft" >   </ td >< td class = "mdescRight" > Check if FLANN index is updated incrementally. < br /></ td ></ tr >
< tr class = "separator:a9f016aa45f3b3d5618d104fb799ca998" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:ab14ef6e8fb979dce23f9a40a1faf8dff" id = "r_ab14ef6e8fb979dce23f9a40a1faf8dff" >< td class = "memItemLeft" align = "right" valign = "top" > void  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "classrtabmap_1_1VWDictionary.html#ab14ef6e8fb979dce23f9a40a1faf8dff" > setIncrementalDictionary</ a > ()</ td ></ tr >
< tr class = "memdesc:ab14ef6e8fb979dce23f9a40a1faf8dff" >< td class = "mdescLeft" >   </ td >< td class = "mdescRight" > Set the dictionary to incremental mode. < br /></ td ></ tr >
< tr class = "separator:ab14ef6e8fb979dce23f9a40a1faf8dff" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:a5f3712744b9f7beb5da186a842f7d74a" id = "r_a5f3712744b9f7beb5da186a842f7d74a" >< td class = "memItemLeft" align = "right" valign = "top" > void  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "classrtabmap_1_1VWDictionary.html#a5f3712744b9f7beb5da186a842f7d74a" > setFixedDictionary</ a > (const std::string & dictionaryPath)</ td ></ tr >
< tr class = "memdesc:a5f3712744b9f7beb5da186a842f7d74a" >< td class = "mdescLeft" >   </ td >< td class = "mdescRight" > Set the dictionary to fixed mode and load from file. < br /></ td ></ tr >
< tr class = "separator:a5f3712744b9f7beb5da186a842f7d74a" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:aa0bcdf4002305d36bb072c019d475f13" id = "r_aa0bcdf4002305d36bb072c019d475f13" >< td class = "memItemLeft" align = "right" valign = "top" > bool  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "classrtabmap_1_1VWDictionary.html#aa0bcdf4002305d36bb072c019d475f13" > isModified</ a > () const</ td ></ tr >
< tr class = "memdesc:aa0bcdf4002305d36bb072c019d475f13" >< td class = "mdescLeft" >   </ td >< td class = "mdescRight" > Check if the dictionary has been modified since last save. < br /></ td ></ tr >
< tr class = "separator:aa0bcdf4002305d36bb072c019d475f13" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
2026-08-08 03:59:29 +00:00
< tr class = "memitem:ac18295fcae685ca5c71a2c7788ef1093" id = "r_ac18295fcae685ca5c71a2c7788ef1093" >< td class = "memItemLeft" align = "right" valign = "top" >< a id = "ac18295fcae685ca5c71a2c7788ef1093" name = "ac18295fcae685ca5c71a2c7788ef1093" ></ a >
void  </ td >< td class = "memItemRight" valign = "bottom" >< b > rebuildIndex</ b > ()</ td ></ tr >
< tr class = "separator:ac18295fcae685ca5c71a2c7788ef1093" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
2026-08-06 22:56:24 +00:00
< tr class = "memitem:a2864c406b3792dbfb7c8c334b6e44d41" id = "r_a2864c406b3792dbfb7c8c334b6e44d41" >< td class = "memItemLeft" align = "right" valign = "top" > std::vector< unsigned char >  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "classrtabmap_1_1VWDictionary.html#a2864c406b3792dbfb7c8c334b6e44d41" > serializeIndex</ a > () const</ td ></ tr >
< tr class = "memdesc:a2864c406b3792dbfb7c8c334b6e44d41" >< td class = "mdescLeft" >   </ td >< td class = "mdescRight" > Serialize the search index to a byte vector. < br /></ td ></ tr >
< tr class = "separator:a2864c406b3792dbfb7c8c334b6e44d41" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:a3af1cce90b50dcb0f9dcd77e1fb08aad" id = "r_a3af1cce90b50dcb0f9dcd77e1fb08aad" >< td class = "memItemLeft" align = "right" valign = "top" > bool  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "classrtabmap_1_1VWDictionary.html#a3af1cce90b50dcb0f9dcd77e1fb08aad" > deserializeIndex</ a > (const std::vector< unsigned char > & data)</ td ></ tr >
< tr class = "memdesc:a3af1cce90b50dcb0f9dcd77e1fb08aad" >< td class = "mdescLeft" >   </ td >< td class = "mdescRight" > Deserialize the search index from a byte vector. < br /></ td ></ tr >
< tr class = "separator:a3af1cce90b50dcb0f9dcd77e1fb08aad" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:a0a29d849a7c2b626407f453e5cb4b526" id = "r_a0a29d849a7c2b626407f453e5cb4b526" >< td class = "memItemLeft" align = "right" valign = "top" > bool  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "classrtabmap_1_1VWDictionary.html#a0a29d849a7c2b626407f453e5cb4b526" > deserializeIndex</ a > (const unsigned char *data, size_t size)</ td ></ tr >
< tr class = "memdesc:a0a29d849a7c2b626407f453e5cb4b526" >< td class = "mdescLeft" >   </ td >< td class = "mdescRight" > Deserialize the search index from raw bytes. < br /></ td ></ tr >
< tr class = "separator:a0a29d849a7c2b626407f453e5cb4b526" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:a1ba7cb31f8658980849ffd9ce76b3cb8" id = "r_a1ba7cb31f8658980849ffd9ce76b3cb8" >< td class = "memItemLeft" align = "right" valign = "top" > void  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "classrtabmap_1_1VWDictionary.html#a1ba7cb31f8658980849ffd9ce76b3cb8" > exportDictionary</ a > (const char *fileNameReferences, const char *fileNameDescriptors) const</ td ></ tr >
< tr class = "memdesc:a1ba7cb31f8658980849ffd9ce76b3cb8" >< td class = "mdescLeft" >   </ td >< td class = "mdescRight" > Export the dictionary to files. < br /></ td ></ tr >
< tr class = "separator:a1ba7cb31f8658980849ffd9ce76b3cb8" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:a566aaf19cdc098587e88393e4140b351" id = "r_a566aaf19cdc098587e88393e4140b351" >< td class = "memItemLeft" align = "right" valign = "top" > void  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "classrtabmap_1_1VWDictionary.html#a566aaf19cdc098587e88393e4140b351" > clear</ a > (bool printWarningsIfNotEmpty=true)</ td ></ tr >
< tr class = "memdesc:a566aaf19cdc098587e88393e4140b351" >< td class = "mdescLeft" >   </ td >< td class = "mdescRight" > Clear all visual words and reset the dictionary. < br /></ td ></ tr >
< tr class = "separator:a566aaf19cdc098587e88393e4140b351" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:ab47b5ecb12c822474004f0ad77dbb388" id = "r_ab47b5ecb12c822474004f0ad77dbb388" >< td class = "memItemLeft" align = "right" valign = "top" > std::vector< < a class = "el" href = "classrtabmap_1_1VisualWord.html" > VisualWord</ a > * >  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "classrtabmap_1_1VWDictionary.html#ab47b5ecb12c822474004f0ad77dbb388" > getUnusedWords</ a > () const</ td ></ tr >
< tr class = "memdesc:ab47b5ecb12c822474004f0ad77dbb388" >< td class = "mdescLeft" >   </ td >< td class = "mdescRight" > Get all unused visual words. < br /></ td ></ tr >
< tr class = "separator:ab47b5ecb12c822474004f0ad77dbb388" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:a64b0aee7f33cbd4df26e2d0c14329e9d" id = "r_a64b0aee7f33cbd4df26e2d0c14329e9d" >< td class = "memItemLeft" align = "right" valign = "top" > std::vector< int >  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "classrtabmap_1_1VWDictionary.html#a64b0aee7f33cbd4df26e2d0c14329e9d" > getUnusedWordIds</ a > () const</ td ></ tr >
< tr class = "memdesc:a64b0aee7f33cbd4df26e2d0c14329e9d" >< td class = "mdescLeft" >   </ td >< td class = "mdescRight" > Get IDs of all unused visual words. < br /></ td ></ tr >
< tr class = "separator:a64b0aee7f33cbd4df26e2d0c14329e9d" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:a117282f59ed918808d8116cd1f92f412" id = "r_a117282f59ed918808d8116cd1f92f412" >< td class = "memItemLeft" align = "right" valign = "top" > unsigned int  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "classrtabmap_1_1VWDictionary.html#a117282f59ed918808d8116cd1f92f412" > getUnusedWordsSize</ a > () const</ td ></ tr >
< tr class = "memdesc:a117282f59ed918808d8116cd1f92f412" >< td class = "mdescLeft" >   </ td >< td class = "mdescRight" > Get the count of unused visual words. < br /></ td ></ tr >
< tr class = "separator:a117282f59ed918808d8116cd1f92f412" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:a7a506e15bf83d16cc98aaa34057216f4" id = "r_a7a506e15bf83d16cc98aaa34057216f4" >< td class = "memItemLeft" align = "right" valign = "top" > void  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "classrtabmap_1_1VWDictionary.html#a7a506e15bf83d16cc98aaa34057216f4" > removeWords</ a > (const std::vector< < a class = "el" href = "classrtabmap_1_1VisualWord.html" > VisualWord</ a > * > & words)</ td ></ tr >
< tr class = "memdesc:a7a506e15bf83d16cc98aaa34057216f4" >< td class = "mdescLeft" >   </ td >< td class = "mdescRight" > Remove words from the dictionary. < br /></ td ></ tr >
< tr class = "separator:a7a506e15bf83d16cc98aaa34057216f4" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:a33c8904edf3d0af65dfd2a6d817416fa" id = "r_a33c8904edf3d0af65dfd2a6d817416fa" >< td class = "memItemLeft" align = "right" valign = "top" > void  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "classrtabmap_1_1VWDictionary.html#a33c8904edf3d0af65dfd2a6d817416fa" > deleteUnusedWords</ a > ()</ td ></ tr >
< tr class = "memdesc:a33c8904edf3d0af65dfd2a6d817416fa" >< td class = "mdescLeft" >   </ td >< td class = "mdescRight" > Delete all unused visual words. < br /></ td ></ tr >
< tr class = "separator:a33c8904edf3d0af65dfd2a6d817416fa" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
</ table >< table class = "memberdecls" >
< tr class = "heading" >< td colspan = "2" >< h2 class = "groupheader" >< a id = "pub-static-methods" name = "pub-static-methods" ></ a >
Static Public Member Functions</ h2 ></ td ></ tr >
< tr class = "memitem:a7092a6a6af93772ce89793c5e54a17cc" id = "r_a7092a6a6af93772ce89793c5e54a17cc" >< td class = "memItemLeft" align = "right" valign = "top" > static std::string  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "classrtabmap_1_1VWDictionary.html#a7092a6a6af93772ce89793c5e54a17cc" > nnStrategyName</ a > (< a class = "el" href = "classrtabmap_1_1VWDictionary.html#a9466840dd5ad3dc914543a97421c3655" > NNStrategy</ a > strategy)</ td ></ tr >
< tr class = "memdesc:a7092a6a6af93772ce89793c5e54a17cc" >< td class = "mdescLeft" >   </ td >< td class = "mdescRight" > Get the name of a nearest neighbor strategy. < br /></ td ></ tr >
< tr class = "separator:a7092a6a6af93772ce89793c5e54a17cc" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:a70aec2b9d1bf55d47192949aa728448e" id = "r_a70aec2b9d1bf55d47192949aa728448e" >< td class = "memItemLeft" align = "right" valign = "top" > static cv::Mat  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "classrtabmap_1_1VWDictionary.html#a70aec2b9d1bf55d47192949aa728448e" > convertBinTo32F</ a > (const cv::Mat & descriptorsIn, bool byteToFloat=true)</ td ></ tr >
< tr class = "memdesc:a70aec2b9d1bf55d47192949aa728448e" >< td class = "mdescLeft" >   </ td >< td class = "mdescRight" > Convert binary descriptors to 32-bit float format. < br /></ td ></ tr >
< tr class = "separator:a70aec2b9d1bf55d47192949aa728448e" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:acda9d98e4ad4897ce8a8b945f396221c" id = "r_acda9d98e4ad4897ce8a8b945f396221c" >< td class = "memItemLeft" align = "right" valign = "top" > static cv::Mat  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "classrtabmap_1_1VWDictionary.html#acda9d98e4ad4897ce8a8b945f396221c" > convert32FToBin</ a > (const cv::Mat & descriptorsIn, bool byteToFloat=true)</ td ></ tr >
< tr class = "memdesc:acda9d98e4ad4897ce8a8b945f396221c" >< td class = "mdescLeft" >   </ td >< td class = "mdescRight" > Convert 32-bit float descriptors to binary format. < br /></ td ></ tr >
< tr class = "separator:acda9d98e4ad4897ce8a8b945f396221c" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
</ table >< table class = "memberdecls" >
< tr class = "heading" >< td colspan = "2" >< h2 class = "groupheader" >< a id = "pub-static-attribs" name = "pub-static-attribs" ></ a >
Static Public Attributes</ h2 ></ td ></ tr >
< tr class = "memitem:a2dbfec55a8921f52b642bf0dceea0c37" id = "r_a2dbfec55a8921f52b642bf0dceea0c37" >< td class = "memItemLeft" align = "right" valign = "top" > static const int  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "classrtabmap_1_1VWDictionary.html#a2dbfec55a8921f52b642bf0dceea0c37" > ID_START</ a ></ td ></ tr >
< tr class = "memdesc:a2dbfec55a8921f52b642bf0dceea0c37" >< td class = "mdescLeft" >   </ td >< td class = "mdescRight" > Starting ID for visual words (typically 1) < br /></ td ></ tr >
< tr class = "separator:a2dbfec55a8921f52b642bf0dceea0c37" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:a83b1966a141848baeec5112c30bacf0f" id = "r_a83b1966a141848baeec5112c30bacf0f" >< td class = "memItemLeft" align = "right" valign = "top" > static const int  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "classrtabmap_1_1VWDictionary.html#a83b1966a141848baeec5112c30bacf0f" > ID_INVALID</ a ></ td ></ tr >
< tr class = "memdesc:a83b1966a141848baeec5112c30bacf0f" >< td class = "mdescLeft" >   </ td >< td class = "mdescRight" > Invalid visual word ID (typically 0) < br /></ td ></ tr >
< tr class = "separator:a83b1966a141848baeec5112c30bacf0f" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
</ table >< table class = "memberdecls" >
< tr class = "heading" >< td colspan = "2" >< h2 class = "groupheader" >< a id = "pro-methods" name = "pro-methods" ></ a >
Protected Member Functions</ h2 ></ td ></ tr >
< tr class = "memitem:a085d69ef577600000f397bd63abeaf69" id = "r_a085d69ef577600000f397bd63abeaf69" >< td class = "memItemLeft" align = "right" valign = "top" > int  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "classrtabmap_1_1VWDictionary.html#a085d69ef577600000f397bd63abeaf69" > getNextId</ a > ()</ td ></ tr >
< tr class = "memdesc:a085d69ef577600000f397bd63abeaf69" >< td class = "mdescLeft" >   </ td >< td class = "mdescRight" > Get the next available visual word ID. < br /></ td ></ tr >
< tr class = "separator:a085d69ef577600000f397bd63abeaf69" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
</ table >< table class = "memberdecls" >
< tr class = "heading" >< td colspan = "2" >< h2 class = "groupheader" >< a id = "pro-attribs" name = "pro-attribs" ></ a >
Protected Attributes</ h2 ></ td ></ tr >
< tr class = "memitem:adcb4739e09e27b20125880e9d3026383" id = "r_adcb4739e09e27b20125880e9d3026383" >< td class = "memItemLeft" align = "right" valign = "top" > std::map< int, < a class = "el" href = "classrtabmap_1_1VisualWord.html" > VisualWord</ a > * >  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "classrtabmap_1_1VWDictionary.html#adcb4739e09e27b20125880e9d3026383" > _visualWords</ a ></ td ></ tr >
< tr class = "memdesc:adcb4739e09e27b20125880e9d3026383" >< td class = "mdescLeft" >   </ td >< td class = "mdescRight" > Map of visual word ID to < a class = "el" href = "classrtabmap_1_1VisualWord.html" title = "Represents a visual word (feature descriptor) used in the bag-of-words (BoW) model." > VisualWord</ a > pointer. < br /></ td ></ tr >
< tr class = "separator:adcb4739e09e27b20125880e9d3026383" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:a5222c6a21307f0e4b9346c87db166b44" id = "r_a5222c6a21307f0e4b9346c87db166b44" >< td class = "memItemLeft" align = "right" valign = "top" > int  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "classrtabmap_1_1VWDictionary.html#a5222c6a21307f0e4b9346c87db166b44" > _totalActiveReferences</ a ></ td ></ tr >
< tr class = "memdesc:a5222c6a21307f0e4b9346c87db166b44" >< td class = "mdescLeft" >   </ td >< td class = "mdescRight" > Total count of active word-to-signature references. < br /></ td ></ tr >
< tr class = "separator:a5222c6a21307f0e4b9346c87db166b44" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
</ table >
< a name = "details" id = "details" ></ a >< h2 class = "groupheader" > Detailed Description</ h2 >
< div class = "textblock" >< p > Manages a dictionary of visual words for visual place recognition and loop closure detection. </ p >
< p > The < a class = "el" href = "classrtabmap_1_1VWDictionary.html" title = "Manages a dictionary of visual words for visual place recognition and loop closure detection." > VWDictionary</ a > class maintains a collection of visual words (feature descriptors) and provides efficient nearest neighbor search capabilities. It supports both incremental and fixed dictionary modes:</ p >< ul >
< li > Incremental mode: New visual words are added dynamically as new images are processed</ li >
< li > Fixed mode: A pre-computed dictionary is loaded from a file</ li >
</ ul >
< p > The class uses various nearest neighbor search strategies (FLANN, brute force, GPU-accelerated) to match descriptors efficiently. It tracks word references to signatures (images) and manages unused words for memory optimization.</ p >
< dl class = "section note" >< dt > Note</ dt >< dd > Visual words are identified by unique integer IDs starting from < a class = "el" href = "classrtabmap_1_1VWDictionary.html#a2dbfec55a8921f52b642bf0dceea0c37" title = "Starting ID for visual words (typically 1)" > VWDictionary::ID_START</ a > </ dd ></ dl >
< p class = "definition" > Definition at line < a class = "el" href = "VWDictionary_8h_source.html#l00065" > 65</ a > of file < a class = "el" href = "VWDictionary_8h_source.html" > VWDictionary.h</ a > .</ p >
</ div >< h2 class = "groupheader" > Member Enumeration Documentation</ h2 >
< a id = "a9466840dd5ad3dc914543a97421c3655" name = "a9466840dd5ad3dc914543a97421c3655" ></ a >
< h2 class = "memtitle" >< span class = "permalink" >< a href = "#a9466840dd5ad3dc914543a97421c3655" > ◆  </ a ></ span > NNStrategy</ h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > enum < a class = "el" href = "classrtabmap_1_1VWDictionary.html#a9466840dd5ad3dc914543a97421c3655" > rtabmap::VWDictionary::NNStrategy</ a ></ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > Nearest neighbor search strategies for descriptor matching. </ p >
2026-08-16 17:18:46 +00:00
< p > The values are those of the Kp/NNStrategy parameter, saved in user configurations and databases: append, never renumber. The Vis/CorNNType parameter has strategies of its own, its values are mapped to these ones by RegistrationVis::nnStrategyFromCorNNType(). </ p >
2026-08-06 22:56:24 +00:00
< table class = "fieldtable" >
< tr >< th colspan = "2" > Enumerator</ th ></ tr >< tr >< td class = "fieldname" >< a id = "a9466840dd5ad3dc914543a97421c3655ae4301e202dd36e997bf3298390c667f0" name = "a9466840dd5ad3dc914543a97421c3655ae4301e202dd36e997bf3298390c667f0" ></ a > kNNFlannNaive  </ td >< td class = "fielddoc" >< p > FLANN naive search (exhaustive) </ p >
</ td ></ tr >
< tr >< td class = "fieldname" >< a id = "a9466840dd5ad3dc914543a97421c3655aaa1ea80fc9ca8809ad9b959e2e1564c5" name = "a9466840dd5ad3dc914543a97421c3655aaa1ea80fc9ca8809ad9b959e2e1564c5" ></ a > kNNFlannKdTree  </ td >< td class = "fielddoc" >< p > FLANN kd-tree index (fast for high-dimensional descriptors) </ p >
</ td ></ tr >
< tr >< td class = "fieldname" >< a id = "a9466840dd5ad3dc914543a97421c3655a89ab72d0bccd61bb11abbd1edf1e6992" name = "a9466840dd5ad3dc914543a97421c3655a89ab72d0bccd61bb11abbd1edf1e6992" ></ a > kNNFlannLSH  </ td >< td class = "fielddoc" >< p > FLANN Locality-Sensitive Hashing (ideal for binary descriptors) </ p >
</ td ></ tr >
< tr >< td class = "fieldname" >< a id = "a9466840dd5ad3dc914543a97421c3655a1745dd334296b8a41cf0c88dcc8a7d5d" name = "a9466840dd5ad3dc914543a97421c3655a1745dd334296b8a41cf0c88dcc8a7d5d" ></ a > kNNBruteForce  </ td >< td class = "fielddoc" >< p > Brute force CPU search. </ p >
</ td ></ tr >
< tr >< td class = "fieldname" >< a id = "a9466840dd5ad3dc914543a97421c3655a602d99d5bdef453a39339a0b45979451" name = "a9466840dd5ad3dc914543a97421c3655a602d99d5bdef453a39339a0b45979451" ></ a > kNNBruteForceGPU  </ td >< td class = "fielddoc" >< p > Brute force GPU-accelerated search (requires CUDA) </ p >
</ td ></ tr >
2026-08-16 17:18:46 +00:00
< tr >< td class = "fieldname" >< a id = "a9466840dd5ad3dc914543a97421c3655a994442dbb17b48ba9a9315edee24a7a1" name = "a9466840dd5ad3dc914543a97421c3655a994442dbb17b48ba9a9315edee24a7a1" ></ a > kNNFlannKdTreeSingle  </ td >< td class = "fielddoc" >< p > FLANN single exact kd-tree index (rebuilt whenever a word is added, for an index built once) </ p >
</ td ></ tr >
< tr >< td class = "fieldname" >< a id = "a9466840dd5ad3dc914543a97421c3655a306c8d555b740267fa80a1ee673ef7c7" name = "a9466840dd5ad3dc914543a97421c3655a306c8d555b740267fa80a1ee673ef7c7" ></ a > kNNNanoFlannKdTree  </ td >< td class = "fielddoc" >< p > nanoflann kd-tree index (float descriptors only, incremental) </ p >
</ td ></ tr >
2026-08-06 22:56:24 +00:00
< tr >< td class = "fieldname" >< a id = "a9466840dd5ad3dc914543a97421c3655afeba67ed0aafc39aa35b2a194e147ff9" name = "a9466840dd5ad3dc914543a97421c3655afeba67ed0aafc39aa35b2a194e147ff9" ></ a > kNNUndef  </ td >< td class = "fielddoc" >< p > Undefined strategy. </ p >
</ td ></ tr >
</ table >
2026-08-16 17:18:46 +00:00
< p class = "definition" > Definition at line < a class = "el" href = "VWDictionary_8h_source.html#l00077" > 77</ a > of file < a class = "el" href = "VWDictionary_8h_source.html" > VWDictionary.h</ a > .</ p >
2026-08-06 22:56:24 +00:00
</ div >
</ div >
< h2 class = "groupheader" > Constructor & Destructor Documentation</ h2 >
< a id = "ada3980b520d8411a1ebb3ce14e2f8734" name = "ada3980b520d8411a1ebb3ce14e2f8734" ></ a >
< h2 class = "memtitle" >< span class = "permalink" >< a href = "#ada3980b520d8411a1ebb3ce14e2f8734" > ◆  </ a ></ span > VWDictionary()</ h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > rtabmap::VWDictionary::VWDictionary </ td >
< td > (</ td >
< td class = "paramtype" > const < a class = "el" href = "namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55" > ParametersMap</ a > &  </ td >
< td class = "paramname" >< em > parameters</ em > = < code >< a class = "el" href = "namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55" > ParametersMap</ a > ()</ code ></ td >< td > )</ td >
< td ></ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > Constructor. </ p >
< dl class = "params" >< dt > Parameters</ dt >< dd >
< table class = "params" >
< tr >< td class = "paramname" > parameters</ td >< td > Optional parameters map to configure the dictionary </ td ></ tr >
</ table >
</ dd >
</ dl >
</ div >
</ div >
< a id = "af7f669f103368e30e31a028efbcac89d" name = "af7f669f103368e30e31a028efbcac89d" ></ a >
< h2 class = "memtitle" >< span class = "permalink" >< a href = "#af7f669f103368e30e31a028efbcac89d" > ◆  </ a ></ span > ~VWDictionary()</ h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "mlabels" >
< tr >
< td class = "mlabels-left" >
< table class = "memname" >
< tr >
< td class = "memname" > virtual rtabmap::VWDictionary::~VWDictionary </ td >
< td > (</ td >
< td class = "paramname" ></ td >< td > )</ td >
< td ></ td >
</ tr >
</ table >
</ td >
< td class = "mlabels-right" >
< span class = "mlabels" >< span class = "mlabel" > virtual</ span ></ span > </ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > Destructor. </ p >
< p > Clears all visual words and releases resources. </ p >
</ div >
</ div >
< h2 class = "groupheader" > Member Function Documentation</ h2 >
< a id = "a7092a6a6af93772ce89793c5e54a17cc" name = "a7092a6a6af93772ce89793c5e54a17cc" ></ a >
< h2 class = "memtitle" >< span class = "permalink" >< a href = "#a7092a6a6af93772ce89793c5e54a17cc" > ◆  </ a ></ span > nnStrategyName()</ h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "mlabels" >
< tr >
< td class = "mlabels-left" >
< table class = "memname" >
< tr >
< td class = "memname" > static std::string rtabmap::VWDictionary::nnStrategyName </ td >
< td > (</ td >
< td class = "paramtype" >< a class = "el" href = "classrtabmap_1_1VWDictionary.html#a9466840dd5ad3dc914543a97421c3655" > NNStrategy</ a >   </ td >
< td class = "paramname" >< em > strategy</ em ></ td >< td > )</ td >
< td ></ td >
</ tr >
</ table >
</ td >
< td class = "mlabels-right" >
< span class = "mlabels" >< span class = "mlabel" > inline</ span >< span class = "mlabel" > static</ span ></ span > </ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > Get the name of a nearest neighbor strategy. </ p >
< dl class = "params" >< dt > Parameters</ dt >< dd >
< table class = "params" >
< tr >< td class = "paramname" > strategy</ td >< td > The strategy enum value </ td ></ tr >
</ table >
</ dd >
</ dl >
< dl class = "section return" >< dt > Returns</ dt >< dd > String representation of the strategy name </ dd ></ dl >
2026-08-16 17:18:46 +00:00
< p class = "definition" > Definition at line < a class = "el" href = "VWDictionary_8h_source.html#l00103" > 103</ a > of file < a class = "el" href = "VWDictionary_8h_source.html" > VWDictionary.h</ a > .</ p >
2026-08-06 22:56:24 +00:00
</ div >
</ div >
< a id = "a89893faef6c96e3b19bfeab86094af81" name = "a89893faef6c96e3b19bfeab86094af81" ></ a >
< h2 class = "memtitle" >< span class = "permalink" >< a href = "#a89893faef6c96e3b19bfeab86094af81" > ◆  </ a ></ span > parseParameters()</ h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "mlabels" >
< tr >
< td class = "mlabels-left" >
< table class = "memname" >
< tr >
< td class = "memname" > virtual void rtabmap::VWDictionary::parseParameters </ td >
< td > (</ td >
< td class = "paramtype" > const < a class = "el" href = "namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55" > ParametersMap</ a > &  </ td >
< td class = "paramname" >< em > parameters</ em ></ td >< td > )</ td >
< td ></ td >
</ tr >
</ table >
</ td >
< td class = "mlabels-right" >
< span class = "mlabels" >< span class = "mlabel" > virtual</ span ></ span > </ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > Parse and apply parameters from a parameters map. </ p >
< dl class = "params" >< dt > Parameters</ dt >< dd >
< table class = "params" >
< tr >< td class = "paramname" > parameters</ td >< td >< a class = "el" href = "classrtabmap_1_1Parameters.html" > Parameters</ a > map containing configuration values </ td ></ tr >
</ table >
</ dd >
</ dl >
</ div >
</ div >
< a id = "a844ae27eb6d1f0674c8f7777451812c5" name = "a844ae27eb6d1f0674c8f7777451812c5" ></ a >
< h2 class = "memtitle" >< span class = "permalink" >< a href = "#a844ae27eb6d1f0674c8f7777451812c5" > ◆  </ a ></ span > update()</ h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "mlabels" >
< tr >
< td class = "mlabels-left" >
< table class = "memname" >
< tr >
< td class = "memname" > virtual void rtabmap::VWDictionary::update </ td >
< td > (</ td >
< td class = "paramname" ></ td >< td > )</ td >
< td ></ td >
</ tr >
</ table >
</ td >
< td class = "mlabels-right" >
< span class = "mlabels" >< span class = "mlabel" > virtual</ span ></ span > </ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > Update the search index with newly added words. </ p >
< p > This method rebuilds the nearest neighbor search index (FLANN, etc.) to include any words that were added but not yet indexed. </ p >
</ div >
</ div >
< a id = "a2998a6b11e102a2253ac592acf076841" name = "a2998a6b11e102a2253ac592acf076841" ></ a >
< h2 class = "memtitle" >< span class = "permalink" >< a href = "#a2998a6b11e102a2253ac592acf076841" > ◆  </ a ></ span > addNewWords()</ h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "mlabels" >
< tr >
< td class = "mlabels-left" >
< table class = "memname" >
< tr >
< td class = "memname" > virtual std::list< int > rtabmap::VWDictionary::addNewWords </ td >
< td > (</ td >
< td class = "paramtype" > const cv::Mat &  </ td >
< td class = "paramname" >< em > descriptors</ em > , </ td >
</ tr >
< tr >
< td class = "paramkey" ></ td >
< td ></ td >
< td class = "paramtype" > int  </ td >
< td class = "paramname" >< em > signatureId</ em >   </ td >
</ tr >
< tr >
< td ></ td >
< td > )</ td >
< td ></ td >< td ></ td >
</ tr >
</ table >
</ td >
< td class = "mlabels-right" >
< span class = "mlabels" >< span class = "mlabel" > virtual</ span ></ span > </ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > Add new visual words from descriptors. </ p >
< dl class = "params" >< dt > Parameters</ dt >< dd >
< table class = "params" >
< tr >< td class = "paramname" > descriptors</ td >< td > Matrix of descriptors (one row per descriptor) </ td ></ tr >
< tr >< td class = "paramname" > signatureId</ td >< td > ID of the signature (image) these descriptors belong to </ td ></ tr >
</ table >
</ dd >
</ dl >
< dl class = "section return" >< dt > Returns</ dt >< dd > List of visual word IDs that were added or matched</ dd ></ dl >
< p > For each descriptor, either matches it to an existing visual word (using nearest neighbor search with NNDR ratio) or creates a new visual word.</ p >
< dl class = "section note" >< dt > Note</ dt >< dd > If the dictionary is not incremental (fixed), NNDR is not applied and the closest existing visual word ID is always returned. If the dictionary is incremental, a new visual word is created if NNDR validation passes; otherwise, a reference to an existing visual word is added. </ dd ></ dl >
</ div >
</ div >
< a id = "ad464ad961b0e4d4cd6dd7895e9ff3d59" name = "ad464ad961b0e4d4cd6dd7895e9ff3d59" ></ a >
< h2 class = "memtitle" >< span class = "permalink" >< a href = "#ad464ad961b0e4d4cd6dd7895e9ff3d59" > ◆  </ a ></ span > addWord()</ h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "mlabels" >
< tr >
< td class = "mlabels-left" >
< table class = "memname" >
< tr >
< td class = "memname" > virtual void rtabmap::VWDictionary::addWord </ td >
< td > (</ td >
< td class = "paramtype" >< a class = "el" href = "classrtabmap_1_1VisualWord.html" > VisualWord</ a > *  </ td >
< td class = "paramname" >< em > vw</ em ></ td >< td > )</ td >
< td ></ td >
</ tr >
</ table >
</ td >
< td class = "mlabels-right" >
< span class = "mlabels" >< span class = "mlabel" > virtual</ span ></ span > </ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > Add an existing visual word to the dictionary. </ p >
< dl class = "params" >< dt > Parameters</ dt >< dd >
< table class = "params" >
< tr >< td class = "paramname" > vw</ td >< td > Pointer to the visual word to add (ownership is transferred)</ td ></ tr >
</ table >
</ dd >
</ dl >
< dl class = "section note" >< dt > Note</ dt >< dd > The dictionary takes ownership of the < a class = "el" href = "classrtabmap_1_1VisualWord.html" title = "Represents a visual word (feature descriptor) used in the bag-of-words (BoW) model." > VisualWord</ a > object </ dd ></ dl >
</ div >
</ div >
< a id = "ac2f21a98b70e91ab2e8a07151c508d1c" name = "ac2f21a98b70e91ab2e8a07151c508d1c" ></ a >
< h2 class = "memtitle" >< span class = "permalink" >< a href = "#ac2f21a98b70e91ab2e8a07151c508d1c" > ◆  </ a ></ span > findNN() < span class = "overload" > [1/2]</ span ></ h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > std::vector< int > rtabmap::VWDictionary::findNN </ td >
< td > (</ td >
< td class = "paramtype" > const std::list< < a class = "el" href = "classrtabmap_1_1VisualWord.html" > VisualWord</ a > * > &  </ td >
< td class = "paramname" >< em > vws</ em ></ td >< td > )</ td >
< td > const</ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > Find nearest neighbor visual word IDs for a list of visual words. </ p >
< dl class = "params" >< dt > Parameters</ dt >< dd >
< table class = "params" >
< tr >< td class = "paramname" > vws</ td >< td > List of visual words to match </ td ></ tr >
</ table >
</ dd >
</ dl >
< dl class = "section return" >< dt > Returns</ dt >< dd > Vector of visual word IDs (one per input visual word)</ dd ></ dl >
< dl class = "section note" >< dt > Note</ dt >< dd > If the dictionary is not incremental (fixed), NNDR is not applied and the closest visual word ID is always returned. If the dictionary is incremental, a valid visual word ID is returned only if NNDR validation passes. </ dd ></ dl >
</ div >
</ div >
< a id = "aada11cf01b586ac8205f8bff0b1ab295" name = "aada11cf01b586ac8205f8bff0b1ab295" ></ a >
< h2 class = "memtitle" >< span class = "permalink" >< a href = "#aada11cf01b586ac8205f8bff0b1ab295" > ◆  </ a ></ span > findNN() < span class = "overload" > [2/2]</ span ></ h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > std::vector< int > rtabmap::VWDictionary::findNN </ td >
< td > (</ td >
< td class = "paramtype" > const cv::Mat &  </ td >
< td class = "paramname" >< em > descriptors</ em ></ td >< td > )</ td >
< td > const</ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > Find nearest neighbor visual word IDs for descriptors. </ p >
< dl class = "params" >< dt > Parameters</ dt >< dd >
< table class = "params" >
< tr >< td class = "paramname" > descriptors</ td >< td > Matrix of descriptors (one row per descriptor) </ td ></ tr >
</ table >
</ dd >
</ dl >
< dl class = "section return" >< dt > Returns</ dt >< dd > Vector of visual word IDs (one per descriptor)</ dd ></ dl >
< dl class = "section note" >< dt > Note</ dt >< dd > If the dictionary is not incremental (fixed), NNDR is not applied and the closest visual word ID is always returned. If the dictionary is incremental, a valid visual word ID is returned only if NNDR validation passes. </ dd ></ dl >
</ div >
</ div >
< a id = "aea2f0d043d043df37258dc225c62edec" name = "aea2f0d043d043df37258dc225c62edec" ></ a >
< h2 class = "memtitle" >< span class = "permalink" >< a href = "#aea2f0d043d043df37258dc225c62edec" > ◆  </ a ></ span > addWordRef()</ h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > bool rtabmap::VWDictionary::addWordRef </ td >
< td > (</ td >
< td class = "paramtype" > int  </ td >
< td class = "paramname" >< em > wordId</ em > , </ td >
</ tr >
< tr >
< td class = "paramkey" ></ td >
< td ></ td >
< td class = "paramtype" > int  </ td >
< td class = "paramname" >< em > signatureId</ em >   </ td >
</ tr >
< tr >
< td ></ td >
< td > )</ td >
< td ></ td >< td ></ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > Add a reference from a visual word to a signature. </ p >
< dl class = "params" >< dt > Parameters</ dt >< dd >
< table class = "params" >
< tr >< td class = "paramname" > wordId</ td >< td > ID of the visual word </ td ></ tr >
< tr >< td class = "paramname" > signatureId</ td >< td > ID of the signature (image) </ td ></ tr >
</ table >
</ dd >
</ dl >
< dl class = "section return" >< dt > Returns</ dt >< dd > true if the word exists in the dictionary and the reference has been added, false otherwise</ dd ></ dl >
< p > Tracks which signatures use which visual words. If the word was unused, it is removed from the unused words list. </ p >
</ div >
</ div >
< a id = "ac4a70358ca2db8e63c67a30383a1d34b" name = "ac4a70358ca2db8e63c67a30383a1d34b" ></ a >
< h2 class = "memtitle" >< span class = "permalink" >< a href = "#ac4a70358ca2db8e63c67a30383a1d34b" > ◆  </ a ></ span > removeAllWordRef()</ h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > void rtabmap::VWDictionary::removeAllWordRef </ td >
< td > (</ td >
< td class = "paramtype" > int  </ td >
< td class = "paramname" >< em > wordId</ em > , </ td >
</ tr >
< tr >
< td class = "paramkey" ></ td >
< td ></ td >
< td class = "paramtype" > int  </ td >
< td class = "paramname" >< em > signatureId</ em >   </ td >
</ tr >
< tr >
< td ></ td >
< td > )</ td >
< td ></ td >< td ></ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > Remove all references from a visual word to a signature. </ p >
< dl class = "params" >< dt > Parameters</ dt >< dd >
< table class = "params" >
< tr >< td class = "paramname" > wordId</ td >< td > ID of the visual word </ td ></ tr >
< tr >< td class = "paramname" > signatureId</ td >< td > ID of the signature (image)</ td ></ tr >
</ table >
</ dd >
</ dl >
< p > If the word has no more references after this operation, it is added to the unused words list. </ p >
</ div >
</ div >
< a id = "a5cf9981cf11f8f93280b7d0c195159e1" name = "a5cf9981cf11f8f93280b7d0c195159e1" ></ a >
< h2 class = "memtitle" >< span class = "permalink" >< a href = "#a5cf9981cf11f8f93280b7d0c195159e1" > ◆  </ a ></ span > getWord()</ h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > const < a class = "el" href = "classrtabmap_1_1VisualWord.html" > VisualWord</ a > * rtabmap::VWDictionary::getWord </ td >
< td > (</ td >
< td class = "paramtype" > int  </ td >
< td class = "paramname" >< em > id</ em ></ td >< td > )</ td >
< td > const</ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > Get a visual word by ID. </ p >
< dl class = "params" >< dt > Parameters</ dt >< dd >
< table class = "params" >
< tr >< td class = "paramname" > id</ td >< td > Visual word ID </ td ></ tr >
</ table >
</ dd >
</ dl >
< dl class = "section return" >< dt > Returns</ dt >< dd > Pointer to the visual word, or nullptr if not found </ dd ></ dl >
</ div >
</ div >
< a id = "abbd007a028847ecbbdd50e3480ba95e3" name = "abbd007a028847ecbbdd50e3480ba95e3" ></ a >
< h2 class = "memtitle" >< span class = "permalink" >< a href = "#abbd007a028847ecbbdd50e3480ba95e3" > ◆  </ a ></ span > getUnusedWord()</ h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" >< a class = "el" href = "classrtabmap_1_1VisualWord.html" > VisualWord</ a > * rtabmap::VWDictionary::getUnusedWord </ td >
< td > (</ td >
< td class = "paramtype" > int  </ td >
< td class = "paramname" >< em > id</ em ></ td >< td > )</ td >
< td > const</ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > Get an unused visual word by ID. </ p >
< dl class = "params" >< dt > Parameters</ dt >< dd >
< table class = "params" >
< tr >< td class = "paramname" > id</ td >< td > Visual word ID </ td ></ tr >
</ table >
</ dd >
</ dl >
< dl class = "section return" >< dt > Returns</ dt >< dd > Pointer to the unused visual word, or nullptr if not found or not unused</ dd ></ dl >
< dl class = "section note" >< dt > Note</ dt >< dd > Ownership of the returned visual word still belongs to the dictionary. To transfer ownership to the caller, < a class = "el" href = "classrtabmap_1_1VWDictionary.html#a7a506e15bf83d16cc98aaa34057216f4" title = "Remove words from the dictionary." > removeWords()</ a > must be called on this word. </ dd ></ dl >
</ div >
</ div >
< a id = "af0b676e13c7dba437147520335289e97" name = "af0b676e13c7dba437147520335289e97" ></ a >
< h2 class = "memtitle" >< span class = "permalink" >< a href = "#af0b676e13c7dba437147520335289e97" > ◆  </ a ></ span > setLastWordId()</ h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "mlabels" >
< tr >
< td class = "mlabels-left" >
< table class = "memname" >
< tr >
< td class = "memname" > void rtabmap::VWDictionary::setLastWordId </ td >
< td > (</ td >
< td class = "paramtype" > int  </ td >
< td class = "paramname" >< em > id</ em ></ td >< td > )</ td >
< td ></ td >
</ tr >
</ table >
</ td >
< td class = "mlabels-right" >
< span class = "mlabels" >< span class = "mlabel" > inline</ span ></ span > </ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > Set the last word ID (used when loading from database) </ p >
< dl class = "params" >< dt > Parameters</ dt >< dd >
< table class = "params" >
< tr >< td class = "paramname" > id</ td >< td > Last word ID </ td ></ tr >
</ table >
</ dd >
</ dl >
2026-08-16 17:18:46 +00:00
< p class = "definition" > Definition at line < a class = "el" href = "VWDictionary_8h_source.html#l00245" > 245</ a > of file < a class = "el" href = "VWDictionary_8h_source.html" > VWDictionary.h</ a > .</ p >
2026-08-06 22:56:24 +00:00
</ div >
</ div >
< a id = "a6bcad4c04999469001b5ac03b8a61ab4" name = "a6bcad4c04999469001b5ac03b8a61ab4" ></ a >
< h2 class = "memtitle" >< span class = "permalink" >< a href = "#a6bcad4c04999469001b5ac03b8a61ab4" > ◆  </ a ></ span > getVisualWords()</ h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "mlabels" >
< tr >
< td class = "mlabels-left" >
< table class = "memname" >
< tr >
< td class = "memname" > const std::map< int, < a class = "el" href = "classrtabmap_1_1VisualWord.html" > VisualWord</ a > * > & rtabmap::VWDictionary::getVisualWords </ td >
< td > (</ td >
< td class = "paramname" ></ td >< td > )</ td >
< td > const</ td >
</ tr >
</ table >
</ td >
< td class = "mlabels-right" >
< span class = "mlabels" >< span class = "mlabel" > inline</ span ></ span > </ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > Get all visual words. </ p >
< dl class = "section return" >< dt > Returns</ dt >< dd > Map of visual word ID to < a class = "el" href = "classrtabmap_1_1VisualWord.html" title = "Represents a visual word (feature descriptor) used in the bag-of-words (BoW) model." > VisualWord</ a > pointer </ dd ></ dl >
2026-08-16 17:18:46 +00:00
< p class = "definition" > Definition at line < a class = "el" href = "VWDictionary_8h_source.html#l00251" > 251</ a > of file < a class = "el" href = "VWDictionary_8h_source.html" > VWDictionary.h</ a > .</ p >
2026-08-06 22:56:24 +00:00
</ div >
</ div >
< a id = "a454639bff3d95b2f9dd346413981d5c5" name = "a454639bff3d95b2f9dd346413981d5c5" ></ a >
< h2 class = "memtitle" >< span class = "permalink" >< a href = "#a454639bff3d95b2f9dd346413981d5c5" > ◆  </ a ></ span > getNndrRatio()</ h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "mlabels" >
< tr >
< td class = "mlabels-left" >
< table class = "memname" >
< tr >
< td class = "memname" > float rtabmap::VWDictionary::getNndrRatio </ td >
< td > (</ td >
< td class = "paramname" ></ td >< td > )</ td >
< td > const</ td >
</ tr >
</ table >
</ td >
< td class = "mlabels-right" >
< span class = "mlabels" >< span class = "mlabel" > inline</ span ></ span > </ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > Get the Nearest Neighbor Distance Ratio (NNDR) threshold. </ p >
< dl class = "section return" >< dt > Returns</ dt >< dd > NNDR ratio value</ dd ></ dl >
< p > The NNDR ratio is used to determine if a descriptor matches an existing visual word. If the ratio of distances to the first and second nearest neighbors is below this threshold, a match is accepted.</ p >
< dl class = "section note" >< dt > Note</ dt >< dd > The NNDR method was introduced in "Distinctive Image Features
from Scale-Invariant Keypoints" by David Lowe (IJCV 2004). </ dd ></ dl >
2026-08-16 17:18:46 +00:00
< p class = "definition" > Definition at line < a class = "el" href = "VWDictionary_8h_source.html#l00264" > 264</ a > of file < a class = "el" href = "VWDictionary_8h_source.html" > VWDictionary.h</ a > .</ p >
2026-08-06 22:56:24 +00:00
</ div >
</ div >
< a id = "a293c09f00caf84bb991d73983a5f22c8" name = "a293c09f00caf84bb991d73983a5f22c8" ></ a >
< h2 class = "memtitle" >< span class = "permalink" >< a href = "#a293c09f00caf84bb991d73983a5f22c8" > ◆  </ a ></ span > getNotIndexedWordsCount()</ h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "mlabels" >
< tr >
< td class = "mlabels-left" >
< table class = "memname" >
< tr >
< td class = "memname" > unsigned int rtabmap::VWDictionary::getNotIndexedWordsCount </ td >
< td > (</ td >
< td class = "paramname" ></ td >< td > )</ td >
< td > const</ td >
</ tr >
</ table >
</ td >
< td class = "mlabels-right" >
< span class = "mlabels" >< span class = "mlabel" > inline</ span ></ span > </ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > Get the count of words not yet indexed in the search tree. </ p >
< dl class = "section return" >< dt > Returns</ dt >< dd > Number of words waiting to be indexed </ dd ></ dl >
2026-08-16 17:18:46 +00:00
< p class = "definition" > Definition at line < a class = "el" href = "VWDictionary_8h_source.html#l00270" > 270</ a > of file < a class = "el" href = "VWDictionary_8h_source.html" > VWDictionary.h</ a > .</ p >
2026-08-06 22:56:24 +00:00
</ div >
</ div >
< a id = "a65a99ae457b1c779233de57d190ca8da" name = "a65a99ae457b1c779233de57d190ca8da" ></ a >
< h2 class = "memtitle" >< span class = "permalink" >< a href = "#a65a99ae457b1c779233de57d190ca8da" > ◆  </ a ></ span > getLastIndexedWordId()</ h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > int rtabmap::VWDictionary::getLastIndexedWordId </ td >
< td > (</ td >
< td class = "paramname" ></ td >< td > )</ td >
< td > const</ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > Get the ID of the last indexed word. </ p >
< dl class = "section return" >< dt > Returns</ dt >< dd > Last indexed word ID, or 0 if no words are indexed </ dd ></ dl >
</ div >
</ div >
< a id = "a98447a880fdcf91709f00d00cfd4e54d" name = "a98447a880fdcf91709f00d00cfd4e54d" ></ a >
< h2 class = "memtitle" >< span class = "permalink" >< a href = "#a98447a880fdcf91709f00d00cfd4e54d" > ◆  </ a ></ span > getTotalActiveReferences()</ h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "mlabels" >
< tr >
< td class = "mlabels-left" >
< table class = "memname" >
< tr >
< td class = "memname" > int rtabmap::VWDictionary::getTotalActiveReferences </ td >
< td > (</ td >
< td class = "paramname" ></ td >< td > )</ td >
< td > const</ td >
</ tr >
</ table >
</ td >
< td class = "mlabels-right" >
< span class = "mlabels" >< span class = "mlabel" > inline</ span ></ span > </ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > Get the total number of active word-to-signature references. </ p >
< dl class = "section return" >< dt > Returns</ dt >< dd > Total count of active references </ dd ></ dl >
2026-08-16 17:18:46 +00:00
< p class = "definition" > Definition at line < a class = "el" href = "VWDictionary_8h_source.html#l00282" > 282</ a > of file < a class = "el" href = "VWDictionary_8h_source.html" > VWDictionary.h</ a > .</ p >
2026-08-06 22:56:24 +00:00
</ div >
</ div >
< a id = "a6a0610e87964c3881dc70cae6cd9123c" name = "a6a0610e87964c3881dc70cae6cd9123c" ></ a >
< h2 class = "memtitle" >< span class = "permalink" >< a href = "#a6a0610e87964c3881dc70cae6cd9123c" > ◆  </ a ></ span > getIndexedWordsCount()</ h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > unsigned int rtabmap::VWDictionary::getIndexedWordsCount </ td >
< td > (</ td >
< td class = "paramname" ></ td >< td > )</ td >
< td > const</ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > Get the count of words currently indexed in the search tree. </ p >
< dl class = "section return" >< dt > Returns</ dt >< dd > Number of indexed words </ dd ></ dl >
</ div >
</ div >
< a id = "a63ec6a9b915eb939c2650e623feb0576" name = "a63ec6a9b915eb939c2650e623feb0576" ></ a >
< h2 class = "memtitle" >< span class = "permalink" >< a href = "#a63ec6a9b915eb939c2650e623feb0576" > ◆  </ a ></ span > getIndexMemoryUsed()</ h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > unsigned int rtabmap::VWDictionary::getIndexMemoryUsed </ td >
< td > (</ td >
< td class = "paramname" ></ td >< td > )</ td >
< td > const</ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > Get the memory used by the search index. </ p >
< dl class = "section return" >< dt > Returns</ dt >< dd >< a class = "el" href = "classrtabmap_1_1Memory.html" title = "Three-tiered memory management (STM, WM, LTM) for RTAB-Map." > Memory</ a > usage in kilobytes </ dd ></ dl >
</ div >
</ div >
< a id = "ac5177a75f402538b50ec6c36bdbc7307" name = "ac5177a75f402538b50ec6c36bdbc7307" ></ a >
< h2 class = "memtitle" >< span class = "permalink" >< a href = "#ac5177a75f402538b50ec6c36bdbc7307" > ◆  </ a ></ span > getMemoryUsed()</ h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > unsigned long rtabmap::VWDictionary::getMemoryUsed </ td >
< td > (</ td >
< td class = "paramname" ></ td >< td > )</ td >
< td > const</ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > Get the total memory used by the dictionary. </ p >
< dl class = "section return" >< dt > Returns</ dt >< dd >< a class = "el" href = "classrtabmap_1_1Memory.html" title = "Three-tiered memory management (STM, WM, LTM) for RTAB-Map." > Memory</ a > usage in bytes </ dd ></ dl >
</ div >
</ div >
< a id = "af60e271facb40ff668c4bc24cff1b9cc" name = "af60e271facb40ff668c4bc24cff1b9cc" ></ a >
< h2 class = "memtitle" >< span class = "permalink" >< a href = "#af60e271facb40ff668c4bc24cff1b9cc" > ◆  </ a ></ span > setNNStrategy()</ h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > bool rtabmap::VWDictionary::setNNStrategy </ td >
< td > (</ td >
< td class = "paramtype" >< a class = "el" href = "classrtabmap_1_1VWDictionary.html#a9466840dd5ad3dc914543a97421c3655" > NNStrategy</ a >   </ td >
< td class = "paramname" >< em > strategy</ em ></ td >< td > )</ td >
< td ></ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > Set the nearest neighbor search strategy. </ p >
< dl class = "params" >< dt > Parameters</ dt >< dd >
< table class = "params" >
< tr >< td class = "paramname" > strategy</ td >< td > The strategy to use </ td ></ tr >
</ table >
</ dd >
</ dl >
< dl class = "section return" >< dt > Returns</ dt >< dd > true if the search tree was re-initialized (strategy changed), false otherwise</ dd ></ dl >
< p > Changing the strategy will rebuild the search index if words are already indexed. </ p >
</ div >
</ div >
< a id = "ab1ec0db96328164864953f25d463bcbb" name = "ab1ec0db96328164864953f25d463bcbb" ></ a >
< h2 class = "memtitle" >< span class = "permalink" >< a href = "#ab1ec0db96328164864953f25d463bcbb" > ◆  </ a ></ span > getNNStrategy()</ h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "mlabels" >
< tr >
< td class = "mlabels-left" >
< table class = "memname" >
< tr >
< td class = "memname" >< a class = "el" href = "classrtabmap_1_1VWDictionary.html#a9466840dd5ad3dc914543a97421c3655" > NNStrategy</ a > rtabmap::VWDictionary::getNNStrategy </ td >
< td > (</ td >
< td class = "paramname" ></ td >< td > )</ td >
< td > const</ td >
</ tr >
</ table >
</ td >
< td class = "mlabels-right" >
< span class = "mlabels" >< span class = "mlabel" > inline</ span ></ span > </ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > Get the current nearest neighbor search strategy. </ p >
< dl class = "section return" >< dt > Returns</ dt >< dd > The current NNStrategy </ dd ></ dl >
2026-08-16 17:18:46 +00:00
< p class = "definition" > Definition at line < a class = "el" href = "VWDictionary_8h_source.html#l00315" > 315</ a > of file < a class = "el" href = "VWDictionary_8h_source.html" > VWDictionary.h</ a > .</ p >
2026-08-06 22:56:24 +00:00
</ div >
</ div >
< a id = "a706e209f6228c02730dd8ea501ab5369" name = "a706e209f6228c02730dd8ea501ab5369" ></ a >
< h2 class = "memtitle" >< span class = "permalink" >< a href = "#a706e209f6228c02730dd8ea501ab5369" > ◆  </ a ></ span > isIncremental()</ h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "mlabels" >
< tr >
< td class = "mlabels-left" >
< table class = "memname" >
< tr >
< td class = "memname" > bool rtabmap::VWDictionary::isIncremental </ td >
< td > (</ td >
< td class = "paramname" ></ td >< td > )</ td >
< td > const</ td >
</ tr >
</ table >
</ td >
< td class = "mlabels-right" >
< span class = "mlabels" >< span class = "mlabel" > inline</ span ></ span > </ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > Check if the dictionary is in incremental mode. </ p >
< dl class = "section return" >< dt > Returns</ dt >< dd > true if incremental, false if fixed </ dd ></ dl >
2026-08-16 17:18:46 +00:00
< p class = "definition" > Definition at line < a class = "el" href = "VWDictionary_8h_source.html#l00321" > 321</ a > of file < a class = "el" href = "VWDictionary_8h_source.html" > VWDictionary.h</ a > .</ p >
2026-08-06 22:56:24 +00:00
</ div >
</ div >
< a id = "a9f016aa45f3b3d5618d104fb799ca998" name = "a9f016aa45f3b3d5618d104fb799ca998" ></ a >
< h2 class = "memtitle" >< span class = "permalink" >< a href = "#a9f016aa45f3b3d5618d104fb799ca998" > ◆  </ a ></ span > isIncrementalFlann()</ h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "mlabels" >
< tr >
< td class = "mlabels-left" >
< table class = "memname" >
< tr >
< td class = "memname" > bool rtabmap::VWDictionary::isIncrementalFlann </ td >
< td > (</ td >
< td class = "paramname" ></ td >< td > )</ td >
< td > const</ td >
</ tr >
</ table >
</ td >
< td class = "mlabels-right" >
< span class = "mlabels" >< span class = "mlabel" > inline</ span ></ span > </ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > Check if FLANN index is updated incrementally. </ p >
< dl class = "section return" >< dt > Returns</ dt >< dd > true if incremental FLANN updates are enabled </ dd ></ dl >
2026-08-16 17:18:46 +00:00
< p class = "definition" > Definition at line < a class = "el" href = "VWDictionary_8h_source.html#l00327" > 327</ a > of file < a class = "el" href = "VWDictionary_8h_source.html" > VWDictionary.h</ a > .</ p >
2026-08-06 22:56:24 +00:00
</ div >
</ div >
< a id = "ab14ef6e8fb979dce23f9a40a1faf8dff" name = "ab14ef6e8fb979dce23f9a40a1faf8dff" ></ a >
< h2 class = "memtitle" >< span class = "permalink" >< a href = "#ab14ef6e8fb979dce23f9a40a1faf8dff" > ◆  </ a ></ span > setIncrementalDictionary()</ h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > void rtabmap::VWDictionary::setIncrementalDictionary </ td >
< td > (</ td >
< td class = "paramname" ></ td >< td > )</ td >
< td ></ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > Set the dictionary to incremental mode. </ p >
< p > In incremental mode, new visual words can be added dynamically. This cannot be called if a fixed dictionary is already loaded. </ p >
</ div >
</ div >
< a id = "a5f3712744b9f7beb5da186a842f7d74a" name = "a5f3712744b9f7beb5da186a842f7d74a" ></ a >
< h2 class = "memtitle" >< span class = "permalink" >< a href = "#a5f3712744b9f7beb5da186a842f7d74a" > ◆  </ a ></ span > setFixedDictionary()</ h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > void rtabmap::VWDictionary::setFixedDictionary </ td >
< td > (</ td >
< td class = "paramtype" > const std::string &  </ td >
< td class = "paramname" >< em > dictionaryPath</ em ></ td >< td > )</ td >
< td ></ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > Set the dictionary to fixed mode and load from file. </ p >
< dl class = "params" >< dt > Parameters</ dt >< dd >
< table class = "params" >
< tr >< td class = "paramname" > dictionaryPath</ td >< td > Path to the dictionary file (.txt or .db format)</ td ></ tr >
</ table >
</ dd >
</ dl >
< p > Loads a pre-computed dictionary from a file. The dictionary file format in txt format should be: one line per visual word, with word ID followed by descriptor values. This cannot be called if words are already in the dictionary. </ p >
</ div >
</ div >
< a id = "aa0bcdf4002305d36bb072c019d475f13" name = "aa0bcdf4002305d36bb072c019d475f13" ></ a >
< h2 class = "memtitle" >< span class = "permalink" >< a href = "#aa0bcdf4002305d36bb072c019d475f13" > ◆  </ a ></ span > isModified()</ h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > bool rtabmap::VWDictionary::isModified </ td >
< td > (</ td >
< td class = "paramname" ></ td >< td > )</ td >
< td > const</ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > Check if the dictionary has been modified since last save. </ p >
< dl class = "section return" >< dt > Returns</ dt >< dd > true if modified, false otherwise </ dd ></ dl >
</ div >
</ div >
< a id = "a2864c406b3792dbfb7c8c334b6e44d41" name = "a2864c406b3792dbfb7c8c334b6e44d41" ></ a >
< h2 class = "memtitle" >< span class = "permalink" >< a href = "#a2864c406b3792dbfb7c8c334b6e44d41" > ◆  </ a ></ span > serializeIndex()</ h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > std::vector< unsigned char > rtabmap::VWDictionary::serializeIndex </ td >
< td > (</ td >
< td class = "paramname" ></ td >< td > )</ td >
< td > const</ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > Serialize the search index to a byte vector. </ p >
< dl class = "section return" >< dt > Returns</ dt >< dd > Serialized index data </ dd ></ dl >
</ div >
</ div >
< a id = "a3af1cce90b50dcb0f9dcd77e1fb08aad" name = "a3af1cce90b50dcb0f9dcd77e1fb08aad" ></ a >
< h2 class = "memtitle" >< span class = "permalink" >< a href = "#a3af1cce90b50dcb0f9dcd77e1fb08aad" > ◆  </ a ></ span > deserializeIndex() < span class = "overload" > [1/2]</ span ></ h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > bool rtabmap::VWDictionary::deserializeIndex </ td >
< td > (</ td >
< td class = "paramtype" > const std::vector< unsigned char > &  </ td >
< td class = "paramname" >< em > data</ em ></ td >< td > )</ td >
< td ></ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > Deserialize the search index from a byte vector. </ p >
< dl class = "params" >< dt > Parameters</ dt >< dd >
< table class = "params" >
< tr >< td class = "paramname" > data</ td >< td > Serialized index data </ td ></ tr >
</ table >
</ dd >
</ dl >
< dl class = "section return" >< dt > Returns</ dt >< dd > true if deserialization was successful, false otherwise </ dd ></ dl >
</ div >
</ div >
< a id = "a0a29d849a7c2b626407f453e5cb4b526" name = "a0a29d849a7c2b626407f453e5cb4b526" ></ a >
< h2 class = "memtitle" >< span class = "permalink" >< a href = "#a0a29d849a7c2b626407f453e5cb4b526" > ◆  </ a ></ span > deserializeIndex() < span class = "overload" > [2/2]</ span ></ h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > bool rtabmap::VWDictionary::deserializeIndex </ td >
< td > (</ td >
< td class = "paramtype" > const unsigned char *  </ td >
< td class = "paramname" >< em > data</ em > , </ td >
</ tr >
< tr >
< td class = "paramkey" ></ td >
< td ></ td >
< td class = "paramtype" > size_t  </ td >
< td class = "paramname" >< em > size</ em >   </ td >
</ tr >
< tr >
< td ></ td >
< td > )</ td >
< td ></ td >< td ></ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > Deserialize the search index from raw bytes. </ p >
< dl class = "params" >< dt > Parameters</ dt >< dd >
< table class = "params" >
< tr >< td class = "paramname" > data</ td >< td > Pointer to serialized index data </ td ></ tr >
< tr >< td class = "paramname" > size</ td >< td > Size of the data in bytes </ td ></ tr >
</ table >
</ dd >
</ dl >
< dl class = "section return" >< dt > Returns</ dt >< dd > true if deserialization was successful, false otherwise </ dd ></ dl >
</ div >
</ div >
< a id = "a1ba7cb31f8658980849ffd9ce76b3cb8" name = "a1ba7cb31f8658980849ffd9ce76b3cb8" ></ a >
< h2 class = "memtitle" >< span class = "permalink" >< a href = "#a1ba7cb31f8658980849ffd9ce76b3cb8" > ◆  </ a ></ span > exportDictionary()</ h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > void rtabmap::VWDictionary::exportDictionary </ td >
< td > (</ td >
< td class = "paramtype" > const char *  </ td >
< td class = "paramname" >< em > fileNameReferences</ em > , </ td >
</ tr >
< tr >
< td class = "paramkey" ></ td >
< td ></ td >
< td class = "paramtype" > const char *  </ td >
< td class = "paramname" >< em > fileNameDescriptors</ em >   </ td >
</ tr >
< tr >
< td ></ td >
< td > )</ td >
< td ></ td >< td > const</ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > Export the dictionary to files. </ p >
< dl class = "params" >< dt > Parameters</ dt >< dd >
< table class = "params" >
< tr >< td class = "paramname" > fileNameReferences</ td >< td > Path to file for word-to-signature references </ td ></ tr >
< tr >< td class = "paramname" > fileNameDescriptors</ td >< td > Path to file for visual word descriptors</ td ></ tr >
</ table >
</ dd >
</ dl >
< p > Exports the dictionary in a format that can be loaded later. </ p >
</ div >
</ div >
< a id = "a566aaf19cdc098587e88393e4140b351" name = "a566aaf19cdc098587e88393e4140b351" ></ a >
< h2 class = "memtitle" >< span class = "permalink" >< a href = "#a566aaf19cdc098587e88393e4140b351" > ◆  </ a ></ span > clear()</ h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > void rtabmap::VWDictionary::clear </ td >
< td > (</ td >
< td class = "paramtype" > bool  </ td >
< td class = "paramname" >< em > printWarningsIfNotEmpty</ em > = < code > true</ code ></ td >< td > )</ td >
< td ></ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > Clear all visual words and reset the dictionary. </ p >
< dl class = "params" >< dt > Parameters</ dt >< dd >
< table class = "params" >
< tr >< td class = "paramname" > printWarningsIfNotEmpty</ td >< td > If true, print warnings if dictionary is not empty</ td ></ tr >
</ table >
</ dd >
</ dl >
< p > Deletes all visual words and releases all resources. </ p >
</ div >
</ div >
< a id = "ab47b5ecb12c822474004f0ad77dbb388" name = "ab47b5ecb12c822474004f0ad77dbb388" ></ a >
< h2 class = "memtitle" >< span class = "permalink" >< a href = "#ab47b5ecb12c822474004f0ad77dbb388" > ◆  </ a ></ span > getUnusedWords()</ h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > std::vector< < a class = "el" href = "classrtabmap_1_1VisualWord.html" > VisualWord</ a > * > rtabmap::VWDictionary::getUnusedWords </ td >
< td > (</ td >
< td class = "paramname" ></ td >< td > )</ td >
< td > const</ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > Get all unused visual words. </ p >
< dl class = "section return" >< dt > Returns</ dt >< dd > Vector of pointers to unused visual words</ dd ></ dl >
< p > Unused words are visual words that have no references to any signatures.</ p >
< dl class = "section note" >< dt > Note</ dt >< dd > Ownership of the returned visual words still belongs to the dictionary. To transfer ownership to the caller, < a class = "el" href = "classrtabmap_1_1VWDictionary.html#a7a506e15bf83d16cc98aaa34057216f4" title = "Remove words from the dictionary." > removeWords()</ a > must be called on these words. </ dd ></ dl >
</ div >
</ div >
< a id = "a64b0aee7f33cbd4df26e2d0c14329e9d" name = "a64b0aee7f33cbd4df26e2d0c14329e9d" ></ a >
< h2 class = "memtitle" >< span class = "permalink" >< a href = "#a64b0aee7f33cbd4df26e2d0c14329e9d" > ◆  </ a ></ span > getUnusedWordIds()</ h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > std::vector< int > rtabmap::VWDictionary::getUnusedWordIds </ td >
< td > (</ td >
< td class = "paramname" ></ td >< td > )</ td >
< td > const</ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > Get IDs of all unused visual words. </ p >
< dl class = "section return" >< dt > Returns</ dt >< dd > Vector of unused word IDs </ dd ></ dl >
</ div >
</ div >
< a id = "a117282f59ed918808d8116cd1f92f412" name = "a117282f59ed918808d8116cd1f92f412" ></ a >
< h2 class = "memtitle" >< span class = "permalink" >< a href = "#a117282f59ed918808d8116cd1f92f412" > ◆  </ a ></ span > getUnusedWordsSize()</ h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "mlabels" >
< tr >
< td class = "mlabels-left" >
< table class = "memname" >
< tr >
< td class = "memname" > unsigned int rtabmap::VWDictionary::getUnusedWordsSize </ td >
< td > (</ td >
< td class = "paramname" ></ td >< td > )</ td >
< td > const</ td >
</ tr >
</ table >
</ td >
< td class = "mlabels-right" >
< span class = "mlabels" >< span class = "mlabel" > inline</ span ></ span > </ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > Get the count of unused visual words. </ p >
< dl class = "section return" >< dt > Returns</ dt >< dd > Number of unused words </ dd ></ dl >
2026-08-16 17:18:46 +00:00
< p class = "definition" > Definition at line < a class = "el" href = "VWDictionary_8h_source.html#l00417" > 417</ a > of file < a class = "el" href = "VWDictionary_8h_source.html" > VWDictionary.h</ a > .</ p >
2026-08-06 22:56:24 +00:00
</ div >
</ div >
< a id = "a7a506e15bf83d16cc98aaa34057216f4" name = "a7a506e15bf83d16cc98aaa34057216f4" ></ a >
< h2 class = "memtitle" >< span class = "permalink" >< a href = "#a7a506e15bf83d16cc98aaa34057216f4" > ◆  </ a ></ span > removeWords()</ h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > void rtabmap::VWDictionary::removeWords </ td >
< td > (</ td >
< td class = "paramtype" > const std::vector< < a class = "el" href = "classrtabmap_1_1VisualWord.html" > VisualWord</ a > * > &  </ td >
< td class = "paramname" >< em > words</ em ></ td >< td > )</ td >
< td ></ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > Remove words from the dictionary. </ p >
< dl class = "params" >< dt > Parameters</ dt >< dd >
< table class = "params" >
< tr >< td class = "paramname" > words</ td >< td > Vector of visual word pointers to remove</ td ></ tr >
</ table >
</ dd >
</ dl >
< dl class = "section note" >< dt > Note</ dt >< dd > The caller is responsible for deleting the < a class = "el" href = "classrtabmap_1_1VisualWord.html" title = "Represents a visual word (feature descriptor) used in the bag-of-words (BoW) model." > VisualWord</ a > objects </ dd ></ dl >
</ div >
</ div >
< a id = "a33c8904edf3d0af65dfd2a6d817416fa" name = "a33c8904edf3d0af65dfd2a6d817416fa" ></ a >
< h2 class = "memtitle" >< span class = "permalink" >< a href = "#a33c8904edf3d0af65dfd2a6d817416fa" > ◆  </ a ></ span > deleteUnusedWords()</ h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > void rtabmap::VWDictionary::deleteUnusedWords </ td >
< td > (</ td >
< td class = "paramname" ></ td >< td > )</ td >
< td ></ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > Delete all unused visual words. </ p >
< p > Removes and deletes visual words that have no references to any signatures. </ p >
</ div >
</ div >
< a id = "a70aec2b9d1bf55d47192949aa728448e" name = "a70aec2b9d1bf55d47192949aa728448e" ></ a >
< h2 class = "memtitle" >< span class = "permalink" >< a href = "#a70aec2b9d1bf55d47192949aa728448e" > ◆  </ a ></ span > convertBinTo32F()</ h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "mlabels" >
< tr >
< td class = "mlabels-left" >
< table class = "memname" >
< tr >
< td class = "memname" > static cv::Mat rtabmap::VWDictionary::convertBinTo32F </ td >
< td > (</ td >
< td class = "paramtype" > const cv::Mat &  </ td >
< td class = "paramname" >< em > descriptorsIn</ em > , </ td >
</ tr >
< tr >
< td class = "paramkey" ></ td >
< td ></ td >
< td class = "paramtype" > bool  </ td >
< td class = "paramname" >< em > byteToFloat</ em > = < code > true</ code >   </ td >
</ tr >
< tr >
< td ></ td >
< td > )</ td >
< td ></ td >< td ></ td >
</ tr >
</ table >
</ td >
< td class = "mlabels-right" >
< span class = "mlabels" >< span class = "mlabel" > static</ span ></ span > </ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > Convert binary descriptors to 32-bit float format. </ p >
< dl class = "params" >< dt > Parameters</ dt >< dd >
< table class = "params" >
< tr >< td class = "paramname" > descriptorsIn</ td >< td > Input descriptors (CV_8UC1 for binary, or CV_32FC1 for float) </ td ></ tr >
< tr >< td class = "paramname" > byteToFloat</ td >< td > Conversion mode:< ul >
< li > If true: Simple type conversion from CV_8UC1 to CV_32FC1 using OpenCV's convertTo(). Each byte value becomes a float value (output dimensions unchanged).</ li >
< li > If false: Bit-by-bit expansion for binary descriptors (e.g., < a class = "el" href = "classrtabmap_1_1ORB.html" title = "ORB detector and descriptor (optional GPU)." > ORB</ a > , BRIEF). Each input byte (8 bits) is expanded into 8 float values (0.0f or 1.0f), one per bit. Output has 8x the number of columns (e.g., 32 bytes -> 256 floats). </ li >
</ ul >
</ td ></ tr >
</ table >
</ dd >
</ dl >
< dl class = "section return" >< dt > Returns</ dt >< dd > Descriptors in 32-bit float format (CV_32FC1) </ dd ></ dl >
</ div >
</ div >
< a id = "acda9d98e4ad4897ce8a8b945f396221c" name = "acda9d98e4ad4897ce8a8b945f396221c" ></ a >
< h2 class = "memtitle" >< span class = "permalink" >< a href = "#acda9d98e4ad4897ce8a8b945f396221c" > ◆  </ a ></ span > convert32FToBin()</ h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "mlabels" >
< tr >
< td class = "mlabels-left" >
< table class = "memname" >
< tr >
< td class = "memname" > static cv::Mat rtabmap::VWDictionary::convert32FToBin </ td >
< td > (</ td >
< td class = "paramtype" > const cv::Mat &  </ td >
< td class = "paramname" >< em > descriptorsIn</ em > , </ td >
</ tr >
< tr >
< td class = "paramkey" ></ td >
< td ></ td >
< td class = "paramtype" > bool  </ td >
< td class = "paramname" >< em > byteToFloat</ em > = < code > true</ code >   </ td >
</ tr >
< tr >
< td ></ td >
< td > )</ td >
< td ></ td >< td ></ td >
</ tr >
</ table >
</ td >
< td class = "mlabels-right" >
< span class = "mlabels" >< span class = "mlabel" > static</ span ></ span > </ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > Convert 32-bit float descriptors to binary format. </ p >
< dl class = "params" >< dt > Parameters</ dt >< dd >
< table class = "params" >
< tr >< td class = "paramname" > descriptorsIn</ td >< td > Input descriptors (CV_32FC1) </ td ></ tr >
< tr >< td class = "paramname" > byteToFloat</ td >< td > Conversion mode:< ul >
< li > If true: Simple type conversion from CV_32FC1 to CV_8UC1 using OpenCV's convertTo(). Each float value becomes a byte value (output dimensions unchanged).</ li >
< li > If false: Bit-by-bit packing for binary descriptors. Each group of 8 float values (0.0f or 1.0f) is packed into 1 byte (8 bits), one bit per float. Input must have columns divisible by 8. Output has 1/8 the number of columns (e.g., 256 floats -> 32 bytes). </ li >
</ ul >
</ td ></ tr >
</ table >
</ dd >
</ dl >
< dl class = "section return" >< dt > Returns</ dt >< dd > Descriptors in binary format (CV_8UC1) </ dd ></ dl >
</ div >
</ div >
< a id = "a085d69ef577600000f397bd63abeaf69" name = "a085d69ef577600000f397bd63abeaf69" ></ a >
< h2 class = "memtitle" >< span class = "permalink" >< a href = "#a085d69ef577600000f397bd63abeaf69" > ◆  </ a ></ span > getNextId()</ h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "mlabels" >
< tr >
< td class = "mlabels-left" >
< table class = "memname" >
< tr >
< td class = "memname" > int rtabmap::VWDictionary::getNextId </ td >
< td > (</ td >
< td class = "paramname" ></ td >< td > )</ td >
< td ></ td >
</ tr >
</ table >
</ td >
< td class = "mlabels-right" >
< span class = "mlabels" >< span class = "mlabel" > protected</ span ></ span > </ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > Get the next available visual word ID. </ p >
< dl class = "section return" >< dt > Returns</ dt >< dd > Next unique word ID </ dd ></ dl >
</ div >
</ div >
< h2 class = "groupheader" > Member Data Documentation</ h2 >
< a id = "a2dbfec55a8921f52b642bf0dceea0c37" name = "a2dbfec55a8921f52b642bf0dceea0c37" ></ a >
< h2 class = "memtitle" >< span class = "permalink" >< a href = "#a2dbfec55a8921f52b642bf0dceea0c37" > ◆  </ a ></ span > ID_START</ h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "mlabels" >
< tr >
< td class = "mlabels-left" >
< table class = "memname" >
< tr >
< td class = "memname" > const int rtabmap::VWDictionary::ID_START</ td >
</ tr >
</ table >
</ td >
< td class = "mlabels-right" >
< span class = "mlabels" >< span class = "mlabel" > static</ span ></ span > </ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > Starting ID for visual words (typically 1) </ p >
2026-08-16 17:18:46 +00:00
< p class = "definition" > Definition at line < a class = "el" href = "VWDictionary_8h_source.html#l00091" > 91</ a > of file < a class = "el" href = "VWDictionary_8h_source.html" > VWDictionary.h</ a > .</ p >
2026-08-06 22:56:24 +00:00
</ div >
</ div >
< a id = "a83b1966a141848baeec5112c30bacf0f" name = "a83b1966a141848baeec5112c30bacf0f" ></ a >
< h2 class = "memtitle" >< span class = "permalink" >< a href = "#a83b1966a141848baeec5112c30bacf0f" > ◆  </ a ></ span > ID_INVALID</ h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "mlabels" >
< tr >
< td class = "mlabels-left" >
< table class = "memname" >
< tr >
< td class = "memname" > const int rtabmap::VWDictionary::ID_INVALID</ td >
</ tr >
</ table >
</ td >
< td class = "mlabels-right" >
< span class = "mlabels" >< span class = "mlabel" > static</ span ></ span > </ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > Invalid visual word ID (typically 0) </ p >
2026-08-16 17:18:46 +00:00
< p class = "definition" > Definition at line < a class = "el" href = "VWDictionary_8h_source.html#l00096" > 96</ a > of file < a class = "el" href = "VWDictionary_8h_source.html" > VWDictionary.h</ a > .</ p >
2026-08-06 22:56:24 +00:00
</ div >
</ div >
< a id = "adcb4739e09e27b20125880e9d3026383" name = "adcb4739e09e27b20125880e9d3026383" ></ a >
< h2 class = "memtitle" >< span class = "permalink" >< a href = "#adcb4739e09e27b20125880e9d3026383" > ◆  </ a ></ span > _visualWords</ h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "mlabels" >
< tr >
< td class = "mlabels-left" >
< table class = "memname" >
< tr >
< td class = "memname" > std::map< int, < a class = "el" href = "classrtabmap_1_1VisualWord.html" > VisualWord</ a > *> rtabmap::VWDictionary::_visualWords</ td >
</ tr >
</ table >
</ td >
< td class = "mlabels-right" >
< span class = "mlabels" >< span class = "mlabel" > protected</ span ></ span > </ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > Map of visual word ID to < a class = "el" href = "classrtabmap_1_1VisualWord.html" title = "Represents a visual word (feature descriptor) used in the bag-of-words (BoW) model." > VisualWord</ a > pointer. </ p >
< dl class = "section note" >< dt > Note</ dt >< dd > All visual words (used and unused) are stored here </ dd ></ dl >
2026-08-16 17:18:46 +00:00
< p class = "definition" > Definition at line < a class = "el" href = "VWDictionary_8h_source.html#l00474" > 474</ a > of file < a class = "el" href = "VWDictionary_8h_source.html" > VWDictionary.h</ a > .</ p >
2026-08-06 22:56:24 +00:00
</ div >
</ div >
< a id = "a5222c6a21307f0e4b9346c87db166b44" name = "a5222c6a21307f0e4b9346c87db166b44" ></ a >
< h2 class = "memtitle" >< span class = "permalink" >< a href = "#a5222c6a21307f0e4b9346c87db166b44" > ◆  </ a ></ span > _totalActiveReferences</ h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "mlabels" >
< tr >
< td class = "mlabels-left" >
< table class = "memname" >
< tr >
< td class = "memname" > int rtabmap::VWDictionary::_totalActiveReferences</ td >
</ tr >
</ table >
</ td >
< td class = "mlabels-right" >
< span class = "mlabels" >< span class = "mlabel" > protected</ span ></ span > </ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > Total count of active word-to-signature references. </ p >
< dl class = "section note" >< dt > Note</ dt >< dd > Used to track all references for updating common signatures </ dd ></ dl >
2026-08-16 17:18:46 +00:00
< p class = "definition" > Definition at line < a class = "el" href = "VWDictionary_8h_source.html#l00480" > 480</ a > of file < a class = "el" href = "VWDictionary_8h_source.html" > VWDictionary.h</ a > .</ p >
2026-08-06 22:56:24 +00:00
</ div >
</ div >
< hr /> The documentation for this class was generated from the following file:< ul >
< li > corelib/include/rtabmap/core/< a class = "el" href = "VWDictionary_8h_source.html" > VWDictionary.h</ a ></ li >
</ ul >
</ div > <!-- contents -->
</ div > <!-- doc-content -->
<!-- start footer part -->
< div id = "nav-path" class = "navpath" > <!-- id is needed for treeview function! -->
< ul >
< li class = "navelem" >< a class = "el" href = "namespacertabmap.html" > rtabmap</ a ></ li >< li class = "navelem" >< a class = "el" href = "classrtabmap_1_1VWDictionary.html" > VWDictionary</ a ></ li >
< li class = "footer" > Generated by < a href = "https://www.doxygen.org/index.html" >< img class = "footer" src = "doxygen.svg" width = "104" height = "31" alt = "doxygen" /></ a > 1.9.8 </ li >
</ ul >
</ div >
</ body >
</ html >