2026-08-02 01:36:11 +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: corelib/include/rtabmap/core/EpipolarGeometry.h Source File</ title >
< link href = "tabs.css" rel = "stylesheet" type = "text/css" />
< script type = "text/javascript" src = "jquery.js" ></ script >
< script type = "text/javascript" src = "dynsections.js" ></ script >
2026-08-02 07:56:38 +00:00
< 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 >
2026-08-02 01:36:11 +00:00
< 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" />
2026-08-02 17:35:14 +00:00
< link href = "doxygen-awesome.css" rel = "stylesheet" type = "text/css" />
< link href = "custom.css" rel = "stylesheet" type = "text/css" />
2026-08-02 01:36:11 +00:00
< 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 >
2026-08-02 17:35:14 +00:00
< script type = "text/javascript" src = "doxygen-awesome-darkmode-toggle.js" ></ script >
< script type = "text/javascript" > DoxygenAwesomeDarkModeToggle . init ();</ script >
2026-08-02 01:36:11 +00:00
</ head >
< body >
< div id = "top" > <!-- do not remove this div, it is closed by doxygen! -->
< div id = "titlearea" >
< table cellspacing = "0" cellpadding = "0" >
< tbody >
< tr id = "projectrow" >
< td id = "projectalign" >
< div id = "projectname" > RTAB-Map< span id = "projectnumber" >   0.23.10</ span >
</ div >
2026-08-02 07:56:38 +00:00
< div id = "projectbrief" > Real-Time Appearance-Based Mapping</ div >
2026-08-02 01:36:11 +00:00
</ 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 >
< script type = "text/javascript" >
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
$ ( document ). ready ( function () { init_codefold ( 0 ); });
/* @license-end */
</ script >
2026-08-02 07:56:38 +00:00
</ 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 ( 'EpipolarGeometry_8h_source.html' , '' ); initResizable (); });
/* @license-end */
</ script >
< div id = "doc-content" >
2026-08-02 01:36:11 +00:00
<!-- window showing the filter options -->
< div id = "MSearchSelectWindow"
onmouseover = "return searchBox.OnSearchSelectShow()"
onmouseout = "return searchBox.OnSearchSelectHide()"
onkeydown = "return searchBox.OnSearchSelectKey(event)" >
</ div >
<!-- iframe showing the search results (closed by default) -->
< div id = "MSearchResultsWindow" >
< div id = "MSearchResults" >
< div class = "SRPage" >
< div id = "SRIndex" >
< div id = "SRResults" ></ div >
< div class = "SRStatus" id = "Loading" > Loading...</ div >
< div class = "SRStatus" id = "Searching" > Searching...</ div >
< div class = "SRStatus" id = "NoMatches" > No Matches</ div >
</ div >
</ div >
</ div >
</ div >
< div class = "header" >
< div class = "headertitle" >< div class = "title" > EpipolarGeometry.h</ div ></ div >
</ div > <!--header-->
< div class = "contents" >
< div class = "fragment" >< div class = "line" >< a id = "l00001" name = "l00001" ></ a >< span class = "lineno" > 1</ span >< span class = "comment" > /*</ span ></ div >
< div class = "line" >< a id = "l00002" name = "l00002" ></ a >< span class = "lineno" > 2</ span >< span class = "comment" > Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke</ span ></ div >
< div class = "line" >< a id = "l00003" name = "l00003" ></ a >< span class = "lineno" > 3</ span >< span class = "comment" > All rights reserved.</ span ></ div >
< div class = "line" >< a id = "l00004" name = "l00004" ></ a >< span class = "lineno" > 4</ span >< span class = "comment" ></ span > </ div >
< div class = "line" >< a id = "l00005" name = "l00005" ></ a >< span class = "lineno" > 5</ span >< span class = "comment" > Redistribution and use in source and binary forms, with or without</ span ></ div >
< div class = "line" >< a id = "l00006" name = "l00006" ></ a >< span class = "lineno" > 6</ span >< span class = "comment" > modification, are permitted provided that the following conditions are met:</ span ></ div >
< div class = "line" >< a id = "l00007" name = "l00007" ></ a >< span class = "lineno" > 7</ span >< span class = "comment" > * Redistributions of source code must retain the above copyright</ span ></ div >
< div class = "line" >< a id = "l00008" name = "l00008" ></ a >< span class = "lineno" > 8</ span >< span class = "comment" > notice, this list of conditions and the following disclaimer.</ span ></ div >
< div class = "line" >< a id = "l00009" name = "l00009" ></ a >< span class = "lineno" > 9</ span >< span class = "comment" > * Redistributions in binary form must reproduce the above copyright</ span ></ div >
< div class = "line" >< a id = "l00010" name = "l00010" ></ a >< span class = "lineno" > 10</ span >< span class = "comment" > notice, this list of conditions and the following disclaimer in the</ span ></ div >
< div class = "line" >< a id = "l00011" name = "l00011" ></ a >< span class = "lineno" > 11</ span >< span class = "comment" > documentation and/or other materials provided with the distribution.</ span ></ div >
< div class = "line" >< a id = "l00012" name = "l00012" ></ a >< span class = "lineno" > 12</ span >< span class = "comment" > * Neither the name of the Universite de Sherbrooke nor the</ span ></ div >
< div class = "line" >< a id = "l00013" name = "l00013" ></ a >< span class = "lineno" > 13</ span >< span class = "comment" > names of its contributors may be used to endorse or promote products</ span ></ div >
< div class = "line" >< a id = "l00014" name = "l00014" ></ a >< span class = "lineno" > 14</ span >< span class = "comment" > derived from this software without specific prior written permission.</ span ></ div >
< div class = "line" >< a id = "l00015" name = "l00015" ></ a >< span class = "lineno" > 15</ span >< span class = "comment" ></ span > </ div >
< div class = "line" >< a id = "l00016" name = "l00016" ></ a >< span class = "lineno" > 16</ span >< span class = "comment" > THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS " AS IS" AND</ span ></ div >
< div class = "line" >< a id = "l00017" name = "l00017" ></ a >< span class = "lineno" > 17</ span >< span class = "comment" > ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED</ span ></ div >
< div class = "line" >< a id = "l00018" name = "l00018" ></ a >< span class = "lineno" > 18</ span >< span class = "comment" > WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE</ span ></ div >
< div class = "line" >< a id = "l00019" name = "l00019" ></ a >< span class = "lineno" > 19</ span >< span class = "comment" > DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY</ span ></ div >
< div class = "line" >< a id = "l00020" name = "l00020" ></ a >< span class = "lineno" > 20</ span >< span class = "comment" > DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES</ span ></ div >
< div class = "line" >< a id = "l00021" name = "l00021" ></ a >< span class = "lineno" > 21</ span >< span class = "comment" > (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;</ span ></ div >
< div class = "line" >< a id = "l00022" name = "l00022" ></ a >< span class = "lineno" > 22</ span >< span class = "comment" > LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND</ span ></ div >
< div class = "line" >< a id = "l00023" name = "l00023" ></ a >< span class = "lineno" > 23</ span >< span class = "comment" > ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT</ span ></ div >
< div class = "line" >< a id = "l00024" name = "l00024" ></ a >< span class = "lineno" > 24</ span >< span class = "comment" > (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS</ span ></ div >
< div class = "line" >< a id = "l00025" name = "l00025" ></ a >< span class = "lineno" > 25</ span >< span class = "comment" > SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</ span ></ div >
< div class = "line" >< a id = "l00026" name = "l00026" ></ a >< span class = "lineno" > 26</ span >< span class = "comment" > */</ span ></ div >
< div class = "line" >< a id = "l00027" name = "l00027" ></ a >< span class = "lineno" > 27</ span > </ div >
< div class = "line" >< a id = "l00028" name = "l00028" ></ a >< span class = "lineno" > 28</ span >< span class = "preprocessor" > #pragma once</ span ></ div >
< div class = "line" >< a id = "l00029" name = "l00029" ></ a >< span class = "lineno" > 29</ span > </ div >
< div class = "line" >< a id = "l00030" name = "l00030" ></ a >< span class = "lineno" > 30</ span >< span class = "preprocessor" > #include " rtabmap/core/rtabmap_core_export.h" </ span > < span class = "comment" > // DLL export/import defines</ span ></ div >
< div class = "line" >< a id = "l00031" name = "l00031" ></ a >< span class = "lineno" > 31</ span >< span class = "preprocessor" > #include " rtabmap/core/Parameters.h" </ span ></ div >
< div class = "line" >< a id = "l00032" name = "l00032" ></ a >< span class = "lineno" > 32</ span >< span class = "preprocessor" > #include " < a class = "code" href = "UStl_8h.html" > rtabmap/utilite/UStl.h</ a > " </ span ></ div >
< div class = "line" >< a id = "l00033" name = "l00033" ></ a >< span class = "lineno" > 33</ span >< span class = "preprocessor" > #include < opencv2/core/core.hpp> </ span ></ div >
< div class = "line" >< a id = "l00034" name = "l00034" ></ a >< span class = "lineno" > 34</ span >< span class = "preprocessor" > #if CV_MAJOR_VERSION < 5</ span ></ div >
< div class = "line" >< a id = "l00035" name = "l00035" ></ a >< span class = "lineno" > 35</ span >< span class = "preprocessor" > #include < opencv2/features2d/features2d.hpp> </ span ></ div >
< div class = "line" >< a id = "l00036" name = "l00036" ></ a >< span class = "lineno" > 36</ span >< span class = "preprocessor" > #else</ span ></ div >
< div class = "line" >< a id = "l00037" name = "l00037" ></ a >< span class = "lineno" > 37</ span >< span class = "preprocessor" > #include < opencv2/features.hpp> </ span ></ div >
< div class = "line" >< a id = "l00038" name = "l00038" ></ a >< span class = "lineno" > 38</ span >< span class = "preprocessor" > #endif</ span ></ div >
< div class = "line" >< a id = "l00039" name = "l00039" ></ a >< span class = "lineno" > 39</ span >< span class = "preprocessor" > #include < pcl/point_cloud.h> </ span ></ div >
< div class = "line" >< a id = "l00040" name = "l00040" ></ a >< span class = "lineno" > 40</ span >< span class = "preprocessor" > #include < pcl/point_types.h> </ span ></ div >
< div class = "line" >< a id = "l00041" name = "l00041" ></ a >< span class = "lineno" > 41</ span >< span class = "preprocessor" > #include < list> </ span ></ div >
< div class = "line" >< a id = "l00042" name = "l00042" ></ a >< span class = "lineno" > 42</ span >< span class = "preprocessor" > #include < vector> </ span ></ div >
< div class = "line" >< a id = "l00043" name = "l00043" ></ a >< span class = "lineno" > 43</ span > </ div >
< div class = "line" >< a id = "l00044" name = "l00044" ></ a >< span class = "lineno" > 44</ span >< span class = "keyword" > namespace </ span >< a class = "code hl_namespace" href = "namespacertabmap.html" > rtabmap</ a ></ div >
< div class = "line" >< a id = "l00045" name = "l00045" ></ a >< span class = "lineno" > 45</ span > {</ div >
< div class = "line" >< a id = "l00046" name = "l00046" ></ a >< span class = "lineno" > 46</ span > </ div >
< div class = "line" >< a id = "l00047" name = "l00047" ></ a >< span class = "lineno" > 47</ span >< span class = "keyword" > class </ span > Signature;</ div >
< div class = "line" >< a id = "l00048" name = "l00048" ></ a >< span class = "lineno" > 48</ span > </ div >
< div class = "foldopen" id = "foldopen00049" data-start = "{" data-end = "};" >
< div class = "line" >< a id = "l00049" name = "l00049" ></ a >< span class = "lineno" >< a class = "line" href = "classrtabmap_1_1EpipolarGeometry.html" > 49</ a ></ span >< span class = "keyword" > class </ span > RTABMAP_CORE_EXPORT < a class = "code hl_class" href = "classrtabmap_1_1EpipolarGeometry.html" > EpipolarGeometry</ a ></ div >
< div class = "line" >< a id = "l00050" name = "l00050" ></ a >< span class = "lineno" > 50</ span > {</ div >
< div class = "line" >< a id = "l00051" name = "l00051" ></ a >< span class = "lineno" > 51</ span >< span class = "keyword" > public</ span > :</ div >
2026-08-02 07:56:38 +00:00
< div class = "line" >< a id = "l00052" name = "l00052" ></ a >< span class = "lineno" > 52</ span > < a class = "code hl_class" href = "classrtabmap_1_1EpipolarGeometry.html" > EpipolarGeometry</ a > (< span class = "keyword" > const</ span > < a class = "code hl_typedef" href = "namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55" > ParametersMap</ a > & parameters = < a class = "code hl_typedef" href = "namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55" > ParametersMap</ a > ());</ div >
2026-08-02 01:36:11 +00:00
< div class = "line" >< a id = "l00053" name = "l00053" ></ a >< span class = "lineno" > 53</ span > < span class = "keyword" > virtual</ span > < a class = "code hl_class" href = "classrtabmap_1_1EpipolarGeometry.html" > ~EpipolarGeometry</ a > ();</ div >
< div class = "line" >< a id = "l00054" name = "l00054" ></ a >< span class = "lineno" > 54</ span > < span class = "keywordtype" > bool</ span > check(< span class = "keyword" > const</ span > < a class = "code hl_class" href = "classrtabmap_1_1Signature.html" > Signature</ a > * ssA, < span class = "keyword" > const</ span > < a class = "code hl_class" href = "classrtabmap_1_1Signature.html" > Signature</ a > * ssB);</ div >
2026-08-02 07:56:38 +00:00
< div class = "line" >< a id = "l00055" name = "l00055" ></ a >< span class = "lineno" > 55</ span > < span class = "keywordtype" > void</ span > parseParameters(< span class = "keyword" > const</ span > < a class = "code hl_typedef" href = "namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55" > ParametersMap</ a > & parameters);</ div >
2026-08-02 01:36:11 +00:00
< div class = "line" >< a id = "l00056" name = "l00056" ></ a >< span class = "lineno" > 56</ span > </ div >
< div class = "line" >< a id = "l00057" name = "l00057" ></ a >< span class = "lineno" > 57</ span > < span class = "keywordtype" > int</ span > getMatchCountMinAccepted()< span class = "keyword" > const </ span > {< span class = "keywordflow" > return</ span > _matchCountMinAccepted;}</ div >
< div class = "line" >< a id = "l00058" name = "l00058" ></ a >< span class = "lineno" > 58</ span > < span class = "keywordtype" > double</ span > getRansacParam1()< span class = "keyword" > const </ span > {< span class = "keywordflow" > return</ span > _ransacParam1;}</ div >
< div class = "line" >< a id = "l00059" name = "l00059" ></ a >< span class = "lineno" > 59</ span > < span class = "keywordtype" > double</ span > getRansacParam2()< span class = "keyword" > const </ span > {< span class = "keywordflow" > return</ span > _ransacParam2;}</ div >
< div class = "line" >< a id = "l00060" name = "l00060" ></ a >< span class = "lineno" > 60</ span > </ div >
< div class = "line" >< a id = "l00061" name = "l00061" ></ a >< span class = "lineno" > 61</ span > < span class = "keywordtype" > void</ span > setMatchCountMinAccepted(< span class = "keywordtype" > int</ span > matchCountMinAccepted) {_matchCountMinAccepted = matchCountMinAccepted;}</ div >
< div class = "line" >< a id = "l00062" name = "l00062" ></ a >< span class = "lineno" > 62</ span > < span class = "keywordtype" > void</ span > setRansacParam1(< span class = "keywordtype" > double</ span > ransacParam1) {_ransacParam1 = ransacParam1;}</ div >
< div class = "line" >< a id = "l00063" name = "l00063" ></ a >< span class = "lineno" > 63</ span > < span class = "keywordtype" > void</ span > setRansacParam2(< span class = "keywordtype" > double</ span > ransacParam2) {_ransacParam2 = ransacParam2;}</ div >
< div class = "line" >< a id = "l00064" name = "l00064" ></ a >< span class = "lineno" > 64</ span > </ div >
< div class = "line" >< a id = "l00065" name = "l00065" ></ a >< span class = "lineno" > 65</ span > </ div >
< div class = "line" >< a id = "l00066" name = "l00066" ></ a >< span class = "lineno" > 66</ span > < span class = "comment" > // STATIC STUFF</ span ></ div >
< div class = "line" >< a id = "l00067" name = "l00067" ></ a >< span class = "lineno" > 67</ span > < span class = "comment" > //epipolar geometry</ span ></ div >
< div class = "line" >< a id = "l00068" name = "l00068" ></ a >< span class = "lineno" > 68</ span > < span class = "keyword" > static</ span > < span class = "keywordtype" > void</ span > findEpipolesFromF(</ div >
< div class = "line" >< a id = "l00069" name = "l00069" ></ a >< span class = "lineno" > 69</ span > < span class = "keyword" > const</ span > cv::Mat & fundamentalMatrix,</ div >
< div class = "line" >< a id = "l00070" name = "l00070" ></ a >< span class = "lineno" > 70</ span > cv::Vec3d & e1,</ div >
< div class = "line" >< a id = "l00071" name = "l00071" ></ a >< span class = "lineno" > 71</ span > cv::Vec3d & e2);</ div >
< div class = "line" >< a id = "l00072" name = "l00072" ></ a >< span class = "lineno" > 72</ span > </ div >
< div class = "line" >< a id = "l00073" name = "l00073" ></ a >< span class = "lineno" > 73</ span > < span class = "keyword" > static</ span > cv::Mat findPFromE(</ div >
< div class = "line" >< a id = "l00074" name = "l00074" ></ a >< span class = "lineno" > 74</ span > < span class = "keyword" > const</ span > cv::Mat & E,</ div >
< div class = "line" >< a id = "l00075" name = "l00075" ></ a >< span class = "lineno" > 75</ span > < span class = "keyword" > const</ span > cv::Mat & x,</ div >
< div class = "line" >< a id = "l00076" name = "l00076" ></ a >< span class = "lineno" > 76</ span > < span class = "keyword" > const</ span > cv::Mat & xp);</ div >
< div class = "line" >< a id = "l00077" name = "l00077" ></ a >< span class = "lineno" > 77</ span > </ div >
< div class = "line" >< a id = "l00078" name = "l00078" ></ a >< span class = "lineno" > 78</ span > < span class = "comment" > // return fundamental matrix</ span ></ div >
< div class = "line" >< a id = "l00079" name = "l00079" ></ a >< span class = "lineno" > 79</ span > < span class = "comment" > // status -> inliers = 1, outliers = 0</ span ></ div >
< div class = "line" >< a id = "l00080" name = "l00080" ></ a >< span class = "lineno" > 80</ span > < span class = "keyword" > static</ span > cv::Mat findFFromWords(</ div >
< div class = "line" >< a id = "l00081" name = "l00081" ></ a >< span class = "lineno" > 81</ span > < span class = "keyword" > const</ span > std::list< std::pair< < span class = "keywordtype" > int</ span > , std::pair< cv::KeyPoint, cv::KeyPoint> > > & pairs, < span class = "comment" > // id, kpt1, kpt2</ span ></ div >
< div class = "line" >< a id = "l00082" name = "l00082" ></ a >< span class = "lineno" > 82</ span > std::vector< uchar> & status,</ div >
< div class = "line" >< a id = "l00083" name = "l00083" ></ a >< span class = "lineno" > 83</ span > < span class = "keywordtype" > double</ span > ransacReprojThreshold = 3.0,</ div >
< div class = "line" >< a id = "l00084" name = "l00084" ></ a >< span class = "lineno" > 84</ span > < span class = "keywordtype" > double</ span > ransacConfidence = 0.99);</ div >
< div class = "line" >< a id = "l00085" name = "l00085" ></ a >< span class = "lineno" > 85</ span > </ div >
< div class = "line" >< a id = "l00086" name = "l00086" ></ a >< span class = "lineno" > 86</ span > < span class = "comment" > // assume a canonical camera (without K)</ span ></ div >
< div class = "line" >< a id = "l00087" name = "l00087" ></ a >< span class = "lineno" > 87</ span > < span class = "keyword" > static</ span > < span class = "keywordtype" > void</ span > findRTFromP(</ div >
< div class = "line" >< a id = "l00088" name = "l00088" ></ a >< span class = "lineno" > 88</ span > < span class = "keyword" > const</ span > cv::Mat & p,</ div >
< div class = "line" >< a id = "l00089" name = "l00089" ></ a >< span class = "lineno" > 89</ span > cv::Mat & r,</ div >
< div class = "line" >< a id = "l00090" name = "l00090" ></ a >< span class = "lineno" > 90</ span > cv::Mat & t);</ div >
< div class = "line" >< a id = "l00091" name = "l00091" ></ a >< span class = "lineno" > 91</ span > </ div >
< div class = "line" >< a id = "l00092" name = "l00092" ></ a >< span class = "lineno" > 92</ span > < span class = "keyword" > static</ span > cv::Mat findFFromCalibratedStereoCameras(< span class = "keywordtype" > double</ span > fx, < span class = "keywordtype" > double</ span > fy, < span class = "keywordtype" > double</ span > cx, < span class = "keywordtype" > double</ span > cy, < span class = "keywordtype" > double</ span > Tx, < span class = "keywordtype" > double</ span > Ty);</ div >
< div class = "line" >< a id = "l00093" name = "l00093" ></ a >< span class = "lineno" > 93</ span > </ div >
< div class = "line" >< a id = "l00094" name = "l00094" ></ a >< span class = "lineno" > 94</ span > </ div >
< div class = "line" >< a id = "l00099" name = "l00099" ></ a >< span class = "lineno" > 99</ span > < span class = "keyword" > template</ span > < < span class = "keyword" > typename</ span > T> </ div >
< div class = "foldopen" id = "foldopen00100" data-start = "{" data-end = "}" >
< div class = "line" >< a id = "l00100" name = "l00100" ></ a >< span class = "lineno" >< a class = "line" href = "classrtabmap_1_1EpipolarGeometry.html#ace979984a7d97ccaa18bf0764318d342" > 100</ a ></ span > < span class = "keyword" > static</ span > < span class = "keywordtype" > int</ span > < a class = "code hl_function" href = "classrtabmap_1_1EpipolarGeometry.html#ace979984a7d97ccaa18bf0764318d342" > findPairs</ a > (</ div >
< div class = "line" >< a id = "l00101" name = "l00101" ></ a >< span class = "lineno" > 101</ span > < span class = "keyword" > const</ span > std::map< int, T> & wordsA,</ div >
< div class = "line" >< a id = "l00102" name = "l00102" ></ a >< span class = "lineno" > 102</ span > < span class = "keyword" > const</ span > std::map< int, T> & wordsB,</ div >
< div class = "line" >< a id = "l00103" name = "l00103" ></ a >< span class = "lineno" > 103</ span > std::list< std::pair< < span class = "keywordtype" > int</ span > , std::pair< T, T> > > & pairs,</ div >
< div class = "line" >< a id = "l00104" name = "l00104" ></ a >< span class = "lineno" > 104</ span > < span class = "keywordtype" > bool</ span > ignoreNegativeIds = < span class = "keyword" > true</ span > )</ div >
< div class = "line" >< a id = "l00105" name = "l00105" ></ a >< span class = "lineno" > 105</ span > {</ div >
< div class = "line" >< a id = "l00106" name = "l00106" ></ a >< span class = "lineno" > 106</ span > < span class = "keywordtype" > int</ span > realPairsCount = 0;</ div >
< div class = "line" >< a id = "l00107" name = "l00107" ></ a >< span class = "lineno" > 107</ span > pairs.clear();</ div >
< div class = "line" >< a id = "l00108" name = "l00108" ></ a >< span class = "lineno" > 108</ span > < span class = "keywordflow" > for</ span > (< span class = "keyword" > typename</ span > std::map< int, T> ::const_iterator i=wordsA.begin(); i!=wordsA.end(); ++i)</ div >
< div class = "line" >< a id = "l00109" name = "l00109" ></ a >< span class = "lineno" > 109</ span > {</ div >
< div class = "line" >< a id = "l00110" name = "l00110" ></ a >< span class = "lineno" > 110</ span > < span class = "keywordflow" > if</ span > (!ignoreNegativeIds || (ignoreNegativeIds && i-> first> =0))</ div >
< div class = "line" >< a id = "l00111" name = "l00111" ></ a >< span class = "lineno" > 111</ span > {</ div >
< div class = "line" >< a id = "l00112" name = "l00112" ></ a >< span class = "lineno" > 112</ span > std::map< int, cv::KeyPoint> ::const_iterator ptB = wordsB.find(i-> first);</ div >
< div class = "line" >< a id = "l00113" name = "l00113" ></ a >< span class = "lineno" > 113</ span > < span class = "keywordflow" > if</ span > (ptB != wordsB.end())</ div >
< div class = "line" >< a id = "l00114" name = "l00114" ></ a >< span class = "lineno" > 114</ span > {</ div >
< div class = "line" >< a id = "l00115" name = "l00115" ></ a >< span class = "lineno" > 115</ span > pairs.push_back(std::pair< < span class = "keywordtype" > int</ span > , std::pair< T, T> > (i-> first, std::make_pair(i-> second, ptB-> second)));</ div >
< div class = "line" >< a id = "l00116" name = "l00116" ></ a >< span class = "lineno" > 116</ span > ++realPairsCount;</ div >
< div class = "line" >< a id = "l00117" name = "l00117" ></ a >< span class = "lineno" > 117</ span > }</ div >
< div class = "line" >< a id = "l00118" name = "l00118" ></ a >< span class = "lineno" > 118</ span > }</ div >
< div class = "line" >< a id = "l00119" name = "l00119" ></ a >< span class = "lineno" > 119</ span > }</ div >
< div class = "line" >< a id = "l00120" name = "l00120" ></ a >< span class = "lineno" > 120</ span > < span class = "keywordflow" > return</ span > realPairsCount;</ div >
< div class = "line" >< a id = "l00121" name = "l00121" ></ a >< span class = "lineno" > 121</ span > }</ div >
</ div >
< div class = "line" >< a id = "l00122" name = "l00122" ></ a >< span class = "lineno" > 122</ span > </ div >
< div class = "line" >< a id = "l00127" name = "l00127" ></ a >< span class = "lineno" > 127</ span > < span class = "keyword" > template</ span > < < span class = "keyword" > typename</ span > T> </ div >
< div class = "foldopen" id = "foldopen00128" data-start = "{" data-end = "}" >
< div class = "line" >< a id = "l00128" name = "l00128" ></ a >< span class = "lineno" >< a class = "line" href = "classrtabmap_1_1EpipolarGeometry.html#a8fc121340b9d638dc9b8c69f2d86c5e7" > 128</ a ></ span > < span class = "keyword" > static</ span > < span class = "keywordtype" > int</ span > < a class = "code hl_function" href = "classrtabmap_1_1EpipolarGeometry.html#a8fc121340b9d638dc9b8c69f2d86c5e7" > findPairs</ a > (</ div >
< div class = "line" >< a id = "l00129" name = "l00129" ></ a >< span class = "lineno" > 129</ span > < span class = "keyword" > const</ span > std::multimap< int, T> & wordsA,</ div >
< div class = "line" >< a id = "l00130" name = "l00130" ></ a >< span class = "lineno" > 130</ span > < span class = "keyword" > const</ span > std::multimap< int, T> & wordsB,</ div >
< div class = "line" >< a id = "l00131" name = "l00131" ></ a >< span class = "lineno" > 131</ span > std::list< std::pair< < span class = "keywordtype" > int</ span > , std::pair< T, T> > > & pairs,</ div >
< div class = "line" >< a id = "l00132" name = "l00132" ></ a >< span class = "lineno" > 132</ span > < span class = "keywordtype" > bool</ span > ignoreNegativeIds = < span class = "keyword" > true</ span > )</ div >
< div class = "line" >< a id = "l00133" name = "l00133" ></ a >< span class = "lineno" > 133</ span > {</ div >
< div class = "line" >< a id = "l00134" name = "l00134" ></ a >< span class = "lineno" > 134</ span > < span class = "keyword" > const</ span > std::list< int> & ids = < a class = "code hl_function" href = "UStl_8h.html#a62335030b4c0d80f80e7c4a21721c05e" > uUniqueKeys</ a > (wordsA);</ div >
< div class = "line" >< a id = "l00135" name = "l00135" ></ a >< span class = "lineno" > 135</ span > < span class = "keyword" > typename</ span > std::multimap< int, T> ::const_iterator iterA;</ div >
< div class = "line" >< a id = "l00136" name = "l00136" ></ a >< span class = "lineno" > 136</ span > < span class = "keyword" > typename</ span > std::multimap< int, T> ::const_iterator iterB;</ div >
< div class = "line" >< a id = "l00137" name = "l00137" ></ a >< span class = "lineno" > 137</ span > pairs.clear();</ div >
< div class = "line" >< a id = "l00138" name = "l00138" ></ a >< span class = "lineno" > 138</ span > < span class = "keywordtype" > int</ span > realPairsCount = 0;</ div >
< div class = "line" >< a id = "l00139" name = "l00139" ></ a >< span class = "lineno" > 139</ span > < span class = "keywordflow" > for</ span > (std::list< int> ::const_iterator i=ids.begin(); i!=ids.end(); ++i)</ div >
< div class = "line" >< a id = "l00140" name = "l00140" ></ a >< span class = "lineno" > 140</ span > {</ div >
< div class = "line" >< a id = "l00141" name = "l00141" ></ a >< span class = "lineno" > 141</ span > < span class = "keywordflow" > if</ span > (!ignoreNegativeIds || (ignoreNegativeIds && *i > = 0))</ div >
< div class = "line" >< a id = "l00142" name = "l00142" ></ a >< span class = "lineno" > 142</ span > {</ div >
< div class = "line" >< a id = "l00143" name = "l00143" ></ a >< span class = "lineno" > 143</ span > iterA = wordsA.find(*i);</ div >
< div class = "line" >< a id = "l00144" name = "l00144" ></ a >< span class = "lineno" > 144</ span > iterB = wordsB.find(*i);</ div >
< div class = "line" >< a id = "l00145" name = "l00145" ></ a >< span class = "lineno" > 145</ span > < span class = "keywordflow" > while</ span > (iterA != wordsA.end() && iterB != wordsB.end() && (*iterA).first == (*iterB).first && (*iterA).first == *i)</ div >
< div class = "line" >< a id = "l00146" name = "l00146" ></ a >< span class = "lineno" > 146</ span > {</ div >
< div class = "line" >< a id = "l00147" name = "l00147" ></ a >< span class = "lineno" > 147</ span > pairs.push_back(std::pair< < span class = "keywordtype" > int</ span > , std::pair< T, T> > (*i, std::make_pair((*iterA).second, (*iterB).second)));</ div >
< div class = "line" >< a id = "l00148" name = "l00148" ></ a >< span class = "lineno" > 148</ span > ++iterA;</ div >
< div class = "line" >< a id = "l00149" name = "l00149" ></ a >< span class = "lineno" > 149</ span > ++iterB;</ div >
< div class = "line" >< a id = "l00150" name = "l00150" ></ a >< span class = "lineno" > 150</ span > ++realPairsCount;</ div >
< div class = "line" >< a id = "l00151" name = "l00151" ></ a >< span class = "lineno" > 151</ span > }</ div >
< div class = "line" >< a id = "l00152" name = "l00152" ></ a >< span class = "lineno" > 152</ span > }</ div >
< div class = "line" >< a id = "l00153" name = "l00153" ></ a >< span class = "lineno" > 153</ span > }</ div >
< div class = "line" >< a id = "l00154" name = "l00154" ></ a >< span class = "lineno" > 154</ span > < span class = "keywordflow" > return</ span > realPairsCount;</ div >
< div class = "line" >< a id = "l00155" name = "l00155" ></ a >< span class = "lineno" > 155</ span > }</ div >
</ div >
< div class = "line" >< a id = "l00156" name = "l00156" ></ a >< span class = "lineno" > 156</ span > </ div >
< div class = "line" >< a id = "l00161" name = "l00161" ></ a >< span class = "lineno" > 161</ span > < span class = "keyword" > template</ span > < < span class = "keyword" > typename</ span > T> </ div >
< div class = "foldopen" id = "foldopen00162" data-start = "{" data-end = "}" >
< div class = "line" >< a id = "l00162" name = "l00162" ></ a >< span class = "lineno" >< a class = "line" href = "classrtabmap_1_1EpipolarGeometry.html#a7c3886c647a098d33a88640ed2477e24" > 162</ a ></ span > < span class = "keyword" > static</ span > < span class = "keywordtype" > int</ span > < a class = "code hl_function" href = "classrtabmap_1_1EpipolarGeometry.html#a7c3886c647a098d33a88640ed2477e24" > findPairsUnique</ a > (</ div >
< div class = "line" >< a id = "l00163" name = "l00163" ></ a >< span class = "lineno" > 163</ span > < span class = "keyword" > const</ span > std::multimap< int, T> & wordsA,</ div >
< div class = "line" >< a id = "l00164" name = "l00164" ></ a >< span class = "lineno" > 164</ span > < span class = "keyword" > const</ span > std::multimap< int, T> & wordsB,</ div >
< div class = "line" >< a id = "l00165" name = "l00165" ></ a >< span class = "lineno" > 165</ span > std::list< std::pair< < span class = "keywordtype" > int</ span > , std::pair< T, T> > > & pairs,</ div >
< div class = "line" >< a id = "l00166" name = "l00166" ></ a >< span class = "lineno" > 166</ span > < span class = "keywordtype" > bool</ span > ignoreNegativeIds = < span class = "keyword" > true</ span > )</ div >
< div class = "line" >< a id = "l00167" name = "l00167" ></ a >< span class = "lineno" > 167</ span > {</ div >
< div class = "line" >< a id = "l00168" name = "l00168" ></ a >< span class = "lineno" > 168</ span > < span class = "keyword" > const</ span > std::list< int> & ids = < a class = "code hl_function" href = "UStl_8h.html#a62335030b4c0d80f80e7c4a21721c05e" > uUniqueKeys</ a > (wordsA);</ div >
< div class = "line" >< a id = "l00169" name = "l00169" ></ a >< span class = "lineno" > 169</ span > < span class = "keywordtype" > int</ span > realPairsCount = 0;</ div >
< div class = "line" >< a id = "l00170" name = "l00170" ></ a >< span class = "lineno" > 170</ span > pairs.clear();</ div >
< div class = "line" >< a id = "l00171" name = "l00171" ></ a >< span class = "lineno" > 171</ span > < span class = "keywordflow" > for</ span > (std::list< int> ::const_iterator i=ids.begin(); i!=ids.end(); ++i)</ div >
< div class = "line" >< a id = "l00172" name = "l00172" ></ a >< span class = "lineno" > 172</ span > {</ div >
< div class = "line" >< a id = "l00173" name = "l00173" ></ a >< span class = "lineno" > 173</ span > < span class = "keywordflow" > if</ span > (!ignoreNegativeIds || (ignoreNegativeIds && *i> =0))</ div >
< div class = "line" >< a id = "l00174" name = "l00174" ></ a >< span class = "lineno" > 174</ span > {</ div >
< div class = "line" >< a id = "l00175" name = "l00175" ></ a >< span class = "lineno" > 175</ span > std::list< T> ptsA = < a class = "code hl_function" href = "UStl_8h.html#a745b929c605a3d6b0014dff0c9c2a314" > uValues</ a > (wordsA, *i);</ div >
< div class = "line" >< a id = "l00176" name = "l00176" ></ a >< span class = "lineno" > 176</ span > std::list< T> ptsB = < a class = "code hl_function" href = "UStl_8h.html#a745b929c605a3d6b0014dff0c9c2a314" > uValues</ a > (wordsB, *i);</ div >
< div class = "line" >< a id = "l00177" name = "l00177" ></ a >< span class = "lineno" > 177</ span > < span class = "keywordflow" > if</ span > (ptsA.size() == 1 && ptsB.size() == 1)</ div >
< div class = "line" >< a id = "l00178" name = "l00178" ></ a >< span class = "lineno" > 178</ span > {</ div >
< div class = "line" >< a id = "l00179" name = "l00179" ></ a >< span class = "lineno" > 179</ span > pairs.push_back(std::pair< < span class = "keywordtype" > int</ span > , std::pair< T, T> > (*i, std::pair< T, T> (ptsA.front(), ptsB.front())));</ div >
< div class = "line" >< a id = "l00180" name = "l00180" ></ a >< span class = "lineno" > 180</ span > ++realPairsCount;</ div >
< div class = "line" >< a id = "l00181" name = "l00181" ></ a >< span class = "lineno" > 181</ span > }</ div >
< div class = "line" >< a id = "l00182" name = "l00182" ></ a >< span class = "lineno" > 182</ span > < span class = "keywordflow" > else</ span > < span class = "keywordflow" > if</ span > (ptsA.size()> 1 && ptsB.size()> 1)</ div >
< div class = "line" >< a id = "l00183" name = "l00183" ></ a >< span class = "lineno" > 183</ span > {</ div >
< div class = "line" >< a id = "l00184" name = "l00184" ></ a >< span class = "lineno" > 184</ span > < span class = "comment" > // just update the count</ span ></ div >
< div class = "line" >< a id = "l00185" name = "l00185" ></ a >< span class = "lineno" > 185</ span > realPairsCount += ptsA.size() > ptsB.size() ? ptsB.size() : ptsA.size();</ div >
< div class = "line" >< a id = "l00186" name = "l00186" ></ a >< span class = "lineno" > 186</ span > }</ div >
< div class = "line" >< a id = "l00187" name = "l00187" ></ a >< span class = "lineno" > 187</ span > }</ div >
< div class = "line" >< a id = "l00188" name = "l00188" ></ a >< span class = "lineno" > 188</ span > }</ div >
< div class = "line" >< a id = "l00189" name = "l00189" ></ a >< span class = "lineno" > 189</ span > < span class = "keywordflow" > return</ span > realPairsCount;</ div >
< div class = "line" >< a id = "l00190" name = "l00190" ></ a >< span class = "lineno" > 190</ span > }</ div >
</ div >
< div class = "line" >< a id = "l00191" name = "l00191" ></ a >< span class = "lineno" > 191</ span > </ div >
< div class = "line" >< a id = "l00196" name = "l00196" ></ a >< span class = "lineno" > 196</ span > < span class = "keyword" > template</ span > < < span class = "keyword" > typename</ span > T> </ div >
< div class = "foldopen" id = "foldopen00197" data-start = "{" data-end = "}" >
< div class = "line" >< a id = "l00197" name = "l00197" ></ a >< span class = "lineno" >< a class = "line" href = "classrtabmap_1_1EpipolarGeometry.html#adfcc58ee756cb99887c6d8807bc7104c" > 197</ a ></ span > < span class = "keyword" > static</ span > < span class = "keywordtype" > int</ span > < a class = "code hl_function" href = "classrtabmap_1_1EpipolarGeometry.html#adfcc58ee756cb99887c6d8807bc7104c" > findPairsAll</ a > (</ div >
< div class = "line" >< a id = "l00198" name = "l00198" ></ a >< span class = "lineno" > 198</ span > < span class = "keyword" > const</ span > std::multimap< int, T> & wordsA,</ div >
< div class = "line" >< a id = "l00199" name = "l00199" ></ a >< span class = "lineno" > 199</ span > < span class = "keyword" > const</ span > std::multimap< int, T> & wordsB,</ div >
< div class = "line" >< a id = "l00200" name = "l00200" ></ a >< span class = "lineno" > 200</ span > std::list< std::pair< < span class = "keywordtype" > int</ span > , std::pair< T, T> > > & pairs,</ div >
< div class = "line" >< a id = "l00201" name = "l00201" ></ a >< span class = "lineno" > 201</ span > < span class = "keywordtype" > bool</ span > ignoreNegativeIds = < span class = "keyword" > true</ span > )</ div >
< div class = "line" >< a id = "l00202" name = "l00202" ></ a >< span class = "lineno" > 202</ span > {</ div >
< div class = "line" >< a id = "l00203" name = "l00203" ></ a >< span class = "lineno" > 203</ span > < span class = "keyword" > const</ span > std::list< int> & ids = < a class = "code hl_function" href = "UStl_8h.html#a62335030b4c0d80f80e7c4a21721c05e" > uUniqueKeys</ a > (wordsA);</ div >
< div class = "line" >< a id = "l00204" name = "l00204" ></ a >< span class = "lineno" > 204</ span > pairs.clear();</ div >
< div class = "line" >< a id = "l00205" name = "l00205" ></ a >< span class = "lineno" > 205</ span > < span class = "keywordtype" > int</ span > realPairsCount = 0;;</ div >
< div class = "line" >< a id = "l00206" name = "l00206" ></ a >< span class = "lineno" > 206</ span > < span class = "keywordflow" > for</ span > (std::list< int> ::const_iterator iter=ids.begin(); iter!=ids.end(); ++iter)</ div >
< div class = "line" >< a id = "l00207" name = "l00207" ></ a >< span class = "lineno" > 207</ span > {</ div >
< div class = "line" >< a id = "l00208" name = "l00208" ></ a >< span class = "lineno" > 208</ span > < span class = "keywordflow" > if</ span > (!ignoreNegativeIds || (ignoreNegativeIds && *iter> =0))</ div >
< div class = "line" >< a id = "l00209" name = "l00209" ></ a >< span class = "lineno" > 209</ span > {</ div >
< div class = "line" >< a id = "l00210" name = "l00210" ></ a >< span class = "lineno" > 210</ span > std::list< T> ptsA = < a class = "code hl_function" href = "UStl_8h.html#a745b929c605a3d6b0014dff0c9c2a314" > uValues</ a > (wordsA, *iter);</ div >
< div class = "line" >< a id = "l00211" name = "l00211" ></ a >< span class = "lineno" > 211</ span > std::list< T> ptsB = < a class = "code hl_function" href = "UStl_8h.html#a745b929c605a3d6b0014dff0c9c2a314" > uValues</ a > (wordsB, *iter);</ div >
< div class = "line" >< a id = "l00212" name = "l00212" ></ a >< span class = "lineno" > 212</ span > </ div >
< div class = "line" >< a id = "l00213" name = "l00213" ></ a >< span class = "lineno" > 213</ span > realPairsCount += ptsA.size() > ptsB.size() ? ptsB.size() : ptsA.size();</ div >
< div class = "line" >< a id = "l00214" name = "l00214" ></ a >< span class = "lineno" > 214</ span > </ div >
< div class = "line" >< a id = "l00215" name = "l00215" ></ a >< span class = "lineno" > 215</ span > < span class = "keywordflow" > for</ span > (< span class = "keyword" > typename</ span > std::list< T> ::iterator jter=ptsA.begin(); jter!=ptsA.end(); ++jter)</ div >
< div class = "line" >< a id = "l00216" name = "l00216" ></ a >< span class = "lineno" > 216</ span > {</ div >
< div class = "line" >< a id = "l00217" name = "l00217" ></ a >< span class = "lineno" > 217</ span > < span class = "keywordflow" > for</ span > (< span class = "keyword" > typename</ span > std::list< T> ::iterator kter=ptsB.begin(); kter!=ptsB.end(); ++kter)</ div >
< div class = "line" >< a id = "l00218" name = "l00218" ></ a >< span class = "lineno" > 218</ span > {</ div >
< div class = "line" >< a id = "l00219" name = "l00219" ></ a >< span class = "lineno" > 219</ span > pairs.push_back(std::pair< < span class = "keywordtype" > int</ span > , std::pair< T, T> > (*iter, std::pair< T, T> (*jter, *kter)));</ div >
< div class = "line" >< a id = "l00220" name = "l00220" ></ a >< span class = "lineno" > 220</ span > }</ div >
< div class = "line" >< a id = "l00221" name = "l00221" ></ a >< span class = "lineno" > 221</ span > }</ div >
< div class = "line" >< a id = "l00222" name = "l00222" ></ a >< span class = "lineno" > 222</ span > }</ div >
< div class = "line" >< a id = "l00223" name = "l00223" ></ a >< span class = "lineno" > 223</ span > }</ div >
< div class = "line" >< a id = "l00224" name = "l00224" ></ a >< span class = "lineno" > 224</ span > < span class = "keywordflow" > return</ span > realPairsCount;</ div >
< div class = "line" >< a id = "l00225" name = "l00225" ></ a >< span class = "lineno" > 225</ span > }</ div >
</ div >
< div class = "line" >< a id = "l00226" name = "l00226" ></ a >< span class = "lineno" > 226</ span > </ div >
< div class = "line" >< a id = "l00227" name = "l00227" ></ a >< span class = "lineno" > 227</ span > < span class = "keyword" > static</ span > cv::Mat linearLSTriangulation(</ div >
< div class = "line" >< a id = "l00228" name = "l00228" ></ a >< span class = "lineno" > 228</ span > cv::Point3d u, < span class = "comment" > //homogenous image point (u,v,1)</ span ></ div >
< div class = "line" >< a id = "l00229" name = "l00229" ></ a >< span class = "lineno" > 229</ span > cv::Matx34d P, < span class = "comment" > //camera 1 matrix 3x4 double</ span ></ div >
< div class = "line" >< a id = "l00230" name = "l00230" ></ a >< span class = "lineno" > 230</ span > cv::Point3d u1, < span class = "comment" > //homogenous image point in 2nd camera</ span ></ div >
< div class = "line" >< a id = "l00231" name = "l00231" ></ a >< span class = "lineno" > 231</ span > cv::Matx34d P1); < span class = "comment" > //camera 2 matrix 3x4 double</ span ></ div >
< div class = "line" >< a id = "l00232" name = "l00232" ></ a >< span class = "lineno" > 232</ span > </ div >
< div class = "line" >< a id = "l00233" name = "l00233" ></ a >< span class = "lineno" > 233</ span > < span class = "keyword" > static</ span > cv::Mat iterativeLinearLSTriangulation(</ div >
< div class = "line" >< a id = "l00234" name = "l00234" ></ a >< span class = "lineno" > 234</ span > cv::Point3d u, < span class = "comment" > //homogenous image point (u,v,1)</ span ></ div >
< div class = "line" >< a id = "l00235" name = "l00235" ></ a >< span class = "lineno" > 235</ span > < span class = "keyword" > const</ span > cv::Matx34d & P, < span class = "comment" > //camera 1 matrix 3x4 double</ span ></ div >
< div class = "line" >< a id = "l00236" name = "l00236" ></ a >< span class = "lineno" > 236</ span > cv::Point3d u1, < span class = "comment" > //homogenous image point in 2nd camera</ span ></ div >
< div class = "line" >< a id = "l00237" name = "l00237" ></ a >< span class = "lineno" > 237</ span > < span class = "keyword" > const</ span > cv::Matx34d & P1); < span class = "comment" > //camera 2 matrix 3x4 double</ span ></ div >
< div class = "line" >< a id = "l00238" name = "l00238" ></ a >< span class = "lineno" > 238</ span > </ div >
< div class = "line" >< a id = "l00239" name = "l00239" ></ a >< span class = "lineno" > 239</ span > < span class = "keyword" > static</ span > < span class = "keywordtype" > double</ span > triangulatePoints(</ div >
< div class = "line" >< a id = "l00240" name = "l00240" ></ a >< span class = "lineno" > 240</ span > < span class = "keyword" > const</ span > cv::Mat& pt_set1, < span class = "comment" > //2xN double</ span ></ div >
< div class = "line" >< a id = "l00241" name = "l00241" ></ a >< span class = "lineno" > 241</ span > < span class = "keyword" > const</ span > cv::Mat& pt_set2, < span class = "comment" > //2xN double</ span ></ div >
< div class = "line" >< a id = "l00242" name = "l00242" ></ a >< span class = "lineno" > 242</ span > < span class = "keyword" > const</ span > cv::Mat& P, < span class = "comment" > // 3x4 double</ span ></ div >
< div class = "line" >< a id = "l00243" name = "l00243" ></ a >< span class = "lineno" > 243</ span > < span class = "keyword" > const</ span > cv::Mat& P1, < span class = "comment" > // 3x4 double</ span ></ div >
< div class = "line" >< a id = "l00244" name = "l00244" ></ a >< span class = "lineno" > 244</ span > pcl::PointCloud< pcl::PointXYZ> ::Ptr & pointcloud,</ div >
< div class = "line" >< a id = "l00245" name = "l00245" ></ a >< span class = "lineno" > 245</ span > std::vector< double> & reproj_errors);</ div >
< div class = "line" >< a id = "l00246" name = "l00246" ></ a >< span class = "lineno" > 246</ span > </ div >
< div class = "line" >< a id = "l00247" name = "l00247" ></ a >< span class = "lineno" > 247</ span >< span class = "keyword" > private</ span > :</ div >
< div class = "line" >< a id = "l00248" name = "l00248" ></ a >< span class = "lineno" > 248</ span > < span class = "keywordtype" > int</ span > _matchCountMinAccepted;</ div >
< div class = "line" >< a id = "l00249" name = "l00249" ></ a >< span class = "lineno" > 249</ span > < span class = "keywordtype" > double</ span > _ransacParam1;</ div >
< div class = "line" >< a id = "l00250" name = "l00250" ></ a >< span class = "lineno" > 250</ span > < span class = "keywordtype" > double</ span > _ransacParam2;</ div >
< div class = "line" >< a id = "l00251" name = "l00251" ></ a >< span class = "lineno" > 251</ span > };</ div >
</ div >
< div class = "line" >< a id = "l00252" name = "l00252" ></ a >< span class = "lineno" > 252</ span > </ div >
< div class = "line" >< a id = "l00253" name = "l00253" ></ a >< span class = "lineno" > 253</ span > } < span class = "comment" > // namespace rtabmap</ span ></ div >
< div class = "ttc" id = "aUStl_8h_html" >< div class = "ttname" >< a href = "UStl_8h.html" > UStl.h</ a ></ div >< div class = "ttdoc" > Wrappers of STL for convenient functions.</ div ></ div >
< div class = "ttc" id = "aUStl_8h_html_a62335030b4c0d80f80e7c4a21721c05e" >< div class = "ttname" >< a href = "UStl_8h.html#a62335030b4c0d80f80e7c4a21721c05e" > uUniqueKeys</ a ></ div >< div class = "ttdeci" > std::list< K > uUniqueKeys(const std::multimap< K, V > & mm)</ div >< div class = "ttdef" >< b > Definition</ b > < a href = "UStl_8h_source.html#l00046" > UStl.h:46</ a ></ div ></ div >
< div class = "ttc" id = "aUStl_8h_html_a745b929c605a3d6b0014dff0c9c2a314" >< div class = "ttname" >< a href = "UStl_8h.html#a745b929c605a3d6b0014dff0c9c2a314" > uValues</ a ></ div >< div class = "ttdeci" > std::vector< V > uValues(const std::multimap< K, V > & mm)</ div >< div class = "ttdef" >< b > Definition</ b > < a href = "UStl_8h_source.html#l00100" > UStl.h:100</ a ></ div ></ div >
< div class = "ttc" id = "aclassrtabmap_1_1EpipolarGeometry_html" >< div class = "ttname" >< a href = "classrtabmap_1_1EpipolarGeometry.html" > rtabmap::EpipolarGeometry</ a ></ div >< div class = "ttdef" >< b > Definition</ b > < a href = "EpipolarGeometry_8h_source.html#l00049" > EpipolarGeometry.h:50</ a ></ div ></ div >
< div class = "ttc" id = "aclassrtabmap_1_1EpipolarGeometry_html_a7c3886c647a098d33a88640ed2477e24" >< div class = "ttname" >< a href = "classrtabmap_1_1EpipolarGeometry.html#a7c3886c647a098d33a88640ed2477e24" > rtabmap::EpipolarGeometry::findPairsUnique</ a ></ div >< div class = "ttdeci" > static int findPairsUnique(const std::multimap< int, T > & wordsA, const std::multimap< int, T > & wordsB, std::list< std::pair< int, std::pair< T, T > > > & pairs, bool ignoreNegativeIds=true)</ div >< div class = "ttdef" >< b > Definition</ b > < a href = "EpipolarGeometry_8h_source.html#l00162" > EpipolarGeometry.h:162</ a ></ div ></ div >
< div class = "ttc" id = "aclassrtabmap_1_1EpipolarGeometry_html_a8fc121340b9d638dc9b8c69f2d86c5e7" >< div class = "ttname" >< a href = "classrtabmap_1_1EpipolarGeometry.html#a8fc121340b9d638dc9b8c69f2d86c5e7" > rtabmap::EpipolarGeometry::findPairs</ a ></ div >< div class = "ttdeci" > static int findPairs(const std::multimap< int, T > & wordsA, const std::multimap< int, T > & wordsB, std::list< std::pair< int, std::pair< T, T > > > & pairs, bool ignoreNegativeIds=true)</ div >< div class = "ttdef" >< b > Definition</ b > < a href = "EpipolarGeometry_8h_source.html#l00128" > EpipolarGeometry.h:128</ a ></ div ></ div >
< div class = "ttc" id = "aclassrtabmap_1_1EpipolarGeometry_html_ace979984a7d97ccaa18bf0764318d342" >< div class = "ttname" >< a href = "classrtabmap_1_1EpipolarGeometry.html#ace979984a7d97ccaa18bf0764318d342" > rtabmap::EpipolarGeometry::findPairs</ a ></ div >< div class = "ttdeci" > static int findPairs(const std::map< int, T > & wordsA, const std::map< int, T > & wordsB, std::list< std::pair< int, std::pair< T, T > > > & pairs, bool ignoreNegativeIds=true)</ div >< div class = "ttdef" >< b > Definition</ b > < a href = "EpipolarGeometry_8h_source.html#l00100" > EpipolarGeometry.h:100</ a ></ div ></ div >
< div class = "ttc" id = "aclassrtabmap_1_1EpipolarGeometry_html_adfcc58ee756cb99887c6d8807bc7104c" >< div class = "ttname" >< a href = "classrtabmap_1_1EpipolarGeometry.html#adfcc58ee756cb99887c6d8807bc7104c" > rtabmap::EpipolarGeometry::findPairsAll</ a ></ div >< div class = "ttdeci" > static int findPairsAll(const std::multimap< int, T > & wordsA, const std::multimap< int, T > & wordsB, std::list< std::pair< int, std::pair< T, T > > > & pairs, bool ignoreNegativeIds=true)</ div >< div class = "ttdef" >< b > Definition</ b > < a href = "EpipolarGeometry_8h_source.html#l00197" > EpipolarGeometry.h:197</ a ></ div ></ div >
< div class = "ttc" id = "aclassrtabmap_1_1Signature_html" >< div class = "ttname" >< a href = "classrtabmap_1_1Signature.html" > rtabmap::Signature</ a ></ div >< div class = "ttdoc" > Represents a node in RTAB-Map's pose graph.</ div >< div class = "ttdef" >< b > Definition</ b > < a href = "Signature_8h_source.html#l00083" > Signature.h:84</ a ></ div ></ div >
< div class = "ttc" id = "anamespacertabmap_html" >< div class = "ttname" >< a href = "namespacertabmap.html" > rtabmap</ a ></ div >< div class = "ttdef" >< b > Definition</ b > < a href = "BayesFilter_8h_source.html#l00039" > BayesFilter.h:39</ a ></ div ></ div >
2026-08-02 07:56:38 +00:00
< div class = "ttc" id = "anamespacertabmap_html_ad08b6f1796a27dd7316c99c385e2cc55" >< div class = "ttname" >< a href = "namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55" > rtabmap::ParametersMap</ a ></ div >< div class = "ttdeci" > std::map< std::string, std::string > ParametersMap</ div >< div class = "ttdoc" > Parameter keys mapped to their values, as used by every configurable class (see Parameters).</ div >< div class = "ttdef" >< b > Definition</ b > < a href = "Parameters_8h_source.html#l00044" > Parameters.h:44</ a ></ div ></ div >
2026-08-02 01:36:11 +00:00
</ div > <!-- fragment --> </ div > <!-- contents -->
2026-08-02 07:56:38 +00:00
</ div > <!-- doc-content -->
2026-08-02 01:36:11 +00:00
<!-- start footer part -->
2026-08-02 07:56:38 +00:00
< div id = "nav-path" class = "navpath" > <!-- id is needed for treeview function! -->
< ul >
< li class = "navelem" >< a class = "el" href = "dir_04d49acea3c42cab2afcd35cb2f2a48f.html" > corelib</ a ></ li >< li class = "navelem" >< a class = "el" href = "dir_e996b11fd4b3a747423759b16a8ba4a6.html" > include</ a ></ li >< li class = "navelem" >< a class = "el" href = "dir_ff01f7bc5399ccf9ff1cc91d1f45726a.html" > rtabmap</ a ></ li >< li class = "navelem" >< a class = "el" href = "dir_884419f21456e80aa47bc1d0c2ab0140.html" > core</ a ></ li >< li class = "navelem" >< b > EpipolarGeometry.h</ b ></ li >
< li class = "footer" > Generated by < a href = "https://www.doxygen.org/index.html" >< img class = "footer" src = "doxygen.svg" width = "104" height = "31" alt = "doxygen" /></ a > 1.9.8 </ li >
</ ul >
</ div >
2026-08-02 01:36:11 +00:00
</ body >
</ html >