Files
rtabmap/api/latest/group__ComputeVarianceAndCorrespondences.html
T

161 lines
11 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!-- HTML header for doxygen 1.9.8-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>RTAB-Map: Compute Variance and Correspondences of Two Point Clouds</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygen-awesome.css" rel="stylesheet" type="text/css"/>
<link href="custom.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript">window.RTABMAP_DOC_ROOT="";</script>
<script type="text/javascript" src="../versions.js"></script>
<script type="text/javascript" src="version-switcher.js"></script>
<script type="text/javascript" src="doxygen-awesome-darkmode-toggle.js"></script>
<script type="text/javascript">DoxygenAwesomeDarkModeToggle.init();</script>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">RTAB-Map<span id="projectnumber">&#160;0.23.11</span>
</div>
<div id="projectbrief">Real-Time Appearance-Based Mapping</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function(){initNavTree('group__ComputeVarianceAndCorrespondences.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="#func-members">Functions</a> </div>
<div class="headertitle"><div class="title">Compute Variance and Correspondences of Two Point Clouds</div></div>
</div><!--header-->
<div class="contents">
<p>Computes the geometric variance and number of valid correspondences between two point clouds.
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:gaf474f9fb6eaaf532e9b18af63b9e1665" id="r_gaf474f9fb6eaaf532e9b18af63b9e1665"><td class="memItemLeft" align="right" valign="top"><a id="gaf474f9fb6eaaf532e9b18af63b9e1665" name="gaf474f9fb6eaaf532e9b18af63b9e1665"></a>
void RTABMAP_CORE_EXPORT&#160;</td><td class="memItemRight" valign="bottom"><b>rtabmap::util3d::computeVarianceAndCorrespondences</b> (const pcl::PointCloud&lt; pcl::PointNormal &gt;::ConstPtr &amp;cloudA, const pcl::PointCloud&lt; pcl::PointNormal &gt;::ConstPtr &amp;cloudB, double maxCorrespondenceDistance, double maxCorrespondenceAngle, double &amp;variance, int &amp;correspondencesOut, bool reciprocal)</td></tr>
<tr class="memdesc:gaf474f9fb6eaaf532e9b18af63b9e1665"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compute with variance and correspondences of <code>pcl::PointNormal</code> point cloud type. <br /></td></tr>
<tr class="separator:gaf474f9fb6eaaf532e9b18af63b9e1665"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaae6ddd0517614e9332669c37c6816777" id="r_gaae6ddd0517614e9332669c37c6816777"><td class="memItemLeft" align="right" valign="top"><a id="gaae6ddd0517614e9332669c37c6816777" name="gaae6ddd0517614e9332669c37c6816777"></a>
void RTABMAP_CORE_EXPORT&#160;</td><td class="memItemRight" valign="bottom"><b>rtabmap::util3d::computeVarianceAndCorrespondences</b> (const pcl::PointCloud&lt; pcl::PointXYZINormal &gt;::ConstPtr &amp;cloudA, const pcl::PointCloud&lt; pcl::PointXYZINormal &gt;::ConstPtr &amp;cloudB, double maxCorrespondenceDistance, double maxCorrespondenceAngle, double &amp;variance, int &amp;correspondencesOut, bool reciprocal)</td></tr>
<tr class="memdesc:gaae6ddd0517614e9332669c37c6816777"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compute with variance and correspondences of <code>pcl::PointXYZINormal</code> point cloud type. <br /></td></tr>
<tr class="separator:gaae6ddd0517614e9332669c37c6816777"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga92518a7b79e9265380f3a047e46ec247" id="r_ga92518a7b79e9265380f3a047e46ec247"><td class="memItemLeft" align="right" valign="top"><a id="ga92518a7b79e9265380f3a047e46ec247" name="ga92518a7b79e9265380f3a047e46ec247"></a>
void RTABMAP_CORE_EXPORT&#160;</td><td class="memItemRight" valign="bottom"><b>rtabmap::util3d::computeVarianceAndCorrespondences</b> (const pcl::PointCloud&lt; pcl::PointXYZ &gt;::ConstPtr &amp;cloudA, const pcl::PointCloud&lt; pcl::PointXYZ &gt;::ConstPtr &amp;cloudB, double maxCorrespondenceDistance, double &amp;variance, int &amp;correspondencesOut, bool reciprocal)</td></tr>
<tr class="memdesc:ga92518a7b79e9265380f3a047e46ec247"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compute with variance and correspondences of <code>pcl::PointXYZ</code> point cloud type. <br /></td></tr>
<tr class="separator:ga92518a7b79e9265380f3a047e46ec247"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7d90c0848a13e35f37588addf3637fe2" id="r_ga7d90c0848a13e35f37588addf3637fe2"><td class="memItemLeft" align="right" valign="top"><a id="ga7d90c0848a13e35f37588addf3637fe2" name="ga7d90c0848a13e35f37588addf3637fe2"></a>
void RTABMAP_CORE_EXPORT&#160;</td><td class="memItemRight" valign="bottom"><b>rtabmap::util3d::computeVarianceAndCorrespondences</b> (const pcl::PointCloud&lt; pcl::PointXYZI &gt;::ConstPtr &amp;cloudA, const pcl::PointCloud&lt; pcl::PointXYZI &gt;::ConstPtr &amp;cloudB, double maxCorrespondenceDistance, double &amp;variance, int &amp;correspondencesOut, bool reciprocal)</td></tr>
<tr class="memdesc:ga7d90c0848a13e35f37588addf3637fe2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compute with variance and correspondences of <code>pcl::PointXYZI</code> point cloud type. <br /></td></tr>
<tr class="separator:ga7d90c0848a13e35f37588addf3637fe2"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<p>Computes the geometric variance and number of valid correspondences between two point clouds. </p>
<p>This function estimates correspondences between two point clouds and computes a variance measure (based on squared median error) for the inlier correspondences. Optionally filters correspondences by normal alignment angle if the point cloud has normals.</p>
<p>The correspondence estimation uses PCL's reciprocal correspondence logic by default. The target and source clouds are automatically chosen based on their sizes (the larger becomes the target to ensure optimal matching behavior).</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir"></td><td class="paramname">cloudA</td><td>First input point cloud (used interchangeably with cloudB for matching). </td></tr>
<tr><td class="paramdir"></td><td class="paramname">cloudB</td><td>Second input point cloud. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">maxCorrespondenceDistance</td><td>Maximum allowable Euclidean distance between correspondences. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">maxCorrespondenceAngle</td><td>Maximum angle (in radians) between normals for correspondences to be considered valid. If ≤ 0, angle filtering is disabled. </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">variance</td><td>Output variance value (estimated using 2.1981 × median squared distance of inliers). </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">correspondencesOut</td><td>Output number of correspondences that passed all filters (distance and optional angle). </td></tr>
<tr><td class="paramdir"></td><td class="paramname">reciprocal</td><td>If true, use reciprocal correspondences.</td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>This function chooses the target/source roles based on cloud size (the larger becomes the target). </dd>
<dd>
The normal comparison is only applied if <code>maxCorrespondenceAngle &gt; 0</code>. </dd>
<dd>
The computed <code>variance</code> is based on a robust estimator using the median squared distance of correspondences.</dd></dl>
<dl class="section see"><dt>See also</dt><dd>pcl::registration::CorrespondenceEstimation </dd></dl>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<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>