mirror of
https://github.com/introlab/rtabmap.git
synced 2026-10-04 00:57:46 +08:00
8698 lines
677 KiB
HTML
8698 lines
677 KiB
HTML
<!-- 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::util3d Namespace Reference</title>
|
||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||
<script type="text/javascript" src="jquery.js"></script>
|
||
<script type="text/javascript" src="dynsections.js"></script>
|
||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||
<script type="text/javascript" src="resize.js"></script>
|
||
<script type="text/javascript" src="navtreedata.js"></script>
|
||
<script type="text/javascript" src="navtree.js"></script>
|
||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||
<script type="text/javascript" src="search/search.js"></script>
|
||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||
<link href="doxygen-awesome.css" rel="stylesheet" type="text/css"/>
|
||
<link href="custom.css" rel="stylesheet" type="text/css"/>
|
||
<script type="text/javascript">window.RTABMAP_DOC_ROOT="";</script>
|
||
<script type="text/javascript" src="../versions.js"></script>
|
||
<script type="text/javascript" src="version-switcher.js"></script>
|
||
<script type="text/javascript" src="doxygen-awesome-darkmode-toggle.js"></script>
|
||
<script type="text/javascript">DoxygenAwesomeDarkModeToggle.init();</script>
|
||
</head>
|
||
<body>
|
||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||
<div id="titlearea">
|
||
<table cellspacing="0" cellpadding="0">
|
||
<tbody>
|
||
<tr id="projectrow">
|
||
<td id="projectalign">
|
||
<div id="projectname">RTAB-Map<span id="projectnumber"> 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&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('namespacertabmap_1_1util3d.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">rtabmap::util3d Namespace Reference</div></div>
|
||
</div><!--header-->
|
||
<div class="contents">
|
||
|
||
<p>3D utilities: point cloud conversion and filtering, projection, registration, surface reconstruction, mapping and transforms.
|
||
<a href="namespacertabmap_1_1util3d.html#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:ga078f5eae0077169e636ec76e03973edc" id="r_ga078f5eae0077169e636ec76e03973edc"><td class="memTemplParams" colspan="2">template<typename PointCloud2T > </td></tr>
|
||
<tr class="memitem:ga078f5eae0077169e636ec76e03973edc"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__LaserScanFromPointCloud.html#ga078f5eae0077169e636ec76e03973edc">laserScanFromPointCloud</a> (const PointCloud2T &cloud, bool filterNaNs=true, bool is2D=false, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &transform=<a class="el" href="classrtabmap_1_1Transform.html">Transform</a>())</td></tr>
|
||
<tr class="memdesc:ga078f5eae0077169e636ec76e03973edc"><td class="mdescLeft"> </td><td class="mdescRight">Convert <code>pcl::PCLPointCloud2</code> to <a class="el" href="classrtabmap_1_1LaserScan.html" title="Represents 2D or 3D laser scan data with support for multiple point data formats.">rtabmap::LaserScan</a> with all supported fields (see <a class="el" href="classrtabmap_1_1LaserScan.html#a38f5602d1411c204d54be9b3c7320007" title="Enumeration of possible formats for laser scan data.">rtabmap::LaserScan::Format</a>) <br /></td></tr>
|
||
<tr class="separator:ga078f5eae0077169e636ec76e03973edc"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a3bdae076cc5054f35393b744f478b980" id="r_a3bdae076cc5054f35393b744f478b980"><td class="memTemplParams" colspan="2">template<typename PointT > </td></tr>
|
||
<tr class="memitem:a3bdae076cc5054f35393b744f478b980"><td class="memTemplItemLeft" align="right" valign="top">pcl::PointCloud< PointT >::Ptr </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#a3bdae076cc5054f35393b744f478b980">projectCloudOnXYPlane</a> (const typename pcl::PointCloud< PointT > &cloud)</td></tr>
|
||
<tr class="memdesc:a3bdae076cc5054f35393b744f478b980"><td class="mdescLeft"> </td><td class="mdescRight">Projects a point cloud onto the XY plane by setting all Z coordinates to zero. <br /></td></tr>
|
||
<tr class="separator:a3bdae076cc5054f35393b744f478b980"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a0fcf62b8f873e9e8426f24c4a1716baa" id="r_a0fcf62b8f873e9e8426f24c4a1716baa"><td class="memTemplParams" colspan="2">template<typename PointT > </td></tr>
|
||
<tr class="memitem:a0fcf62b8f873e9e8426f24c4a1716baa"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#a0fcf62b8f873e9e8426f24c4a1716baa">segmentObstaclesFromGround</a> (const typename pcl::PointCloud< PointT >::Ptr &cloud, const typename pcl::IndicesPtr &indices, pcl::IndicesPtr &ground, pcl::IndicesPtr &obstacles, int normalKSearch, float groundNormalAngle, float clusterRadius, int minClusterSize, bool segmentFlatObstacles, float maxGroundHeight, pcl::IndicesPtr *flatObstacles, const Eigen::Vector4f &viewPoint, float groundNormalsUp)</td></tr>
|
||
<tr class="separator:a0fcf62b8f873e9e8426f24c4a1716baa"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a72b271fa98352180241614517ef3b21e" id="r_a72b271fa98352180241614517ef3b21e"><td class="memTemplParams" colspan="2">template<typename PointT > </td></tr>
|
||
<tr class="memitem:a72b271fa98352180241614517ef3b21e"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#a72b271fa98352180241614517ef3b21e">segmentObstaclesFromGround</a> (const typename pcl::PointCloud< PointT >::Ptr &cloud, pcl::IndicesPtr &ground, pcl::IndicesPtr &obstacles, int normalKSearch, float groundNormalAngle, float clusterRadius, int minClusterSize, bool segmentFlatObstacles=false, float maxGroundHeight=0.0f, pcl::IndicesPtr *flatObstacles=0, const Eigen::Vector4f &viewPoint=Eigen::Vector4f(0, 0, 100, 0), float groundNormalsUp=0)</td></tr>
|
||
<tr class="memdesc:a72b271fa98352180241614517ef3b21e"><td class="mdescLeft"> </td><td class="mdescRight">Segments ground and obstacle indices from a point cloud using surface normals and clustering. <br /></td></tr>
|
||
<tr class="separator:a72b271fa98352180241614517ef3b21e"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ab156e4308c21e118ea0aa164a5ae9812" id="r_ab156e4308c21e118ea0aa164a5ae9812"><td class="memTemplParams" colspan="2">template<typename PointT > </td></tr>
|
||
<tr class="memitem:ab156e4308c21e118ea0aa164a5ae9812"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#ab156e4308c21e118ea0aa164a5ae9812">occupancy2DFromGroundObstacles</a> (const typename pcl::PointCloud< PointT >::Ptr &cloud, const pcl::IndicesPtr &groundIndices, const pcl::IndicesPtr &obstaclesIndices, cv::Mat &ground, cv::Mat &obstacles, float cellSize)</td></tr>
|
||
<tr class="memdesc:ab156e4308c21e118ea0aa164a5ae9812"><td class="mdescLeft"> </td><td class="mdescRight">Projects 3D ground and obstacle point clouds onto the 2D XY plane and voxelizes them into 2D occupancy data. <br /></td></tr>
|
||
<tr class="separator:ab156e4308c21e118ea0aa164a5ae9812"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a9b93d07997a94a78b6be6bd573e39148" id="r_a9b93d07997a94a78b6be6bd573e39148"><td class="memTemplParams" colspan="2">template<typename PointT > </td></tr>
|
||
<tr class="memitem:a9b93d07997a94a78b6be6bd573e39148"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#a9b93d07997a94a78b6be6bd573e39148">occupancy2DFromGroundObstacles</a> (const typename pcl::PointCloud< PointT >::Ptr &groundCloud, const typename pcl::PointCloud< PointT >::Ptr &obstaclesCloud, cv::Mat &ground, cv::Mat &obstacles, float cellSize)</td></tr>
|
||
<tr class="memdesc:a9b93d07997a94a78b6be6bd573e39148"><td class="mdescLeft"> </td><td class="mdescRight">Projects 3D ground and obstacle point clouds onto the 2D XY plane and voxelizes them into 2D occupancy data. <br /></td></tr>
|
||
<tr class="separator:a9b93d07997a94a78b6be6bd573e39148"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a7d90f3a00301f9f7c79cd6fc6cd663c2" id="r_a7d90f3a00301f9f7c79cd6fc6cd663c2"><td class="memTemplParams" colspan="2">template<typename PointT > </td></tr>
|
||
<tr class="memitem:a7d90f3a00301f9f7c79cd6fc6cd663c2"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#a7d90f3a00301f9f7c79cd6fc6cd663c2">occupancy2DFromCloud3D</a> (const typename pcl::PointCloud< PointT >::Ptr &cloud, const pcl::IndicesPtr &indices, cv::Mat &ground, cv::Mat &obstacles, float cellSize=0.05f, float groundNormalAngle=M_PI_4, int minClusterSize=20, bool segmentFlatObstacles=false, float maxGroundHeight=0.0f)</td></tr>
|
||
<tr class="memdesc:a7d90f3a00301f9f7c79cd6fc6cd663c2"><td class="mdescLeft"> </td><td class="mdescRight">Generates 2D ground and obstacle occupancy data from a 3D point cloud. <br /></td></tr>
|
||
<tr class="separator:a7d90f3a00301f9f7c79cd6fc6cd663c2"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a969e2d135e91a6e2ace68850086ae0e9" id="r_a969e2d135e91a6e2ace68850086ae0e9"><td class="memTemplParams" colspan="2">template<typename PointT > </td></tr>
|
||
<tr class="memitem:a969e2d135e91a6e2ace68850086ae0e9"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#a969e2d135e91a6e2ace68850086ae0e9">occupancy2DFromCloud3D</a> (const typename pcl::PointCloud< PointT >::Ptr &cloud, cv::Mat &ground, cv::Mat &obstacles, float cellSize=0.05f, float groundNormalAngle=M_PI_4, int minClusterSize=20, bool segmentFlatObstacles=false, float maxGroundHeight=0.0f)</td></tr>
|
||
<tr class="memdesc:a969e2d135e91a6e2ace68850086ae0e9"><td class="mdescLeft"> </td><td class="mdescRight">Generates 2D ground and obstacle occupancy data from a 3D point cloud. <br /></td></tr>
|
||
<tr class="separator:a969e2d135e91a6e2ace68850086ae0e9"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a1b78d426f871504e47402511dd769b19" id="r_a1b78d426f871504e47402511dd769b19"><td class="memTemplParams" colspan="2">template<typename pointT > </td></tr>
|
||
<tr class="memitem:a1b78d426f871504e47402511dd769b19"><td class="memTemplItemLeft" align="right" valign="top">std::vector< pcl::Vertices > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#a1b78d426f871504e47402511dd769b19">normalizePolygonsSide</a> (const typename pcl::PointCloud< pointT > &cloud, const std::vector< pcl::Vertices > &polygons, const pcl::PointXYZ &viewPoint)</td></tr>
|
||
<tr class="separator:a1b78d426f871504e47402511dd769b19"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:abba5998ac528571c5f6e77971b44c4bb" id="r_abba5998ac528571c5f6e77971b44c4bb"><td class="memTemplParams" colspan="2">template<typename pointRGBT > </td></tr>
|
||
<tr class="memitem:abba5998ac528571c5f6e77971b44c4bb"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#abba5998ac528571c5f6e77971b44c4bb">denseMeshPostProcessing</a> (pcl::PolygonMeshPtr &mesh, float meshDecimationFactor, int maximumPolygons, const typename pcl::PointCloud< pointRGBT >::Ptr &cloud, float transferColorRadius, bool coloredOutput, bool cleanMesh, int minClusterSize, <a class="el" href="classrtabmap_1_1ProgressState.html">ProgressState</a> *progressState)</td></tr>
|
||
<tr class="separator:abba5998ac528571c5f6e77971b44c4bb"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ae51dc73bb2bcf61962c49260a840df29" id="r_ae51dc73bb2bcf61962c49260a840df29"><td class="memTemplParams" colspan="2">template<typename PointT > </td></tr>
|
||
<tr class="memitem:ae51dc73bb2bcf61962c49260a840df29"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#ae51dc73bb2bcf61962c49260a840df29">intersectRayMesh</a> (const Eigen::Vector3f &origin, const Eigen::Vector3f &dir, const typename pcl::PointCloud< PointT > &cloud, const std::vector< pcl::Vertices > &polygons, bool ignoreBackFaces, float &distance, Eigen::Vector3f &normal, int &index)</td></tr>
|
||
<tr class="separator:ae51dc73bb2bcf61962c49260a840df29"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a3366d0a9c24960ee3f5b720945e12b1b" id="r_a3366d0a9c24960ee3f5b720945e12b1b"><td class="memItemLeft" align="right" valign="top">cv::Mat RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#a3366d0a9c24960ee3f5b720945e12b1b">rgbFromCloud</a> (const pcl::PointCloud< pcl::PointXYZRGBA > &cloud, bool bgrOrder=true)</td></tr>
|
||
<tr class="memdesc:a3366d0a9c24960ee3f5b720945e12b1b"><td class="mdescLeft"> </td><td class="mdescRight">Converts a PCL point cloud with RGBA information to an OpenCV RGB or BGR image. <br /></td></tr>
|
||
<tr class="separator:a3366d0a9c24960ee3f5b720945e12b1b"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:aaf77cb59d32f36c1e9baa2111a7b1b3d" id="r_aaf77cb59d32f36c1e9baa2111a7b1b3d"><td class="memItemLeft" align="right" valign="top">cv::Mat RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#aaf77cb59d32f36c1e9baa2111a7b1b3d">depthFromCloud</a> (const pcl::PointCloud< pcl::PointXYZRGBA > &cloud, bool depth16U=true)</td></tr>
|
||
<tr class="memdesc:aaf77cb59d32f36c1e9baa2111a7b1b3d"><td class="mdescLeft"> </td><td class="mdescRight">Generates a depth image from a PCL organized point cloud. <br /></td></tr>
|
||
<tr class="separator:aaf77cb59d32f36c1e9baa2111a7b1b3d"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a5ec62aa90ceb52a032e7e49c22e0fd76" id="r_a5ec62aa90ceb52a032e7e49c22e0fd76"><td class="memItemLeft" align="right" valign="top">void RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#a5ec62aa90ceb52a032e7e49c22e0fd76">rgbdFromCloud</a> (const pcl::PointCloud< pcl::PointXYZRGBA > &cloud, cv::Mat &rgb, cv::Mat &depth, bool bgrOrder=true, bool depth16U=true)</td></tr>
|
||
<tr class="memdesc:a5ec62aa90ceb52a032e7e49c22e0fd76"><td class="mdescLeft"> </td><td class="mdescRight">Converts a PCL point cloud (with RGBA colors) into aligned RGB and depth OpenCV images. <br /></td></tr>
|
||
<tr class="separator:a5ec62aa90ceb52a032e7e49c22e0fd76"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a4a95aa3704280ecff8ae50db2fdb03b5" id="r_a4a95aa3704280ecff8ae50db2fdb03b5"><td class="memItemLeft" align="right" valign="top">pcl::PointXYZ RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#a4a95aa3704280ecff8ae50db2fdb03b5">projectDepthTo3D</a> (const cv::Mat &depthImage, float x, float y, float cx, float cy, float fx, float fy, bool smoothing, float depthErrorRatio=0.02f)</td></tr>
|
||
<tr class="memdesc:a4a95aa3704280ecff8ae50db2fdb03b5"><td class="mdescLeft"> </td><td class="mdescRight">Projects a single depth pixel into 3D space. <br /></td></tr>
|
||
<tr class="separator:a4a95aa3704280ecff8ae50db2fdb03b5"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a791904051b63ab0da4d972166a25ae5f" id="r_a791904051b63ab0da4d972166a25ae5f"><td class="memItemLeft" align="right" valign="top">Eigen::Vector3f RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#a791904051b63ab0da4d972166a25ae5f">projectDepthTo3DRay</a> (const cv::Size &imageSize, float x, float y, float cx, float cy, float fx, float fy)</td></tr>
|
||
<tr class="memdesc:a791904051b63ab0da4d972166a25ae5f"><td class="mdescLeft"> </td><td class="mdescRight">Projects pixel coordinates to a normalized 3D ray in camera coordinates. <br /></td></tr>
|
||
<tr class="separator:a791904051b63ab0da4d972166a25ae5f"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a45c699a4a8f4108aa31148fb706e6249" id="r_a45c699a4a8f4108aa31148fb706e6249"><td class="memItemLeft" align="right" valign="top">RTABMAP_DEPRECATED pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#a45c699a4a8f4108aa31148fb706e6249">cloudFromDepth</a> (const cv::Mat &imageDepth, float cx, float cy, float fx, float fy, int decimation=1, float maxDepth=0.0f, float minDepth=0.0f, std::vector< int > *validIndices=0)</td></tr>
|
||
<tr class="memdesc:a45c699a4a8f4108aa31148fb706e6249"><td class="mdescLeft"> </td><td class="mdescRight">Converts a depth image to a 3D point cloud. <br /></td></tr>
|
||
<tr class="separator:a45c699a4a8f4108aa31148fb706e6249"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a9fa0222fe9a7f74fcfa4c04c0c2dd532" id="r_a9fa0222fe9a7f74fcfa4c04c0c2dd532"><td class="memItemLeft" align="right" valign="top">pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#a9fa0222fe9a7f74fcfa4c04c0c2dd532">cloudFromDepth</a> (const cv::Mat &imageDepth, const <a class="el" href="classrtabmap_1_1CameraModel.html">CameraModel</a> &model, int decimation=1, float maxDepth=0.0f, float minDepth=0.0f, std::vector< int > *validIndices=0)</td></tr>
|
||
<tr class="memdesc:a9fa0222fe9a7f74fcfa4c04c0c2dd532"><td class="mdescLeft"> </td><td class="mdescRight">Converts a depth image to a 3D point cloud using a camera model. <br /></td></tr>
|
||
<tr class="separator:a9fa0222fe9a7f74fcfa4c04c0c2dd532"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a05dafd12bd5f13c817298c96074cf196" id="r_a05dafd12bd5f13c817298c96074cf196"><td class="memItemLeft" align="right" valign="top"><a id="a05dafd12bd5f13c817298c96074cf196" name="a05dafd12bd5f13c817298c96074cf196"></a>
|
||
pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>cloudFromDepth</b> (const cv::Mat &imageDepth, const cv::Mat &imageDepthConfidence, const <a class="el" href="classrtabmap_1_1CameraModel.html">CameraModel</a> &model, int decimation=1, float maxDepth=0.0f, float minDepth=0.0f, unsigned char confidenceThr=0, std::vector< int > *validIndices=0)</td></tr>
|
||
<tr class="separator:a05dafd12bd5f13c817298c96074cf196"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a982bc5d13fea129a174e16373aa8a31c" id="r_a982bc5d13fea129a174e16373aa8a31c"><td class="memItemLeft" align="right" valign="top">RTABMAP_DEPRECATED pcl::PointCloud< pcl::PointXYZRGB >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#a982bc5d13fea129a174e16373aa8a31c">cloudFromDepthRGB</a> (const cv::Mat &imageRgb, const cv::Mat &imageDepth, float cx, float cy, float fx, float fy, int decimation=1, float maxDepth=0.0f, float minDepth=0.0f, std::vector< int > *validIndices=0)</td></tr>
|
||
<tr class="memdesc:a982bc5d13fea129a174e16373aa8a31c"><td class="mdescLeft"> </td><td class="mdescRight">Creates a point cloud from an RGB image and a depth image. <br /></td></tr>
|
||
<tr class="separator:a982bc5d13fea129a174e16373aa8a31c"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a64b369873a01960576cb34aab4c5a319" id="r_a64b369873a01960576cb34aab4c5a319"><td class="memItemLeft" align="right" valign="top">pcl::PointCloud< pcl::PointXYZRGB >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#a64b369873a01960576cb34aab4c5a319">cloudFromDepthRGB</a> (const cv::Mat &imageRgb, const cv::Mat &imageDepth, const <a class="el" href="classrtabmap_1_1CameraModel.html">CameraModel</a> &model, int decimation=1, float maxDepth=0.0f, float minDepth=0.0f, std::vector< int > *validIndices=0)</td></tr>
|
||
<tr class="memdesc:a64b369873a01960576cb34aab4c5a319"><td class="mdescLeft"> </td><td class="mdescRight">Creates a point cloud from an RGB image and a depth image using a <a class="el" href="classrtabmap_1_1CameraModel.html" title="Represents a pinhole camera model containing intrinsic and extrinsic parameters, used for projection,...">CameraModel</a>. <br /></td></tr>
|
||
<tr class="separator:a64b369873a01960576cb34aab4c5a319"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a0ea39b9a9e3b64c9e6f1f19386ac33e7" id="r_a0ea39b9a9e3b64c9e6f1f19386ac33e7"><td class="memItemLeft" align="right" valign="top"><a id="a0ea39b9a9e3b64c9e6f1f19386ac33e7" name="a0ea39b9a9e3b64c9e6f1f19386ac33e7"></a>
|
||
pcl::PointCloud< pcl::PointXYZRGB >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>cloudFromDepthRGB</b> (const cv::Mat &imageRgb, const cv::Mat &imageDepth, const cv::Mat &imageDepthConfidence, const <a class="el" href="classrtabmap_1_1CameraModel.html">CameraModel</a> &model, int decimation=1, float maxDepth=0.0f, float minDepth=0.0f, unsigned char confidenceThr=0, std::vector< int > *validIndices=0)</td></tr>
|
||
<tr class="separator:a0ea39b9a9e3b64c9e6f1f19386ac33e7"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:aee34b5fe56014a9fa058fbdbf90cab71" id="r_aee34b5fe56014a9fa058fbdbf90cab71"><td class="memItemLeft" align="right" valign="top">pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#aee34b5fe56014a9fa058fbdbf90cab71">cloudFromDisparity</a> (const cv::Mat &imageDisparity, const <a class="el" href="classrtabmap_1_1StereoCameraModel.html">StereoCameraModel</a> &model, int decimation=1, float maxDepth=0.0f, float minDepth=0.0f, std::vector< int > *validIndices=0)</td></tr>
|
||
<tr class="memdesc:aee34b5fe56014a9fa058fbdbf90cab71"><td class="mdescLeft"> </td><td class="mdescRight">Converts a disparity image to a 3D point cloud. <br /></td></tr>
|
||
<tr class="separator:aee34b5fe56014a9fa058fbdbf90cab71"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a1e4a96407fb1b92018e640ef41b8db8e" id="r_a1e4a96407fb1b92018e640ef41b8db8e"><td class="memItemLeft" align="right" valign="top">pcl::PointCloud< pcl::PointXYZRGB >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#a1e4a96407fb1b92018e640ef41b8db8e">cloudFromDisparityRGB</a> (const cv::Mat &imageRgb, const cv::Mat &imageDisparity, const <a class="el" href="classrtabmap_1_1StereoCameraModel.html">StereoCameraModel</a> &model, int decimation=1, float maxDepth=0.0f, float minDepth=0.0f, std::vector< int > *validIndices=0)</td></tr>
|
||
<tr class="memdesc:a1e4a96407fb1b92018e640ef41b8db8e"><td class="mdescLeft"> </td><td class="mdescRight">Converts a disparity image and an RGB image to a 3D point cloud with color. <br /></td></tr>
|
||
<tr class="separator:a1e4a96407fb1b92018e640ef41b8db8e"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a406caa6c0c51bae870a8c3a44e7daccc" id="r_a406caa6c0c51bae870a8c3a44e7daccc"><td class="memItemLeft" align="right" valign="top">pcl::PointCloud< pcl::PointXYZRGB >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#a406caa6c0c51bae870a8c3a44e7daccc">cloudFromStereoImages</a> (const cv::Mat &imageLeft, const cv::Mat &imageRight, const <a class="el" href="classrtabmap_1_1StereoCameraModel.html">StereoCameraModel</a> &model, int decimation=1, float maxDepth=0.0f, float minDepth=0.0f, std::vector< int > *validIndices=0, 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:a406caa6c0c51bae870a8c3a44e7daccc"><td class="mdescLeft"> </td><td class="mdescRight">Converts a pair of stereo images (left and right) into a 3D point cloud with RGB color information. <br /></td></tr>
|
||
<tr class="separator:a406caa6c0c51bae870a8c3a44e7daccc"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ada07c0379fcc7bb7465e31a5a53ebfaa" id="r_ada07c0379fcc7bb7465e31a5a53ebfaa"><td class="memItemLeft" align="right" valign="top">std::vector< pcl::PointCloud< pcl::PointXYZ >::Ptr > RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#ada07c0379fcc7bb7465e31a5a53ebfaa">cloudsFromSensorData</a> (const <a class="el" href="classrtabmap_1_1SensorData.html">SensorData</a> &sensorData, int decimation=1, float maxDepth=0.0f, float minDepth=0.0f, std::vector< pcl::IndicesPtr > *validIndices=0, const <a class="el" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a> &stereoParameters=<a class="el" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a>(), const std::vector< float > &roiRatios=std::vector< float >(), unsigned char confidenceThr=0)</td></tr>
|
||
<tr class="memdesc:ada07c0379fcc7bb7465e31a5a53ebfaa"><td class="mdescLeft"> </td><td class="mdescRight">Generates a set of point clouds from sensor data. <br /></td></tr>
|
||
<tr class="separator:ada07c0379fcc7bb7465e31a5a53ebfaa"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:aacda489f2336d8edb4e982f61f55cc66" id="r_aacda489f2336d8edb4e982f61f55cc66"><td class="memItemLeft" align="right" valign="top">pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#aacda489f2336d8edb4e982f61f55cc66">cloudFromSensorData</a> (const <a class="el" href="classrtabmap_1_1SensorData.html">SensorData</a> &sensorData, int decimation=1, float maxDepth=0.0f, float minDepth=0.0f, std::vector< int > *validIndices=0, const <a class="el" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a> &stereoParameters=<a class="el" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a>(), const std::vector< float > &roiRatios=std::vector< float >(), unsigned char confidenceThr=0)</td></tr>
|
||
<tr class="memdesc:aacda489f2336d8edb4e982f61f55cc66"><td class="mdescLeft"> </td><td class="mdescRight">Generates a point cloud from sensor data. <br /></td></tr>
|
||
<tr class="separator:aacda489f2336d8edb4e982f61f55cc66"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a2155fca440675ca9697a2fe7b2efb30e" id="r_a2155fca440675ca9697a2fe7b2efb30e"><td class="memItemLeft" align="right" valign="top">std::vector< pcl::PointCloud< pcl::PointXYZRGB >::Ptr > RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#a2155fca440675ca9697a2fe7b2efb30e">cloudsRGBFromSensorData</a> (const <a class="el" href="classrtabmap_1_1SensorData.html">SensorData</a> &sensorData, int decimation=1, float maxDepth=0.0f, float minDepth=0.0f, std::vector< pcl::IndicesPtr > *validIndices=0, const <a class="el" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a> &stereoParameters=<a class="el" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a>(), const std::vector< float > &roiRatios=std::vector< float >(), unsigned char confidenceThr=0)</td></tr>
|
||
<tr class="memdesc:a2155fca440675ca9697a2fe7b2efb30e"><td class="mdescLeft"> </td><td class="mdescRight">Generates a point cloud with RGB color data from sensor data. <br /></td></tr>
|
||
<tr class="separator:a2155fca440675ca9697a2fe7b2efb30e"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a29ece82e01f041cab271fe9322cf9745" id="r_a29ece82e01f041cab271fe9322cf9745"><td class="memItemLeft" align="right" valign="top">pcl::PointCloud< pcl::PointXYZRGB >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#a29ece82e01f041cab271fe9322cf9745">cloudRGBFromSensorData</a> (const <a class="el" href="classrtabmap_1_1SensorData.html">SensorData</a> &sensorData, int decimation=1, float maxDepth=0.0f, float minDepth=0.0f, std::vector< int > *validIndices=0, const <a class="el" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a> &stereoParameters=<a class="el" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a>(), const std::vector< float > &roiRatios=std::vector< float >(), unsigned char confidenceThr=0)</td></tr>
|
||
<tr class="memdesc:a29ece82e01f041cab271fe9322cf9745"><td class="mdescLeft"> </td><td class="mdescRight">Generates a point cloud of type pcl::PointXYZRGB from sensor data. <br /></td></tr>
|
||
<tr class="separator:a29ece82e01f041cab271fe9322cf9745"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a39d4adb63b4bd06592e2c65641a32558" id="r_a39d4adb63b4bd06592e2c65641a32558"><td class="memItemLeft" align="right" valign="top">pcl::PointCloud< pcl::PointXYZ > RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#a39d4adb63b4bd06592e2c65641a32558">laserScanFromDepthImage</a> (const cv::Mat &depthImage, float fx, float fy, float cx, float cy, float maxDepth=0, float minDepth=0, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &localTransform=<a class="el" href="classrtabmap_1_1Transform.html#a8ea4368f2018d751d2733038081d56a2">Transform::getIdentity</a>())</td></tr>
|
||
<tr class="memdesc:a39d4adb63b4bd06592e2c65641a32558"><td class="mdescLeft"> </td><td class="mdescRight">Converts the middle row of a depth image into a laser scan (point cloud) using camera intrinsics and a local transformation. <br /></td></tr>
|
||
<tr class="separator:a39d4adb63b4bd06592e2c65641a32558"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a07f8a125805ac013039b7fa0ddb623e0" id="r_a07f8a125805ac013039b7fa0ddb623e0"><td class="memItemLeft" align="right" valign="top">pcl::PointCloud< pcl::PointXYZ > RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#a07f8a125805ac013039b7fa0ddb623e0">laserScanFromDepthImages</a> (const cv::Mat &depthImages, const std::vector< <a class="el" href="classrtabmap_1_1CameraModel.html">CameraModel</a> > &cameraModels, float maxDepth, float minDepth)</td></tr>
|
||
<tr class="memdesc:a07f8a125805ac013039b7fa0ddb623e0"><td class="mdescLeft"> </td><td class="mdescRight">Converts multiple depth images (e.g., from a stereo or multi-camera setup) into a single laser scan (point cloud). <br /></td></tr>
|
||
<tr class="separator:a07f8a125805ac013039b7fa0ddb623e0"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga16a77d267dc60b14b5bf48ca52547bae" id="r_ga16a77d267dc60b14b5bf48ca52547bae"><td class="memItemLeft" align="right" valign="top">
|
||
<a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>laserScanFromPointCloud</b> (const pcl::PointCloud< pcl::PointXYZ > &cloud, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &transform=<a class="el" href="classrtabmap_1_1Transform.html">Transform</a>(), bool filterNaNs=true)</td></tr>
|
||
<tr class="memdesc:ga16a77d267dc60b14b5bf48ca52547bae"><td class="mdescLeft"> </td><td class="mdescRight"><code>pcl::PointXYZ</code> → (x, y, z) → <a class="el" href="classrtabmap_1_1LaserScan.html#a38f5602d1411c204d54be9b3c7320007a0c376810ac499a8a93a02bd0d4a19267">LaserScan::kXYZ</a> <br /></td></tr>
|
||
<tr class="separator:ga16a77d267dc60b14b5bf48ca52547bae"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga75f96d3e3d5d62ce6a9d16a1753c775a" id="r_ga75f96d3e3d5d62ce6a9d16a1753c775a"><td class="memItemLeft" align="right" valign="top">
|
||
<a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>laserScanFromPointCloud</b> (const pcl::PointCloud< pcl::PointXYZ > &cloud, const pcl::IndicesPtr &indices, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &transform=<a class="el" href="classrtabmap_1_1Transform.html">Transform</a>(), bool filterNaNs=true)</td></tr>
|
||
<tr class="memdesc:ga75f96d3e3d5d62ce6a9d16a1753c775a"><td class="mdescLeft"> </td><td class="mdescRight"><code>pcl::PointXYZ</code> → (x, y, z) → <a class="el" href="classrtabmap_1_1LaserScan.html#a38f5602d1411c204d54be9b3c7320007a0c376810ac499a8a93a02bd0d4a19267">LaserScan::kXYZ</a> <br /></td></tr>
|
||
<tr class="separator:ga75f96d3e3d5d62ce6a9d16a1753c775a"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga7a88e45c9bab555c6d1efd64be765c4d" id="r_ga7a88e45c9bab555c6d1efd64be765c4d"><td class="memItemLeft" align="right" valign="top">
|
||
<a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>laserScanFromPointCloud</b> (const pcl::PointCloud< pcl::PointNormal > &cloud, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &transform=<a class="el" href="classrtabmap_1_1Transform.html">Transform</a>(), bool filterNaNs=true)</td></tr>
|
||
<tr class="memdesc:ga7a88e45c9bab555c6d1efd64be765c4d"><td class="mdescLeft"> </td><td class="mdescRight"><code>pcl::PointNormal</code> → (x, y, z, nx, ny, nz) → <a class="el" href="classrtabmap_1_1LaserScan.html#a38f5602d1411c204d54be9b3c7320007a09e67f9495016103a162854b8e852bbc">LaserScan::kXYZNormal</a> <br /></td></tr>
|
||
<tr class="separator:ga7a88e45c9bab555c6d1efd64be765c4d"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga9470f081e8de0a34550e91e2f74bacd5" id="r_ga9470f081e8de0a34550e91e2f74bacd5"><td class="memItemLeft" align="right" valign="top">
|
||
<a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>laserScanFromPointCloud</b> (const pcl::PointCloud< pcl::PointNormal > &cloud, const pcl::IndicesPtr &indices, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &transform=<a class="el" href="classrtabmap_1_1Transform.html">Transform</a>(), bool filterNaNs=true)</td></tr>
|
||
<tr class="memdesc:ga9470f081e8de0a34550e91e2f74bacd5"><td class="mdescLeft"> </td><td class="mdescRight"><code>pcl::PointNormal</code> → (x, y, z, nx, ny, nz) → <a class="el" href="classrtabmap_1_1LaserScan.html#a38f5602d1411c204d54be9b3c7320007a09e67f9495016103a162854b8e852bbc">LaserScan::kXYZNormal</a> <br /></td></tr>
|
||
<tr class="separator:ga9470f081e8de0a34550e91e2f74bacd5"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gad5764a399e3a8a5586b94490e0cd7d15" id="r_gad5764a399e3a8a5586b94490e0cd7d15"><td class="memItemLeft" align="right" valign="top">
|
||
<a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>laserScanFromPointCloud</b> (const pcl::PointCloud< pcl::PointXYZ > &cloud, const pcl::PointCloud< pcl::Normal > &normals, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &transform=<a class="el" href="classrtabmap_1_1Transform.html">Transform</a>(), bool filterNaNs=true)</td></tr>
|
||
<tr class="memdesc:gad5764a399e3a8a5586b94490e0cd7d15"><td class="mdescLeft"> </td><td class="mdescRight"><code>pcl::PointNormal</code> → (x, y, z, nx, ny, nz) → <a class="el" href="classrtabmap_1_1LaserScan.html#a38f5602d1411c204d54be9b3c7320007a09e67f9495016103a162854b8e852bbc">LaserScan::kXYZNormal</a> <br /></td></tr>
|
||
<tr class="separator:gad5764a399e3a8a5586b94490e0cd7d15"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga9933faab17e984b2789926abd2ba0caf" id="r_ga9933faab17e984b2789926abd2ba0caf"><td class="memItemLeft" align="right" valign="top">
|
||
<a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>laserScanFromPointCloud</b> (const pcl::PointCloud< pcl::PointXYZRGB > &cloud, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &transform=<a class="el" href="classrtabmap_1_1Transform.html">Transform</a>(), bool filterNaNs=true)</td></tr>
|
||
<tr class="memdesc:ga9933faab17e984b2789926abd2ba0caf"><td class="mdescLeft"> </td><td class="mdescRight"><code>pcl::PointXYZRGB</code> → (x, y, z, rgb) → <a class="el" href="classrtabmap_1_1LaserScan.html#a38f5602d1411c204d54be9b3c7320007a500cf2179e454d8d5a74895b301c0829">LaserScan::kXYZRGB</a> <br /></td></tr>
|
||
<tr class="separator:ga9933faab17e984b2789926abd2ba0caf"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gaa98ccb732868f5ab4e91cd6f82602852" id="r_gaa98ccb732868f5ab4e91cd6f82602852"><td class="memItemLeft" align="right" valign="top">
|
||
<a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>laserScanFromPointCloud</b> (const pcl::PointCloud< pcl::PointXYZRGB > &cloud, const pcl::IndicesPtr &indices, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &transform=<a class="el" href="classrtabmap_1_1Transform.html">Transform</a>(), bool filterNaNs=true)</td></tr>
|
||
<tr class="memdesc:gaa98ccb732868f5ab4e91cd6f82602852"><td class="mdescLeft"> </td><td class="mdescRight"><code>pcl::PointXYZRGB</code> → (x, y, z, rgb) → <a class="el" href="classrtabmap_1_1LaserScan.html#a38f5602d1411c204d54be9b3c7320007a500cf2179e454d8d5a74895b301c0829">LaserScan::kXYZRGB</a> <br /></td></tr>
|
||
<tr class="separator:gaa98ccb732868f5ab4e91cd6f82602852"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gadeb1f66fd39cfcb39c2f152c36b3be62" id="r_gadeb1f66fd39cfcb39c2f152c36b3be62"><td class="memItemLeft" align="right" valign="top">
|
||
<a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>laserScanFromPointCloud</b> (const pcl::PointCloud< pcl::PointXYZI > &cloud, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &transform=<a class="el" href="classrtabmap_1_1Transform.html">Transform</a>(), bool filterNaNs=true)</td></tr>
|
||
<tr class="memdesc:gadeb1f66fd39cfcb39c2f152c36b3be62"><td class="mdescLeft"> </td><td class="mdescRight"><code>pcl::PointXYZI</code> → (x, y, z, intensity) → <a class="el" href="classrtabmap_1_1LaserScan.html#a38f5602d1411c204d54be9b3c7320007a5efd7fbf18cee72d9eb2daa4ea818e42">LaserScan::kXYZI</a> <br /></td></tr>
|
||
<tr class="separator:gadeb1f66fd39cfcb39c2f152c36b3be62"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga51c683da166a9fcf7e7bf6c834ca03a4" id="r_ga51c683da166a9fcf7e7bf6c834ca03a4"><td class="memItemLeft" align="right" valign="top">
|
||
<a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>laserScanFromPointCloud</b> (const pcl::PointCloud< pcl::PointXYZI > &cloud, const pcl::IndicesPtr &indices, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &transform=<a class="el" href="classrtabmap_1_1Transform.html">Transform</a>(), bool filterNaNs=true)</td></tr>
|
||
<tr class="memdesc:ga51c683da166a9fcf7e7bf6c834ca03a4"><td class="mdescLeft"> </td><td class="mdescRight"><code>pcl::PointXYZI</code> → (x, y, z, intensity) → <a class="el" href="classrtabmap_1_1LaserScan.html#a38f5602d1411c204d54be9b3c7320007a5efd7fbf18cee72d9eb2daa4ea818e42">LaserScan::kXYZI</a> <br /></td></tr>
|
||
<tr class="separator:ga51c683da166a9fcf7e7bf6c834ca03a4"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga655a37385c6ca40ec99e76045c04040b" id="r_ga655a37385c6ca40ec99e76045c04040b"><td class="memItemLeft" align="right" valign="top">
|
||
<a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>laserScanFromPointCloud</b> (const pcl::PointCloud< <a class="el" href="structrtabmap_1_1PointXYZIRT.html">rtabmap::PointXYZIRT</a> > &cloud, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &transform=<a class="el" href="classrtabmap_1_1Transform.html">Transform</a>(), bool filterNaNs=true)</td></tr>
|
||
<tr class="memdesc:ga655a37385c6ca40ec99e76045c04040b"><td class="mdescLeft"> </td><td class="mdescRight"><code><a class="el" href="structrtabmap_1_1PointXYZIRT.html" title="This namespace contains 3D point cloud processing utilities.">rtabmap::PointXYZIRT</a></code> → (x, y, z, intensity, ring time) → <a class="el" href="classrtabmap_1_1LaserScan.html#a38f5602d1411c204d54be9b3c7320007a7df3c8f97dd52461787060befaf7f2d7">LaserScan::kXYZIRT</a> <br /></td></tr>
|
||
<tr class="separator:ga655a37385c6ca40ec99e76045c04040b"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga04169bd4b4488350b08709af9581b289" id="r_ga04169bd4b4488350b08709af9581b289"><td class="memItemLeft" align="right" valign="top">
|
||
<a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>laserScanFromPointCloud</b> (const pcl::PointCloud< <a class="el" href="structrtabmap_1_1PointXYZIRT.html">rtabmap::PointXYZIRT</a> > &cloud, const pcl::IndicesPtr &indices, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &transform=<a class="el" href="classrtabmap_1_1Transform.html">Transform</a>(), bool filterNaNs=true)</td></tr>
|
||
<tr class="memdesc:ga04169bd4b4488350b08709af9581b289"><td class="mdescLeft"> </td><td class="mdescRight"><code><a class="el" href="structrtabmap_1_1PointXYZIRT.html" title="This namespace contains 3D point cloud processing utilities.">rtabmap::PointXYZIRT</a></code> → (x, y, z, intensity, ring time) → <a class="el" href="classrtabmap_1_1LaserScan.html#a38f5602d1411c204d54be9b3c7320007a7df3c8f97dd52461787060befaf7f2d7">LaserScan::kXYZIRT</a> <br /></td></tr>
|
||
<tr class="separator:ga04169bd4b4488350b08709af9581b289"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga75bf455d6cc912b4ee18785de71c50a5" id="r_ga75bf455d6cc912b4ee18785de71c50a5"><td class="memItemLeft" align="right" valign="top">
|
||
<a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>laserScanFromPointCloud</b> (const pcl::PointCloud< pcl::PointXYZRGB > &cloud, const pcl::PointCloud< pcl::Normal > &normals, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &transform=<a class="el" href="classrtabmap_1_1Transform.html">Transform</a>(), bool filterNaNs=true)</td></tr>
|
||
<tr class="memdesc:ga75bf455d6cc912b4ee18785de71c50a5"><td class="mdescLeft"> </td><td class="mdescRight"><code>pcl::PointXYZRGBNormal</code> → (x, y, z, rgb, nx, ny, nz) → <a class="el" href="classrtabmap_1_1LaserScan.html#a38f5602d1411c204d54be9b3c7320007af2d5b7ff94aeac818000d840e257ac07">LaserScan::kXYZRGBNormal</a> <br /></td></tr>
|
||
<tr class="separator:ga75bf455d6cc912b4ee18785de71c50a5"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gaf509a7c65e02d8690c971294c43bda47" id="r_gaf509a7c65e02d8690c971294c43bda47"><td class="memItemLeft" align="right" valign="top">
|
||
<a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>laserScanFromPointCloud</b> (const pcl::PointCloud< pcl::PointXYZRGBNormal > &cloud, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &transform=<a class="el" href="classrtabmap_1_1Transform.html">Transform</a>(), bool filterNaNs=true)</td></tr>
|
||
<tr class="memdesc:gaf509a7c65e02d8690c971294c43bda47"><td class="mdescLeft"> </td><td class="mdescRight"><code>pcl::PointXYZRGBNormal</code> → (x, y, z, rgb, nx, ny, nz) → <a class="el" href="classrtabmap_1_1LaserScan.html#a38f5602d1411c204d54be9b3c7320007af2d5b7ff94aeac818000d840e257ac07">LaserScan::kXYZRGBNormal</a> <br /></td></tr>
|
||
<tr class="separator:gaf509a7c65e02d8690c971294c43bda47"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga9344c712c57af92d7612b0af76226f06" id="r_ga9344c712c57af92d7612b0af76226f06"><td class="memItemLeft" align="right" valign="top">
|
||
<a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>laserScanFromPointCloud</b> (const pcl::PointCloud< pcl::PointXYZRGBNormal > &cloud, const pcl::IndicesPtr &indices, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &transform=<a class="el" href="classrtabmap_1_1Transform.html">Transform</a>(), bool filterNaNs=true)</td></tr>
|
||
<tr class="memdesc:ga9344c712c57af92d7612b0af76226f06"><td class="mdescLeft"> </td><td class="mdescRight"><code>pcl::PointXYZRGBNormal</code> → (x, y, z, rgb, nx, ny, nz) → <a class="el" href="classrtabmap_1_1LaserScan.html#a38f5602d1411c204d54be9b3c7320007af2d5b7ff94aeac818000d840e257ac07">LaserScan::kXYZRGBNormal</a> <br /></td></tr>
|
||
<tr class="separator:ga9344c712c57af92d7612b0af76226f06"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga79e460158de1d3934abcd8fad488fb24" id="r_ga79e460158de1d3934abcd8fad488fb24"><td class="memItemLeft" align="right" valign="top">
|
||
<a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>laserScanFromPointCloud</b> (const pcl::PointCloud< pcl::PointXYZI > &cloud, const pcl::PointCloud< pcl::Normal > &normals, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &transform=<a class="el" href="classrtabmap_1_1Transform.html">Transform</a>(), bool filterNaNs=true)</td></tr>
|
||
<tr class="memdesc:ga79e460158de1d3934abcd8fad488fb24"><td class="mdescLeft"> </td><td class="mdescRight"><code>pcl::PointXYZINormal</code> → (x, y, z, intensity, nx, ny, nz) → <a class="el" href="classrtabmap_1_1LaserScan.html#a38f5602d1411c204d54be9b3c7320007a3fdc082afb503bb197e2651b6fc565b8">LaserScan::kXYZINormal</a> <br /></td></tr>
|
||
<tr class="separator:ga79e460158de1d3934abcd8fad488fb24"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gafb165d79d23620b42af0653ae045fb91" id="r_gafb165d79d23620b42af0653ae045fb91"><td class="memItemLeft" align="right" valign="top">
|
||
<a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>laserScanFromPointCloud</b> (const pcl::PointCloud< pcl::PointXYZINormal > &cloud, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &transform=<a class="el" href="classrtabmap_1_1Transform.html">Transform</a>(), bool filterNaNs=true)</td></tr>
|
||
<tr class="memdesc:gafb165d79d23620b42af0653ae045fb91"><td class="mdescLeft"> </td><td class="mdescRight"><code>pcl::PointXYZINormal</code> → (x, y, z, intensity, nx, ny, nz) → <a class="el" href="classrtabmap_1_1LaserScan.html#a38f5602d1411c204d54be9b3c7320007a3fdc082afb503bb197e2651b6fc565b8">LaserScan::kXYZINormal</a> <br /></td></tr>
|
||
<tr class="separator:gafb165d79d23620b42af0653ae045fb91"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gab2d54043075851c5e23f487001adacb6" id="r_gab2d54043075851c5e23f487001adacb6"><td class="memItemLeft" align="right" valign="top">
|
||
<a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>laserScanFromPointCloud</b> (const pcl::PointCloud< pcl::PointXYZINormal > &cloud, const pcl::IndicesPtr &indices, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &transform=<a class="el" href="classrtabmap_1_1Transform.html">Transform</a>(), bool filterNaNs=true)</td></tr>
|
||
<tr class="memdesc:gab2d54043075851c5e23f487001adacb6"><td class="mdescLeft"> </td><td class="mdescRight"><code>pcl::PointXYZINormal</code> → (x, y, z, intensity, nx, ny, nz) → <a class="el" href="classrtabmap_1_1LaserScan.html#a38f5602d1411c204d54be9b3c7320007a3fdc082afb503bb197e2651b6fc565b8">LaserScan::kXYZINormal</a> <br /></td></tr>
|
||
<tr class="separator:gab2d54043075851c5e23f487001adacb6"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gac0823dd28e488bef9499faee54ff8a4e" id="r_gac0823dd28e488bef9499faee54ff8a4e"><td class="memItemLeft" align="right" valign="top">
|
||
<a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>laserScan2dFromPointCloud</b> (const pcl::PointCloud< pcl::PointXYZ > &cloud, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &transform=<a class="el" href="classrtabmap_1_1Transform.html">Transform</a>(), bool filterNaNs=true)</td></tr>
|
||
<tr class="memdesc:gac0823dd28e488bef9499faee54ff8a4e"><td class="mdescLeft"> </td><td class="mdescRight"><code>PointXYZ</code> → <a class="el" href="classrtabmap_1_1LaserScan.html#a38f5602d1411c204d54be9b3c7320007a4f3e7340e44a01b48ccaf8e1f8dca3e1">LaserScan::kXY</a> <br /></td></tr>
|
||
<tr class="separator:gac0823dd28e488bef9499faee54ff8a4e"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga0898d06b1639f58ed92b66f311e786aa" id="r_ga0898d06b1639f58ed92b66f311e786aa"><td class="memItemLeft" align="right" valign="top">
|
||
<a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>laserScan2dFromPointCloud</b> (const pcl::PointCloud< pcl::PointXYZI > &cloud, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &transform=<a class="el" href="classrtabmap_1_1Transform.html">Transform</a>(), bool filterNaNs=true)</td></tr>
|
||
<tr class="memdesc:ga0898d06b1639f58ed92b66f311e786aa"><td class="mdescLeft"> </td><td class="mdescRight"><code>PointXYZI</code> → <a class="el" href="classrtabmap_1_1LaserScan.html#a38f5602d1411c204d54be9b3c7320007abb92c193b2eb76045e1a141c2a42cc00">LaserScan::kXYI</a> (x, y, intensity) <br /></td></tr>
|
||
<tr class="separator:ga0898d06b1639f58ed92b66f311e786aa"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gac278e2f3f54ed49b5d3a6afa606a466b" id="r_gac278e2f3f54ed49b5d3a6afa606a466b"><td class="memItemLeft" align="right" valign="top">
|
||
<a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>laserScan2dFromPointCloud</b> (const pcl::PointCloud< pcl::PointNormal > &cloud, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &transform=<a class="el" href="classrtabmap_1_1Transform.html">Transform</a>(), bool filterNaNs=true)</td></tr>
|
||
<tr class="memdesc:gac278e2f3f54ed49b5d3a6afa606a466b"><td class="mdescLeft"> </td><td class="mdescRight"><code>PointNormal</code> → <a class="el" href="classrtabmap_1_1LaserScan.html#a38f5602d1411c204d54be9b3c7320007ad4c3ec9f057875ade4f21f52901bceb5">LaserScan::kXYNormal</a> (x, y, nx, ny, nz) <br /></td></tr>
|
||
<tr class="separator:gac278e2f3f54ed49b5d3a6afa606a466b"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gae4e7c218a24fb8d5c3fd7143462d3070" id="r_gae4e7c218a24fb8d5c3fd7143462d3070"><td class="memItemLeft" align="right" valign="top">
|
||
<a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>laserScan2dFromPointCloud</b> (const pcl::PointCloud< pcl::PointXYZ > &cloud, const pcl::PointCloud< pcl::Normal > &normals, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &transform=<a class="el" href="classrtabmap_1_1Transform.html">Transform</a>(), bool filterNaNs=true)</td></tr>
|
||
<tr class="memdesc:gae4e7c218a24fb8d5c3fd7143462d3070"><td class="mdescLeft"> </td><td class="mdescRight"><code>PointXYZ + Normal</code> → <a class="el" href="classrtabmap_1_1LaserScan.html#a38f5602d1411c204d54be9b3c7320007ad4c3ec9f057875ade4f21f52901bceb5">LaserScan::kXYNormal</a> (x, y, nx, ny, nz) <br /></td></tr>
|
||
<tr class="separator:gae4e7c218a24fb8d5c3fd7143462d3070"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga6cb623d1b3ce9c244a7d4ef346a721db" id="r_ga6cb623d1b3ce9c244a7d4ef346a721db"><td class="memItemLeft" align="right" valign="top">
|
||
<a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>laserScan2dFromPointCloud</b> (const pcl::PointCloud< pcl::PointXYZINormal > &cloud, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &transform=<a class="el" href="classrtabmap_1_1Transform.html">Transform</a>(), bool filterNaNs=true)</td></tr>
|
||
<tr class="memdesc:ga6cb623d1b3ce9c244a7d4ef346a721db"><td class="mdescLeft"> </td><td class="mdescRight"><code>PointXYZINormal</code> → <a class="el" href="classrtabmap_1_1LaserScan.html#a38f5602d1411c204d54be9b3c7320007a799064c7e31b99134871b5d7d2906f97">LaserScan::kXYINormal</a> (x, y, inensity, nx, ny, nz) <br /></td></tr>
|
||
<tr class="separator:ga6cb623d1b3ce9c244a7d4ef346a721db"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga0354b321c4196232fb1183c3a322b5f8" id="r_ga0354b321c4196232fb1183c3a322b5f8"><td class="memItemLeft" align="right" valign="top">
|
||
<a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>laserScan2dFromPointCloud</b> (const pcl::PointCloud< pcl::PointXYZI > &cloud, const pcl::PointCloud< pcl::Normal > &normals, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &transform=<a class="el" href="classrtabmap_1_1Transform.html">Transform</a>(), bool filterNaNs=true)</td></tr>
|
||
<tr class="memdesc:ga0354b321c4196232fb1183c3a322b5f8"><td class="mdescLeft"> </td><td class="mdescRight"><code>PointXYZI + Normal</code> → <a class="el" href="classrtabmap_1_1LaserScan.html#a38f5602d1411c204d54be9b3c7320007a799064c7e31b99134871b5d7d2906f97">LaserScan::kXYINormal</a> (x, y, inensity, nx, ny, nz) <br /></td></tr>
|
||
<tr class="separator:ga0354b321c4196232fb1183c3a322b5f8"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga394ec840a58a1203fac9725d49a0013c" id="r_ga394ec840a58a1203fac9725d49a0013c"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PCLPointCloud2::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>laserScanToPointCloud2</b> (const <a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> &laserScan, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &transform=<a class="el" href="classrtabmap_1_1Transform.html">Transform</a>())</td></tr>
|
||
<tr class="memdesc:ga394ec840a58a1203fac9725d49a0013c"><td class="mdescLeft"> </td><td class="mdescRight">Convert <a class="el" href="classrtabmap_1_1LaserScan.html" title="Represents 2D or 3D laser scan data with support for multiple point data formats.">rtabmap::LaserScan</a> to <code>pcl::PCLPointCloud2</code> with all supported fields (see <a class="el" href="classrtabmap_1_1LaserScan.html#a38f5602d1411c204d54be9b3c7320007" title="Enumeration of possible formats for laser scan data.">rtabmap::LaserScan::Format</a>) <br /></td></tr>
|
||
<tr class="separator:ga394ec840a58a1203fac9725d49a0013c"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gac4aef207f79791db5064dc596e25513b" id="r_gac4aef207f79791db5064dc596e25513b"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>laserScanToPointCloud</b> (const <a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> &laserScan, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &transform=<a class="el" href="classrtabmap_1_1Transform.html">Transform</a>())</td></tr>
|
||
<tr class="memdesc:gac4aef207f79791db5064dc596e25513b"><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="classrtabmap_1_1LaserScan.html" title="Represents 2D or 3D laser scan data with support for multiple point data formats.">LaserScan</a> → <code>PointXYZ</code> (x, y, z); any other field of the scan is dropped. <br /></td></tr>
|
||
<tr class="separator:gac4aef207f79791db5064dc596e25513b"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gafe2b6826178bf0af878be67bddf3c9bd" id="r_gafe2b6826178bf0af878be67bddf3c9bd"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointNormal >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>laserScanToPointCloudNormal</b> (const <a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> &laserScan, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &transform=<a class="el" href="classrtabmap_1_1Transform.html">Transform</a>())</td></tr>
|
||
<tr class="memdesc:gafe2b6826178bf0af878be67bddf3c9bd"><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="classrtabmap_1_1LaserScan.html" title="Represents 2D or 3D laser scan data with support for multiple point data formats.">LaserScan</a> → <code>PointNormal</code> (x, y, z, nx, ny, nz); normals are zeroed if the scan has none. <br /></td></tr>
|
||
<tr class="separator:gafe2b6826178bf0af878be67bddf3c9bd"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gaee3e6a7ef23f6e5f9a19a0b033d7522c" id="r_gaee3e6a7ef23f6e5f9a19a0b033d7522c"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointXYZRGB >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>laserScanToPointCloudRGB</b> (const <a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> &laserScan, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &transform=<a class="el" href="classrtabmap_1_1Transform.html">Transform</a>(), unsigned char r=100, unsigned char g=100, unsigned char b=100)</td></tr>
|
||
<tr class="memdesc:gaee3e6a7ef23f6e5f9a19a0b033d7522c"><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="classrtabmap_1_1LaserScan.html" title="Represents 2D or 3D laser scan data with support for multiple point data formats.">LaserScan</a> → <code>PointXYZRGB</code> (x, y, z, rgb); <code>r</code>, <code>g</code> and <code>b</code> are used if the scan has no color. <br /></td></tr>
|
||
<tr class="separator:gaee3e6a7ef23f6e5f9a19a0b033d7522c"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga734628cdc1b15384476dc94d1c3dbb4d" id="r_ga734628cdc1b15384476dc94d1c3dbb4d"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointXYZI >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>laserScanToPointCloudI</b> (const <a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> &laserScan, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &transform=<a class="el" href="classrtabmap_1_1Transform.html">Transform</a>(), float intensity=0.0f)</td></tr>
|
||
<tr class="memdesc:ga734628cdc1b15384476dc94d1c3dbb4d"><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="classrtabmap_1_1LaserScan.html" title="Represents 2D or 3D laser scan data with support for multiple point data formats.">LaserScan</a> → <code>PointXYZI</code> (x, y, z, intensity); <code>intensity</code> is used if the scan has none. <br /></td></tr>
|
||
<tr class="separator:ga734628cdc1b15384476dc94d1c3dbb4d"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga741bd010511d5284831012194eab99b9" id="r_ga741bd010511d5284831012194eab99b9"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>laserScanToPointCloudRGBNormal</b> (const <a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> &laserScan, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &transform=<a class="el" href="classrtabmap_1_1Transform.html">Transform</a>(), unsigned char r=100, unsigned char g=100, unsigned char b=100)</td></tr>
|
||
<tr class="memdesc:ga741bd010511d5284831012194eab99b9"><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="classrtabmap_1_1LaserScan.html" title="Represents 2D or 3D laser scan data with support for multiple point data formats.">LaserScan</a> → <code>PointXYZRGBNormal</code> (x, y, z, rgb, nx, ny, nz); missing color and normals are filled as above. <br /></td></tr>
|
||
<tr class="separator:ga741bd010511d5284831012194eab99b9"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga8ee678c27ae59e2bb3fac8aeb55f9d92" id="r_ga8ee678c27ae59e2bb3fac8aeb55f9d92"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointXYZINormal >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>laserScanToPointCloudINormal</b> (const <a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> &laserScan, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &transform=<a class="el" href="classrtabmap_1_1Transform.html">Transform</a>(), float intensity=0.0f)</td></tr>
|
||
<tr class="memdesc:ga8ee678c27ae59e2bb3fac8aeb55f9d92"><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="classrtabmap_1_1LaserScan.html" title="Represents 2D or 3D laser scan data with support for multiple point data formats.">LaserScan</a> → <code>PointXYZINormal</code> (x, y, z, intensity, nx, ny, nz); missing intensity and normals are filled as above. <br /></td></tr>
|
||
<tr class="separator:ga8ee678c27ae59e2bb3fac8aeb55f9d92"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gaeda3b4a673cb96e6421688e6c575e4e5" id="r_gaeda3b4a673cb96e6421688e6c575e4e5"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointXYZ RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>laserScanToPoint</b> (const <a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> &laserScan, int index)</td></tr>
|
||
<tr class="memdesc:gaeda3b4a673cb96e6421688e6c575e4e5"><td class="mdescLeft"> </td><td class="mdescRight">The point at <code>index</code> of the scan, as <code>PointXYZ</code>. <br /></td></tr>
|
||
<tr class="separator:gaeda3b4a673cb96e6421688e6c575e4e5"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga4412f275d60b69f0f62db56321c5991c" id="r_ga4412f275d60b69f0f62db56321c5991c"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointNormal RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>laserScanToPointNormal</b> (const <a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> &laserScan, int index)</td></tr>
|
||
<tr class="memdesc:ga4412f275d60b69f0f62db56321c5991c"><td class="mdescLeft"> </td><td class="mdescRight">The point at <code>index</code> of the scan, as <code>PointNormal</code>. <br /></td></tr>
|
||
<tr class="separator:ga4412f275d60b69f0f62db56321c5991c"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gad0183648eae48143b33bfe969f8cbe43" id="r_gad0183648eae48143b33bfe969f8cbe43"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointXYZRGB RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>laserScanToPointRGB</b> (const <a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> &laserScan, int index, unsigned char r=100, unsigned char g=100, unsigned char b=100)</td></tr>
|
||
<tr class="memdesc:gad0183648eae48143b33bfe969f8cbe43"><td class="mdescLeft"> </td><td class="mdescRight">The point at <code>index</code> of the scan, as <code>PointXYZRGB</code>. <br /></td></tr>
|
||
<tr class="separator:gad0183648eae48143b33bfe969f8cbe43"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga03b1c3a49aba08fcbc01b5991f25d0cc" id="r_ga03b1c3a49aba08fcbc01b5991f25d0cc"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointXYZI RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>laserScanToPointI</b> (const <a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> &laserScan, int index, float intensity)</td></tr>
|
||
<tr class="memdesc:ga03b1c3a49aba08fcbc01b5991f25d0cc"><td class="mdescLeft"> </td><td class="mdescRight">The point at <code>index</code> of the scan, as <code>PointXYZI</code>. <br /></td></tr>
|
||
<tr class="separator:ga03b1c3a49aba08fcbc01b5991f25d0cc"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga675b84c6a6edde91883e38f49c087f31" id="r_ga675b84c6a6edde91883e38f49c087f31"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointXYZRGBNormal RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>laserScanToPointRGBNormal</b> (const <a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> &laserScan, int index, unsigned char r, unsigned char g, unsigned char b)</td></tr>
|
||
<tr class="memdesc:ga675b84c6a6edde91883e38f49c087f31"><td class="mdescLeft"> </td><td class="mdescRight">The point at <code>index</code> of the scan, as <code>PointXYZRGBNormal</code>. <br /></td></tr>
|
||
<tr class="separator:ga675b84c6a6edde91883e38f49c087f31"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gab69062f7ffd0f2192983c6d7afa4a171" id="r_gab69062f7ffd0f2192983c6d7afa4a171"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointXYZINormal RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>laserScanToPointINormal</b> (const <a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> &laserScan, int index, float intensity)</td></tr>
|
||
<tr class="memdesc:gab69062f7ffd0f2192983c6d7afa4a171"><td class="mdescLeft"> </td><td class="mdescRight">The point at <code>index</code> of the scan, as <code>PointXYZINormal</code>. <br /></td></tr>
|
||
<tr class="separator:gab69062f7ffd0f2192983c6d7afa4a171"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ad857475644e8de6d7d84b920637b2018" id="r_ad857475644e8de6d7d84b920637b2018"><td class="memItemLeft" align="right" valign="top">void RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#ad857475644e8de6d7d84b920637b2018">getMinMax3D</a> (const cv::Mat &laserScan, cv::Point3f &min, cv::Point3f &max)</td></tr>
|
||
<tr class="memdesc:ad857475644e8de6d7d84b920637b2018"><td class="mdescLeft"> </td><td class="mdescRight">Computes the minimum and maximum 3D points from a laser scan matrix. <br /></td></tr>
|
||
<tr class="separator:ad857475644e8de6d7d84b920637b2018"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:afc22f82c00f6dcc8a4ec1963891f4b7e" id="r_afc22f82c00f6dcc8a4ec1963891f4b7e"><td class="memItemLeft" align="right" valign="top">void RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#afc22f82c00f6dcc8a4ec1963891f4b7e">getMinMax3D</a> (const cv::Mat &laserScan, pcl::PointXYZ &min, pcl::PointXYZ &max)</td></tr>
|
||
<tr class="memdesc:afc22f82c00f6dcc8a4ec1963891f4b7e"><td class="mdescLeft"> </td><td class="mdescRight">Computes the minimum and maximum 3D points from a laser scan matrix and stores the results in pcl::PointXYZ. <br /></td></tr>
|
||
<tr class="separator:afc22f82c00f6dcc8a4ec1963891f4b7e"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a42fb0c483553db3b06e78d85106b8ee5" id="r_a42fb0c483553db3b06e78d85106b8ee5"><td class="memItemLeft" align="right" valign="top">cv::Point3f RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#a42fb0c483553db3b06e78d85106b8ee5">projectDisparityTo3D</a> (const cv::Point2f &pt, float disparity, const <a class="el" href="classrtabmap_1_1StereoCameraModel.html">StereoCameraModel</a> &model)</td></tr>
|
||
<tr class="memdesc:a42fb0c483553db3b06e78d85106b8ee5"><td class="mdescLeft"> </td><td class="mdescRight">Projects a 2D point from the left image and its disparity into 3D space. <br /></td></tr>
|
||
<tr class="separator:a42fb0c483553db3b06e78d85106b8ee5"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a05a022ff5229033fc248bc497edd5449" id="r_a05a022ff5229033fc248bc497edd5449"><td class="memItemLeft" align="right" valign="top">cv::Point3f RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#a05a022ff5229033fc248bc497edd5449">projectDisparityTo3D</a> (const cv::Point2f &pt, const cv::Mat &disparity, const <a class="el" href="classrtabmap_1_1StereoCameraModel.html">StereoCameraModel</a> &model)</td></tr>
|
||
<tr class="memdesc:a05a022ff5229033fc248bc497edd5449"><td class="mdescLeft"> </td><td class="mdescRight">Projects a 2D point from the left image and the disparity map into 3D space. <br /></td></tr>
|
||
<tr class="separator:a05a022ff5229033fc248bc497edd5449"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a826310ce938a13b9fff64f71e7ecc057" id="r_a826310ce938a13b9fff64f71e7ecc057"><td class="memItemLeft" align="right" valign="top">cv::Mat RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#a826310ce938a13b9fff64f71e7ecc057">projectCloudToCamera</a> (const cv::Size &imageSize, const cv::Mat &cameraMatrixK, const cv::Mat &laserScan, const <a class="el" href="classrtabmap_1_1Transform.html">rtabmap::Transform</a> &cameraTransform)</td></tr>
|
||
<tr class="memdesc:a826310ce938a13b9fff64f71e7ecc057"><td class="mdescLeft"> </td><td class="mdescRight">Register a point cloud (laser scan) to the camera's frame of reference and return a registered depth image. <br /></td></tr>
|
||
<tr class="separator:a826310ce938a13b9fff64f71e7ecc057"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a7dea084f1dbb77c8f5bc2a7241c3b566" id="r_a7dea084f1dbb77c8f5bc2a7241c3b566"><td class="memItemLeft" align="right" valign="top">cv::Mat RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#a7dea084f1dbb77c8f5bc2a7241c3b566">projectCloudToCamera</a> (const cv::Size &imageSize, const cv::Mat &cameraMatrixK, const pcl::PointCloud< pcl::PointXYZ >::Ptr laserScan, const <a class="el" href="classrtabmap_1_1Transform.html">rtabmap::Transform</a> &cameraTransform)</td></tr>
|
||
<tr class="memdesc:a7dea084f1dbb77c8f5bc2a7241c3b566"><td class="mdescLeft"> </td><td class="mdescRight">Register a point cloud (laser scan) to the camera's frame of reference and return a registered depth image. <br /></td></tr>
|
||
<tr class="separator:a7dea084f1dbb77c8f5bc2a7241c3b566"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a285e01226d60613ffd77d929780069ba" id="r_a285e01226d60613ffd77d929780069ba"><td class="memItemLeft" align="right" valign="top">cv::Mat RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#a285e01226d60613ffd77d929780069ba">projectCloudToCamera</a> (const cv::Size &imageSize, const cv::Mat &cameraMatrixK, const pcl::PCLPointCloud2::Ptr laserScan, const <a class="el" href="classrtabmap_1_1Transform.html">rtabmap::Transform</a> &cameraTransform)</td></tr>
|
||
<tr class="memdesc:a285e01226d60613ffd77d929780069ba"><td class="mdescLeft"> </td><td class="mdescRight">Register a point cloud (laser scan) to the camera's frame of reference and return a registered depth image. <br /></td></tr>
|
||
<tr class="separator:a285e01226d60613ffd77d929780069ba"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a992c9dd2c6243261244e0650d3e98564" id="r_a992c9dd2c6243261244e0650d3e98564"><td class="memItemLeft" align="right" valign="top">void RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#a992c9dd2c6243261244e0650d3e98564">fillProjectedCloudHoles</a> (cv::Mat &depthRegistered, bool verticalDirection, bool fillToBorder)</td></tr>
|
||
<tr class="memdesc:a992c9dd2c6243261244e0650d3e98564"><td class="mdescLeft"> </td><td class="mdescRight">Fills holes (missing depth values) in a depth image by interpolating between non-zero values. <br /></td></tr>
|
||
<tr class="separator:a992c9dd2c6243261244e0650d3e98564"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ae145af1bf4955fa135bcf359fb1fe628" id="r_ae145af1bf4955fa135bcf359fb1fe628"><td class="memItemLeft" align="right" valign="top">cv::Mat RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#ae145af1bf4955fa135bcf359fb1fe628">filterFloor</a> (const cv::Mat &depth, const std::vector< <a class="el" href="classrtabmap_1_1CameraModel.html">CameraModel</a> > &cameraModels, float threshold, cv::Mat *depthBelow=0)</td></tr>
|
||
<tr class="memdesc:ae145af1bf4955fa135bcf359fb1fe628"><td class="mdescLeft"> </td><td class="mdescRight">Filters out points below a certain threshold in a depth image based on camera models. <br /></td></tr>
|
||
<tr class="separator:ae145af1bf4955fa135bcf359fb1fe628"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:aa5a81a30a05507cb5d222f2f23c111ea" id="r_aa5a81a30a05507cb5d222f2f23c111ea"><td class="memItemLeft" align="right" valign="top">std::vector< std::pair< std::pair< int, int >, pcl::PointXY > > RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#aa5a81a30a05507cb5d222f2f23c111ea">projectCloudToCameras</a> (const pcl::PointCloud< pcl::PointXYZRGBNormal > &cloud, const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > &cameraPoses, const std::map< int, std::vector< <a class="el" href="classrtabmap_1_1CameraModel.html">CameraModel</a> > > &cameraModels, float maxDistance=0.0f, float maxAngle=0.0f, float maxDepthError=0.0f, const std::vector< float > &roiRatios=std::vector< float >(), const cv::Mat &projMask=cv::Mat(), bool distanceToCamPolicy=false, const <a class="el" href="classrtabmap_1_1ProgressState.html">ProgressState</a> *state=0)</td></tr>
|
||
<tr class="memdesc:aa5a81a30a05507cb5d222f2f23c111ea"><td class="mdescLeft"> </td><td class="mdescRight">Projects a 3D point cloud to the best camera (NodeID -> CameraIndex) for each point based on a policy. <br /></td></tr>
|
||
<tr class="separator:aa5a81a30a05507cb5d222f2f23c111ea"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ae29c5a7ba359682e2430f55318226b39" id="r_ae29c5a7ba359682e2430f55318226b39"><td class="memItemLeft" align="right" valign="top">std::vector< std::pair< std::pair< int, int >, pcl::PointXY > > RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#ae29c5a7ba359682e2430f55318226b39">projectCloudToCameras</a> (const pcl::PointCloud< pcl::PointXYZINormal > &cloud, const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > &cameraPoses, const std::map< int, std::vector< <a class="el" href="classrtabmap_1_1CameraModel.html">CameraModel</a> > > &cameraModels, float maxDistance=0.0f, float maxAngle=0.0f, float maxDepthError=0.0f, const std::vector< float > &roiRatios=std::vector< float >(), const cv::Mat &projMask=cv::Mat(), bool distanceToCamPolicy=false, const <a class="el" href="classrtabmap_1_1ProgressState.html">ProgressState</a> *state=0)</td></tr>
|
||
<tr class="memdesc:ae29c5a7ba359682e2430f55318226b39"><td class="mdescLeft"> </td><td class="mdescRight">Projects a 3D point cloud to the best camera (NodeID -> CameraIndex) for each point based on a policy. <br /></td></tr>
|
||
<tr class="separator:ae29c5a7ba359682e2430f55318226b39"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:acc048e10b70e3ad3efb299926e575020" id="r_acc048e10b70e3ad3efb299926e575020"><td class="memItemLeft" align="right" valign="top">bool RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#acc048e10b70e3ad3efb299926e575020">isFinite</a> (const cv::Point3f &pt)</td></tr>
|
||
<tr class="memdesc:acc048e10b70e3ad3efb299926e575020"><td class="mdescLeft"> </td><td class="mdescRight">Checks if all coordinates of a 3D point are finite. <br /></td></tr>
|
||
<tr class="separator:acc048e10b70e3ad3efb299926e575020"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a863268b894de375aa45485dafe52dd7b" id="r_a863268b894de375aa45485dafe52dd7b"><td class="memItemLeft" align="right" valign="top">pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#a863268b894de375aa45485dafe52dd7b">concatenateClouds</a> (const std::list< pcl::PointCloud< pcl::PointXYZ >::Ptr > &clouds)</td></tr>
|
||
<tr class="memdesc:a863268b894de375aa45485dafe52dd7b"><td class="mdescLeft"> </td><td class="mdescRight">Concatenates a list of PointXYZ point clouds into a single point cloud. <br /></td></tr>
|
||
<tr class="separator:a863268b894de375aa45485dafe52dd7b"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a909a600c90d8bc4f77b62ff21a97ddc1" id="r_a909a600c90d8bc4f77b62ff21a97ddc1"><td class="memItemLeft" align="right" valign="top">pcl::PointCloud< pcl::PointXYZRGB >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#a909a600c90d8bc4f77b62ff21a97ddc1">concatenateClouds</a> (const std::list< pcl::PointCloud< pcl::PointXYZRGB >::Ptr > &clouds)</td></tr>
|
||
<tr class="memdesc:a909a600c90d8bc4f77b62ff21a97ddc1"><td class="mdescLeft"> </td><td class="mdescRight">Concatenates a list of PointXYZRGB point clouds into a single point cloud. <br /></td></tr>
|
||
<tr class="separator:a909a600c90d8bc4f77b62ff21a97ddc1"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:aff3c61a08b0fcad7f1c3f7c847190969" id="r_aff3c61a08b0fcad7f1c3f7c847190969"><td class="memItemLeft" align="right" valign="top">pcl::IndicesPtr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#aff3c61a08b0fcad7f1c3f7c847190969">concatenate</a> (const std::vector< pcl::IndicesPtr > &indices)</td></tr>
|
||
<tr class="memdesc:aff3c61a08b0fcad7f1c3f7c847190969"><td class="mdescLeft"> </td><td class="mdescRight">Concatenates multiple sets of indices into a single index vector. <br /></td></tr>
|
||
<tr class="separator:aff3c61a08b0fcad7f1c3f7c847190969"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ac6c2019b1dad806d0c593e2ee3c21185" id="r_ac6c2019b1dad806d0c593e2ee3c21185"><td class="memItemLeft" align="right" valign="top">pcl::IndicesPtr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#ac6c2019b1dad806d0c593e2ee3c21185">concatenate</a> (const pcl::IndicesPtr &indicesA, const pcl::IndicesPtr &indicesB)</td></tr>
|
||
<tr class="memdesc:ac6c2019b1dad806d0c593e2ee3c21185"><td class="mdescLeft"> </td><td class="mdescRight">Concatenates two sets of indices into one. <br /></td></tr>
|
||
<tr class="separator:ac6c2019b1dad806d0c593e2ee3c21185"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a4e297ff4baacb0c658d7481eef5201a6" id="r_a4e297ff4baacb0c658d7481eef5201a6"><td class="memItemLeft" align="right" valign="top">void RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#a4e297ff4baacb0c658d7481eef5201a6">savePCDWords</a> (const std::string &fileName, const std::multimap< int, pcl::PointXYZ > &words, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &transform=<a class="el" href="classrtabmap_1_1Transform.html#a8ea4368f2018d751d2733038081d56a2">Transform::getIdentity</a>())</td></tr>
|
||
<tr class="memdesc:a4e297ff4baacb0c658d7481eef5201a6"><td class="mdescLeft"> </td><td class="mdescRight">Saves 3D word points to a PCD file, applying a transform to each point. <br /></td></tr>
|
||
<tr class="separator:a4e297ff4baacb0c658d7481eef5201a6"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:abf6955904a45f28187e73aa1f4c409e0" id="r_abf6955904a45f28187e73aa1f4c409e0"><td class="memItemLeft" align="right" valign="top">void RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#abf6955904a45f28187e73aa1f4c409e0">savePCDWords</a> (const std::string &fileName, const std::multimap< int, cv::Point3f > &words, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &transform=<a class="el" href="classrtabmap_1_1Transform.html#a8ea4368f2018d751d2733038081d56a2">Transform::getIdentity</a>())</td></tr>
|
||
<tr class="memdesc:abf6955904a45f28187e73aa1f4c409e0"><td class="mdescLeft"> </td><td class="mdescRight">Saves 3D word points (as OpenCV points) to a PCD file, applying a transform to each point. <br /></td></tr>
|
||
<tr class="separator:abf6955904a45f28187e73aa1f4c409e0"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a5ee08270b4a9e8ad93193721c7c71556" id="r_a5ee08270b4a9e8ad93193721c7c71556"><td class="memItemLeft" align="right" valign="top">cv::Mat RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#a5ee08270b4a9e8ad93193721c7c71556">loadBINScan</a> (const std::string &fileName)</td></tr>
|
||
<tr class="memdesc:a5ee08270b4a9e8ad93193721c7c71556"><td class="mdescLeft"> </td><td class="mdescRight">Loads a KITTI-style Velodyne binary scan file into an OpenCV matrix. <br /></td></tr>
|
||
<tr class="separator:a5ee08270b4a9e8ad93193721c7c71556"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a636c56f4ab6e58044595f95e44f93d06" id="r_a636c56f4ab6e58044595f95e44f93d06"><td class="memItemLeft" align="right" valign="top">pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#a636c56f4ab6e58044595f95e44f93d06">loadBINCloud</a> (const std::string &fileName)</td></tr>
|
||
<tr class="memdesc:a636c56f4ab6e58044595f95e44f93d06"><td class="mdescLeft"> </td><td class="mdescRight">Loads a KITTI-style Velodyne binary scan and converts it to a PCL point cloud. <br /></td></tr>
|
||
<tr class="separator:a636c56f4ab6e58044595f95e44f93d06"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ae112015538769a29c920da97096e0d17" id="r_ae112015538769a29c920da97096e0d17"><td class="memItemLeft" align="right" valign="top">RTABMAP_DEPRECATED pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#ae112015538769a29c920da97096e0d17">loadBINCloud</a> (const std::string &fileName, int dim)</td></tr>
|
||
<tr class="memdesc:ae112015538769a29c920da97096e0d17"><td class="mdescLeft"> </td><td class="mdescRight">Loads a KITTI-style Velodyne binary scan and converts it to a PCL point cloud. <br /></td></tr>
|
||
<tr class="separator:ae112015538769a29c920da97096e0d17"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:aefffe4f3418377f85659e7546668b190" id="r_aefffe4f3418377f85659e7546668b190"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#aefffe4f3418377f85659e7546668b190">loadScan</a> (const std::string &path)</td></tr>
|
||
<tr class="memdesc:aefffe4f3418377f85659e7546668b190"><td class="mdescLeft"> </td><td class="mdescRight">Loads a 3D scan from a file (.pcd, .ply, or .bin format). <br /></td></tr>
|
||
<tr class="separator:aefffe4f3418377f85659e7546668b190"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a86ba029bd916ab76dd5645ba7e1b2ef8" id="r_a86ba029bd916ab76dd5645ba7e1b2ef8"><td class="memItemLeft" align="right" valign="top">RTABMAP_DEPRECATED pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#a86ba029bd916ab76dd5645ba7e1b2ef8">loadCloud</a> (const std::string &path, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &transform=<a class="el" href="classrtabmap_1_1Transform.html#a8ea4368f2018d751d2733038081d56a2">Transform::getIdentity</a>(), int downsampleStep=1, float voxelSize=0.0f)</td></tr>
|
||
<tr class="memdesc:a86ba029bd916ab76dd5645ba7e1b2ef8"><td class="mdescLeft"> </td><td class="mdescRight">Loads and optionally transforms/downsamples/voxelizes a point cloud. <br /></td></tr>
|
||
<tr class="separator:a86ba029bd916ab76dd5645ba7e1b2ef8"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ae4f056638c16889c7cb1d41ecac2866c" id="r_ae4f056638c16889c7cb1d41ecac2866c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#ae4f056638c16889c7cb1d41ecac2866c">deskew</a> (const <a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> &input, double inputStamp, const <a class="el" href="classrtabmap_1_1Transform.html">rtabmap::Transform</a> &velocity)</td></tr>
|
||
<tr class="memdesc:ae4f056638c16889c7cb1d41ecac2866c"><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="classrtabmap_1_1Lidar.html">Lidar</a> deskewing. <br /></td></tr>
|
||
<tr class="separator:ae4f056638c16889c7cb1d41ecac2866c"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a58b9802c1fc28b7e8927359173f98de8" id="r_a58b9802c1fc28b7e8927359173f98de8"><td class="memItemLeft" align="right" valign="top">void RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#a58b9802c1fc28b7e8927359173f98de8">extractXYZCorrespondences</a> (const std::multimap< int, pcl::PointXYZ > &words1, const std::multimap< int, pcl::PointXYZ > &words2, pcl::PointCloud< pcl::PointXYZ > &cloud1, pcl::PointCloud< pcl::PointXYZ > &cloud2)</td></tr>
|
||
<tr class="memdesc:a58b9802c1fc28b7e8927359173f98de8"><td class="mdescLeft"> </td><td class="mdescRight">Extracts 3D point correspondences between two sets of labeled 3D points. <br /></td></tr>
|
||
<tr class="separator:a58b9802c1fc28b7e8927359173f98de8"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ab6a2896e40afacde8cb8b0d10a955e02" id="r_ab6a2896e40afacde8cb8b0d10a955e02"><td class="memItemLeft" align="right" valign="top">void RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#ab6a2896e40afacde8cb8b0d10a955e02">extractXYZCorrespondencesRANSAC</a> (const std::multimap< int, pcl::PointXYZ > &words1, const std::multimap< int, pcl::PointXYZ > &words2, pcl::PointCloud< pcl::PointXYZ > &cloud1, pcl::PointCloud< pcl::PointXYZ > &cloud2)</td></tr>
|
||
<tr class="memdesc:ab6a2896e40afacde8cb8b0d10a955e02"><td class="mdescLeft"> </td><td class="mdescRight">Extracts reliable 3D point correspondences between two sets of labeled 3D points using RANSAC filtering. <br /></td></tr>
|
||
<tr class="separator:ab6a2896e40afacde8cb8b0d10a955e02"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a0696277eef10a197af8fd5dcba52fc12" id="r_a0696277eef10a197af8fd5dcba52fc12"><td class="memItemLeft" align="right" valign="top">void RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#a0696277eef10a197af8fd5dcba52fc12">extractXYZCorrespondences</a> (const std::list< std::pair< cv::Point2f, cv::Point2f > > &correspondences, const cv::Mat &depthImage1, const cv::Mat &depthImage2, float cx, float cy, float fx, float fy, float maxDepth, pcl::PointCloud< pcl::PointXYZ > &cloud1, pcl::PointCloud< pcl::PointXYZ > &cloud2)</td></tr>
|
||
<tr class="memdesc:a0696277eef10a197af8fd5dcba52fc12"><td class="mdescLeft"> </td><td class="mdescRight">Extracts 3D point correspondences from 2D pixel matches using depth images. <br /></td></tr>
|
||
<tr class="separator:a0696277eef10a197af8fd5dcba52fc12"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a340e76117340170fb465ade8b11dd6af" id="r_a340e76117340170fb465ade8b11dd6af"><td class="memItemLeft" align="right" valign="top">void RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#a340e76117340170fb465ade8b11dd6af">extractXYZCorrespondences</a> (const std::list< std::pair< cv::Point2f, cv::Point2f > > &correspondences, const pcl::PointCloud< pcl::PointXYZ > &cloud1, const pcl::PointCloud< pcl::PointXYZ > &cloud2, pcl::PointCloud< pcl::PointXYZ > &inliers1, pcl::PointCloud< pcl::PointXYZ > &inliers2)</td></tr>
|
||
<tr class="memdesc:a340e76117340170fb465ade8b11dd6af"><td class="mdescLeft"> </td><td class="mdescRight">Extracts 3D correspondences from 2D feature matches using <code>pcl::PointXYZ</code> organized point clouds. <br /></td></tr>
|
||
<tr class="separator:a340e76117340170fb465ade8b11dd6af"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a43b6de83939173dfd275cbd17f5d7500" id="r_a43b6de83939173dfd275cbd17f5d7500"><td class="memItemLeft" align="right" valign="top">void RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#a43b6de83939173dfd275cbd17f5d7500">extractXYZCorrespondences</a> (const std::list< std::pair< cv::Point2f, cv::Point2f > > &correspondences, const pcl::PointCloud< pcl::PointXYZRGB > &cloud1, const pcl::PointCloud< pcl::PointXYZRGB > &cloud2, pcl::PointCloud< pcl::PointXYZ > &inliers1, pcl::PointCloud< pcl::PointXYZ > &inliers2)</td></tr>
|
||
<tr class="memdesc:a43b6de83939173dfd275cbd17f5d7500"><td class="mdescLeft"> </td><td class="mdescRight">Extracts 3D correspondences from 2D feature matches using <code>pcl::PointXYZRGB</code> organized point clouds. <br /></td></tr>
|
||
<tr class="separator:a43b6de83939173dfd275cbd17f5d7500"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:af7d4d348836959bbdce0e5db0a4af91c" id="r_af7d4d348836959bbdce0e5db0a4af91c"><td class="memItemLeft" align="right" valign="top">int RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#af7d4d348836959bbdce0e5db0a4af91c">countUniquePairs</a> (const std::multimap< int, pcl::PointXYZ > &wordsA, const std::multimap< int, pcl::PointXYZ > &wordsB)</td></tr>
|
||
<tr class="memdesc:af7d4d348836959bbdce0e5db0a4af91c"><td class="mdescLeft"> </td><td class="mdescRight">Counts the number of unique 3D point correspondences between two sets of word-indexed features. <br /></td></tr>
|
||
<tr class="separator:af7d4d348836959bbdce0e5db0a4af91c"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a96efcf6ed971e5a5d6b7f9a5e03d1ce3" id="r_a96efcf6ed971e5a5d6b7f9a5e03d1ce3"><td class="memItemLeft" align="right" valign="top">void RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#a96efcf6ed971e5a5d6b7f9a5e03d1ce3">filterMaxDepth</a> (pcl::PointCloud< pcl::PointXYZ > &inliers1, pcl::PointCloud< pcl::PointXYZ > &inliers2, float maxDepth, char depthAxis, bool removeDuplicates)</td></tr>
|
||
<tr class="memdesc:a96efcf6ed971e5a5d6b7f9a5e03d1ce3"><td class="mdescLeft"> </td><td class="mdescRight">Filters pairs of 3D points by maximum depth along a specified axis and optionally removes duplicates. <br /></td></tr>
|
||
<tr class="separator:a96efcf6ed971e5a5d6b7f9a5e03d1ce3"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a188c2a13980f6b7d85e6e0804a38cb50" id="r_a188c2a13980f6b7d85e6e0804a38cb50"><td class="memItemLeft" align="right" valign="top">void RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#a188c2a13980f6b7d85e6e0804a38cb50">findCorrespondences</a> (const std::multimap< int, cv::KeyPoint > &wordsA, const std::multimap< int, cv::KeyPoint > &wordsB, std::list< std::pair< cv::Point2f, cv::Point2f > > &pairs)</td></tr>
|
||
<tr class="memdesc:a188c2a13980f6b7d85e6e0804a38cb50"><td class="mdescLeft"> </td><td class="mdescRight">Finds 2D point correspondences between two sets of keypoints based on matching word IDs. <br /></td></tr>
|
||
<tr class="separator:a188c2a13980f6b7d85e6e0804a38cb50"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ac466a705ab9ee7d99f23842cd71f3c96" id="r_ac466a705ab9ee7d99f23842cd71f3c96"><td class="memItemLeft" align="right" valign="top">void RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#ac466a705ab9ee7d99f23842cd71f3c96">findCorrespondences</a> (const std::multimap< int, cv::Point3f > &words1, const std::multimap< int, cv::Point3f > &words2, std::vector< cv::Point3f > &inliers1, std::vector< cv::Point3f > &inliers2, float maxDepth, std::vector< int > *uniqueCorrespondences=0)</td></tr>
|
||
<tr class="memdesc:ac466a705ab9ee7d99f23842cd71f3c96"><td class="mdescLeft"> </td><td class="mdescRight">Finds 3D point correspondences between two sets of points based on matching word IDs. <br /></td></tr>
|
||
<tr class="separator:ac466a705ab9ee7d99f23842cd71f3c96"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a5c07f098f9f5ba889e18d22b927f3cd4" id="r_a5c07f098f9f5ba889e18d22b927f3cd4"><td class="memItemLeft" align="right" valign="top">void RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#a5c07f098f9f5ba889e18d22b927f3cd4">findCorrespondences</a> (const std::map< int, cv::Point3f > &words1, const std::map< int, cv::Point3f > &words2, std::vector< cv::Point3f > &inliers1, std::vector< cv::Point3f > &inliers2, float maxDepth, std::vector< int > *correspondences=0)</td></tr>
|
||
<tr class="memdesc:a5c07f098f9f5ba889e18d22b927f3cd4"><td class="mdescLeft"> </td><td class="mdescRight">Finds 3D point correspondences between two sets of uniquely indexed 3D points. <br /></td></tr>
|
||
<tr class="separator:a5c07f098f9f5ba889e18d22b927f3cd4"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a785db0d55f5eccf209b9d3d712ec92b2" id="r_a785db0d55f5eccf209b9d3d712ec92b2"><td class="memItemLeft" align="right" valign="top">std::vector< cv::Point3f > RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#a785db0d55f5eccf209b9d3d712ec92b2">generateKeypoints3DDepth</a> (const std::vector< cv::KeyPoint > &keypoints, const cv::Mat &depth, const std::vector< <a class="el" href="classrtabmap_1_1CameraModel.html">CameraModel</a> > &cameraModels, float minDepth=0, float maxDepth=0)</td></tr>
|
||
<tr class="memdesc:a785db0d55f5eccf209b9d3d712ec92b2"><td class="mdescLeft"> </td><td class="mdescRight">Projects 2D keypoints to 3D space using the provided depth image and camera models. <br /></td></tr>
|
||
<tr class="separator:a785db0d55f5eccf209b9d3d712ec92b2"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a4f938d094d62997e0fb5d53c59f7ef82" id="r_a4f938d094d62997e0fb5d53c59f7ef82"><td class="memItemLeft" align="right" valign="top">std::vector< cv::Point3f > RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#a4f938d094d62997e0fb5d53c59f7ef82">generateKeypoints3DDepth</a> (const std::vector< cv::KeyPoint > &keypoints, const cv::Mat &depth, const <a class="el" href="classrtabmap_1_1CameraModel.html">CameraModel</a> &cameraModel, float minDepth=0, float maxDepth=0)</td></tr>
|
||
<tr class="memdesc:a4f938d094d62997e0fb5d53c59f7ef82"><td class="mdescLeft"> </td><td class="mdescRight">Projects 2D keypoints to 3D space using the provided depth image and camera model. <br /></td></tr>
|
||
<tr class="separator:a4f938d094d62997e0fb5d53c59f7ef82"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:af34bc7763a1e077a3520f4952ed9d196" id="r_af34bc7763a1e077a3520f4952ed9d196"><td class="memItemLeft" align="right" valign="top">std::vector< cv::Point3f > RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#af34bc7763a1e077a3520f4952ed9d196">generateKeypoints3DDisparity</a> (const std::vector< cv::KeyPoint > &keypoints, const cv::Mat &disparity, const <a class="el" href="classrtabmap_1_1StereoCameraModel.html">StereoCameraModel</a> &stereoCameraModel, float minDepth=0, float maxDepth=0)</td></tr>
|
||
<tr class="memdesc:af34bc7763a1e077a3520f4952ed9d196"><td class="mdescLeft"> </td><td class="mdescRight">Projects 2D keypoints into 3D space using a disparity image and a stereo camera model. <br /></td></tr>
|
||
<tr class="separator:af34bc7763a1e077a3520f4952ed9d196"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a7d48db86fe2f0cfc9abc974a66be8695" id="r_a7d48db86fe2f0cfc9abc974a66be8695"><td class="memItemLeft" align="right" valign="top">std::vector< cv::Point3f > RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#a7d48db86fe2f0cfc9abc974a66be8695">generateKeypoints3DStereo</a> (const std::vector< cv::Point2f > &leftCorners, const std::vector< cv::Point2f > &rightCorners, const <a class="el" href="classrtabmap_1_1StereoCameraModel.html">StereoCameraModel</a> &model, const std::vector< unsigned char > &mask=std::vector< unsigned char >(), float minDepth=0, float maxDepth=0)</td></tr>
|
||
<tr class="memdesc:a7d48db86fe2f0cfc9abc974a66be8695"><td class="mdescLeft"> </td><td class="mdescRight">Computes 3D keypoints from corresponding 2D points in a stereo image pair. <br /></td></tr>
|
||
<tr class="separator:a7d48db86fe2f0cfc9abc974a66be8695"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ad39c276b0545aba05c405155ec5d729c" id="r_ad39c276b0545aba05c405155ec5d729c"><td class="memItemLeft" align="right" valign="top"><a id="ad39c276b0545aba05c405155ec5d729c" name="ad39c276b0545aba05c405155ec5d729c"></a>
|
||
std::map< int, cv::Point3f > RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>generateWords3DMono</b> (const std::map< int, cv::KeyPoint > &kpts, const std::map< int, cv::KeyPoint > &previousKpts, const <a class="el" href="classrtabmap_1_1CameraModel.html">CameraModel</a> &cameraModel, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &cameraTransform, float ransacReprojThreshold=3.0f, float ransacConfidence=0.99f, int varianceMedianRatio=4, const std::map< int, cv::Point3f > &refGuess3D=std::map< int, cv::Point3f >(), double *variance=0, std::vector< int > *matchesOut=0)</td></tr>
|
||
<tr class="separator:ad39c276b0545aba05c405155ec5d729c"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:acc3c59044fcfdb8cc1fba8a41a0e9eab" id="r_acc3c59044fcfdb8cc1fba8a41a0e9eab"><td class="memItemLeft" align="right" valign="top">std::multimap< int, cv::KeyPoint > RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#acc3c59044fcfdb8cc1fba8a41a0e9eab">aggregate</a> (const std::list< int > &wordIds, const std::vector< cv::KeyPoint > &keypoints)</td></tr>
|
||
<tr class="memdesc:acc3c59044fcfdb8cc1fba8a41a0e9eab"><td class="mdescLeft"> </td><td class="mdescRight">Aggregates word IDs and corresponding keypoints into a multimap. <br /></td></tr>
|
||
<tr class="separator:acc3c59044fcfdb8cc1fba8a41a0e9eab"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a7edd91750858112fd161f0ed30af7f45" id="r_a7edd91750858112fd161f0ed30af7f45"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#a7edd91750858112fd161f0ed30af7f45">commonFiltering</a> (const <a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> &scan, int downsamplingStep, float rangeMin=0.0f, float rangeMax=0.0f, float voxelSize=0.0f, int normalK=0, float normalRadius=0.0f, float groundNormalsUp=0.0f)</td></tr>
|
||
<tr class="memdesc:a7edd91750858112fd161f0ed30af7f45"><td class="mdescLeft"> </td><td class="mdescRight">Applies a common set of filters to a <a class="el" href="classrtabmap_1_1LaserScan.html" title="Represents 2D or 3D laser scan data with support for multiple point data formats.">LaserScan</a>, including downsampling, range limits, voxel grid filtering, and normal estimation. <br /></td></tr>
|
||
<tr class="separator:a7edd91750858112fd161f0ed30af7f45"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ad02c78c4d3ca36fa9a27a845540ebe55" id="r_ad02c78c4d3ca36fa9a27a845540ebe55"><td class="memItemLeft" align="right" valign="top">RTABMAP_DEPRECATED <a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#ad02c78c4d3ca36fa9a27a845540ebe55">commonFiltering</a> (const <a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> &scan, int downsamplingStep, float rangeMin, float rangeMax, float voxelSize, int normalK, float normalRadius, bool forceGroundNormalsUp)</td></tr>
|
||
<tr class="memdesc:ad02c78c4d3ca36fa9a27a845540ebe55"><td class="mdescLeft"> </td><td class="mdescRight">Applies a common set of filters to a <a class="el" href="classrtabmap_1_1LaserScan.html" title="Represents 2D or 3D laser scan data with support for multiple point data formats.">LaserScan</a>, including downsampling, range limits, voxel grid filtering, and normal estimation. <br /></td></tr>
|
||
<tr class="separator:ad02c78c4d3ca36fa9a27a845540ebe55"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ae33bcf90896fbedc448097bed3bde0ae" id="r_ae33bcf90896fbedc448097bed3bde0ae"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#ae33bcf90896fbedc448097bed3bde0ae">rangeFiltering</a> (const <a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> &scan, float rangeMin, float rangeMax)</td></tr>
|
||
<tr class="memdesc:ae33bcf90896fbedc448097bed3bde0ae"><td class="mdescLeft"> </td><td class="mdescRight">Filters a <a class="el" href="classrtabmap_1_1LaserScan.html" title="Represents 2D or 3D laser scan data with support for multiple point data formats.">LaserScan</a> data on a minimum and maximum Euclidean range. <br /></td></tr>
|
||
<tr class="separator:ae33bcf90896fbedc448097bed3bde0ae"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gaf1867021c847f77f561a96e4823a16bd" id="r_gaf1867021c847f77f561a96e4823a16bd"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::IndicesPtr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>rangeFiltering</b> (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, float rangeMin, float rangeMax)</td></tr>
|
||
<tr class="memdesc:gaf1867021c847f77f561a96e4823a16bd"><td class="mdescLeft"> </td><td class="mdescRight">Filters a point cloud of type <code>pcl::PointXYZ</code>. <br /></td></tr>
|
||
<tr class="separator:gaf1867021c847f77f561a96e4823a16bd"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gaeff3b4153a78703ce5be9c64f8243596" id="r_gaeff3b4153a78703ce5be9c64f8243596"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::IndicesPtr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>rangeFiltering</b> (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::IndicesPtr &indices, float rangeMin, float rangeMax)</td></tr>
|
||
<tr class="memdesc:gaeff3b4153a78703ce5be9c64f8243596"><td class="mdescLeft"> </td><td class="mdescRight">Filters a point cloud of type <code>pcl::PointXYZRGB</code>. <br /></td></tr>
|
||
<tr class="separator:gaeff3b4153a78703ce5be9c64f8243596"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga2a2226e27b4203d04293f84bf8032e3f" id="r_ga2a2226e27b4203d04293f84bf8032e3f"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::IndicesPtr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>rangeFiltering</b> (const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, float rangeMin, float rangeMax)</td></tr>
|
||
<tr class="memdesc:ga2a2226e27b4203d04293f84bf8032e3f"><td class="mdescLeft"> </td><td class="mdescRight">Filters a point cloud of type <code>pcl::PointNormal</code>. <br /></td></tr>
|
||
<tr class="separator:ga2a2226e27b4203d04293f84bf8032e3f"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga954c38903497ffa168e9d58afc47078e" id="r_ga954c38903497ffa168e9d58afc47078e"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::IndicesPtr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>rangeFiltering</b> (const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, float rangeMin, float rangeMax)</td></tr>
|
||
<tr class="memdesc:ga954c38903497ffa168e9d58afc47078e"><td class="mdescLeft"> </td><td class="mdescRight">Filters a point cloud of type <code>pcl::PointXYZRGBNormal</code>. <br /></td></tr>
|
||
<tr class="separator:ga954c38903497ffa168e9d58afc47078e"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga2dfe5eefc31a50912297f6341eae4446" id="r_ga2dfe5eefc31a50912297f6341eae4446"><td class="memItemLeft" align="right" valign="top">
|
||
void RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>rangeSplitFiltering</b> (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, float range, pcl::IndicesPtr &closeIndices, pcl::IndicesPtr &farIndices)</td></tr>
|
||
<tr class="memdesc:ga2dfe5eefc31a50912297f6341eae4446"><td class="mdescLeft"> </td><td class="mdescRight">Splits a point cloud of type <code>pcl::PointXYZ</code>. <br /></td></tr>
|
||
<tr class="separator:ga2dfe5eefc31a50912297f6341eae4446"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga99d6429ac043d37bdef871158739557e" id="r_ga99d6429ac043d37bdef871158739557e"><td class="memItemLeft" align="right" valign="top">
|
||
void RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>rangeSplitFiltering</b> (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::IndicesPtr &indices, float range, pcl::IndicesPtr &closeIndices, pcl::IndicesPtr &farIndices)</td></tr>
|
||
<tr class="memdesc:ga99d6429ac043d37bdef871158739557e"><td class="mdescLeft"> </td><td class="mdescRight">Splits a point cloud of type <code>pcl::PointXYZRGB</code>. <br /></td></tr>
|
||
<tr class="separator:ga99d6429ac043d37bdef871158739557e"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga843adb51ad7882fc8c6b8d00f4663c3b" id="r_ga843adb51ad7882fc8c6b8d00f4663c3b"><td class="memItemLeft" align="right" valign="top">
|
||
void RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>rangeSplitFiltering</b> (const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, float range, pcl::IndicesPtr &closeIndices, pcl::IndicesPtr &farIndices)</td></tr>
|
||
<tr class="memdesc:ga843adb51ad7882fc8c6b8d00f4663c3b"><td class="mdescLeft"> </td><td class="mdescRight">Splits a point cloud of type <code>pcl::PointNormal</code>. <br /></td></tr>
|
||
<tr class="separator:ga843adb51ad7882fc8c6b8d00f4663c3b"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gac9564b3cf8c8be2f80a20655f70af4f0" id="r_gac9564b3cf8c8be2f80a20655f70af4f0"><td class="memItemLeft" align="right" valign="top">
|
||
void RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>rangeSplitFiltering</b> (const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, float range, pcl::IndicesPtr &closeIndices, pcl::IndicesPtr &farIndices)</td></tr>
|
||
<tr class="memdesc:gac9564b3cf8c8be2f80a20655f70af4f0"><td class="mdescLeft"> </td><td class="mdescRight">Splits a point cloud of type <code>pcl::PointXYZRGBNormal</code>. <br /></td></tr>
|
||
<tr class="separator:gac9564b3cf8c8be2f80a20655f70af4f0"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga83a15e5eaeee8707bfa5563c71154579" id="r_ga83a15e5eaeee8707bfa5563c71154579"><td class="memItemLeft" align="right" valign="top">
|
||
<a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>downsample</b> (const <a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> &cloud, int step)</td></tr>
|
||
<tr class="memdesc:ga83a15e5eaeee8707bfa5563c71154579"><td class="mdescLeft"> </td><td class="mdescRight">Downsamples a <a class="el" href="classrtabmap_1_1LaserScan.html" title="Represents 2D or 3D laser scan data with support for multiple point data formats.">LaserScan</a>. <br /></td></tr>
|
||
<tr class="separator:ga83a15e5eaeee8707bfa5563c71154579"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga2f9dd8a7c572ce78b76aec448b17a863" id="r_ga2f9dd8a7c572ce78b76aec448b17a863"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>downsample</b> (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, int step)</td></tr>
|
||
<tr class="memdesc:ga2f9dd8a7c572ce78b76aec448b17a863"><td class="mdescLeft"> </td><td class="mdescRight">Downsamples a point cloud of type <code>pcl::PointXYZ</code>. <br /></td></tr>
|
||
<tr class="separator:ga2f9dd8a7c572ce78b76aec448b17a863"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga7a57facb7148254d43af7577a3716d15" id="r_ga7a57facb7148254d43af7577a3716d15"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointXYZRGB >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>downsample</b> (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, int step)</td></tr>
|
||
<tr class="memdesc:ga7a57facb7148254d43af7577a3716d15"><td class="mdescLeft"> </td><td class="mdescRight">Downsamples a point cloud of type <code>pcl::PointXYZRGB</code>. <br /></td></tr>
|
||
<tr class="separator:ga7a57facb7148254d43af7577a3716d15"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gab4b196b83a0634b8e58c145ed54d510d" id="r_gab4b196b83a0634b8e58c145ed54d510d"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointXYZI >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>downsample</b> (const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, int step)</td></tr>
|
||
<tr class="memdesc:gab4b196b83a0634b8e58c145ed54d510d"><td class="mdescLeft"> </td><td class="mdescRight">Downsamples a point cloud of type <code>pcl::PointXYZI</code>. <br /></td></tr>
|
||
<tr class="separator:gab4b196b83a0634b8e58c145ed54d510d"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga83657d48dce8b727088941773f4d8a73" id="r_ga83657d48dce8b727088941773f4d8a73"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointNormal >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>downsample</b> (const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, int step)</td></tr>
|
||
<tr class="memdesc:ga83657d48dce8b727088941773f4d8a73"><td class="mdescLeft"> </td><td class="mdescRight">Downsamples a point cloud of type <code>pcl::PointNormal</code>. <br /></td></tr>
|
||
<tr class="separator:ga83657d48dce8b727088941773f4d8a73"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga8c3ca654fb0cc07084fdac8077714b3a" id="r_ga8c3ca654fb0cc07084fdac8077714b3a"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>downsample</b> (const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, int step)</td></tr>
|
||
<tr class="memdesc:ga8c3ca654fb0cc07084fdac8077714b3a"><td class="mdescLeft"> </td><td class="mdescRight">Downsamples a point cloud of type <code>pcl::PointXYZRGBNormal</code>. <br /></td></tr>
|
||
<tr class="separator:ga8c3ca654fb0cc07084fdac8077714b3a"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga32d575439b2f5082c3946bc964c14b75" id="r_ga32d575439b2f5082c3946bc964c14b75"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointXYZINormal >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>downsample</b> (const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, int step)</td></tr>
|
||
<tr class="memdesc:ga32d575439b2f5082c3946bc964c14b75"><td class="mdescLeft"> </td><td class="mdescRight">Downsamples a point cloud of type <code>pcl::PointXYZINormal</code>. <br /></td></tr>
|
||
<tr class="separator:ga32d575439b2f5082c3946bc964c14b75"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gad8d88a06174857cf53b1dc2cf2310d89" id="r_gad8d88a06174857cf53b1dc2cf2310d89"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>voxelize</b> (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, float voxelSize)</td></tr>
|
||
<tr class="memdesc:gad8d88a06174857cf53b1dc2cf2310d89"><td class="mdescLeft"> </td><td class="mdescRight">Performs voxel grid downsampling on a point cloud of type <code>pcl::PointXYZ</code> on provided indices. <br /></td></tr>
|
||
<tr class="separator:gad8d88a06174857cf53b1dc2cf2310d89"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga94af1db82b1faffff875a9902d44285b" id="r_ga94af1db82b1faffff875a9902d44285b"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointNormal >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>voxelize</b> (const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, float voxelSize)</td></tr>
|
||
<tr class="memdesc:ga94af1db82b1faffff875a9902d44285b"><td class="mdescLeft"> </td><td class="mdescRight">Performs voxel grid downsampling on a point cloud of type <code>pcl::PointNormal</code> on provided indices. <br /></td></tr>
|
||
<tr class="separator:ga94af1db82b1faffff875a9902d44285b"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gab2a9294812a8c0fcaed92d0f119eaa31" id="r_gab2a9294812a8c0fcaed92d0f119eaa31"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointXYZRGB >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>voxelize</b> (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::IndicesPtr &indices, float voxelSize)</td></tr>
|
||
<tr class="memdesc:gab2a9294812a8c0fcaed92d0f119eaa31"><td class="mdescLeft"> </td><td class="mdescRight">Performs voxel grid downsampling on a point cloud of type <code>pcl::PointXYZRGB</code> on provided indices. <br /></td></tr>
|
||
<tr class="separator:gab2a9294812a8c0fcaed92d0f119eaa31"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gabf0201c1253022d7ce8278fc44998530" id="r_gabf0201c1253022d7ce8278fc44998530"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>voxelize</b> (const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, float voxelSize)</td></tr>
|
||
<tr class="memdesc:gabf0201c1253022d7ce8278fc44998530"><td class="mdescLeft"> </td><td class="mdescRight">Performs voxel grid downsampling on a point cloud of type <code>pcl::PointXYZRGBNormal</code> on provided indices. <br /></td></tr>
|
||
<tr class="separator:gabf0201c1253022d7ce8278fc44998530"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gaebeee3702499e5f8d692ecd0bc48029b" id="r_gaebeee3702499e5f8d692ecd0bc48029b"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointXYZI >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>voxelize</b> (const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, const pcl::IndicesPtr &indices, float voxelSize)</td></tr>
|
||
<tr class="memdesc:gaebeee3702499e5f8d692ecd0bc48029b"><td class="mdescLeft"> </td><td class="mdescRight">Performs voxel grid downsampling on a point cloud of type <code>pcl::PointXYZI</code> on provided indices. <br /></td></tr>
|
||
<tr class="separator:gaebeee3702499e5f8d692ecd0bc48029b"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gac5158ba02fc61bfa503967ddd5ec319d" id="r_gac5158ba02fc61bfa503967ddd5ec319d"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointXYZINormal >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>voxelize</b> (const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const pcl::IndicesPtr &indices, float voxelSize)</td></tr>
|
||
<tr class="memdesc:gac5158ba02fc61bfa503967ddd5ec319d"><td class="mdescLeft"> </td><td class="mdescRight">Performs voxel grid downsampling on a point cloud of type <code>pcl::PointXYZINormal</code> on provided indices. <br /></td></tr>
|
||
<tr class="separator:gac5158ba02fc61bfa503967ddd5ec319d"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gaf5726b462426b56425604343e51a79c3" id="r_gaf5726b462426b56425604343e51a79c3"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>voxelize</b> (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, float voxelSize)</td></tr>
|
||
<tr class="memdesc:gaf5726b462426b56425604343e51a79c3"><td class="mdescLeft"> </td><td class="mdescRight">Performs voxel grid downsampling on a point cloud of type <code>pcl::PointXYZ</code>. <br /></td></tr>
|
||
<tr class="separator:gaf5726b462426b56425604343e51a79c3"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga3ea1e68d63d45c84d2c3b6b3bcac4653" id="r_ga3ea1e68d63d45c84d2c3b6b3bcac4653"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointNormal >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>voxelize</b> (const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, float voxelSize)</td></tr>
|
||
<tr class="memdesc:ga3ea1e68d63d45c84d2c3b6b3bcac4653"><td class="mdescLeft"> </td><td class="mdescRight">Performs voxel grid downsampling on a point cloud of type <code>pcl::PointNormal</code>. <br /></td></tr>
|
||
<tr class="separator:ga3ea1e68d63d45c84d2c3b6b3bcac4653"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga8fce5075a28203045c3865b1d068c084" id="r_ga8fce5075a28203045c3865b1d068c084"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointXYZRGB >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>voxelize</b> (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, float voxelSize)</td></tr>
|
||
<tr class="memdesc:ga8fce5075a28203045c3865b1d068c084"><td class="mdescLeft"> </td><td class="mdescRight">Performs voxel grid downsampling on a point cloud of type <code>pcl::PointXYZRGB</code>. <br /></td></tr>
|
||
<tr class="separator:ga8fce5075a28203045c3865b1d068c084"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gab974887ed7faf7685d6c8c181827b2c2" id="r_gab974887ed7faf7685d6c8c181827b2c2"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>voxelize</b> (const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, float voxelSize)</td></tr>
|
||
<tr class="memdesc:gab974887ed7faf7685d6c8c181827b2c2"><td class="mdescLeft"> </td><td class="mdescRight">Performs voxel grid downsampling on a point cloud of type <code>pcl::PointXYZRGBNormal</code>. <br /></td></tr>
|
||
<tr class="separator:gab974887ed7faf7685d6c8c181827b2c2"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga751ff8adfdf8e6f824a7bef0d4630044" id="r_ga751ff8adfdf8e6f824a7bef0d4630044"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointXYZI >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>voxelize</b> (const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, float voxelSize)</td></tr>
|
||
<tr class="memdesc:ga751ff8adfdf8e6f824a7bef0d4630044"><td class="mdescLeft"> </td><td class="mdescRight">Performs voxel grid downsampling on a point cloud of type <code>pcl::PointXYZI</code>. <br /></td></tr>
|
||
<tr class="separator:ga751ff8adfdf8e6f824a7bef0d4630044"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gac6809e08656312d793ce34e828e33998" id="r_gac6809e08656312d793ce34e828e33998"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointXYZINormal >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>voxelize</b> (const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, float voxelSize)</td></tr>
|
||
<tr class="memdesc:gac6809e08656312d793ce34e828e33998"><td class="mdescLeft"> </td><td class="mdescRight">Performs voxel grid downsampling on a point cloud of type <code>pcl::PointXYZINormal</code>. <br /></td></tr>
|
||
<tr class="separator:gac6809e08656312d793ce34e828e33998"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a858e0a5338f348eb1033d6a85c3db926" id="r_a858e0a5338f348eb1033d6a85c3db926"><td class="memItemLeft" align="right" valign="top">pcl::PointCloud< pcl::PointXYZ >::Ptr </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#a858e0a5338f348eb1033d6a85c3db926">uniformSampling</a> (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, float voxelSize)</td></tr>
|
||
<tr class="memdesc:a858e0a5338f348eb1033d6a85c3db926"><td class="mdescLeft"> </td><td class="mdescRight">DEPRECATED: Use <a class="el" href="group__VoxelFiltering.html#gad8d88a06174857cf53b1dc2cf2310d89" title="Performs voxel grid downsampling on a point cloud of type pcl::PointXYZ on provided indices.">voxelize()</a> instead. <br /></td></tr>
|
||
<tr class="separator:a858e0a5338f348eb1033d6a85c3db926"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a8dfd7d808fa94e809b4a1a1fba6b8226" id="r_a8dfd7d808fa94e809b4a1a1fba6b8226"><td class="memItemLeft" align="right" valign="top">pcl::PointCloud< pcl::PointXYZRGB >::Ptr </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#a8dfd7d808fa94e809b4a1a1fba6b8226">uniformSampling</a> (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, float voxelSize)</td></tr>
|
||
<tr class="memdesc:a8dfd7d808fa94e809b4a1a1fba6b8226"><td class="mdescLeft"> </td><td class="mdescRight">DEPRECATED: Use <a class="el" href="group__VoxelFiltering.html#gad8d88a06174857cf53b1dc2cf2310d89" title="Performs voxel grid downsampling on a point cloud of type pcl::PointXYZ on provided indices.">voxelize()</a> instead. <br /></td></tr>
|
||
<tr class="separator:a8dfd7d808fa94e809b4a1a1fba6b8226"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:af526f72e838659de76ac45447d3860ae" id="r_af526f72e838659de76ac45447d3860ae"><td class="memItemLeft" align="right" valign="top">pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#af526f72e838659de76ac45447d3860ae">uniformSampling</a> (const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, float voxelSize)</td></tr>
|
||
<tr class="memdesc:af526f72e838659de76ac45447d3860ae"><td class="mdescLeft"> </td><td class="mdescRight">DEPRECATED: Use <a class="el" href="group__VoxelFiltering.html#gad8d88a06174857cf53b1dc2cf2310d89" title="Performs voxel grid downsampling on a point cloud of type pcl::PointXYZ on provided indices.">voxelize()</a> instead. <br /></td></tr>
|
||
<tr class="separator:af526f72e838659de76ac45447d3860ae"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga8dadcd7fb9beedc839b54079c6e84701" id="r_ga8dadcd7fb9beedc839b54079c6e84701"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>randomSampling</b> (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, int samples)</td></tr>
|
||
<tr class="memdesc:ga8dadcd7fb9beedc839b54079c6e84701"><td class="mdescLeft"> </td><td class="mdescRight">Performs random sampling on a point cloud of type <code>pcl::PointXYZ</code>. <br /></td></tr>
|
||
<tr class="separator:ga8dadcd7fb9beedc839b54079c6e84701"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gaf323d2f6db341f7dd83893297b1f9693" id="r_gaf323d2f6db341f7dd83893297b1f9693"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointNormal >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>randomSampling</b> (const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, int samples)</td></tr>
|
||
<tr class="memdesc:gaf323d2f6db341f7dd83893297b1f9693"><td class="mdescLeft"> </td><td class="mdescRight">Performs random sampling on a point cloud of type <code>pcl::PointNormal</code>. <br /></td></tr>
|
||
<tr class="separator:gaf323d2f6db341f7dd83893297b1f9693"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gac4f1ee370a918987a847d5d604601837" id="r_gac4f1ee370a918987a847d5d604601837"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointXYZRGB >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>randomSampling</b> (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, int samples)</td></tr>
|
||
<tr class="memdesc:gac4f1ee370a918987a847d5d604601837"><td class="mdescLeft"> </td><td class="mdescRight">Performs random sampling on a point cloud of type <code>pcl::PointXYZRGB</code>. <br /></td></tr>
|
||
<tr class="separator:gac4f1ee370a918987a847d5d604601837"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga7738134d7dec8f178a927dfe69fcb15a" id="r_ga7738134d7dec8f178a927dfe69fcb15a"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>randomSampling</b> (const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, int samples)</td></tr>
|
||
<tr class="memdesc:ga7738134d7dec8f178a927dfe69fcb15a"><td class="mdescLeft"> </td><td class="mdescRight">Performs random sampling on a point cloud of type <code>pcl::PointXYZRGBNormal</code>. <br /></td></tr>
|
||
<tr class="separator:ga7738134d7dec8f178a927dfe69fcb15a"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gad6269088b589b735fd87e07d11bf2547" id="r_gad6269088b589b735fd87e07d11bf2547"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointXYZI >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>randomSampling</b> (const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, int samples)</td></tr>
|
||
<tr class="memdesc:gad6269088b589b735fd87e07d11bf2547"><td class="mdescLeft"> </td><td class="mdescRight">Performs random sampling on a point cloud of type <code>pcl::PointXYZI</code>. <br /></td></tr>
|
||
<tr class="separator:gad6269088b589b735fd87e07d11bf2547"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga5e31a5d57029fddd20e5d57ecdfb1184" id="r_ga5e31a5d57029fddd20e5d57ecdfb1184"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointXYZINormal >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>randomSampling</b> (const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, int samples)</td></tr>
|
||
<tr class="memdesc:ga5e31a5d57029fddd20e5d57ecdfb1184"><td class="mdescLeft"> </td><td class="mdescRight">Performs random sampling on a point cloud of type <code>pcl::PointXYZINormal</code>. <br /></td></tr>
|
||
<tr class="separator:ga5e31a5d57029fddd20e5d57ecdfb1184"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga7bfc95ed4f7fca124b00707708223473" id="r_ga7bfc95ed4f7fca124b00707708223473"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::IndicesPtr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>passThrough</b> (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, const std::string &axis, float min, float max, bool negative=false)</td></tr>
|
||
<tr class="memdesc:ga7bfc95ed4f7fca124b00707708223473"><td class="mdescLeft"> </td><td class="mdescRight">Performs pass-through filtering on a point cloud of type <code>pcl::PointXYZ</code> and returns filtered indices. <br /></td></tr>
|
||
<tr class="separator:ga7bfc95ed4f7fca124b00707708223473"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gad674cecbb2b80e50ad8680265dd50905" id="r_gad674cecbb2b80e50ad8680265dd50905"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::IndicesPtr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>passThrough</b> (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::IndicesPtr &indices, const std::string &axis, float min, float max, bool negative=false)</td></tr>
|
||
<tr class="memdesc:gad674cecbb2b80e50ad8680265dd50905"><td class="mdescLeft"> </td><td class="mdescRight">Performs pass-through filtering on a point cloud of type <code>pcl::PointXYZRGB</code> and returns filtered indices. <br /></td></tr>
|
||
<tr class="separator:gad674cecbb2b80e50ad8680265dd50905"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gadb551e7530b9fa63b588e11704827b7b" id="r_gadb551e7530b9fa63b588e11704827b7b"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::IndicesPtr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>passThrough</b> (const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, const pcl::IndicesPtr &indices, const std::string &axis, float min, float max, bool negative=false)</td></tr>
|
||
<tr class="memdesc:gadb551e7530b9fa63b588e11704827b7b"><td class="mdescLeft"> </td><td class="mdescRight">Performs pass-through filtering on a point cloud of type <code>pcl::PointXYZI</code> and returns filtered indices. <br /></td></tr>
|
||
<tr class="separator:gadb551e7530b9fa63b588e11704827b7b"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga9c4f395f1105d3c36861e922108bfbf0" id="r_ga9c4f395f1105d3c36861e922108bfbf0"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::IndicesPtr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>passThrough</b> (const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, const std::string &axis, float min, float max, bool negative=false)</td></tr>
|
||
<tr class="memdesc:ga9c4f395f1105d3c36861e922108bfbf0"><td class="mdescLeft"> </td><td class="mdescRight">Performs pass-through filtering on a point cloud of type <code>pcl::PointNormal</code> and returns filtered indices. <br /></td></tr>
|
||
<tr class="separator:ga9c4f395f1105d3c36861e922108bfbf0"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga2d23fe7a7205247ae3152525d19a18ec" id="r_ga2d23fe7a7205247ae3152525d19a18ec"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::IndicesPtr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>passThrough</b> (const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, const std::string &axis, float min, float max, bool negative=false)</td></tr>
|
||
<tr class="memdesc:ga2d23fe7a7205247ae3152525d19a18ec"><td class="mdescLeft"> </td><td class="mdescRight">Performs pass-through filtering on a point cloud of type <code>pcl::PointXYZRGBNormal</code> and returns filtered indices. <br /></td></tr>
|
||
<tr class="separator:ga2d23fe7a7205247ae3152525d19a18ec"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga18c88abdd186757533cd7c9e825f540f" id="r_ga18c88abdd186757533cd7c9e825f540f"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::IndicesPtr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>passThrough</b> (const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const pcl::IndicesPtr &indices, const std::string &axis, float min, float max, bool negative=false)</td></tr>
|
||
<tr class="memdesc:ga18c88abdd186757533cd7c9e825f540f"><td class="mdescLeft"> </td><td class="mdescRight">Performs pass-through filtering on a point cloud of type <code>pcl::PointXYZINormal</code> and returns filtered indices. <br /></td></tr>
|
||
<tr class="separator:ga18c88abdd186757533cd7c9e825f540f"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gad8ced1799837b05e34ec4bd871a129ba" id="r_gad8ced1799837b05e34ec4bd871a129ba"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>passThrough</b> (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const std::string &axis, float min, float max, bool negative=false)</td></tr>
|
||
<tr class="memdesc:gad8ced1799837b05e34ec4bd871a129ba"><td class="mdescLeft"> </td><td class="mdescRight">Performs pass-through filtering on a point cloud of type <code>pcl::PointXYZ</code> and returns a new point cloud of the filtered points. <br /></td></tr>
|
||
<tr class="separator:gad8ced1799837b05e34ec4bd871a129ba"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gafe76c7bd4f68d8fe1518509564bf1f3d" id="r_gafe76c7bd4f68d8fe1518509564bf1f3d"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointXYZRGB >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>passThrough</b> (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const std::string &axis, float min, float max, bool negative=false)</td></tr>
|
||
<tr class="memdesc:gafe76c7bd4f68d8fe1518509564bf1f3d"><td class="mdescLeft"> </td><td class="mdescRight">Performs pass-through filtering on a point cloud of type <code>pcl::PointXYZRGB</code> and returns a new point cloud of the filtered points. <br /></td></tr>
|
||
<tr class="separator:gafe76c7bd4f68d8fe1518509564bf1f3d"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga551c7a9b75aaf6f087f81e52f326e182" id="r_ga551c7a9b75aaf6f087f81e52f326e182"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointXYZI >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>passThrough</b> (const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, const std::string &axis, float min, float max, bool negative=false)</td></tr>
|
||
<tr class="memdesc:ga551c7a9b75aaf6f087f81e52f326e182"><td class="mdescLeft"> </td><td class="mdescRight">Performs pass-through filtering on a point cloud of type <code>pcl::PointXYZI</code> and returns a new point cloud of the filtered points. <br /></td></tr>
|
||
<tr class="separator:ga551c7a9b75aaf6f087f81e52f326e182"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga4cef6e6f7cb447719417f118ff4e367d" id="r_ga4cef6e6f7cb447719417f118ff4e367d"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointNormal >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>passThrough</b> (const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const std::string &axis, float min, float max, bool negative=false)</td></tr>
|
||
<tr class="memdesc:ga4cef6e6f7cb447719417f118ff4e367d"><td class="mdescLeft"> </td><td class="mdescRight">Performs pass-through filtering on a point cloud of type <code>pcl::PointNormal</code> and returns a new point cloud of the filtered points. <br /></td></tr>
|
||
<tr class="separator:ga4cef6e6f7cb447719417f118ff4e367d"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gaa6907857c69443b1bd879fcf6beef8a9" id="r_gaa6907857c69443b1bd879fcf6beef8a9"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>passThrough</b> (const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const std::string &axis, float min, float max, bool negative=false)</td></tr>
|
||
<tr class="memdesc:gaa6907857c69443b1bd879fcf6beef8a9"><td class="mdescLeft"> </td><td class="mdescRight">Performs pass-through filtering on a point cloud of type <code>pcl::PointXYZRGBNormal</code> and returns a new point cloud of the filtered points. <br /></td></tr>
|
||
<tr class="separator:gaa6907857c69443b1bd879fcf6beef8a9"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gab942c5914142128bce518c869f49f94d" id="r_gab942c5914142128bce518c869f49f94d"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointXYZINormal >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>passThrough</b> (const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const std::string &axis, float min, float max, bool negative=false)</td></tr>
|
||
<tr class="memdesc:gab942c5914142128bce518c869f49f94d"><td class="mdescLeft"> </td><td class="mdescRight">Performs pass-through filtering on a point cloud of type <code>pcl::PointXYZINormal</code> and returns a new point cloud of the filtered points. <br /></td></tr>
|
||
<tr class="separator:gab942c5914142128bce518c869f49f94d"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga8291151381ff38773e641740b66b93ef" id="r_ga8291151381ff38773e641740b66b93ef"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::IndicesPtr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>cropBox</b> (const pcl::PCLPointCloud2::Ptr &cloud, const pcl::IndicesPtr &indices, const Eigen::Vector4f &min, const Eigen::Vector4f &max, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &transform=<a class="el" href="classrtabmap_1_1Transform.html#a8ea4368f2018d751d2733038081d56a2">Transform::getIdentity</a>(), bool negative=false)</td></tr>
|
||
<tr class="memdesc:ga8291151381ff38773e641740b66b93ef"><td class="mdescLeft"> </td><td class="mdescRight">Performs crop box filtering on a point cloud of type <code>pcl::PCLPointCloud2</code> and returns filtered indices. <br /></td></tr>
|
||
<tr class="separator:ga8291151381ff38773e641740b66b93ef"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga668e8d0a8a8abd65500bd7e7b748eec2" id="r_ga668e8d0a8a8abd65500bd7e7b748eec2"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::IndicesPtr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>cropBox</b> (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, const Eigen::Vector4f &min, const Eigen::Vector4f &max, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &transform=<a class="el" href="classrtabmap_1_1Transform.html#a8ea4368f2018d751d2733038081d56a2">Transform::getIdentity</a>(), bool negative=false)</td></tr>
|
||
<tr class="memdesc:ga668e8d0a8a8abd65500bd7e7b748eec2"><td class="mdescLeft"> </td><td class="mdescRight">Performs crop box filtering on a point cloud of type <code>pcl::PointXYZ</code> and returns filtered indices. <br /></td></tr>
|
||
<tr class="separator:ga668e8d0a8a8abd65500bd7e7b748eec2"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gaa6737135785f73d1a2f3ec966ab22bc7" id="r_gaa6737135785f73d1a2f3ec966ab22bc7"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::IndicesPtr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>cropBox</b> (const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, const Eigen::Vector4f &min, const Eigen::Vector4f &max, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &transform=<a class="el" href="classrtabmap_1_1Transform.html#a8ea4368f2018d751d2733038081d56a2">Transform::getIdentity</a>(), bool negative=false)</td></tr>
|
||
<tr class="memdesc:gaa6737135785f73d1a2f3ec966ab22bc7"><td class="mdescLeft"> </td><td class="mdescRight">Performs crop box filtering on a point cloud of type <code>pcl::PointNormal</code> and returns filtered indices. <br /></td></tr>
|
||
<tr class="separator:gaa6737135785f73d1a2f3ec966ab22bc7"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga20a5eeed65c38958ed5866216f26bd44" id="r_ga20a5eeed65c38958ed5866216f26bd44"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::IndicesPtr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>cropBox</b> (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::IndicesPtr &indices, const Eigen::Vector4f &min, const Eigen::Vector4f &max, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &transform=<a class="el" href="classrtabmap_1_1Transform.html#a8ea4368f2018d751d2733038081d56a2">Transform::getIdentity</a>(), bool negative=false)</td></tr>
|
||
<tr class="memdesc:ga20a5eeed65c38958ed5866216f26bd44"><td class="mdescLeft"> </td><td class="mdescRight">Performs crop box filtering on a point cloud of type <code>pcl::PointXYZRGB</code> and returns filtered indices. <br /></td></tr>
|
||
<tr class="separator:ga20a5eeed65c38958ed5866216f26bd44"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga3b4c45a05e5bc0ff7d4c3917103e4f29" id="r_ga3b4c45a05e5bc0ff7d4c3917103e4f29"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::IndicesPtr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>cropBox</b> (const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, const Eigen::Vector4f &min, const Eigen::Vector4f &max, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &transform=<a class="el" href="classrtabmap_1_1Transform.html#a8ea4368f2018d751d2733038081d56a2">Transform::getIdentity</a>(), bool negative=false)</td></tr>
|
||
<tr class="memdesc:ga3b4c45a05e5bc0ff7d4c3917103e4f29"><td class="mdescLeft"> </td><td class="mdescRight">Performs crop box filtering on a point cloud of type <code>pcl::PointXYZRGBNormal</code> and returns filtered indices. <br /></td></tr>
|
||
<tr class="separator:ga3b4c45a05e5bc0ff7d4c3917103e4f29"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga43309cd4b35fcbe7a746ccb1dc9a1b4f" id="r_ga43309cd4b35fcbe7a746ccb1dc9a1b4f"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::IndicesPtr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>cropBox</b> (const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, const pcl::IndicesPtr &indices, const Eigen::Vector4f &min, const Eigen::Vector4f &max, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &transform=<a class="el" href="classrtabmap_1_1Transform.html#a8ea4368f2018d751d2733038081d56a2">Transform::getIdentity</a>(), bool negative=false)</td></tr>
|
||
<tr class="memdesc:ga43309cd4b35fcbe7a746ccb1dc9a1b4f"><td class="mdescLeft"> </td><td class="mdescRight">Performs crop box filtering on a point cloud of type <code>pcl::PointXYZI</code> and returns filtered indices. <br /></td></tr>
|
||
<tr class="separator:ga43309cd4b35fcbe7a746ccb1dc9a1b4f"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga0fe7f976bca4c8ec9dd0afa95f590c72" id="r_ga0fe7f976bca4c8ec9dd0afa95f590c72"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::IndicesPtr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>cropBox</b> (const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const pcl::IndicesPtr &indices, const Eigen::Vector4f &min, const Eigen::Vector4f &max, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &transform=<a class="el" href="classrtabmap_1_1Transform.html#a8ea4368f2018d751d2733038081d56a2">Transform::getIdentity</a>(), bool negative=false)</td></tr>
|
||
<tr class="memdesc:ga0fe7f976bca4c8ec9dd0afa95f590c72"><td class="mdescLeft"> </td><td class="mdescRight">Performs crop box filtering on a point cloud of type <code>pcl::PointXYZINormal</code> and returns filtered indices. <br /></td></tr>
|
||
<tr class="separator:ga0fe7f976bca4c8ec9dd0afa95f590c72"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga15f14d0a8c9de82ff3ad398fa8c36097" id="r_ga15f14d0a8c9de82ff3ad398fa8c36097"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>cropBox</b> (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const Eigen::Vector4f &min, const Eigen::Vector4f &max, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &transform=<a class="el" href="classrtabmap_1_1Transform.html#a8ea4368f2018d751d2733038081d56a2">Transform::getIdentity</a>(), bool negative=false)</td></tr>
|
||
<tr class="memdesc:ga15f14d0a8c9de82ff3ad398fa8c36097"><td class="mdescLeft"> </td><td class="mdescRight">Performs crop box filtering on a point cloud of type <code>pcl::PointXYZ</code> and returns a new point cloud of the filtered points. <br /></td></tr>
|
||
<tr class="separator:ga15f14d0a8c9de82ff3ad398fa8c36097"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga1302fc8f7569390d2d9a6a66c24f5179" id="r_ga1302fc8f7569390d2d9a6a66c24f5179"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointNormal >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>cropBox</b> (const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const Eigen::Vector4f &min, const Eigen::Vector4f &max, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &transform=<a class="el" href="classrtabmap_1_1Transform.html#a8ea4368f2018d751d2733038081d56a2">Transform::getIdentity</a>(), bool negative=false)</td></tr>
|
||
<tr class="memdesc:ga1302fc8f7569390d2d9a6a66c24f5179"><td class="mdescLeft"> </td><td class="mdescRight">Performs crop box filtering on a point cloud of type <code>pcl::PointNormal</code> and returns a new point cloud of the filtered points. <br /></td></tr>
|
||
<tr class="separator:ga1302fc8f7569390d2d9a6a66c24f5179"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga1f23604e3b58f73183fe3102dd9f86c9" id="r_ga1f23604e3b58f73183fe3102dd9f86c9"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointXYZRGB >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>cropBox</b> (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const Eigen::Vector4f &min, const Eigen::Vector4f &max, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &transform=<a class="el" href="classrtabmap_1_1Transform.html#a8ea4368f2018d751d2733038081d56a2">Transform::getIdentity</a>(), bool negative=false)</td></tr>
|
||
<tr class="memdesc:ga1f23604e3b58f73183fe3102dd9f86c9"><td class="mdescLeft"> </td><td class="mdescRight">Performs crop box filtering on a point cloud of type <code>pcl::PointXYZRGB</code> and returns a new point cloud of the filtered points. <br /></td></tr>
|
||
<tr class="separator:ga1f23604e3b58f73183fe3102dd9f86c9"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga8065c61da2295bf203e4ee7471e9332d" id="r_ga8065c61da2295bf203e4ee7471e9332d"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointXYZI >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>cropBox</b> (const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, const Eigen::Vector4f &min, const Eigen::Vector4f &max, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &transform=<a class="el" href="classrtabmap_1_1Transform.html#a8ea4368f2018d751d2733038081d56a2">Transform::getIdentity</a>(), bool negative=false)</td></tr>
|
||
<tr class="memdesc:ga8065c61da2295bf203e4ee7471e9332d"><td class="mdescLeft"> </td><td class="mdescRight">Performs crop box filtering on a point cloud of type <code>pcl::PointXYZI</code> and returns a new point cloud of the filtered points. <br /></td></tr>
|
||
<tr class="separator:ga8065c61da2295bf203e4ee7471e9332d"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga5d5cafb95fb856438e55a0de06378ef7" id="r_ga5d5cafb95fb856438e55a0de06378ef7"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointXYZINormal >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>cropBox</b> (const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const Eigen::Vector4f &min, const Eigen::Vector4f &max, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &transform=<a class="el" href="classrtabmap_1_1Transform.html#a8ea4368f2018d751d2733038081d56a2">Transform::getIdentity</a>(), bool negative=false)</td></tr>
|
||
<tr class="memdesc:ga5d5cafb95fb856438e55a0de06378ef7"><td class="mdescLeft"> </td><td class="mdescRight">Performs crop box filtering on a point cloud of type <code>pcl::PointXYZINormal</code> and returns a new point cloud of the filtered points. <br /></td></tr>
|
||
<tr class="separator:ga5d5cafb95fb856438e55a0de06378ef7"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga32e6cd849848faaccc6b46ba02f98f6b" id="r_ga32e6cd849848faaccc6b46ba02f98f6b"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>cropBox</b> (const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const Eigen::Vector4f &min, const Eigen::Vector4f &max, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &transform=<a class="el" href="classrtabmap_1_1Transform.html#a8ea4368f2018d751d2733038081d56a2">Transform::getIdentity</a>(), bool negative=false)</td></tr>
|
||
<tr class="memdesc:ga32e6cd849848faaccc6b46ba02f98f6b"><td class="mdescLeft"> </td><td class="mdescRight">Performs crop box filtering on a point cloud of type <code>pcl::PointXYZRGBNormal</code> and returns a new point cloud of the filtered points. <br /></td></tr>
|
||
<tr class="separator:ga32e6cd849848faaccc6b46ba02f98f6b"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gad05921639a3371d2ee0f684b77542330" id="r_gad05921639a3371d2ee0f684b77542330"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::IndicesPtr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>frustumFiltering</b> (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &cameraPose, float horizontalFOV, float verticalFOV, float nearClipPlaneDistance, float farClipPlaneDistance, bool negative=false)</td></tr>
|
||
<tr class="memdesc:gad05921639a3371d2ee0f684b77542330"><td class="mdescLeft"> </td><td class="mdescRight">Performs frustum filtering on a point cloud of type <code>pcl::PointXYZ</code> and returns filtered indices. <br /></td></tr>
|
||
<tr class="separator:gad05921639a3371d2ee0f684b77542330"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga93cb6151fc470d6b932b4a7c6cb15090" id="r_ga93cb6151fc470d6b932b4a7c6cb15090"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>frustumFiltering</b> (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &cameraPose, float horizontalFOV, float verticalFOV, float nearClipPlaneDistance, float farClipPlaneDistance, bool negative=false)</td></tr>
|
||
<tr class="memdesc:ga93cb6151fc470d6b932b4a7c6cb15090"><td class="mdescLeft"> </td><td class="mdescRight">Performs frustum filtering on a point cloud of type <code>pcl::PointXYZ</code> and returns a new point cloud of the filtered points. <br /></td></tr>
|
||
<tr class="separator:ga93cb6151fc470d6b932b4a7c6cb15090"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga4ceacaabe757da82d3278b08df766a69" id="r_ga4ceacaabe757da82d3278b08df766a69"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointXYZRGB >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>frustumFiltering</b> (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &cameraPose, float horizontalFOV, float verticalFOV, float nearClipPlaneDistance, float farClipPlaneDistance, bool negative=false)</td></tr>
|
||
<tr class="memdesc:ga4ceacaabe757da82d3278b08df766a69"><td class="mdescLeft"> </td><td class="mdescRight">Performs frustum filtering on a point cloud of type <code>pcl::PointXYZRGB</code> and returns a new point cloud of the filtered points. <br /></td></tr>
|
||
<tr class="separator:ga4ceacaabe757da82d3278b08df766a69"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga307cddc4476370cc25e5f67fd13af865" id="r_ga307cddc4476370cc25e5f67fd13af865"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>removeNaNFromPointCloud</b> (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud)</td></tr>
|
||
<tr class="memdesc:ga307cddc4476370cc25e5f67fd13af865"><td class="mdescLeft"> </td><td class="mdescRight">Remove NaN points from a point cloud of type <code>pcl::PointXYZ</code>. <br /></td></tr>
|
||
<tr class="separator:ga307cddc4476370cc25e5f67fd13af865"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga2c98d8e54fff76606352c87edc378c31" id="r_ga2c98d8e54fff76606352c87edc378c31"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointXYZRGB >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>removeNaNFromPointCloud</b> (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud)</td></tr>
|
||
<tr class="memdesc:ga2c98d8e54fff76606352c87edc378c31"><td class="mdescLeft"> </td><td class="mdescRight">Remove NaN points from a point cloud of type <code>pcl::PointXYZRGB</code>. <br /></td></tr>
|
||
<tr class="separator:ga2c98d8e54fff76606352c87edc378c31"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga30ecdbed3fd26b750dcb0e63ea8c68b1" id="r_ga30ecdbed3fd26b750dcb0e63ea8c68b1"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointXYZI >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>removeNaNFromPointCloud</b> (const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud)</td></tr>
|
||
<tr class="memdesc:ga30ecdbed3fd26b750dcb0e63ea8c68b1"><td class="mdescLeft"> </td><td class="mdescRight">Remove NaN points from a point cloud of type <code>pcl::PointXYZI</code>. <br /></td></tr>
|
||
<tr class="separator:ga30ecdbed3fd26b750dcb0e63ea8c68b1"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gab8b441e9acbafb0f36a0f4567e9535d6" id="r_gab8b441e9acbafb0f36a0f4567e9535d6"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PCLPointCloud2::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>removeNaNFromPointCloud</b> (const pcl::PCLPointCloud2::Ptr &cloud)</td></tr>
|
||
<tr class="memdesc:gab8b441e9acbafb0f36a0f4567e9535d6"><td class="mdescLeft"> </td><td class="mdescRight">Remove NaN points from a point cloud of type <code>pcl::PCLPointCloud2</code>. <br /></td></tr>
|
||
<tr class="separator:gab8b441e9acbafb0f36a0f4567e9535d6"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga3813dba7a0841937f37d9ecdaf526748" id="r_ga3813dba7a0841937f37d9ecdaf526748"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointNormal >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>removeNaNNormalsFromPointCloud</b> (const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud)</td></tr>
|
||
<tr class="memdesc:ga3813dba7a0841937f37d9ecdaf526748"><td class="mdescLeft"> </td><td class="mdescRight">Removes points with NaN normal values from a point cloud of type <code>pcl::PointNormal</code>. <br /></td></tr>
|
||
<tr class="separator:ga3813dba7a0841937f37d9ecdaf526748"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gafeeebb45de9c3cb8ac353f3cf867bc41" id="r_gafeeebb45de9c3cb8ac353f3cf867bc41"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>removeNaNNormalsFromPointCloud</b> (const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud)</td></tr>
|
||
<tr class="memdesc:gafeeebb45de9c3cb8ac353f3cf867bc41"><td class="mdescLeft"> </td><td class="mdescRight">Removes points with NaN normal values from a point cloud of type <code>pcl::PointXYZRGBNormal</code>. <br /></td></tr>
|
||
<tr class="separator:gafeeebb45de9c3cb8ac353f3cf867bc41"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga42b9cf0558f56e1b00bd9ab1e2f1d0e6" id="r_ga42b9cf0558f56e1b00bd9ab1e2f1d0e6"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointXYZINormal >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>removeNaNNormalsFromPointCloud</b> (const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud)</td></tr>
|
||
<tr class="memdesc:ga42b9cf0558f56e1b00bd9ab1e2f1d0e6"><td class="mdescLeft"> </td><td class="mdescRight">Removes points with NaN normal values from a point cloud of type <code>pcl::PointXYZINormal</code>. <br /></td></tr>
|
||
<tr class="separator:ga42b9cf0558f56e1b00bd9ab1e2f1d0e6"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga21f5957a6c6b8dd2ca7e559ed8a82d08" id="r_ga21f5957a6c6b8dd2ca7e559ed8a82d08"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::IndicesPtr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>radiusFiltering</b> (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, float radiusSearch, int minNeighborsInRadius)</td></tr>
|
||
<tr class="memdesc:ga21f5957a6c6b8dd2ca7e559ed8a82d08"><td class="mdescLeft"> </td><td class="mdescRight">Radius filtering for point cloud of type <code>pcl::PointXYZ</code>. <br /></td></tr>
|
||
<tr class="separator:ga21f5957a6c6b8dd2ca7e559ed8a82d08"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga4f7bd9bc6922f17815109375fc11367b" id="r_ga4f7bd9bc6922f17815109375fc11367b"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::IndicesPtr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>radiusFiltering</b> (const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, float radiusSearch, int minNeighborsInRadius)</td></tr>
|
||
<tr class="memdesc:ga4f7bd9bc6922f17815109375fc11367b"><td class="mdescLeft"> </td><td class="mdescRight">Radius filtering for point cloud of type <code>pcl::PointNormal</code>. <br /></td></tr>
|
||
<tr class="separator:ga4f7bd9bc6922f17815109375fc11367b"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gaa1328e1ba793b44a450fe90e4e99fa35" id="r_gaa1328e1ba793b44a450fe90e4e99fa35"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::IndicesPtr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>radiusFiltering</b> (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, float radiusSearch, int minNeighborsInRadius)</td></tr>
|
||
<tr class="memdesc:gaa1328e1ba793b44a450fe90e4e99fa35"><td class="mdescLeft"> </td><td class="mdescRight">Radius filtering for point cloud of type <code>pcl::PointXYZRGB</code>. <br /></td></tr>
|
||
<tr class="separator:gaa1328e1ba793b44a450fe90e4e99fa35"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga3b3ef1e4b2893810542c6c2be871fa16" id="r_ga3b3ef1e4b2893810542c6c2be871fa16"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::IndicesPtr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>radiusFiltering</b> (const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, float radiusSearch, int minNeighborsInRadius)</td></tr>
|
||
<tr class="memdesc:ga3b3ef1e4b2893810542c6c2be871fa16"><td class="mdescLeft"> </td><td class="mdescRight">Radius filtering for point cloud of type <code>pcl::PointXYZRGBNormal</code>. <br /></td></tr>
|
||
<tr class="separator:ga3b3ef1e4b2893810542c6c2be871fa16"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga4a5c1b3dd17782eed6ff342a27ab9dde" id="r_ga4a5c1b3dd17782eed6ff342a27ab9dde"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::IndicesPtr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>radiusFiltering</b> (const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, float radiusSearch, int minNeighborsInRadius)</td></tr>
|
||
<tr class="memdesc:ga4a5c1b3dd17782eed6ff342a27ab9dde"><td class="mdescLeft"> </td><td class="mdescRight">Radius filtering for point cloud of type <code>pcl::PointXYZI</code>. <br /></td></tr>
|
||
<tr class="separator:ga4a5c1b3dd17782eed6ff342a27ab9dde"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga9e4ddb084f4c00934f65f30d8b466047" id="r_ga9e4ddb084f4c00934f65f30d8b466047"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::IndicesPtr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>radiusFiltering</b> (const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, float radiusSearch, int minNeighborsInRadius)</td></tr>
|
||
<tr class="memdesc:ga9e4ddb084f4c00934f65f30d8b466047"><td class="mdescLeft"> </td><td class="mdescRight">Radius filtering for point cloud of type <code>pcl::PointXYZINormal</code>. <br /></td></tr>
|
||
<tr class="separator:ga9e4ddb084f4c00934f65f30d8b466047"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gae6562a12f695af7fc210043c85afeebc" id="r_gae6562a12f695af7fc210043c85afeebc"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::IndicesPtr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>radiusFiltering</b> (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, float radiusSearch, int minNeighborsInRadius)</td></tr>
|
||
<tr class="memdesc:gae6562a12f695af7fc210043c85afeebc"><td class="mdescLeft"> </td><td class="mdescRight">Radius filtering for point cloud of type <code>pcl::PointXYZ</code> with indices. <br /></td></tr>
|
||
<tr class="separator:gae6562a12f695af7fc210043c85afeebc"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gaa6e6e945a27057824168aa287670d641" id="r_gaa6e6e945a27057824168aa287670d641"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::IndicesPtr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>radiusFiltering</b> (const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, float radiusSearch, int minNeighborsInRadius)</td></tr>
|
||
<tr class="memdesc:gaa6e6e945a27057824168aa287670d641"><td class="mdescLeft"> </td><td class="mdescRight">Radius filtering for point cloud of type <code>pcl::PointNormal</code> with indices. <br /></td></tr>
|
||
<tr class="separator:gaa6e6e945a27057824168aa287670d641"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gadc01992dd4ebc7fe77f40e423ba83f95" id="r_gadc01992dd4ebc7fe77f40e423ba83f95"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::IndicesPtr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>radiusFiltering</b> (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::IndicesPtr &indices, float radiusSearch, int minNeighborsInRadius)</td></tr>
|
||
<tr class="memdesc:gadc01992dd4ebc7fe77f40e423ba83f95"><td class="mdescLeft"> </td><td class="mdescRight">Radius filtering for point cloud of type <code>pcl::PointXYZRGB</code> with indices. <br /></td></tr>
|
||
<tr class="separator:gadc01992dd4ebc7fe77f40e423ba83f95"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gafba9a36653f1314aa968966f5e8f8df6" id="r_gafba9a36653f1314aa968966f5e8f8df6"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::IndicesPtr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>radiusFiltering</b> (const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, float radiusSearch, int minNeighborsInRadius)</td></tr>
|
||
<tr class="memdesc:gafba9a36653f1314aa968966f5e8f8df6"><td class="mdescLeft"> </td><td class="mdescRight">Radius filtering for point cloud of type <code>pcl::PointXYZRGBNormal</code> with indices. <br /></td></tr>
|
||
<tr class="separator:gafba9a36653f1314aa968966f5e8f8df6"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gada185029395a374e08162d2b357406a8" id="r_gada185029395a374e08162d2b357406a8"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::IndicesPtr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>radiusFiltering</b> (const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, const pcl::IndicesPtr &indices, float radiusSearch, int minNeighborsInRadius)</td></tr>
|
||
<tr class="memdesc:gada185029395a374e08162d2b357406a8"><td class="mdescLeft"> </td><td class="mdescRight">Radius filtering for point cloud of type <code>pcl::PointXYZI</code> with indices. <br /></td></tr>
|
||
<tr class="separator:gada185029395a374e08162d2b357406a8"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga8fde7163c8ede34584e464909f8410cd" id="r_ga8fde7163c8ede34584e464909f8410cd"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::IndicesPtr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>radiusFiltering</b> (const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const pcl::IndicesPtr &indices, float radiusSearch, int minNeighborsInRadius)</td></tr>
|
||
<tr class="memdesc:ga8fde7163c8ede34584e464909f8410cd"><td class="mdescLeft"> </td><td class="mdescRight">Radius filtering for point cloud of type <code>pcl::PointXYZINormal</code> with indices. <br /></td></tr>
|
||
<tr class="separator:ga8fde7163c8ede34584e464909f8410cd"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga3ce176a96606fd506d3ff28a0a4cdc2a" id="r_ga3ce176a96606fd506d3ff28a0a4cdc2a"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::IndicesPtr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>proportionalRadiusFiltering</b> (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const std::vector< int > &viewpointIndices, const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > &viewpoints, float factor=0.01f, float neighborScale=2.0f)</td></tr>
|
||
<tr class="memdesc:ga3ce176a96606fd506d3ff28a0a4cdc2a"><td class="mdescLeft"> </td><td class="mdescRight">Proportional radius filtering for point cloud of type <code>pcl::PointXYZ</code>. <br /></td></tr>
|
||
<tr class="separator:ga3ce176a96606fd506d3ff28a0a4cdc2a"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga76e80e9da74feba84271c52b06065b7f" id="r_ga76e80e9da74feba84271c52b06065b7f"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::IndicesPtr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>proportionalRadiusFiltering</b> (const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const std::vector< int > &viewpointIndices, const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > &viewpoints, float factor=0.01f, float neighborScale=2.0f)</td></tr>
|
||
<tr class="memdesc:ga76e80e9da74feba84271c52b06065b7f"><td class="mdescLeft"> </td><td class="mdescRight">Proportional radius filtering for point cloud of type <code>pcl::PointNormal</code>. <br /></td></tr>
|
||
<tr class="separator:ga76e80e9da74feba84271c52b06065b7f"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga5382e5aa1b2db5ee59cda070d02030f7" id="r_ga5382e5aa1b2db5ee59cda070d02030f7"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::IndicesPtr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>proportionalRadiusFiltering</b> (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const std::vector< int > &viewpointIndices, const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > &viewpoints, float factor=0.01f, float neighborScale=2.0f)</td></tr>
|
||
<tr class="memdesc:ga5382e5aa1b2db5ee59cda070d02030f7"><td class="mdescLeft"> </td><td class="mdescRight">Proportional radius filtering for point cloud of type <code>pcl::PointXYZRGB</code>. <br /></td></tr>
|
||
<tr class="separator:ga5382e5aa1b2db5ee59cda070d02030f7"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gac755f189d29b0ed14e48e7f241103176" id="r_gac755f189d29b0ed14e48e7f241103176"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::IndicesPtr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>proportionalRadiusFiltering</b> (const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const std::vector< int > &viewpointIndices, const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > &viewpoints, float factor=0.01f, float neighborScale=2.0f)</td></tr>
|
||
<tr class="memdesc:gac755f189d29b0ed14e48e7f241103176"><td class="mdescLeft"> </td><td class="mdescRight">Proportional radius filtering for point cloud of type <code>pcl::PointXYZRGBNormal</code>. <br /></td></tr>
|
||
<tr class="separator:gac755f189d29b0ed14e48e7f241103176"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gaa3e3f8d0bdc8bfa7e070b7ef73541ddb" id="r_gaa3e3f8d0bdc8bfa7e070b7ef73541ddb"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::IndicesPtr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>proportionalRadiusFiltering</b> (const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, const std::vector< int > &viewpointIndices, const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > &viewpoints, float factor=0.01f, float neighborScale=2.0f)</td></tr>
|
||
<tr class="memdesc:gaa3e3f8d0bdc8bfa7e070b7ef73541ddb"><td class="mdescLeft"> </td><td class="mdescRight">Proportional radius filtering for point cloud of type <code>pcl::PointXYZI</code>. <br /></td></tr>
|
||
<tr class="separator:gaa3e3f8d0bdc8bfa7e070b7ef73541ddb"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gacdc66ecd05ab55d9c3eba62846f1cc5d" id="r_gacdc66ecd05ab55d9c3eba62846f1cc5d"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::IndicesPtr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>proportionalRadiusFiltering</b> (const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const std::vector< int > &viewpointIndices, const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > &viewpoints, float factor=0.01f, float neighborScale=2.0f)</td></tr>
|
||
<tr class="memdesc:gacdc66ecd05ab55d9c3eba62846f1cc5d"><td class="mdescLeft"> </td><td class="mdescRight">Proportional radius filtering for point cloud of type <code>pcl::PointXYZINormal</code>. <br /></td></tr>
|
||
<tr class="separator:gacdc66ecd05ab55d9c3eba62846f1cc5d"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga0b1bda3085510fd29162d6f511f14903" id="r_ga0b1bda3085510fd29162d6f511f14903"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::IndicesPtr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>proportionalRadiusFiltering</b> (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, const std::vector< int > &viewpointIndices, const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > &viewpoints, float factor=0.01f, float neighborScale=2.0f)</td></tr>
|
||
<tr class="memdesc:ga0b1bda3085510fd29162d6f511f14903"><td class="mdescLeft"> </td><td class="mdescRight">Proportional radius filtering for point cloud of type <code>pcl::PointXYZ</code> with indices. <br /></td></tr>
|
||
<tr class="separator:ga0b1bda3085510fd29162d6f511f14903"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga532ecb60ddd5c72d6c2930648da37621" id="r_ga532ecb60ddd5c72d6c2930648da37621"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::IndicesPtr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>proportionalRadiusFiltering</b> (const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, const std::vector< int > &viewpointIndices, const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > &viewpoints, float factor=0.01f, float neighborScale=2.0f)</td></tr>
|
||
<tr class="memdesc:ga532ecb60ddd5c72d6c2930648da37621"><td class="mdescLeft"> </td><td class="mdescRight">Proportional radius filtering for point cloud of type <code>pcl::PointNormal</code> with indices. <br /></td></tr>
|
||
<tr class="separator:ga532ecb60ddd5c72d6c2930648da37621"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga9def3599aeff33e3d2a733020f713310" id="r_ga9def3599aeff33e3d2a733020f713310"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::IndicesPtr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>proportionalRadiusFiltering</b> (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::IndicesPtr &indices, const std::vector< int > &viewpointIndices, const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > &viewpoints, float factor=0.01f, float neighborScale=2.0f)</td></tr>
|
||
<tr class="memdesc:ga9def3599aeff33e3d2a733020f713310"><td class="mdescLeft"> </td><td class="mdescRight">Proportional radius filtering for point cloud of type <code>pcl::PointXYZRGB</code> with indices. <br /></td></tr>
|
||
<tr class="separator:ga9def3599aeff33e3d2a733020f713310"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga5e6659182a671665d293afb05461bdbd" id="r_ga5e6659182a671665d293afb05461bdbd"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::IndicesPtr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>proportionalRadiusFiltering</b> (const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, const std::vector< int > &viewpointIndices, const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > &viewpoints, float factor=0.01f, float neighborScale=2.0f)</td></tr>
|
||
<tr class="memdesc:ga5e6659182a671665d293afb05461bdbd"><td class="mdescLeft"> </td><td class="mdescRight">Proportional radius filtering for point cloud of type <code>pcl::PointXYZRGBNormal</code> with indices. <br /></td></tr>
|
||
<tr class="separator:ga5e6659182a671665d293afb05461bdbd"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gad54efb4e02c820af7d480c157a7c5ae8" id="r_gad54efb4e02c820af7d480c157a7c5ae8"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::IndicesPtr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>proportionalRadiusFiltering</b> (const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, const pcl::IndicesPtr &indices, const std::vector< int > &viewpointIndices, const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > &viewpoints, float factor=0.01f, float neighborScale=2.0f)</td></tr>
|
||
<tr class="memdesc:gad54efb4e02c820af7d480c157a7c5ae8"><td class="mdescLeft"> </td><td class="mdescRight">Proportional radius filtering for point cloud of type <code>pcl::PointXYZI</code> with indices. <br /></td></tr>
|
||
<tr class="separator:gad54efb4e02c820af7d480c157a7c5ae8"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gac355ea4ecf36de86425b3dcd7794b4e1" id="r_gac355ea4ecf36de86425b3dcd7794b4e1"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::IndicesPtr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>proportionalRadiusFiltering</b> (const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const pcl::IndicesPtr &indices, const std::vector< int > &viewpointIndices, const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > &viewpoints, float factor=0.01f, float neighborScale=2.0f)</td></tr>
|
||
<tr class="memdesc:gac355ea4ecf36de86425b3dcd7794b4e1"><td class="mdescLeft"> </td><td class="mdescRight">Proportional radius filtering for point cloud of type <code>pcl::PointXYZINormal</code> with indices. <br /></td></tr>
|
||
<tr class="separator:gac355ea4ecf36de86425b3dcd7794b4e1"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga69fb3ae457d192fd2c12631b0b5adf60" id="r_ga69fb3ae457d192fd2c12631b0b5adf60"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::IndicesPtr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>subtractFiltering</b> (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, const pcl::PointCloud< pcl::PointXYZ >::Ptr &subtractCloud, const pcl::IndicesPtr &subtractIndices, float radiusSearch, int minNeighborsInRadius=1)</td></tr>
|
||
<tr class="memdesc:ga69fb3ae457d192fd2c12631b0b5adf60"><td class="mdescLeft"> </td><td class="mdescRight">Subtract filtering for point cloud of type <code>pcl::PointXYZ</code>, returning filtered indices. <br /></td></tr>
|
||
<tr class="separator:ga69fb3ae457d192fd2c12631b0b5adf60"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga74d28899131bcb449b4d243a556c53aa" id="r_ga74d28899131bcb449b4d243a556c53aa"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::IndicesPtr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>subtractFiltering</b> (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::IndicesPtr &indices, const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &subtractCloud, const pcl::IndicesPtr &subtractIndices, float radiusSearch, int minNeighborsInRadius=1)</td></tr>
|
||
<tr class="memdesc:ga74d28899131bcb449b4d243a556c53aa"><td class="mdescLeft"> </td><td class="mdescRight">Subtract filtering for point cloud of type <code>pcl::PointXYZRGB</code>, returning filtered indices. <br /></td></tr>
|
||
<tr class="separator:ga74d28899131bcb449b4d243a556c53aa"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gad92c79e9320d8eae62053d01bb8ba9df" id="r_gad92c79e9320d8eae62053d01bb8ba9df"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::IndicesPtr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>subtractFiltering</b> (const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, const pcl::PointCloud< pcl::PointNormal >::Ptr &subtractCloud, const pcl::IndicesPtr &subtractIndices, float radiusSearch, float maxAngle=M_PI/4.0f, int minNeighborsInRadius=1)</td></tr>
|
||
<tr class="memdesc:gad92c79e9320d8eae62053d01bb8ba9df"><td class="mdescLeft"> </td><td class="mdescRight">Subtract filtering for point cloud of type <code>pcl::PointNormal</code>, returning filtered indices. <br /></td></tr>
|
||
<tr class="separator:gad92c79e9320d8eae62053d01bb8ba9df"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga49d4f22e20984d271bb4c3240018eeed" id="r_ga49d4f22e20984d271bb4c3240018eeed"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::IndicesPtr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>subtractFiltering</b> (const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const pcl::IndicesPtr &indices, const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &subtractCloud, const pcl::IndicesPtr &subtractIndices, float radiusSearch, float maxAngle=M_PI/4.0f, int minNeighborsInRadius=1)</td></tr>
|
||
<tr class="memdesc:ga49d4f22e20984d271bb4c3240018eeed"><td class="mdescLeft"> </td><td class="mdescRight">Subtract filtering for point cloud of type <code>pcl::PointXYZINormal</code>, returning filtered indices. <br /></td></tr>
|
||
<tr class="separator:ga49d4f22e20984d271bb4c3240018eeed"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga1879c56f82037789aed799c484fb883a" id="r_ga1879c56f82037789aed799c484fb883a"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::IndicesPtr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>subtractFiltering</b> (const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &subtractCloud, const pcl::IndicesPtr &subtractIndices, float radiusSearch, float maxAngle=M_PI/4.0f, int minNeighborsInRadius=1)</td></tr>
|
||
<tr class="memdesc:ga1879c56f82037789aed799c484fb883a"><td class="mdescLeft"> </td><td class="mdescRight">Subtract filtering for point cloud of type <code>pcl::PointXYZRGBNormal</code>, returning filtered indices. <br /></td></tr>
|
||
<tr class="separator:ga1879c56f82037789aed799c484fb883a"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gae14131d7ab09a650fb1411a8252e5526" id="r_gae14131d7ab09a650fb1411a8252e5526"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>subtractFiltering</b> (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::PointCloud< pcl::PointXYZ >::Ptr &subtractCloud, float radiusSearch, int minNeighborsInRadius=1)</td></tr>
|
||
<tr class="memdesc:gae14131d7ab09a650fb1411a8252e5526"><td class="mdescLeft"> </td><td class="mdescRight">Subtract filtering for point cloud of type <code>pcl::PointXYZ</code>, returning a new filtered point cloud. <br /></td></tr>
|
||
<tr class="separator:gae14131d7ab09a650fb1411a8252e5526"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gad2840d4057963b7cb29c02ee15fca895" id="r_gad2840d4057963b7cb29c02ee15fca895"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointXYZRGB >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>subtractFiltering</b> (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &subtractCloud, float radiusSearch, int minNeighborsInRadius=1)</td></tr>
|
||
<tr class="memdesc:gad2840d4057963b7cb29c02ee15fca895"><td class="mdescLeft"> </td><td class="mdescRight">Subtract filtering for point cloud of type <code>pcl::PointXYZRGB</code>, returning a new filtered point cloud. <br /></td></tr>
|
||
<tr class="separator:gad2840d4057963b7cb29c02ee15fca895"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga68cd453fcda96d2dba733650879f5d54" id="r_ga68cd453fcda96d2dba733650879f5d54"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointNormal >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>subtractFiltering</b> (const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const pcl::PointCloud< pcl::PointNormal >::Ptr &subtractCloud, float radiusSearch, float maxAngle=M_PI/4.0f, int minNeighborsInRadius=1)</td></tr>
|
||
<tr class="memdesc:ga68cd453fcda96d2dba733650879f5d54"><td class="mdescLeft"> </td><td class="mdescRight">Subtract filtering for point cloud of type <code>pcl::PointNormal</code>, returning a new filtered point cloud. <br /></td></tr>
|
||
<tr class="separator:ga68cd453fcda96d2dba733650879f5d54"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gaafd6fae4cac4f182d79e4507226165ef" id="r_gaafd6fae4cac4f182d79e4507226165ef"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointXYZINormal >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>subtractFiltering</b> (const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &subtractCloud, float radiusSearch, float maxAngle=M_PI/4.0f, int minNeighborsInRadius=1)</td></tr>
|
||
<tr class="memdesc:gaafd6fae4cac4f182d79e4507226165ef"><td class="mdescLeft"> </td><td class="mdescRight">Subtract filtering for point cloud of type <code>pcl::PointXYZINormal</code>, returning a new filtered point cloud. <br /></td></tr>
|
||
<tr class="separator:gaafd6fae4cac4f182d79e4507226165ef"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gaf2bca73b4dc564bb6b2b7b779c718373" id="r_gaf2bca73b4dc564bb6b2b7b779c718373"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>subtractFiltering</b> (const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &subtractCloud, float radiusSearch, float maxAngle=M_PI/4.0f, int minNeighborsInRadius=1)</td></tr>
|
||
<tr class="memdesc:gaf2bca73b4dc564bb6b2b7b779c718373"><td class="mdescLeft"> </td><td class="mdescRight">Subtract filtering for point cloud of type <code>pcl::PointXYZRGBNormal</code>, returning a new filtered point cloud. <br /></td></tr>
|
||
<tr class="separator:gaf2bca73b4dc564bb6b2b7b779c718373"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a2d730d57c10b9ef235388c8e6bd49132" id="r_a2d730d57c10b9ef235388c8e6bd49132"><td class="memItemLeft" align="right" valign="top">pcl::IndicesPtr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#a2d730d57c10b9ef235388c8e6bd49132">subtractAdaptiveFiltering</a> (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::IndicesPtr &indices, const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &subtractCloud, const pcl::IndicesPtr &subtractIndices, float radiusSearchRatio=0.01, int minNeighborsInRadius=1, const Eigen::Vector3f &viewpoint=Eigen::Vector3f(0, 0, 0))</td></tr>
|
||
<tr class="memdesc:a2d730d57c10b9ef235388c8e6bd49132"><td class="mdescLeft"> </td><td class="mdescRight">Performs adaptive radius-based subtraction filtering on a point cloud. <br /></td></tr>
|
||
<tr class="separator:a2d730d57c10b9ef235388c8e6bd49132"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:aa82dd73da48128b88a6aaf20c625814d" id="r_aa82dd73da48128b88a6aaf20c625814d"><td class="memItemLeft" align="right" valign="top">pcl::IndicesPtr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#aa82dd73da48128b88a6aaf20c625814d">subtractAdaptiveFiltering</a> (const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &subtractCloud, const pcl::IndicesPtr &subtractIndices, float radiusSearchRatio=0.01, float maxAngle=M_PI/4.0f, int minNeighborsInRadius=1, const Eigen::Vector3f &viewpoint=Eigen::Vector3f(0, 0, 0))</td></tr>
|
||
<tr class="memdesc:aa82dd73da48128b88a6aaf20c625814d"><td class="mdescLeft"> </td><td class="mdescRight">Performs adaptive radius-based subtraction filtering on a point cloud with normals, also considering normal direction differences. <br /></td></tr>
|
||
<tr class="separator:aa82dd73da48128b88a6aaf20c625814d"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga7c7e3de2ff24fc3aadfb3eb0ae05314d" id="r_ga7c7e3de2ff24fc3aadfb3eb0ae05314d"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::IndicesPtr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>normalFiltering</b> (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, float angleMax, const Eigen::Vector4f &normal, int normalKSearch, const Eigen::Vector4f &viewpoint, float groundNormalsUp=0.0f)</td></tr>
|
||
<tr class="memdesc:ga7c7e3de2ff24fc3aadfb3eb0ae05314d"><td class="mdescLeft"> </td><td class="mdescRight">Point normal filtering for point cloud of type <code>pcl::PointXYZ</code>. <br /></td></tr>
|
||
<tr class="separator:ga7c7e3de2ff24fc3aadfb3eb0ae05314d"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gad37b605f0f26190c95450c878ca51ece" id="r_gad37b605f0f26190c95450c878ca51ece"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::IndicesPtr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>normalFiltering</b> (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, float angleMax, const Eigen::Vector4f &normal, int normalKSearch, const Eigen::Vector4f &viewpoint, float groundNormalsUp=0.0f)</td></tr>
|
||
<tr class="memdesc:gad37b605f0f26190c95450c878ca51ece"><td class="mdescLeft"> </td><td class="mdescRight">Point normal filtering for point cloud of type <code>pcl::PointXYZRGB</code>. <br /></td></tr>
|
||
<tr class="separator:gad37b605f0f26190c95450c878ca51ece"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gabfeacf2f8a261abd98a9c6728f02324b" id="r_gabfeacf2f8a261abd98a9c6728f02324b"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::IndicesPtr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>normalFiltering</b> (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, float angleMax, const Eigen::Vector4f &normal, int normalKSearch, const Eigen::Vector4f &viewpoint, float groundNormalsUp=0.0f)</td></tr>
|
||
<tr class="memdesc:gabfeacf2f8a261abd98a9c6728f02324b"><td class="mdescLeft"> </td><td class="mdescRight">Point normal filtering for point cloud of type <code>pcl::PointXYZ</code>. <br /></td></tr>
|
||
<tr class="separator:gabfeacf2f8a261abd98a9c6728f02324b"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga5c15577ccd70487c3ccd53c16b00648b" id="r_ga5c15577ccd70487c3ccd53c16b00648b"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::IndicesPtr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>normalFiltering</b> (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::IndicesPtr &indices, float angleMax, const Eigen::Vector4f &normal, int normalKSearch, const Eigen::Vector4f &viewpoint, float groundNormalsUp=0.0f)</td></tr>
|
||
<tr class="memdesc:ga5c15577ccd70487c3ccd53c16b00648b"><td class="mdescLeft"> </td><td class="mdescRight">Point normal filtering for point cloud of type <code>pcl::PointXYZRGB</code>. <br /></td></tr>
|
||
<tr class="separator:ga5c15577ccd70487c3ccd53c16b00648b"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gad821858315d7e1e1868d6314d65a9f89" id="r_gad821858315d7e1e1868d6314d65a9f89"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::IndicesPtr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>normalFiltering</b> (const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, const pcl::IndicesPtr &indices, float angleMax, const Eigen::Vector4f &normal, int normalKSearch, const Eigen::Vector4f &viewpoint, float groundNormalsUp=0.0f)</td></tr>
|
||
<tr class="memdesc:gad821858315d7e1e1868d6314d65a9f89"><td class="mdescLeft"> </td><td class="mdescRight">Point normal filtering for point cloud of type <code>pcl::PointXYZI</code>. <br /></td></tr>
|
||
<tr class="separator:gad821858315d7e1e1868d6314d65a9f89"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga96711db9864b121ab9e2bcbf2cf44658" id="r_ga96711db9864b121ab9e2bcbf2cf44658"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::IndicesPtr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>normalFiltering</b> (const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, float angleMax, const Eigen::Vector4f &normal, int normalKSearch, const Eigen::Vector4f &viewpoint, float groundNormalsUp=0.0f)</td></tr>
|
||
<tr class="memdesc:ga96711db9864b121ab9e2bcbf2cf44658"><td class="mdescLeft"> </td><td class="mdescRight">Point normal filtering for point cloud of type <code>pcl::PointNormal</code>. <br /></td></tr>
|
||
<tr class="separator:ga96711db9864b121ab9e2bcbf2cf44658"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga91fd9701dea9ebc4b7265b12b357aba1" id="r_ga91fd9701dea9ebc4b7265b12b357aba1"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::IndicesPtr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>normalFiltering</b> (const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, float angleMax, const Eigen::Vector4f &normal, int normalKSearch, const Eigen::Vector4f &viewpoint, float groundNormalsUp=0.0f)</td></tr>
|
||
<tr class="memdesc:ga91fd9701dea9ebc4b7265b12b357aba1"><td class="mdescLeft"> </td><td class="mdescRight">Point normal filtering for point cloud of type <code>pcl::PointXYZRGBNormal</code>. <br /></td></tr>
|
||
<tr class="separator:ga91fd9701dea9ebc4b7265b12b357aba1"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gae3831a32e21738a381ea789e9e3e3996" id="r_gae3831a32e21738a381ea789e9e3e3996"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::IndicesPtr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>normalFiltering</b> (const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const pcl::IndicesPtr &indices, float angleMax, const Eigen::Vector4f &normal, int normalKSearch, const Eigen::Vector4f &viewpoint, float groundNormalsUp=0.0f)</td></tr>
|
||
<tr class="memdesc:gae3831a32e21738a381ea789e9e3e3996"><td class="mdescLeft"> </td><td class="mdescRight">Point normal filtering for point cloud of type <code>pcl::PointXYZINormal</code>. <br /></td></tr>
|
||
<tr class="separator:gae3831a32e21738a381ea789e9e3e3996"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga62a0d02930f5969cbff707afe01d1bcd" id="r_ga62a0d02930f5969cbff707afe01d1bcd"><td class="memItemLeft" align="right" valign="top">
|
||
std::vector< pcl::IndicesPtr > RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>extractClusters</b> (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, float clusterTolerance, int minClusterSize, int maxClusterSize=std::numeric_limits< int >::max(), int *biggestClusterIndex=0)</td></tr>
|
||
<tr class="memdesc:ga62a0d02930f5969cbff707afe01d1bcd"><td class="mdescLeft"> </td><td class="mdescRight">Extract clusters from point cloud of type <code>pcl::PointXYZ</code>. <br /></td></tr>
|
||
<tr class="separator:ga62a0d02930f5969cbff707afe01d1bcd"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga180048dc26009c5d6d1233bb6ce5de04" id="r_ga180048dc26009c5d6d1233bb6ce5de04"><td class="memItemLeft" align="right" valign="top">
|
||
std::vector< pcl::IndicesPtr > RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>extractClusters</b> (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, float clusterTolerance, int minClusterSize, int maxClusterSize=std::numeric_limits< int >::max(), int *biggestClusterIndex=0)</td></tr>
|
||
<tr class="memdesc:ga180048dc26009c5d6d1233bb6ce5de04"><td class="mdescLeft"> </td><td class="mdescRight">Extract clusters from point cloud of type <code>pcl::PointXYZRGB</code>. <br /></td></tr>
|
||
<tr class="separator:ga180048dc26009c5d6d1233bb6ce5de04"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga8184974cc084fdd804e82bb979eb2353" id="r_ga8184974cc084fdd804e82bb979eb2353"><td class="memItemLeft" align="right" valign="top">
|
||
std::vector< pcl::IndicesPtr > RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>extractClusters</b> (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, float clusterTolerance, int minClusterSize, int maxClusterSize=std::numeric_limits< int >::max(), int *biggestClusterIndex=0)</td></tr>
|
||
<tr class="memdesc:ga8184974cc084fdd804e82bb979eb2353"><td class="mdescLeft"> </td><td class="mdescRight">Extract clusters from point cloud of type <code>pcl::PointXYZ</code> inside provided indices. <br /></td></tr>
|
||
<tr class="separator:ga8184974cc084fdd804e82bb979eb2353"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gaecfbf327f7ef38738d0e592ed470d318" id="r_gaecfbf327f7ef38738d0e592ed470d318"><td class="memItemLeft" align="right" valign="top">
|
||
std::vector< pcl::IndicesPtr > RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>extractClusters</b> (const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, float clusterTolerance, int minClusterSize, int maxClusterSize=std::numeric_limits< int >::max(), int *biggestClusterIndex=0)</td></tr>
|
||
<tr class="memdesc:gaecfbf327f7ef38738d0e592ed470d318"><td class="mdescLeft"> </td><td class="mdescRight">Extract clusters from point cloud of type <code>pcl::PointNormal</code> inside provided indices. <br /></td></tr>
|
||
<tr class="separator:gaecfbf327f7ef38738d0e592ed470d318"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga7c622ccc41a487527f0448db84fd8539" id="r_ga7c622ccc41a487527f0448db84fd8539"><td class="memItemLeft" align="right" valign="top">
|
||
std::vector< pcl::IndicesPtr > RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>extractClusters</b> (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::IndicesPtr &indices, float clusterTolerance, int minClusterSize, int maxClusterSize=std::numeric_limits< int >::max(), int *biggestClusterIndex=0)</td></tr>
|
||
<tr class="memdesc:ga7c622ccc41a487527f0448db84fd8539"><td class="mdescLeft"> </td><td class="mdescRight">Extract clusters from point cloud of type <code>pcl::PointXYZRGB</code> inside provided indices. <br /></td></tr>
|
||
<tr class="separator:ga7c622ccc41a487527f0448db84fd8539"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gada592bb1e0525a32412d5009002b9b1e" id="r_gada592bb1e0525a32412d5009002b9b1e"><td class="memItemLeft" align="right" valign="top">
|
||
std::vector< pcl::IndicesPtr > RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>extractClusters</b> (const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, float clusterTolerance, int minClusterSize, int maxClusterSize=std::numeric_limits< int >::max(), int *biggestClusterIndex=0)</td></tr>
|
||
<tr class="memdesc:gada592bb1e0525a32412d5009002b9b1e"><td class="mdescLeft"> </td><td class="mdescRight">Extract clusters from point cloud of type <code>pcl::PointXYZRGBNormal</code> inside provided indices. <br /></td></tr>
|
||
<tr class="separator:gada592bb1e0525a32412d5009002b9b1e"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga3e51576a82fef5cddffe4d3ae14d8899" id="r_ga3e51576a82fef5cddffe4d3ae14d8899"><td class="memItemLeft" align="right" valign="top">
|
||
std::vector< pcl::IndicesPtr > RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>extractClusters</b> (const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, const pcl::IndicesPtr &indices, float clusterTolerance, int minClusterSize, int maxClusterSize=std::numeric_limits< int >::max(), int *biggestClusterIndex=0)</td></tr>
|
||
<tr class="memdesc:ga3e51576a82fef5cddffe4d3ae14d8899"><td class="mdescLeft"> </td><td class="mdescRight">Extract clusters from point cloud of type <code>pcl::PointXYZI</code> inside provided indices. <br /></td></tr>
|
||
<tr class="separator:ga3e51576a82fef5cddffe4d3ae14d8899"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga8e23ae8df06afbb753eb6eb0b54a400a" id="r_ga8e23ae8df06afbb753eb6eb0b54a400a"><td class="memItemLeft" align="right" valign="top">
|
||
std::vector< pcl::IndicesPtr > RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>extractClusters</b> (const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const pcl::IndicesPtr &indices, float clusterTolerance, int minClusterSize, int maxClusterSize=std::numeric_limits< int >::max(), int *biggestClusterIndex=0)</td></tr>
|
||
<tr class="memdesc:ga8e23ae8df06afbb753eb6eb0b54a400a"><td class="mdescLeft"> </td><td class="mdescRight">Extract clusters from point cloud of type <code>pcl::PointXYZ</code>. <br /></td></tr>
|
||
<tr class="separator:ga8e23ae8df06afbb753eb6eb0b54a400a"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga8685395807479f06b19d9d41616a03a7" id="r_ga8685395807479f06b19d9d41616a03a7"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::IndicesPtr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>extractIndices</b> (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, bool negative)</td></tr>
|
||
<tr class="memdesc:ga8685395807479f06b19d9d41616a03a7"><td class="mdescLeft"> </td><td class="mdescRight">Extract indices from point cloud of type <code>pcl::PointXYZ</code>. <br /></td></tr>
|
||
<tr class="separator:ga8685395807479f06b19d9d41616a03a7"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga8ce0dc4070d599c6f4a8c55651c2f944" id="r_ga8ce0dc4070d599c6f4a8c55651c2f944"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::IndicesPtr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>extractIndices</b> (const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, bool negative)</td></tr>
|
||
<tr class="memdesc:ga8ce0dc4070d599c6f4a8c55651c2f944"><td class="mdescLeft"> </td><td class="mdescRight">Extract indices from point cloud of type <code>pcl::PointNormal</code>. <br /></td></tr>
|
||
<tr class="separator:ga8ce0dc4070d599c6f4a8c55651c2f944"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga0c8a4fe56efba09d2bf6c5b84da36702" id="r_ga0c8a4fe56efba09d2bf6c5b84da36702"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::IndicesPtr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>extractIndices</b> (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::IndicesPtr &indices, bool negative)</td></tr>
|
||
<tr class="memdesc:ga0c8a4fe56efba09d2bf6c5b84da36702"><td class="mdescLeft"> </td><td class="mdescRight">Extract indices from point cloud of type <code>pcl::PointXYZRGB</code>. <br /></td></tr>
|
||
<tr class="separator:ga0c8a4fe56efba09d2bf6c5b84da36702"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga93acd3d20cbab15b628cbc2a0f3b1919" id="r_ga93acd3d20cbab15b628cbc2a0f3b1919"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::IndicesPtr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>extractIndices</b> (const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, bool negative)</td></tr>
|
||
<tr class="memdesc:ga93acd3d20cbab15b628cbc2a0f3b1919"><td class="mdescLeft"> </td><td class="mdescRight">Extract indices from point cloud of type <code>pcl::PointXYZRGBNormal</code>. <br /></td></tr>
|
||
<tr class="separator:ga93acd3d20cbab15b628cbc2a0f3b1919"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gaf8e635d6864b0a7f41bad4bb185a57f4" id="r_gaf8e635d6864b0a7f41bad4bb185a57f4"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::IndicesPtr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>extractIndices</b> (const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, const pcl::IndicesPtr &indices, bool negative)</td></tr>
|
||
<tr class="memdesc:gaf8e635d6864b0a7f41bad4bb185a57f4"><td class="mdescLeft"> </td><td class="mdescRight">Extract indices from point cloud of type <code>pcl::PointXYZI</code>. <br /></td></tr>
|
||
<tr class="separator:gaf8e635d6864b0a7f41bad4bb185a57f4"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gae196609121fa899ba2735d406aedc73b" id="r_gae196609121fa899ba2735d406aedc73b"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::IndicesPtr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>extractIndices</b> (const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const pcl::IndicesPtr &indices, bool negative)</td></tr>
|
||
<tr class="memdesc:gae196609121fa899ba2735d406aedc73b"><td class="mdescLeft"> </td><td class="mdescRight">Extract indices from point cloud of type <code>pcl::PointXYZINormal</code>. <br /></td></tr>
|
||
<tr class="separator:gae196609121fa899ba2735d406aedc73b"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga2a39a8e9d769e5e2cea8054b7084af1e" id="r_ga2a39a8e9d769e5e2cea8054b7084af1e"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>extractIndices</b> (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, bool negative, bool keepOrganized)</td></tr>
|
||
<tr class="memdesc:ga2a39a8e9d769e5e2cea8054b7084af1e"><td class="mdescLeft"> </td><td class="mdescRight">Extract points from point cloud of type <code>pcl::PointXYZ</code> with corresponding indices. <br /></td></tr>
|
||
<tr class="separator:ga2a39a8e9d769e5e2cea8054b7084af1e"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gaca2188ec4a875fb9c6d2fa240888dcf1" id="r_gaca2188ec4a875fb9c6d2fa240888dcf1"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointXYZRGB >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>extractIndices</b> (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::IndicesPtr &indices, bool negative, bool keepOrganized)</td></tr>
|
||
<tr class="memdesc:gaca2188ec4a875fb9c6d2fa240888dcf1"><td class="mdescLeft"> </td><td class="mdescRight">Extract points from point cloud of type <code>pcl::PointXYZRGB</code> with corresponding indices. <br /></td></tr>
|
||
<tr class="separator:gaca2188ec4a875fb9c6d2fa240888dcf1"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gaf6cd58fdda3450fb11496395e35908d7" id="r_gaf6cd58fdda3450fb11496395e35908d7"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>extractIndices</b> (const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, bool negative, bool keepOrganized)</td></tr>
|
||
<tr class="memdesc:gaf6cd58fdda3450fb11496395e35908d7"><td class="mdescLeft"> </td><td class="mdescRight">Extract points from point cloud of type <code>pcl::PointXYZRGBNormal</code> with corresponding indices. <br /></td></tr>
|
||
<tr class="separator:gaf6cd58fdda3450fb11496395e35908d7"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gad759e35639cd87f04ebd09eadb5865f5" id="r_gad759e35639cd87f04ebd09eadb5865f5"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointXYZI >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>extractIndices</b> (const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, const pcl::IndicesPtr &indices, bool negative, bool keepOrganized)</td></tr>
|
||
<tr class="memdesc:gad759e35639cd87f04ebd09eadb5865f5"><td class="mdescLeft"> </td><td class="mdescRight">Extract points from point cloud of type <code>pcl::PointXYZI</code> with corresponding indices. <br /></td></tr>
|
||
<tr class="separator:gad759e35639cd87f04ebd09eadb5865f5"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gaa312bb0ae54f1472d4e4f22bee7cc4d6" id="r_gaa312bb0ae54f1472d4e4f22bee7cc4d6"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointXYZINormal >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>extractIndices</b> (const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const pcl::IndicesPtr &indices, bool negative, bool keepOrganized)</td></tr>
|
||
<tr class="memdesc:gaa312bb0ae54f1472d4e4f22bee7cc4d6"><td class="mdescLeft"> </td><td class="mdescRight">Extract points from point cloud of type <code>pcl::PointXYZINormal</code> with corresponding indices. <br /></td></tr>
|
||
<tr class="separator:gaa312bb0ae54f1472d4e4f22bee7cc4d6"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:acc584a6135a4567d4566f72a64d0770a" id="r_acc584a6135a4567d4566f72a64d0770a"><td class="memItemLeft" align="right" valign="top">pcl::IndicesPtr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#acc584a6135a4567d4566f72a64d0770a">extractPlane</a> (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, float distanceThreshold, int maxIterations=100, pcl::ModelCoefficients *coefficientsOut=0)</td></tr>
|
||
<tr class="memdesc:acc584a6135a4567d4566f72a64d0770a"><td class="mdescLeft"> </td><td class="mdescRight">Extracts the indices of the inliers that belong to a plane using RANSAC. <br /></td></tr>
|
||
<tr class="separator:acc584a6135a4567d4566f72a64d0770a"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a1954abe3a6ce5ed28c3057de9e1bed6e" id="r_a1954abe3a6ce5ed28c3057de9e1bed6e"><td class="memItemLeft" align="right" valign="top"><a id="a1954abe3a6ce5ed28c3057de9e1bed6e" name="a1954abe3a6ce5ed28c3057de9e1bed6e"></a>
|
||
pcl::IndicesPtr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>extractPlane</b> (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, float distanceThreshold, int maxIterations=100, pcl::ModelCoefficients *coefficientsOut=0)</td></tr>
|
||
<tr class="separator:a1954abe3a6ce5ed28c3057de9e1bed6e"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a4f1002c1825baf4b7606a94b4ea9b15d" id="r_a4f1002c1825baf4b7606a94b4ea9b15d"><td class="memItemLeft" align="right" valign="top">RTABMAP_DEPRECATED void RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#a4f1002c1825baf4b7606a94b4ea9b15d">occupancy2DFromLaserScan</a> (const cv::Mat &scan, cv::Mat &empty, cv::Mat &occupied, float cellSize, bool unknownSpaceFilled=false, float scanMaxRange=0.0f)</td></tr>
|
||
<tr class="separator:a4f1002c1825baf4b7606a94b4ea9b15d"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:aa1c9dfd681662ff1c164956a83e30b57" id="r_aa1c9dfd681662ff1c164956a83e30b57"><td class="memItemLeft" align="right" valign="top">RTABMAP_DEPRECATED void RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#aa1c9dfd681662ff1c164956a83e30b57">occupancy2DFromLaserScan</a> (const cv::Mat &scan, const cv::Point3f &viewpoint, cv::Mat &empty, cv::Mat &occupied, float cellSize, bool unknownSpaceFilled=false, float scanMaxRange=0.0f)</td></tr>
|
||
<tr class="separator:aa1c9dfd681662ff1c164956a83e30b57"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a2d2f6d5adead09c6f87ef3f7cdebc65e" id="r_a2d2f6d5adead09c6f87ef3f7cdebc65e"><td class="memItemLeft" align="right" valign="top">void RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#a2d2f6d5adead09c6f87ef3f7cdebc65e">occupancy2DFromLaserScan</a> (const cv::Mat &scanHit, const cv::Mat &scanNoHit, const cv::Point3f &viewpoint, cv::Mat &empty, cv::Mat &occupied, float cellSize, bool unknownSpaceFilled=false, float scanMaxRange=0.0f)</td></tr>
|
||
<tr class="memdesc:a2d2f6d5adead09c6f87ef3f7cdebc65e"><td class="mdescLeft"> </td><td class="mdescRight">Generates 2D occupancy grid maps (free and occupied cells) from laser scan data. <br /></td></tr>
|
||
<tr class="separator:a2d2f6d5adead09c6f87ef3f7cdebc65e"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a86ea393c958183f10da8f7327e25d894" id="r_a86ea393c958183f10da8f7327e25d894"><td class="memItemLeft" align="right" valign="top">cv::Mat RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#a86ea393c958183f10da8f7327e25d894">create2DMapFromOccupancyLocalMaps</a> (const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > &poses, const std::map< int, std::pair< cv::Mat, cv::Mat > > &occupancy, float cellSize, float &xMin, float &yMin, float minMapSize=0.0f, bool erode=false, float footprintRadius=0.0f)</td></tr>
|
||
<tr class="memdesc:a86ea393c958183f10da8f7327e25d894"><td class="mdescLeft"> </td><td class="mdescRight">Creates a 2D occupancy grid map from local occupancy data. <br /></td></tr>
|
||
<tr class="separator:a86ea393c958183f10da8f7327e25d894"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ae7dca67101116f7de0114cea5442ec23" id="r_ae7dca67101116f7de0114cea5442ec23"><td class="memItemLeft" align="right" valign="top">RTABMAP_DEPRECATED cv::Mat RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#ae7dca67101116f7de0114cea5442ec23">create2DMap</a> (const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > &poses, const std::map< int, pcl::PointCloud< pcl::PointXYZ >::Ptr > &scans, float cellSize, bool unknownSpaceFilled, float &xMin, float &yMin, float minMapSize=0.0f, float scanMaxRange=0.0f)</td></tr>
|
||
<tr class="separator:ae7dca67101116f7de0114cea5442ec23"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:adcc1d4aca3da4fcb11fa44d3a20f46ca" id="r_adcc1d4aca3da4fcb11fa44d3a20f46ca"><td class="memItemLeft" align="right" valign="top">RTABMAP_DEPRECATED cv::Mat RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#adcc1d4aca3da4fcb11fa44d3a20f46ca">create2DMap</a> (const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > &poses, const std::map< int, pcl::PointCloud< pcl::PointXYZ >::Ptr > &scans, const std::map< int, cv::Point3f > &viewpoints, float cellSize, bool unknownSpaceFilled, float &xMin, float &yMin, float minMapSize=0.0f, float scanMaxRange=0.0f)</td></tr>
|
||
<tr class="separator:adcc1d4aca3da4fcb11fa44d3a20f46ca"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:afff989b8fc8d612a69d82bdfa7a28fe8" id="r_afff989b8fc8d612a69d82bdfa7a28fe8"><td class="memItemLeft" align="right" valign="top">cv::Mat RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#afff989b8fc8d612a69d82bdfa7a28fe8">create2DMap</a> (const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > &poses, const std::map< int, std::pair< cv::Mat, cv::Mat > > &scans, const std::map< int, cv::Point3f > &viewpoints, float cellSize, bool unknownSpaceFilled, float &xMin, float &yMin, float minMapSize=0.0f, float scanMaxRange=0.0f)</td></tr>
|
||
<tr class="memdesc:afff989b8fc8d612a69d82bdfa7a28fe8"><td class="mdescLeft"> </td><td class="mdescRight">Generates a 2D occupancy grid map from a set of poses, laser scans, and viewpoints. <br /></td></tr>
|
||
<tr class="separator:afff989b8fc8d612a69d82bdfa7a28fe8"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a281695150f5c02e6222d050f488a9d6b" id="r_a281695150f5c02e6222d050f488a9d6b"><td class="memItemLeft" align="right" valign="top">void RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#a281695150f5c02e6222d050f488a9d6b">rayTrace</a> (const cv::Point2i &start, const cv::Point2i &end, cv::Mat &grid, bool stopOnObstacle)</td></tr>
|
||
<tr class="memdesc:a281695150f5c02e6222d050f488a9d6b"><td class="mdescLeft"> </td><td class="mdescRight">Performs a 2D ray tracing operation between two points on a grid map. <br /></td></tr>
|
||
<tr class="separator:a281695150f5c02e6222d050f488a9d6b"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ae57dd8dcc488496a2c3872eba97eb4e4" id="r_ae57dd8dcc488496a2c3872eba97eb4e4"><td class="memItemLeft" align="right" valign="top">cv::Mat RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#ae57dd8dcc488496a2c3872eba97eb4e4">convertMap2Image8U</a> (const cv::Mat &map8S, bool pgmFormat=false)</td></tr>
|
||
<tr class="memdesc:ae57dd8dcc488496a2c3872eba97eb4e4"><td class="mdescLeft"> </td><td class="mdescRight">Converts an occupancy grid map (CV_8S) to a grayscale image (CV_8U). <br /></td></tr>
|
||
<tr class="separator:ae57dd8dcc488496a2c3872eba97eb4e4"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:acb47883439442306b63f5bf234e87049" id="r_acb47883439442306b63f5bf234e87049"><td class="memItemLeft" align="right" valign="top">cv::Mat RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#acb47883439442306b63f5bf234e87049">convertImage8U2Map</a> (const cv::Mat &map8U, bool pgmFormat=false)</td></tr>
|
||
<tr class="memdesc:acb47883439442306b63f5bf234e87049"><td class="mdescLeft"> </td><td class="mdescRight">Converts a grayscale occupancy image (CV_8U) to an occupancy grid map (CV_8S). <br /></td></tr>
|
||
<tr class="separator:acb47883439442306b63f5bf234e87049"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:aa4d323d39ec23ea314c22f0668ab11c4" id="r_aa4d323d39ec23ea314c22f0668ab11c4"><td class="memItemLeft" align="right" valign="top">cv::Mat RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#aa4d323d39ec23ea314c22f0668ab11c4">erodeMap</a> (const cv::Mat &map)</td></tr>
|
||
<tr class="memdesc:aa4d323d39ec23ea314c22f0668ab11c4"><td class="mdescLeft"> </td><td class="mdescRight">Performs erosion on an occupancy grid map to reduce small noisy obstacles. <br /></td></tr>
|
||
<tr class="separator:aa4d323d39ec23ea314c22f0668ab11c4"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a58ee399b0bca3a8af41e74d0eced5f84" id="r_a58ee399b0bca3a8af41e74d0eced5f84"><td class="memTemplParams" colspan="2">template<typename PointT > </td></tr>
|
||
<tr class="memitem:a58ee399b0bca3a8af41e74d0eced5f84"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#a58ee399b0bca3a8af41e74d0eced5f84">segmentObstaclesFromGround</a> (const typename pcl::PointCloud< PointT >::Ptr &cloud, const pcl::IndicesPtr &indices, pcl::IndicesPtr &ground, pcl::IndicesPtr &obstacles, int normalKSearch, float groundNormalAngle, float clusterRadius, int minClusterSize, bool segmentFlatObstacles=false, float maxGroundHeight=0.0f, pcl::IndicesPtr *flatObstacles=0, const Eigen::Vector4f &viewPoint=Eigen::Vector4f(0, 0, 100, 0), float groundNormalsUp=0)</td></tr>
|
||
<tr class="memdesc:a58ee399b0bca3a8af41e74d0eced5f84"><td class="mdescLeft"> </td><td class="mdescRight">Segments ground and obstacle indices from a point cloud using surface normals and clustering. <br /></td></tr>
|
||
<tr class="separator:a58ee399b0bca3a8af41e74d0eced5f84"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a5f95aa913b08b0d0f12e9fc02b087692" id="r_a5f95aa913b08b0d0f12e9fc02b087692"><td class="memItemLeft" align="right" valign="top">void RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#a5f95aa913b08b0d0f12e9fc02b087692">setRansacDeterministicSeed</a> (bool enable)</td></tr>
|
||
<tr class="memdesc:a5f95aa913b08b0d0f12e9fc02b087692"><td class="mdescLeft"> </td><td class="mdescRight">Toggle a deterministic seed for OpenGV's internal RANSAC RNG. <br /></td></tr>
|
||
<tr class="separator:a5f95aa913b08b0d0f12e9fc02b087692"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ad918f390fa8b4d331561d5a00d61ea7b" id="r_ad918f390fa8b4d331561d5a00d61ea7b"><td class="memItemLeft" align="right" valign="top">bool RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#ad918f390fa8b4d331561d5a00d61ea7b">ransacDeterministicSeedEnabled</a> ()</td></tr>
|
||
<tr class="separator:ad918f390fa8b4d331561d5a00d61ea7b"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a94321442a82f05368f8fd9c9a998284e" id="r_a94321442a82f05368f8fd9c9a998284e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrtabmap_1_1Transform.html">Transform</a> RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#a94321442a82f05368f8fd9c9a998284e">estimateMotion3DTo2D</a> (const std::map< int, cv::Point3f > &words3A, const std::map< int, cv::KeyPoint > &words2B, const <a class="el" href="classrtabmap_1_1CameraModel.html">CameraModel</a> &cameraModel, int minInliers=10, int iterations=100, double reprojError=5., int flagsPnP=0, int pnpRefineIterations=1, int varianceMedianRatio=4, float maxVariance=0, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &guess=<a class="el" href="classrtabmap_1_1Transform.html#a8ea4368f2018d751d2733038081d56a2">Transform::getIdentity</a>(), const std::map< int, cv::Point3f > &words3B=std::map< int, cv::Point3f >(), cv::Mat *covariance=0, std::vector< int > *matchesOut=0, std::vector< int > *inliersOut=0, bool splitLinearCovarianceComponents=false)</td></tr>
|
||
<tr class="memdesc:a94321442a82f05368f8fd9c9a998284e"><td class="mdescLeft"> </td><td class="mdescRight">Estimates a 6-DOF camera transform from 3D-2D point correspondences using PnP RANSAC. <br /></td></tr>
|
||
<tr class="separator:a94321442a82f05368f8fd9c9a998284e"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a3fffe99bf880decfb8a9f60ff7b882bd" id="r_a3fffe99bf880decfb8a9f60ff7b882bd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrtabmap_1_1Transform.html">Transform</a> RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#a3fffe99bf880decfb8a9f60ff7b882bd">estimateMotion3DTo2D</a> (const std::map< int, cv::Point3f > &words3A, const std::map< int, cv::KeyPoint > &words2B, const std::vector< <a class="el" href="classrtabmap_1_1CameraModel.html">CameraModel</a> > &cameraModels, unsigned int samplingPolicy, int minInliers, int iterations, double reprojError, int flagsPnP, int refineIterations, int varianceMedianRatio, float maxVariance, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &guess, const std::map< int, cv::Point3f > &words3B, cv::Mat *covariance, std::vector< std::vector< int > > *matchesOut, std::vector< std::vector< int > > *inliersOut, bool splitLinearCovarianceComponents)</td></tr>
|
||
<tr class="memdesc:a3fffe99bf880decfb8a9f60ff7b882bd"><td class="mdescLeft"> </td><td class="mdescRight">Estimates the 3D-to-2D motion (pose) transformation between a set of 3D points and their corresponding 2D keypoints using the OpenGV library. <br /></td></tr>
|
||
<tr class="separator:a3fffe99bf880decfb8a9f60ff7b882bd"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a0a1a57cb2be47c4b6670672b2a0a5a93" id="r_a0a1a57cb2be47c4b6670672b2a0a5a93"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrtabmap_1_1Transform.html">Transform</a> RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#a0a1a57cb2be47c4b6670672b2a0a5a93">estimateMotion3DTo2D</a> (const std::map< int, cv::Point3f > &words3A, const std::map< int, cv::KeyPoint > &words2B, const std::vector< <a class="el" href="classrtabmap_1_1CameraModel.html">CameraModel</a> > &cameraModels, unsigned int samplingPolicy=0, int minInliers=10, int iterations=100, double reprojError=5., int flagsPnP=0, int pnpRefineIterations=1, int varianceMedianRatio=4, float maxVariance=0, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &guess=<a class="el" href="classrtabmap_1_1Transform.html#a8ea4368f2018d751d2733038081d56a2">Transform::getIdentity</a>(), const std::map< int, cv::Point3f > &words3B=std::map< int, cv::Point3f >(), cv::Mat *covariance=0, std::vector< int > *matchesOut=0, std::vector< int > *inliersOut=0, bool splitLinearCovarianceComponents=false)</td></tr>
|
||
<tr class="memdesc:a0a1a57cb2be47c4b6670672b2a0a5a93"><td class="mdescLeft"> </td><td class="mdescRight">Estimates the 3D-to-2D motion (pose) transformation between a set of 3D points and their corresponding 2D keypoints using the OpenGV library. <br /></td></tr>
|
||
<tr class="separator:a0a1a57cb2be47c4b6670672b2a0a5a93"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a717fefeecb331b1dddc3ec3b4f6beb3a" id="r_a717fefeecb331b1dddc3ec3b4f6beb3a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrtabmap_1_1Transform.html">Transform</a> RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#a717fefeecb331b1dddc3ec3b4f6beb3a">estimateMotion3DTo3D</a> (const std::map< int, cv::Point3f > &words3A, const std::map< int, cv::Point3f > &words3B, int minInliers=10, double inliersDistance=0.1, int iterations=100, int refineIterations=5, cv::Mat *covariance=0, std::vector< int > *matchesOut=0, std::vector< int > *inliersOut=0)</td></tr>
|
||
<tr class="memdesc:a717fefeecb331b1dddc3ec3b4f6beb3a"><td class="mdescLeft"> </td><td class="mdescRight">Estimates the 3D rigid transformation between two sets of 3D points. <br /></td></tr>
|
||
<tr class="separator:a717fefeecb331b1dddc3ec3b4f6beb3a"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ad426e396a196d6f69a004bb55982f9f7" id="r_ad426e396a196d6f69a004bb55982f9f7"><td class="memItemLeft" align="right" valign="top">void RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#ad426e396a196d6f69a004bb55982f9f7">solvePnPRansac</a> (const std::vector< cv::Point3f > &objectPoints, const std::vector< cv::Point2f > &imagePoints, const cv::Mat &cameraMatrix, const cv::Mat &distCoeffs, cv::Mat &rvec, cv::Mat &tvec, bool useExtrinsicGuess, int iterationsCount, float reprojectionError, int minInliersCount, std::vector< int > &inliers, int flags, int refineIterations=1, float refineSigma=3.0f)</td></tr>
|
||
<tr class="memdesc:ad426e396a196d6f69a004bb55982f9f7"><td class="mdescLeft"> </td><td class="mdescRight">Estimates the camera pose using the PnP RANSAC algorithm and optionally refines it. <br /></td></tr>
|
||
<tr class="separator:ad426e396a196d6f69a004bb55982f9f7"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a9e74a9f79f348c573edc1f22debe7ddd" id="r_a9e74a9f79f348c573edc1f22debe7ddd"><td class="memItemLeft" align="right" valign="top"><a id="a9e74a9f79f348c573edc1f22debe7ddd" name="a9e74a9f79f348c573edc1f22debe7ddd"></a>
|
||
int RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>getCorrespondencesCount</b> (const pcl::PointCloud< pcl::PointXYZ >::ConstPtr &cloud_source, const pcl::PointCloud< pcl::PointXYZ >::ConstPtr &cloud_target, float maxDistance)</td></tr>
|
||
<tr class="separator:a9e74a9f79f348c573edc1f22debe7ddd"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a56797352c7d47f815c694bc4ccb1faea" id="r_a56797352c7d47f815c694bc4ccb1faea"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrtabmap_1_1Transform.html">Transform</a> RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#a56797352c7d47f815c694bc4ccb1faea">transformFromXYZCorrespondencesSVD</a> (const pcl::PointCloud< pcl::PointXYZ > &cloud1, const pcl::PointCloud< pcl::PointXYZ > &cloud2)</td></tr>
|
||
<tr class="memdesc:a56797352c7d47f815c694bc4ccb1faea"><td class="mdescLeft"> </td><td class="mdescRight">Estimates the rigid 3D transformation between two point clouds using SVD. <br /></td></tr>
|
||
<tr class="separator:a56797352c7d47f815c694bc4ccb1faea"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:aab3ff771d2b43075bb8e7ca6e730c37c" id="r_aab3ff771d2b43075bb8e7ca6e730c37c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrtabmap_1_1Transform.html">Transform</a> RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#aab3ff771d2b43075bb8e7ca6e730c37c">transformFromXYZCorrespondences</a> (const pcl::PointCloud< pcl::PointXYZ >::ConstPtr &cloud1, const pcl::PointCloud< pcl::PointXYZ >::ConstPtr &cloud2, double inlierThreshold=0.02, int iterations=100, int refineModelIterations=10, double refineModelSigma=3.0, std::vector< int > *inliers=0, cv::Mat *variance=0)</td></tr>
|
||
<tr class="memdesc:aab3ff771d2b43075bb8e7ca6e730c37c"><td class="mdescLeft"> </td><td class="mdescRight">Estimates a rigid transformation between two point clouds using RANSAC with optional refinement. <br /></td></tr>
|
||
<tr class="separator:aab3ff771d2b43075bb8e7ca6e730c37c"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gaf474f9fb6eaaf532e9b18af63b9e1665" id="r_gaf474f9fb6eaaf532e9b18af63b9e1665"><td class="memItemLeft" align="right" valign="top">
|
||
void RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>computeVarianceAndCorrespondences</b> (const pcl::PointCloud< pcl::PointNormal >::ConstPtr &cloudA, const pcl::PointCloud< pcl::PointNormal >::ConstPtr &cloudB, double maxCorrespondenceDistance, double maxCorrespondenceAngle, double &variance, int &correspondencesOut, bool reciprocal)</td></tr>
|
||
<tr class="memdesc:gaf474f9fb6eaaf532e9b18af63b9e1665"><td class="mdescLeft"> </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"> </td></tr>
|
||
<tr class="memitem:gaae6ddd0517614e9332669c37c6816777" id="r_gaae6ddd0517614e9332669c37c6816777"><td class="memItemLeft" align="right" valign="top">
|
||
void RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>computeVarianceAndCorrespondences</b> (const pcl::PointCloud< pcl::PointXYZINormal >::ConstPtr &cloudA, const pcl::PointCloud< pcl::PointXYZINormal >::ConstPtr &cloudB, double maxCorrespondenceDistance, double maxCorrespondenceAngle, double &variance, int &correspondencesOut, bool reciprocal)</td></tr>
|
||
<tr class="memdesc:gaae6ddd0517614e9332669c37c6816777"><td class="mdescLeft"> </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"> </td></tr>
|
||
<tr class="memitem:ga92518a7b79e9265380f3a047e46ec247" id="r_ga92518a7b79e9265380f3a047e46ec247"><td class="memItemLeft" align="right" valign="top">
|
||
void RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>computeVarianceAndCorrespondences</b> (const pcl::PointCloud< pcl::PointXYZ >::ConstPtr &cloudA, const pcl::PointCloud< pcl::PointXYZ >::ConstPtr &cloudB, double maxCorrespondenceDistance, double &variance, int &correspondencesOut, bool reciprocal)</td></tr>
|
||
<tr class="memdesc:ga92518a7b79e9265380f3a047e46ec247"><td class="mdescLeft"> </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"> </td></tr>
|
||
<tr class="memitem:ga7d90c0848a13e35f37588addf3637fe2" id="r_ga7d90c0848a13e35f37588addf3637fe2"><td class="memItemLeft" align="right" valign="top">
|
||
void RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>computeVarianceAndCorrespondences</b> (const pcl::PointCloud< pcl::PointXYZI >::ConstPtr &cloudA, const pcl::PointCloud< pcl::PointXYZI >::ConstPtr &cloudB, double maxCorrespondenceDistance, double &variance, int &correspondencesOut, bool reciprocal)</td></tr>
|
||
<tr class="memdesc:ga7d90c0848a13e35f37588addf3637fe2"><td class="mdescLeft"> </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"> </td></tr>
|
||
<tr class="memitem:af9f16d681288b1f91ce6e5a8ee9f6967" id="r_af9f16d681288b1f91ce6e5a8ee9f6967"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrtabmap_1_1Transform.html">Transform</a> RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#af9f16d681288b1f91ce6e5a8ee9f6967">icp</a> (const pcl::PointCloud< pcl::PointXYZ >::ConstPtr &cloud_source, const pcl::PointCloud< pcl::PointXYZ >::ConstPtr &cloud_target, double maxCorrespondenceDistance, int maximumIterations, bool &hasConverged, pcl::PointCloud< pcl::PointXYZ > &cloud_source_registered, float epsilon=0.0f, bool icp2D=false, float ransacOutlierRatio=0.0f, int *iterationsDone=nullptr)</td></tr>
|
||
<tr class="memdesc:af9f16d681288b1f91ce6e5a8ee9f6967"><td class="mdescLeft"> </td><td class="mdescRight">Performs Iterative Closest Point (ICP) alignment between two point clouds and returns the resulting transform. <br /></td></tr>
|
||
<tr class="separator:af9f16d681288b1f91ce6e5a8ee9f6967"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a1a153cf0e597dd206c6a850957f6c1ef" id="r_a1a153cf0e597dd206c6a850957f6c1ef"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrtabmap_1_1Transform.html">Transform</a> RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#a1a153cf0e597dd206c6a850957f6c1ef">icp</a> (const pcl::PointCloud< pcl::PointXYZI >::ConstPtr &cloud_source, const pcl::PointCloud< pcl::PointXYZI >::ConstPtr &cloud_target, double maxCorrespondenceDistance, int maximumIterations, bool &hasConverged, pcl::PointCloud< pcl::PointXYZI > &cloud_source_registered, float epsilon=0.0f, bool icp2D=false, float ransacOutlierRatio=0.0f, int *iterationsDone=nullptr)</td></tr>
|
||
<tr class="memdesc:a1a153cf0e597dd206c6a850957f6c1ef"><td class="mdescLeft"> </td><td class="mdescRight">Performs Iterative Closest Point (ICP) alignment between two point clouds and returns the resulting transform. <br /></td></tr>
|
||
<tr class="separator:a1a153cf0e597dd206c6a850957f6c1ef"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a6ac0f56608f1760d60eda7861b8dc303" id="r_a6ac0f56608f1760d60eda7861b8dc303"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrtabmap_1_1Transform.html">Transform</a> RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#a6ac0f56608f1760d60eda7861b8dc303">icpPointToPlane</a> (const pcl::PointCloud< pcl::PointNormal >::ConstPtr &cloud_source, const pcl::PointCloud< pcl::PointNormal >::ConstPtr &cloud_target, double maxCorrespondenceDistance, int maximumIterations, bool &hasConverged, pcl::PointCloud< pcl::PointNormal > &cloud_source_registered, float epsilon=0.0f, bool icp2D=false, float ransacOutlierRatio=0.0f, int *iterationsDone=nullptr)</td></tr>
|
||
<tr class="memdesc:a6ac0f56608f1760d60eda7861b8dc303"><td class="mdescLeft"> </td><td class="mdescRight">Performs Iterative Closest Point (ICP) alignment using a point-to-plane error metric. <br /></td></tr>
|
||
<tr class="separator:a6ac0f56608f1760d60eda7861b8dc303"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a12d008fea5babe6a208fca7b1fb719d3" id="r_a12d008fea5babe6a208fca7b1fb719d3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrtabmap_1_1Transform.html">Transform</a> RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#a12d008fea5babe6a208fca7b1fb719d3">icpPointToPlane</a> (const pcl::PointCloud< pcl::PointXYZINormal >::ConstPtr &cloud_source, const pcl::PointCloud< pcl::PointXYZINormal >::ConstPtr &cloud_target, double maxCorrespondenceDistance, int maximumIterations, bool &hasConverged, pcl::PointCloud< pcl::PointXYZINormal > &cloud_source_registered, float epsilon=0.0f, bool icp2D=false, float ransacOutlierRatio=0.0f, int *iterationsDone=nullptr)</td></tr>
|
||
<tr class="memdesc:a12d008fea5babe6a208fca7b1fb719d3"><td class="mdescLeft"> </td><td class="mdescRight">Performs Iterative Closest Point (ICP) alignment using a point-to-plane error metric. <br /></td></tr>
|
||
<tr class="separator:a12d008fea5babe6a208fca7b1fb719d3"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a9ebe11bdf534e3bdbcb2802d5dd70e62" id="r_a9ebe11bdf534e3bdbcb2802d5dd70e62"><td class="memItemLeft" align="right" valign="top">void RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#a9ebe11bdf534e3bdbcb2802d5dd70e62">createPolygonIndexes</a> (const std::vector< pcl::Vertices > &polygons, int cloudSize, std::vector< std::set< int > > &neighborPolygons, std::vector< std::set< int > > &vertexPolygons)</td></tr>
|
||
<tr class="memdesc:a9ebe11bdf534e3bdbcb2802d5dd70e62"><td class="mdescLeft"> </td><td class="mdescRight">Given a set of polygons, create two indexes: polygons to neighbor polygons and vertices to polygons. <br /></td></tr>
|
||
<tr class="separator:a9ebe11bdf534e3bdbcb2802d5dd70e62"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ad641a7674bc279498ba14740ba5dd0d8" id="r_ad641a7674bc279498ba14740ba5dd0d8"><td class="memItemLeft" align="right" valign="top"><a id="ad641a7674bc279498ba14740ba5dd0d8" name="ad641a7674bc279498ba14740ba5dd0d8"></a>
|
||
std::list< std::list< int > > RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>clusterPolygons</b> (const std::vector< std::set< int > > &neighborPolygons, int minClusterSize=0)</td></tr>
|
||
<tr class="separator:ad641a7674bc279498ba14740ba5dd0d8"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a22fd0d9fe287dac869119ba0d03c851d" id="r_a22fd0d9fe287dac869119ba0d03c851d"><td class="memItemLeft" align="right" valign="top"><a id="a22fd0d9fe287dac869119ba0d03c851d" name="a22fd0d9fe287dac869119ba0d03c851d"></a>
|
||
std::vector< pcl::Vertices > RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>organizedFastMesh</b> (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, double angleTolerance, bool quad, int trianglePixelSize, const Eigen::Vector3f &viewpoint=Eigen::Vector3f(0, 0, 0))</td></tr>
|
||
<tr class="separator:a22fd0d9fe287dac869119ba0d03c851d"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a1cdbb1515202b8d1266dfb3aaf30f1f9" id="r_a1cdbb1515202b8d1266dfb3aaf30f1f9"><td class="memItemLeft" align="right" valign="top"><a id="a1cdbb1515202b8d1266dfb3aaf30f1f9" name="a1cdbb1515202b8d1266dfb3aaf30f1f9"></a>
|
||
std::vector< pcl::Vertices > RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>organizedFastMesh</b> (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, double angleTolerance=M_PI/16, bool quad=true, int trianglePixelSize=2, const Eigen::Vector3f &viewpoint=Eigen::Vector3f(0, 0, 0))</td></tr>
|
||
<tr class="separator:a1cdbb1515202b8d1266dfb3aaf30f1f9"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:acfb878bde04e7a020ed5948320e6ca0c" id="r_acfb878bde04e7a020ed5948320e6ca0c"><td class="memItemLeft" align="right" valign="top"><a id="acfb878bde04e7a020ed5948320e6ca0c" name="acfb878bde04e7a020ed5948320e6ca0c"></a>
|
||
std::vector< pcl::Vertices > RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>organizedFastMesh</b> (const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, double angleTolerance=M_PI/16, bool quad=true, int trianglePixelSize=2, const Eigen::Vector3f &viewpoint=Eigen::Vector3f(0, 0, 0))</td></tr>
|
||
<tr class="separator:acfb878bde04e7a020ed5948320e6ca0c"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a11957ec17c253296ceec015201ae2a11" id="r_a11957ec17c253296ceec015201ae2a11"><td class="memItemLeft" align="right" valign="top"><a id="a11957ec17c253296ceec015201ae2a11" name="a11957ec17c253296ceec015201ae2a11"></a>
|
||
void RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>appendMesh</b> (pcl::PointCloud< pcl::PointXYZRGBNormal > &cloudA, std::vector< pcl::Vertices > &polygonsA, const pcl::PointCloud< pcl::PointXYZRGBNormal > &cloudB, const std::vector< pcl::Vertices > &polygonsB)</td></tr>
|
||
<tr class="separator:a11957ec17c253296ceec015201ae2a11"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a4e93127030403e322bc20776a93e3a22" id="r_a4e93127030403e322bc20776a93e3a22"><td class="memItemLeft" align="right" valign="top"><a id="a4e93127030403e322bc20776a93e3a22" name="a4e93127030403e322bc20776a93e3a22"></a>
|
||
void RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>appendMesh</b> (pcl::PointCloud< pcl::PointXYZRGB > &cloudA, std::vector< pcl::Vertices > &polygonsA, const pcl::PointCloud< pcl::PointXYZRGB > &cloudB, const std::vector< pcl::Vertices > &polygonsB)</td></tr>
|
||
<tr class="separator:a4e93127030403e322bc20776a93e3a22"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:abc701e8dc735ba085a430863396e637a" id="r_abc701e8dc735ba085a430863396e637a"><td class="memItemLeft" align="right" valign="top"><a id="abc701e8dc735ba085a430863396e637a" name="abc701e8dc735ba085a430863396e637a"></a>
|
||
std::vector< int > RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>filterNotUsedVerticesFromMesh</b> (const pcl::PointCloud< pcl::PointXYZRGBNormal > &cloud, const std::vector< pcl::Vertices > &polygons, pcl::PointCloud< pcl::PointXYZRGBNormal > &outputCloud, std::vector< pcl::Vertices > &outputPolygons)</td></tr>
|
||
<tr class="separator:abc701e8dc735ba085a430863396e637a"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a64beab228e971d0ff1cef8543084246f" id="r_a64beab228e971d0ff1cef8543084246f"><td class="memItemLeft" align="right" valign="top"><a id="a64beab228e971d0ff1cef8543084246f" name="a64beab228e971d0ff1cef8543084246f"></a>
|
||
std::vector< int > RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>filterNotUsedVerticesFromMesh</b> (const pcl::PointCloud< pcl::PointXYZRGB > &cloud, const std::vector< pcl::Vertices > &polygons, pcl::PointCloud< pcl::PointXYZRGB > &outputCloud, std::vector< pcl::Vertices > &outputPolygons)</td></tr>
|
||
<tr class="separator:a64beab228e971d0ff1cef8543084246f"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a821cf9de08c597c63f5389c133708221" id="r_a821cf9de08c597c63f5389c133708221"><td class="memItemLeft" align="right" valign="top"><a id="a821cf9de08c597c63f5389c133708221" name="a821cf9de08c597c63f5389c133708221"></a>
|
||
std::vector< int > RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>filterNaNPointsFromMesh</b> (const pcl::PointCloud< pcl::PointXYZRGB > &cloud, const std::vector< pcl::Vertices > &polygons, pcl::PointCloud< pcl::PointXYZRGB > &outputCloud, std::vector< pcl::Vertices > &outputPolygons)</td></tr>
|
||
<tr class="separator:a821cf9de08c597c63f5389c133708221"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:af4ce25782f1fac1367c5336a3a5874d4" id="r_af4ce25782f1fac1367c5336a3a5874d4"><td class="memItemLeft" align="right" valign="top"><a id="af4ce25782f1fac1367c5336a3a5874d4" name="af4ce25782f1fac1367c5336a3a5874d4"></a>
|
||
std::vector< pcl::Vertices > RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>filterCloseVerticesFromMesh</b> (const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr cloud, const std::vector< pcl::Vertices > &polygons, float radius, float angle, bool keepLatestInRadius)</td></tr>
|
||
<tr class="separator:af4ce25782f1fac1367c5336a3a5874d4"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:af760cf1765e7e498cf6736a49ea78c2c" id="r_af760cf1765e7e498cf6736a49ea78c2c"><td class="memItemLeft" align="right" valign="top"><a id="af760cf1765e7e498cf6736a49ea78c2c" name="af760cf1765e7e498cf6736a49ea78c2c"></a>
|
||
std::vector< pcl::Vertices > RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>filterInvalidPolygons</b> (const std::vector< pcl::Vertices > &polygons)</td></tr>
|
||
<tr class="separator:af760cf1765e7e498cf6736a49ea78c2c"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a2784fac7e53765519d25d649712bd809" id="r_a2784fac7e53765519d25d649712bd809"><td class="memItemLeft" align="right" valign="top"><a id="a2784fac7e53765519d25d649712bd809" name="a2784fac7e53765519d25d649712bd809"></a>
|
||
pcl::PolygonMesh::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>createMesh</b> (const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloudWithNormals, float gp3SearchRadius=0.025, float gp3Mu=2.5, int gp3MaximumNearestNeighbors=100, float gp3MaximumSurfaceAngle=M_PI/4, float gp3MinimumAngle=M_PI/18, float gp3MaximumAngle=2 *M_PI/3, bool gp3NormalConsistency=true)</td></tr>
|
||
<tr class="separator:a2784fac7e53765519d25d649712bd809"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:affaa4c149b7c7ec7c9d66f3e623639dc" id="r_affaa4c149b7c7ec7c9d66f3e623639dc"><td class="memItemLeft" align="right" valign="top"><a id="affaa4c149b7c7ec7c9d66f3e623639dc" name="affaa4c149b7c7ec7c9d66f3e623639dc"></a>
|
||
pcl::TextureMesh::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>createTextureMesh</b> (const pcl::PolygonMesh::Ptr &mesh, const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > &poses, const std::map< int, <a class="el" href="classrtabmap_1_1CameraModel.html">CameraModel</a> > &cameraModels, const std::map< int, cv::Mat > &cameraDepths, float maxDistance=0.0f, float maxDepthError=0.0f, float maxAngle=0.0f, int minClusterSize=50, const std::vector< float > &roiRatios=std::vector< float >(), const <a class="el" href="classrtabmap_1_1ProgressState.html">ProgressState</a> *state=0, std::vector< std::map< int, pcl::PointXY > > *vertexToPixels=0, bool distanceToCamPolicy=false, int numThreads=1)</td></tr>
|
||
<tr class="separator:affaa4c149b7c7ec7c9d66f3e623639dc"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a51cd58ed9adcc53373589a51b4cfe264" id="r_a51cd58ed9adcc53373589a51b4cfe264"><td class="memItemLeft" align="right" valign="top"><a id="a51cd58ed9adcc53373589a51b4cfe264" name="a51cd58ed9adcc53373589a51b4cfe264"></a>
|
||
pcl::TextureMesh::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>createTextureMesh</b> (const pcl::PolygonMesh::Ptr &mesh, const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > &poses, const std::map< int, std::vector< <a class="el" href="classrtabmap_1_1CameraModel.html">CameraModel</a> > > &cameraModels, const std::map< int, cv::Mat > &cameraDepths, float maxDistance=0.0f, float maxDepthError=0.0f, float maxAngle=0.0f, int minClusterSize=50, const std::vector< float > &roiRatios=std::vector< float >(), const <a class="el" href="classrtabmap_1_1ProgressState.html">ProgressState</a> *state=0, std::vector< std::map< int, pcl::PointXY > > *vertexToPixels=0, bool distanceToCamPolicy=false, int numThreads=1)</td></tr>
|
||
<tr class="separator:a51cd58ed9adcc53373589a51b4cfe264"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a07466d3f99ac7f763ba476f65c99ebb0" id="r_a07466d3f99ac7f763ba476f65c99ebb0"><td class="memItemLeft" align="right" valign="top">void RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#a07466d3f99ac7f763ba476f65c99ebb0">cleanTextureMesh</a> (pcl::TextureMesh &textureMesh, int minClusterSize)</td></tr>
|
||
<tr class="separator:a07466d3f99ac7f763ba476f65c99ebb0"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:aad75dcecf51e9a870dc0d4ef29a72215" id="r_aad75dcecf51e9a870dc0d4ef29a72215"><td class="memItemLeft" align="right" valign="top"><a id="aad75dcecf51e9a870dc0d4ef29a72215" name="aad75dcecf51e9a870dc0d4ef29a72215"></a>
|
||
pcl::TextureMesh::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>concatenateTextureMeshes</b> (const std::list< pcl::TextureMesh::Ptr > &meshes)</td></tr>
|
||
<tr class="separator:aad75dcecf51e9a870dc0d4ef29a72215"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ab07513a19cad72ba973ae96efb14483d" id="r_ab07513a19cad72ba973ae96efb14483d"><td class="memItemLeft" align="right" valign="top"><a id="ab07513a19cad72ba973ae96efb14483d" name="ab07513a19cad72ba973ae96efb14483d"></a>
|
||
void RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>concatenateTextureMaterials</b> (pcl::TextureMesh &mesh, const cv::Size &imageSize, int textureSize, int maxTextures, float &scale, std::vector< bool > *materialsKept=0)</td></tr>
|
||
<tr class="separator:ab07513a19cad72ba973ae96efb14483d"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ad0a976b5070655608f14dadc012218f4" id="r_ad0a976b5070655608f14dadc012218f4"><td class="memItemLeft" align="right" valign="top"><a id="ad0a976b5070655608f14dadc012218f4" name="ad0a976b5070655608f14dadc012218f4"></a>
|
||
std::vector< std::vector< RTABMAP_PCL_INDEX > > RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>convertPolygonsFromPCL</b> (const std::vector< pcl::Vertices > &polygons)</td></tr>
|
||
<tr class="separator:ad0a976b5070655608f14dadc012218f4"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a5719e26e3c7d94fba4d9879c64f26a61" id="r_a5719e26e3c7d94fba4d9879c64f26a61"><td class="memItemLeft" align="right" valign="top"><a id="a5719e26e3c7d94fba4d9879c64f26a61" name="a5719e26e3c7d94fba4d9879c64f26a61"></a>
|
||
std::vector< std::vector< std::vector< RTABMAP_PCL_INDEX > > > RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>convertPolygonsFromPCL</b> (const std::vector< std::vector< pcl::Vertices > > &polygons)</td></tr>
|
||
<tr class="separator:a5719e26e3c7d94fba4d9879c64f26a61"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ae4aeaa020cbd3319d541e70f7237ec93" id="r_ae4aeaa020cbd3319d541e70f7237ec93"><td class="memItemLeft" align="right" valign="top"><a id="ae4aeaa020cbd3319d541e70f7237ec93" name="ae4aeaa020cbd3319d541e70f7237ec93"></a>
|
||
std::vector< pcl::Vertices > RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>convertPolygonsToPCL</b> (const std::vector< std::vector< RTABMAP_PCL_INDEX > > &polygons)</td></tr>
|
||
<tr class="separator:ae4aeaa020cbd3319d541e70f7237ec93"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:aa876cca08a6434e6858ef5ac83af634e" id="r_aa876cca08a6434e6858ef5ac83af634e"><td class="memItemLeft" align="right" valign="top"><a id="aa876cca08a6434e6858ef5ac83af634e" name="aa876cca08a6434e6858ef5ac83af634e"></a>
|
||
std::vector< std::vector< pcl::Vertices > > RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>convertPolygonsToPCL</b> (const std::vector< std::vector< std::vector< RTABMAP_PCL_INDEX > > > &tex_polygons)</td></tr>
|
||
<tr class="separator:aa876cca08a6434e6858ef5ac83af634e"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:acce93a425dfff624d559e84c8f2cf089" id="r_acce93a425dfff624d559e84c8f2cf089"><td class="memItemLeft" align="right" valign="top"><a id="acce93a425dfff624d559e84c8f2cf089" name="acce93a425dfff624d559e84c8f2cf089"></a>
|
||
pcl::TextureMesh::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>assembleTextureMesh</b> (const cv::Mat &cloudMat, const std::vector< std::vector< std::vector< RTABMAP_PCL_INDEX > > > &polygons, const std::vector< std::vector< Eigen::Vector2f > > &texCoords, cv::Mat &textures, bool <a class="el" href="namespacertabmap_1_1util3d.html#aeec8dd0024231c36c089340895609238">mergeTextures</a>=false)</td></tr>
|
||
<tr class="separator:acce93a425dfff624d559e84c8f2cf089"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a7cd74ced3038623ee04bb21012befd24" id="r_a7cd74ced3038623ee04bb21012befd24"><td class="memItemLeft" align="right" valign="top"><a id="a7cd74ced3038623ee04bb21012befd24" name="a7cd74ced3038623ee04bb21012befd24"></a>
|
||
pcl::PolygonMesh::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>assemblePolygonMesh</b> (const cv::Mat &cloudMat, const std::vector< std::vector< RTABMAP_PCL_INDEX > > &polygons)</td></tr>
|
||
<tr class="separator:a7cd74ced3038623ee04bb21012befd24"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:aeec8dd0024231c36c089340895609238" id="r_aeec8dd0024231c36c089340895609238"><td class="memItemLeft" align="right" valign="top">cv::Mat RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#aeec8dd0024231c36c089340895609238">mergeTextures</a> (pcl::TextureMesh &mesh, const std::map< int, cv::Mat > &images, const std::map< int, <a class="el" href="classrtabmap_1_1CameraModel.html">CameraModel</a> > &calibrations, const <a class="el" href="classrtabmap_1_1Memory.html">Memory</a> *memory=0, const <a class="el" href="classrtabmap_1_1DBDriver.html">DBDriver</a> *dbDriver=0, int textureSize=4096, int textureCount=1, const std::vector< std::map< int, pcl::PointXY > > &vertexToPixels=std::vector< std::map< int, pcl::PointXY > >(), bool gainCompensation=true, float gainBeta=10.0f, bool gainRGB=true, bool blending=true, int blendingDecimation=0, int brightnessContrastRatioLow=0, int brightnessContrastRatioHigh=0, bool exposureFusion=false, const <a class="el" href="classrtabmap_1_1ProgressState.html">ProgressState</a> *state=0, unsigned char blankValue=255, bool clearVertexColorUnderTexture=true, std::map< int, std::map< int, cv::Vec4d > > *gains=0, std::map< int, std::map< int, cv::Mat > > *blendingGains=0, std::pair< float, float > *contrastValues=0)</td></tr>
|
||
<tr class="separator:aeec8dd0024231c36c089340895609238"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ad4a5d492dacb4eb0c0c9a3b12ffc4890" id="r_ad4a5d492dacb4eb0c0c9a3b12ffc4890"><td class="memItemLeft" align="right" valign="top"><a id="ad4a5d492dacb4eb0c0c9a3b12ffc4890" name="ad4a5d492dacb4eb0c0c9a3b12ffc4890"></a>
|
||
cv::Mat RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>mergeTextures</b> (pcl::TextureMesh &mesh, const std::map< int, cv::Mat > &images, const std::map< int, std::vector< <a class="el" href="classrtabmap_1_1CameraModel.html">CameraModel</a> > > &calibrations, const <a class="el" href="classrtabmap_1_1Memory.html">Memory</a> *memory=0, const <a class="el" href="classrtabmap_1_1DBDriver.html">DBDriver</a> *dbDriver=0, int textureSize=4096, int textureCount=1, const std::vector< std::map< int, pcl::PointXY > > &vertexToPixels=std::vector< std::map< int, pcl::PointXY > >(), bool gainCompensation=true, float gainBeta=10.0f, bool gainRGB=true, bool blending=true, int blendingDecimation=0, int brightnessContrastRatioLow=0, int brightnessContrastRatioHigh=0, bool exposureFusion=false, const <a class="el" href="classrtabmap_1_1ProgressState.html">ProgressState</a> *state=0, unsigned char blankValue=255, bool clearVertexColorUnderTexture=true, std::map< int, std::map< int, cv::Vec4d > > *gains=0, std::map< int, std::map< int, cv::Mat > > *blendingGains=0, std::pair< float, float > *contrastValues=0)</td></tr>
|
||
<tr class="separator:ad4a5d492dacb4eb0c0c9a3b12ffc4890"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:aafc778fa4586c8072439f699b495f0d1" id="r_aafc778fa4586c8072439f699b495f0d1"><td class="memItemLeft" align="right" valign="top"><a id="aafc778fa4586c8072439f699b495f0d1" name="aafc778fa4586c8072439f699b495f0d1"></a>
|
||
void RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>fixTextureMeshForVisualization</b> (pcl::TextureMesh &textureMesh)</td></tr>
|
||
<tr class="separator:aafc778fa4586c8072439f699b495f0d1"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:afc0070e095c6f7c618c782c56f79403e" id="r_afc0070e095c6f7c618c782c56f79403e"><td class="memItemLeft" align="right" valign="top"><a id="afc0070e095c6f7c618c782c56f79403e" name="afc0070e095c6f7c618c782c56f79403e"></a>
|
||
RTABMAP_DEPRECATED bool RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>multiBandTexturing</b> (const std::string &outputOBJPath, const pcl::PCLPointCloud2 &cloud, const std::vector< pcl::Vertices > &polygons, const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > &cameraPoses, const std::vector< std::map< int, pcl::PointXY > > &vertexToPixels, const std::map< int, cv::Mat > &images, const std::map< int, std::vector< <a class="el" href="classrtabmap_1_1CameraModel.html">CameraModel</a> > > &cameraModels, const <a class="el" href="classrtabmap_1_1Memory.html">Memory</a> *memory=0, const <a class="el" href="classrtabmap_1_1DBDriver.html">DBDriver</a> *dbDriver=0, int textureSize=8192, const std::string &textureFormat="jpg", const std::map< int, std::map< int, cv::Vec4d > > &gains=std::map< int, std::map< int, cv::Vec4d > >(), const std::map< int, std::map< int, cv::Mat > > &blendingGains=std::map< int, std::map< int, cv::Mat > >(), const std::pair< float, float > &contrastValues=std::pair< float, float >(0, 0), bool gainRGB=true)</td></tr>
|
||
<tr class="separator:afc0070e095c6f7c618c782c56f79403e"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a695eb29e9b2679634edb6b8c36a11942" id="r_a695eb29e9b2679634edb6b8c36a11942"><td class="memItemLeft" align="right" valign="top">bool RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#a695eb29e9b2679634edb6b8c36a11942">multiBandTexturing</a> (const std::string &outputOBJPath, const pcl::PCLPointCloud2 &cloud, const std::vector< pcl::Vertices > &polygons, const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > &cameraPoses, const std::vector< std::map< int, pcl::PointXY > > &vertexToPixels, const std::map< int, cv::Mat > &images, const std::map< int, std::vector< <a class="el" href="classrtabmap_1_1CameraModel.html">CameraModel</a> > > &cameraModels, const <a class="el" href="classrtabmap_1_1Memory.html">Memory</a> *memory=0, const <a class="el" href="classrtabmap_1_1DBDriver.html">DBDriver</a> *dbDriver=0, unsigned int textureSize=8192, unsigned int textureDownscale=2, const std::string &nbContrib="1 5 10 0", const std::string &textureFormat="jpg", const std::map< int, std::map< int, cv::Vec4d > > &gains=std::map< int, std::map< int, cv::Vec4d > >(), const std::map< int, std::map< int, cv::Mat > > &blendingGains=std::map< int, std::map< int, cv::Mat > >(), const std::pair< float, float > &contrastValues=std::pair< float, float >(0, 0), bool gainRGB=true, unsigned int unwrapMethod=0, bool fillHoles=false, unsigned int padding=5, double bestScoreThreshold=0.1, double angleHardThreshold=90.0, bool forceVisibleByAllVertices=false)</td></tr>
|
||
<tr class="separator:a695eb29e9b2679634edb6b8c36a11942"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:af3e64fc674be86349f8afdf5d88cd1a6" id="r_af3e64fc674be86349f8afdf5d88cd1a6"><td class="memItemLeft" align="right" valign="top"><a id="af3e64fc674be86349f8afdf5d88cd1a6" name="af3e64fc674be86349f8afdf5d88cd1a6"></a>
|
||
cv::Mat RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>computeNormals</b> (const cv::Mat &laserScan, int searchK, float searchRadius)</td></tr>
|
||
<tr class="separator:af3e64fc674be86349f8afdf5d88cd1a6"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a2b5caa7363a939bdb0676ca3fd6ad9c1" id="r_a2b5caa7363a939bdb0676ca3fd6ad9c1"><td class="memItemLeft" align="right" valign="top"><a id="a2b5caa7363a939bdb0676ca3fd6ad9c1" name="a2b5caa7363a939bdb0676ca3fd6ad9c1"></a>
|
||
pcl::PointCloud< pcl::Normal >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>computeNormals</b> (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, int searchK=20, float searchRadius=0.0f, const Eigen::Vector3f &viewPoint=Eigen::Vector3f(0, 0, 0))</td></tr>
|
||
<tr class="separator:a2b5caa7363a939bdb0676ca3fd6ad9c1"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a20c0102fb0aa3d33a1be999e6926d16f" id="r_a20c0102fb0aa3d33a1be999e6926d16f"><td class="memItemLeft" align="right" valign="top"><a id="a20c0102fb0aa3d33a1be999e6926d16f" name="a20c0102fb0aa3d33a1be999e6926d16f"></a>
|
||
pcl::PointCloud< pcl::Normal >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>computeNormals</b> (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, int searchK=20, float searchRadius=0.0f, const Eigen::Vector3f &viewPoint=Eigen::Vector3f(0, 0, 0))</td></tr>
|
||
<tr class="separator:a20c0102fb0aa3d33a1be999e6926d16f"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:aafe32ddbf1c2d3ad3876b90a975796e1" id="r_aafe32ddbf1c2d3ad3876b90a975796e1"><td class="memItemLeft" align="right" valign="top"><a id="aafe32ddbf1c2d3ad3876b90a975796e1" name="aafe32ddbf1c2d3ad3876b90a975796e1"></a>
|
||
pcl::PointCloud< pcl::Normal >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>computeNormals</b> (const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, int searchK=20, float searchRadius=0.0f, const Eigen::Vector3f &viewPoint=Eigen::Vector3f(0, 0, 0))</td></tr>
|
||
<tr class="separator:aafe32ddbf1c2d3ad3876b90a975796e1"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ab416e6595ec1b9dd5ea240a1147b56f0" id="r_ab416e6595ec1b9dd5ea240a1147b56f0"><td class="memItemLeft" align="right" valign="top"><a id="ab416e6595ec1b9dd5ea240a1147b56f0" name="ab416e6595ec1b9dd5ea240a1147b56f0"></a>
|
||
pcl::PointCloud< pcl::Normal >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>computeNormals</b> (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, int searchK=20, float searchRadius=0.0f, const Eigen::Vector3f &viewPoint=Eigen::Vector3f(0, 0, 0))</td></tr>
|
||
<tr class="separator:ab416e6595ec1b9dd5ea240a1147b56f0"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:addbef092576b6d6df7c1d6413bc3cf27" id="r_addbef092576b6d6df7c1d6413bc3cf27"><td class="memItemLeft" align="right" valign="top"><a id="addbef092576b6d6df7c1d6413bc3cf27" name="addbef092576b6d6df7c1d6413bc3cf27"></a>
|
||
pcl::PointCloud< pcl::Normal >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>computeNormals</b> (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::IndicesPtr &indices, int searchK=20, float searchRadius=0.0f, const Eigen::Vector3f &viewPoint=Eigen::Vector3f(0, 0, 0))</td></tr>
|
||
<tr class="separator:addbef092576b6d6df7c1d6413bc3cf27"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:af900e1ea8c85316147faf38994676fdc" id="r_af900e1ea8c85316147faf38994676fdc"><td class="memItemLeft" align="right" valign="top"><a id="af900e1ea8c85316147faf38994676fdc" name="af900e1ea8c85316147faf38994676fdc"></a>
|
||
pcl::PointCloud< pcl::Normal >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>computeNormals</b> (const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, const pcl::IndicesPtr &indices, int searchK=20, float searchRadius=0.0f, const Eigen::Vector3f &viewPoint=Eigen::Vector3f(0, 0, 0))</td></tr>
|
||
<tr class="separator:af900e1ea8c85316147faf38994676fdc"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a339a5ba53c68b755f920c9f3813d7214" id="r_a339a5ba53c68b755f920c9f3813d7214"><td class="memItemLeft" align="right" valign="top"><a id="a339a5ba53c68b755f920c9f3813d7214" name="a339a5ba53c68b755f920c9f3813d7214"></a>
|
||
pcl::PointCloud< pcl::Normal >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>computeNormals2D</b> (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, int searchK=5, float searchRadius=0.0f, const Eigen::Vector3f &viewPoint=Eigen::Vector3f(0, 0, 0))</td></tr>
|
||
<tr class="separator:a339a5ba53c68b755f920c9f3813d7214"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a1bc636f095f0a7e162f850c0482da996" id="r_a1bc636f095f0a7e162f850c0482da996"><td class="memItemLeft" align="right" valign="top"><a id="a1bc636f095f0a7e162f850c0482da996" name="a1bc636f095f0a7e162f850c0482da996"></a>
|
||
pcl::PointCloud< pcl::Normal >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>computeNormals2D</b> (const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, int searchK=5, float searchRadius=0.0f, const Eigen::Vector3f &viewPoint=Eigen::Vector3f(0, 0, 0))</td></tr>
|
||
<tr class="separator:a1bc636f095f0a7e162f850c0482da996"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a20c27228fc42eac8fc92a83e4d894239" id="r_a20c27228fc42eac8fc92a83e4d894239"><td class="memItemLeft" align="right" valign="top"><a id="a20c27228fc42eac8fc92a83e4d894239" name="a20c27228fc42eac8fc92a83e4d894239"></a>
|
||
pcl::PointCloud< pcl::Normal >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>computeFastOrganizedNormals2D</b> (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, int searchK=5, float searchRadius=0.0f, const Eigen::Vector3f &viewPoint=Eigen::Vector3f(0, 0, 0))</td></tr>
|
||
<tr class="separator:a20c27228fc42eac8fc92a83e4d894239"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a0cbe1892b6c670c0629be2252d470526" id="r_a0cbe1892b6c670c0629be2252d470526"><td class="memItemLeft" align="right" valign="top"><a id="a0cbe1892b6c670c0629be2252d470526" name="a0cbe1892b6c670c0629be2252d470526"></a>
|
||
pcl::PointCloud< pcl::Normal >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>computeFastOrganizedNormals2D</b> (const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, int searchK=5, float searchRadius=0.0f, const Eigen::Vector3f &viewPoint=Eigen::Vector3f(0, 0, 0))</td></tr>
|
||
<tr class="separator:a0cbe1892b6c670c0629be2252d470526"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a538b367fa9326314c16eea57a3010bd7" id="r_a538b367fa9326314c16eea57a3010bd7"><td class="memItemLeft" align="right" valign="top"><a id="a538b367fa9326314c16eea57a3010bd7" name="a538b367fa9326314c16eea57a3010bd7"></a>
|
||
pcl::PointCloud< pcl::Normal >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>computeFastOrganizedNormals</b> (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, float maxDepthChangeFactor=0.02f, float normalSmoothingSize=10.0f, const Eigen::Vector3f &viewPoint=Eigen::Vector3f(0, 0, 0))</td></tr>
|
||
<tr class="separator:a538b367fa9326314c16eea57a3010bd7"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a31edb071a41d756061a4fde764fc7801" id="r_a31edb071a41d756061a4fde764fc7801"><td class="memItemLeft" align="right" valign="top"><a id="a31edb071a41d756061a4fde764fc7801" name="a31edb071a41d756061a4fde764fc7801"></a>
|
||
pcl::PointCloud< pcl::Normal >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>computeFastOrganizedNormals</b> (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::IndicesPtr &indices, float maxDepthChangeFactor=0.02f, float normalSmoothingSize=10.0f, const Eigen::Vector3f &viewPoint=Eigen::Vector3f(0, 0, 0))</td></tr>
|
||
<tr class="separator:a31edb071a41d756061a4fde764fc7801"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga3724a082502fbef6222c11843ca56b58" id="r_ga3724a082502fbef6222c11843ca56b58"><td class="memItemLeft" align="right" valign="top">
|
||
float RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>computeNormalsComplexity</b> (const <a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> &scan, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &t=<a class="el" href="classrtabmap_1_1Transform.html#a8ea4368f2018d751d2733038081d56a2">Transform::getIdentity</a>(), cv::Mat *pcaEigenVectors=0, cv::Mat *pcaEigenValues=0, bool centered=true)</td></tr>
|
||
<tr class="memdesc:ga3724a082502fbef6222c11843ca56b58"><td class="mdescLeft"> </td><td class="mdescRight">Computes the complexity of surface normals in a point cloud of type <code><a class="el" href="classrtabmap_1_1LaserScan.html" title="Represents 2D or 3D laser scan data with support for multiple point data formats.">LaserScan</a></code>. <br /></td></tr>
|
||
<tr class="separator:ga3724a082502fbef6222c11843ca56b58"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga5a68422282e99f8d05c0821eac491895" id="r_ga5a68422282e99f8d05c0821eac491895"><td class="memItemLeft" align="right" valign="top">
|
||
float RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>computeNormalsComplexity</b> (const pcl::PointCloud< pcl::Normal > &normals, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &t=<a class="el" href="classrtabmap_1_1Transform.html#a8ea4368f2018d751d2733038081d56a2">Transform::getIdentity</a>(), bool is2d=false, cv::Mat *pcaEigenVectors=0, cv::Mat *pcaEigenValues=0, bool centered=true)</td></tr>
|
||
<tr class="memdesc:ga5a68422282e99f8d05c0821eac491895"><td class="mdescLeft"> </td><td class="mdescRight">Computes the complexity of surface normals in a point cloud of type <code>pcl::Normal</code>. <br /></td></tr>
|
||
<tr class="separator:ga5a68422282e99f8d05c0821eac491895"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga13a6d7525494d390041c9ef0337e02dd" id="r_ga13a6d7525494d390041c9ef0337e02dd"><td class="memItemLeft" align="right" valign="top">
|
||
float RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>computeNormalsComplexity</b> (const pcl::PointCloud< pcl::PointNormal > &cloud, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &t=<a class="el" href="classrtabmap_1_1Transform.html#a8ea4368f2018d751d2733038081d56a2">Transform::getIdentity</a>(), bool is2d=false, cv::Mat *pcaEigenVectors=0, cv::Mat *pcaEigenValues=0, bool centered=true)</td></tr>
|
||
<tr class="memdesc:ga13a6d7525494d390041c9ef0337e02dd"><td class="mdescLeft"> </td><td class="mdescRight">Computes the complexity of surface normals in a point cloud of type <code>pcl::PointNormal</code>. <br /></td></tr>
|
||
<tr class="separator:ga13a6d7525494d390041c9ef0337e02dd"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga6e03130bf686d43ea527dc8e6f5cce55" id="r_ga6e03130bf686d43ea527dc8e6f5cce55"><td class="memItemLeft" align="right" valign="top">
|
||
float RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>computeNormalsComplexity</b> (const pcl::PointCloud< pcl::PointXYZINormal > &cloud, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &t=<a class="el" href="classrtabmap_1_1Transform.html#a8ea4368f2018d751d2733038081d56a2">Transform::getIdentity</a>(), bool is2d=false, cv::Mat *pcaEigenVectors=0, cv::Mat *pcaEigenValues=0, bool centered=true)</td></tr>
|
||
<tr class="memdesc:ga6e03130bf686d43ea527dc8e6f5cce55"><td class="mdescLeft"> </td><td class="mdescRight">Computes the complexity of surface normals in a point cloud of type <code>pcl::PointXYZINormal</code>. <br /></td></tr>
|
||
<tr class="separator:ga6e03130bf686d43ea527dc8e6f5cce55"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga3e024c51a6a49d1c8e6b64c230148137" id="r_ga3e024c51a6a49d1c8e6b64c230148137"><td class="memItemLeft" align="right" valign="top">
|
||
float RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>computeNormalsComplexity</b> (const pcl::PointCloud< pcl::PointXYZRGBNormal > &cloud, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &t=<a class="el" href="classrtabmap_1_1Transform.html#a8ea4368f2018d751d2733038081d56a2">Transform::getIdentity</a>(), bool is2d=false, cv::Mat *pcaEigenVectors=0, cv::Mat *pcaEigenValues=0, bool centered=true)</td></tr>
|
||
<tr class="memdesc:ga3e024c51a6a49d1c8e6b64c230148137"><td class="mdescLeft"> </td><td class="mdescRight">Computes the complexity of surface normals in a point cloud of type <code>pcl::PointXYZRGBNormal</code>. <br /></td></tr>
|
||
<tr class="separator:ga3e024c51a6a49d1c8e6b64c230148137"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:aa58cfafc7aa7d84b3ea616078cef21e8" id="r_aa58cfafc7aa7d84b3ea616078cef21e8"><td class="memItemLeft" align="right" valign="top"><a id="aa58cfafc7aa7d84b3ea616078cef21e8" name="aa58cfafc7aa7d84b3ea616078cef21e8"></a>
|
||
pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>mls</b> (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, float searchRadius=0.0f, int polygonialOrder=2, int upsamplingMethod=0, float upsamplingRadius=0.0f, float upsamplingStep=0.0f, int pointDensity=0, float dilationVoxelSize=1.0f, int dilationIterations=0)</td></tr>
|
||
<tr class="separator:aa58cfafc7aa7d84b3ea616078cef21e8"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a6601c7d46ee945eaa5f0f94e78a5f6fe" id="r_a6601c7d46ee945eaa5f0f94e78a5f6fe"><td class="memItemLeft" align="right" valign="top"><a id="a6601c7d46ee945eaa5f0f94e78a5f6fe" name="a6601c7d46ee945eaa5f0f94e78a5f6fe"></a>
|
||
pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>mls</b> (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::IndicesPtr &indices, float searchRadius=0.0f, int polygonialOrder=2, int upsamplingMethod=0, float upsamplingRadius=0.0f, float upsamplingStep=0.0f, int pointDensity=0, float dilationVoxelSize=1.0f, int dilationIterations=0)</td></tr>
|
||
<tr class="separator:a6601c7d46ee945eaa5f0f94e78a5f6fe"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a6f79950a35e3cf2f5369aea58cc1db08" id="r_a6f79950a35e3cf2f5369aea58cc1db08"><td class="memItemLeft" align="right" valign="top"><a id="a6f79950a35e3cf2f5369aea58cc1db08" name="a6f79950a35e3cf2f5369aea58cc1db08"></a>
|
||
RTABMAP_DEPRECATED <a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>adjustNormalsToViewPoint</b> (const <a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> &scan, const Eigen::Vector3f &viewpoint, bool forceGroundNormalsUp)</td></tr>
|
||
<tr class="separator:a6f79950a35e3cf2f5369aea58cc1db08"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ab3f73c86e9d12f3b37f17215550982c3" id="r_ab3f73c86e9d12f3b37f17215550982c3"><td class="memItemLeft" align="right" valign="top"><a id="ab3f73c86e9d12f3b37f17215550982c3" name="ab3f73c86e9d12f3b37f17215550982c3"></a>
|
||
<a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>adjustNormalsToViewPoint</b> (const <a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> &scan, const Eigen::Vector3f &viewpoint=Eigen::Vector3f(0, 0, 0), float groundNormalsUp=0.0f)</td></tr>
|
||
<tr class="separator:ab3f73c86e9d12f3b37f17215550982c3"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a003c9c9908bb03d8f1e0131d6b252c6e" id="r_a003c9c9908bb03d8f1e0131d6b252c6e"><td class="memItemLeft" align="right" valign="top"><a id="a003c9c9908bb03d8f1e0131d6b252c6e" name="a003c9c9908bb03d8f1e0131d6b252c6e"></a>
|
||
RTABMAP_DEPRECATED void RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>adjustNormalsToViewPoint</b> (pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const Eigen::Vector3f &viewpoint, bool forceGroundNormalsUp)</td></tr>
|
||
<tr class="separator:a003c9c9908bb03d8f1e0131d6b252c6e"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:aab87ebd52ad31d55aa43be3d0a4a2870" id="r_aab87ebd52ad31d55aa43be3d0a4a2870"><td class="memItemLeft" align="right" valign="top"><a id="aab87ebd52ad31d55aa43be3d0a4a2870" name="aab87ebd52ad31d55aa43be3d0a4a2870"></a>
|
||
void RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>adjustNormalsToViewPoint</b> (pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const Eigen::Vector3f &viewpoint=Eigen::Vector3f(0, 0, 0), float groundNormalsUp=0.0f)</td></tr>
|
||
<tr class="separator:aab87ebd52ad31d55aa43be3d0a4a2870"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a0f4f0d1f39e4ac412ea6ec4b5de89f34" id="r_a0f4f0d1f39e4ac412ea6ec4b5de89f34"><td class="memItemLeft" align="right" valign="top"><a id="a0f4f0d1f39e4ac412ea6ec4b5de89f34" name="a0f4f0d1f39e4ac412ea6ec4b5de89f34"></a>
|
||
RTABMAP_DEPRECATED void RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>adjustNormalsToViewPoint</b> (pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const Eigen::Vector3f &viewpoint, bool forceGroundNormalsUp)</td></tr>
|
||
<tr class="separator:a0f4f0d1f39e4ac412ea6ec4b5de89f34"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a189174a23dbbf2935b26a43ec9966df0" id="r_a189174a23dbbf2935b26a43ec9966df0"><td class="memItemLeft" align="right" valign="top"><a id="a189174a23dbbf2935b26a43ec9966df0" name="a189174a23dbbf2935b26a43ec9966df0"></a>
|
||
void RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>adjustNormalsToViewPoint</b> (pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const Eigen::Vector3f &viewpoint=Eigen::Vector3f(0, 0, 0), float groundNormalsUp=0.0f)</td></tr>
|
||
<tr class="separator:a189174a23dbbf2935b26a43ec9966df0"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ac28f4515c8df8f389b1bb45468fd847c" id="r_ac28f4515c8df8f389b1bb45468fd847c"><td class="memItemLeft" align="right" valign="top"><a id="ac28f4515c8df8f389b1bb45468fd847c" name="ac28f4515c8df8f389b1bb45468fd847c"></a>
|
||
RTABMAP_DEPRECATED void RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>adjustNormalsToViewPoint</b> (pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const Eigen::Vector3f &viewpoint, bool forceGroundNormalsUp)</td></tr>
|
||
<tr class="separator:ac28f4515c8df8f389b1bb45468fd847c"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:afe0558c83bccae2c64bba02d7a22a80b" id="r_afe0558c83bccae2c64bba02d7a22a80b"><td class="memItemLeft" align="right" valign="top"><a id="afe0558c83bccae2c64bba02d7a22a80b" name="afe0558c83bccae2c64bba02d7a22a80b"></a>
|
||
void RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>adjustNormalsToViewPoint</b> (pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const Eigen::Vector3f &viewpoint=Eigen::Vector3f(0, 0, 0), float groundNormalsUp=0.0f)</td></tr>
|
||
<tr class="separator:afe0558c83bccae2c64bba02d7a22a80b"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a6a1849b700e5752b7b2135da00b29460" id="r_a6a1849b700e5752b7b2135da00b29460"><td class="memItemLeft" align="right" valign="top"><a id="a6a1849b700e5752b7b2135da00b29460" name="a6a1849b700e5752b7b2135da00b29460"></a>
|
||
void RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>adjustNormalsToViewPoints</b> (const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > &poses, const std::vector< int > &cameraIndices, pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, float groundNormalsUp=0.0f)</td></tr>
|
||
<tr class="separator:a6a1849b700e5752b7b2135da00b29460"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a1d1ec6623ddb83dfce1938d0615a1555" id="r_a1d1ec6623ddb83dfce1938d0615a1555"><td class="memItemLeft" align="right" valign="top"><a id="a1d1ec6623ddb83dfce1938d0615a1555" name="a1d1ec6623ddb83dfce1938d0615a1555"></a>
|
||
void RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>adjustNormalsToViewPoints</b> (const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > &poses, const std::vector< int > &cameraIndices, pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, float groundNormalsUp=0.0f)</td></tr>
|
||
<tr class="separator:a1d1ec6623ddb83dfce1938d0615a1555"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ad537cedc783cddde1f1c703a88aeb840" id="r_ad537cedc783cddde1f1c703a88aeb840"><td class="memItemLeft" align="right" valign="top"><a id="ad537cedc783cddde1f1c703a88aeb840" name="ad537cedc783cddde1f1c703a88aeb840"></a>
|
||
void RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>adjustNormalsToViewPoints</b> (const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > &poses, const std::vector< int > &cameraIndices, pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, float groundNormalsUp=0.0f)</td></tr>
|
||
<tr class="separator:ad537cedc783cddde1f1c703a88aeb840"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a1e49229f228986a6a402c1b4590311b1" id="r_a1e49229f228986a6a402c1b4590311b1"><td class="memItemLeft" align="right" valign="top"><a id="a1e49229f228986a6a402c1b4590311b1" name="a1e49229f228986a6a402c1b4590311b1"></a>
|
||
void RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>adjustNormalsToViewPoints</b> (const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > &poses, const pcl::PointCloud< pcl::PointXYZ >::Ptr &rawCloud, const std::vector< int > &rawCameraIndices, pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, float groundNormalsUp=0.0f)</td></tr>
|
||
<tr class="separator:a1e49229f228986a6a402c1b4590311b1"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:add63c4e4cdcb9d0c1d4aab4a7f5e8940" id="r_add63c4e4cdcb9d0c1d4aab4a7f5e8940"><td class="memItemLeft" align="right" valign="top"><a id="add63c4e4cdcb9d0c1d4aab4a7f5e8940" name="add63c4e4cdcb9d0c1d4aab4a7f5e8940"></a>
|
||
void RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>adjustNormalsToViewPoints</b> (const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > &poses, const pcl::PointCloud< pcl::PointXYZ >::Ptr &rawCloud, const std::vector< int > &rawCameraIndices, pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, float groundNormalsUp=0.0f)</td></tr>
|
||
<tr class="separator:add63c4e4cdcb9d0c1d4aab4a7f5e8940"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a7c1f9096f5eda811a1477f1f2460f936" id="r_a7c1f9096f5eda811a1477f1f2460f936"><td class="memItemLeft" align="right" valign="top"><a id="a7c1f9096f5eda811a1477f1f2460f936" name="a7c1f9096f5eda811a1477f1f2460f936"></a>
|
||
void RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>adjustNormalsToViewPoints</b> (const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > &poses, const pcl::PointCloud< pcl::PointXYZ >::Ptr &rawCloud, const std::vector< int > &rawCameraIndices, pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, float groundNormalsUp=0.0f)</td></tr>
|
||
<tr class="separator:a7c1f9096f5eda811a1477f1f2460f936"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a8f1233623089ea848a98611055d026b8" id="r_a8f1233623089ea848a98611055d026b8"><td class="memItemLeft" align="right" valign="top"><a id="a8f1233623089ea848a98611055d026b8" name="a8f1233623089ea848a98611055d026b8"></a>
|
||
void RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>adjustNormalsToViewPoints</b> (const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > &viewpoints, const <a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> &rawScan, const std::vector< int > &viewpointIds, <a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> &scan, float groundNormalsUp=0.0f)</td></tr>
|
||
<tr class="separator:a8f1233623089ea848a98611055d026b8"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:aa04f80aa23a920afd8101b72d4eb209b" id="r_aa04f80aa23a920afd8101b72d4eb209b"><td class="memItemLeft" align="right" valign="top"><a id="aa04f80aa23a920afd8101b72d4eb209b" name="aa04f80aa23a920afd8101b72d4eb209b"></a>
|
||
pcl::PolygonMesh::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>meshDecimation</b> (const pcl::PolygonMesh::Ptr &mesh, float factor)</td></tr>
|
||
<tr class="separator:aa04f80aa23a920afd8101b72d4eb209b"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:abaf5cd709dc0fb1c1c3c2bb1814d4108" id="r_abaf5cd709dc0fb1c1c3c2bb1814d4108"><td class="memTemplParams" colspan="2"><a id="abaf5cd709dc0fb1c1c3c2bb1814d4108" name="abaf5cd709dc0fb1c1c3c2bb1814d4108"></a>
|
||
template<typename pointT > </td></tr>
|
||
<tr class="memitem:abaf5cd709dc0fb1c1c3c2bb1814d4108"><td class="memTemplItemLeft" align="right" valign="top">std::vector< pcl::Vertices > </td><td class="memTemplItemRight" valign="bottom"><b>normalizePolygonsSide</b> (const pcl::PointCloud< pointT > &cloud, const std::vector< pcl::Vertices > &polygons, const pcl::PointXYZ &viewPoint=pcl::PointXYZ(0, 0, 0))</td></tr>
|
||
<tr class="separator:abaf5cd709dc0fb1c1c3c2bb1814d4108"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ab138227ab6c0511088e846b2276e7afc" id="r_ab138227ab6c0511088e846b2276e7afc"><td class="memItemLeft" align="right" valign="top">bool RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#ab138227ab6c0511088e846b2276e7afc">intersectRayTriangle</a> (const Eigen::Vector3f &p, const Eigen::Vector3f &dir, const Eigen::Vector3f &v0, const Eigen::Vector3f &v1, const Eigen::Vector3f &v2, float &distance, Eigen::Vector3f &normal)</td></tr>
|
||
<tr class="separator:ab138227ab6c0511088e846b2276e7afc"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a0914a07882c4b7a3408d90e66125e4ff" id="r_a0914a07882c4b7a3408d90e66125e4ff"><td class="memItemLeft" align="right" valign="top"><a id="a0914a07882c4b7a3408d90e66125e4ff" name="a0914a07882c4b7a3408d90e66125e4ff"></a>
|
||
int RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>saveOBJFile</b> (const std::string &file_name, const pcl::TextureMesh &tex_mesh, unsigned precision=5)</td></tr>
|
||
<tr class="separator:a0914a07882c4b7a3408d90e66125e4ff"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a1be0a8c058b33ede7008dd3b97270cc1" id="r_a1be0a8c058b33ede7008dd3b97270cc1"><td class="memItemLeft" align="right" valign="top"><a id="a1be0a8c058b33ede7008dd3b97270cc1" name="a1be0a8c058b33ede7008dd3b97270cc1"></a>
|
||
int RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>saveOBJFile</b> (const std::string &file_name, const pcl::PolygonMesh &mesh, unsigned precision=5)</td></tr>
|
||
<tr class="separator:a1be0a8c058b33ede7008dd3b97270cc1"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:abf12a46cc48ee93e6575ea624377fb42" id="r_abf12a46cc48ee93e6575ea624377fb42"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacertabmap_1_1util3d.html#abf12a46cc48ee93e6575ea624377fb42">transformLaserScan</a> (const <a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> &laserScan, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &transform)</td></tr>
|
||
<tr class="memdesc:abf12a46cc48ee93e6575ea624377fb42"><td class="mdescLeft"> </td><td class="mdescRight">Applies a 3D transform to all points (and normals if present) in a <a class="el" href="classrtabmap_1_1LaserScan.html" title="Represents 2D or 3D laser scan data with support for multiple point data formats.">LaserScan</a>. <br /></td></tr>
|
||
<tr class="separator:abf12a46cc48ee93e6575ea624377fb42"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga46b86abad0f4aa2ba7f191da0e07ba69" id="r_ga46b86abad0f4aa2ba7f191da0e07ba69"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>transformPointCloud</b> (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &transform)</td></tr>
|
||
<tr class="memdesc:ga46b86abad0f4aa2ba7f191da0e07ba69"><td class="mdescLeft"> </td><td class="mdescRight">Transforms <code>pcl::PointXYZ</code> point cloud type. <br /></td></tr>
|
||
<tr class="separator:ga46b86abad0f4aa2ba7f191da0e07ba69"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga7a573f91887b29ec4ff2ef6355df4473" id="r_ga7a573f91887b29ec4ff2ef6355df4473"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointXYZI >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>transformPointCloud</b> (const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &transform)</td></tr>
|
||
<tr class="memdesc:ga7a573f91887b29ec4ff2ef6355df4473"><td class="mdescLeft"> </td><td class="mdescRight">Transforms <code>pcl::PointXYZI</code> point cloud type. <br /></td></tr>
|
||
<tr class="separator:ga7a573f91887b29ec4ff2ef6355df4473"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga18eb2c9ec062b5453bf7c97128d89018" id="r_ga18eb2c9ec062b5453bf7c97128d89018"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointXYZRGB >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>transformPointCloud</b> (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &transform)</td></tr>
|
||
<tr class="memdesc:ga18eb2c9ec062b5453bf7c97128d89018"><td class="mdescLeft"> </td><td class="mdescRight">Transforms <code>pcl::PointXYZRGB</code> point cloud type. <br /></td></tr>
|
||
<tr class="separator:ga18eb2c9ec062b5453bf7c97128d89018"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga310e525344813377f2d470d47b7c4d51" id="r_ga310e525344813377f2d470d47b7c4d51"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointNormal >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>transformPointCloud</b> (const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &transform)</td></tr>
|
||
<tr class="memdesc:ga310e525344813377f2d470d47b7c4d51"><td class="mdescLeft"> </td><td class="mdescRight">Transforms <code>pcl::PointNormal</code> point cloud type. <br /></td></tr>
|
||
<tr class="separator:ga310e525344813377f2d470d47b7c4d51"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga1387b7a1d5280ed3596331f93fc56484" id="r_ga1387b7a1d5280ed3596331f93fc56484"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>transformPointCloud</b> (const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &transform)</td></tr>
|
||
<tr class="memdesc:ga1387b7a1d5280ed3596331f93fc56484"><td class="mdescLeft"> </td><td class="mdescRight">Transforms <code>pcl::PointXYZRGBNormal</code> point cloud type. <br /></td></tr>
|
||
<tr class="separator:ga1387b7a1d5280ed3596331f93fc56484"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gac60701fa37d61f3cbe6f462da7576e73" id="r_gac60701fa37d61f3cbe6f462da7576e73"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointXYZINormal >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>transformPointCloud</b> (const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &transform)</td></tr>
|
||
<tr class="memdesc:gac60701fa37d61f3cbe6f462da7576e73"><td class="mdescLeft"> </td><td class="mdescRight">Transforms <code>pcl::PointXYZINormal</code> point cloud type. <br /></td></tr>
|
||
<tr class="separator:gac60701fa37d61f3cbe6f462da7576e73"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga59e54f906ba844eb8780946e57b0e271" id="r_ga59e54f906ba844eb8780946e57b0e271"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>transformPointCloud</b> (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &transform)</td></tr>
|
||
<tr class="memdesc:ga59e54f906ba844eb8780946e57b0e271"><td class="mdescLeft"> </td><td class="mdescRight">Transforms <code>pcl::PointXYZ</code> point cloud type with specified indices. <br /></td></tr>
|
||
<tr class="separator:ga59e54f906ba844eb8780946e57b0e271"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga2a621fc8ab625cd4003b4f26e0ce3b52" id="r_ga2a621fc8ab625cd4003b4f26e0ce3b52"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointXYZI >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>transformPointCloud</b> (const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, const pcl::IndicesPtr &indices, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &transform)</td></tr>
|
||
<tr class="memdesc:ga2a621fc8ab625cd4003b4f26e0ce3b52"><td class="mdescLeft"> </td><td class="mdescRight">Transforms <code>pcl::PointXYZI</code> point cloud type with specified indices. <br /></td></tr>
|
||
<tr class="separator:ga2a621fc8ab625cd4003b4f26e0ce3b52"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga797f466a165622e08dda14cdaccb5df6" id="r_ga797f466a165622e08dda14cdaccb5df6"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointXYZRGB >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>transformPointCloud</b> (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::IndicesPtr &indices, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &transform)</td></tr>
|
||
<tr class="memdesc:ga797f466a165622e08dda14cdaccb5df6"><td class="mdescLeft"> </td><td class="mdescRight">Transforms <code>pcl::PointXYZRGB</code> point cloud type with specified indices. <br /></td></tr>
|
||
<tr class="separator:ga797f466a165622e08dda14cdaccb5df6"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga00514f671b8dbcc343ff481aa7c36367" id="r_ga00514f671b8dbcc343ff481aa7c36367"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointNormal >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>transformPointCloud</b> (const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &transform)</td></tr>
|
||
<tr class="memdesc:ga00514f671b8dbcc343ff481aa7c36367"><td class="mdescLeft"> </td><td class="mdescRight">Transforms <code>pcl::PointNormal</code> point cloud type with specified indices. <br /></td></tr>
|
||
<tr class="separator:ga00514f671b8dbcc343ff481aa7c36367"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gac7c95eba604afe62ab897df62d862220" id="r_gac7c95eba604afe62ab897df62d862220"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>transformPointCloud</b> (const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &transform)</td></tr>
|
||
<tr class="memdesc:gac7c95eba604afe62ab897df62d862220"><td class="mdescLeft"> </td><td class="mdescRight">Transforms <code>pcl::PointXYZRGBNormal</code> point cloud type with specified indices. <br /></td></tr>
|
||
<tr class="separator:gac7c95eba604afe62ab897df62d862220"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga47713c64205eb83460cfeec9a7bb6659" id="r_ga47713c64205eb83460cfeec9a7bb6659"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointCloud< pcl::PointXYZINormal >::Ptr RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>transformPointCloud</b> (const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const pcl::IndicesPtr &indices, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &transform)</td></tr>
|
||
<tr class="memdesc:ga47713c64205eb83460cfeec9a7bb6659"><td class="mdescLeft"> </td><td class="mdescRight">Transforms <code>pcl::PointXYZINormal</code> point cloud type with specified indices. <br /></td></tr>
|
||
<tr class="separator:ga47713c64205eb83460cfeec9a7bb6659"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga88b4f827a105254bf08bdae73cebdbe9" id="r_ga88b4f827a105254bf08bdae73cebdbe9"><td class="memItemLeft" align="right" valign="top">
|
||
cv::Point3f RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>transformPoint</b> (const cv::Point3f &pt, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &transform)</td></tr>
|
||
<tr class="memdesc:ga88b4f827a105254bf08bdae73cebdbe9"><td class="mdescLeft"> </td><td class="mdescRight">Transforms <code>cv::Point3f</code> point type. <br /></td></tr>
|
||
<tr class="separator:ga88b4f827a105254bf08bdae73cebdbe9"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga4910f2b937d405bd529772c33d477ca4" id="r_ga4910f2b937d405bd529772c33d477ca4"><td class="memItemLeft" align="right" valign="top">
|
||
cv::Point3d RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>transformPoint</b> (const cv::Point3d &pt, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &transform)</td></tr>
|
||
<tr class="memdesc:ga4910f2b937d405bd529772c33d477ca4"><td class="mdescLeft"> </td><td class="mdescRight">Transforms <code>cv::Point3d</code> point type. <br /></td></tr>
|
||
<tr class="separator:ga4910f2b937d405bd529772c33d477ca4"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga2ad96e68847f315e6d5df18d3219f308" id="r_ga2ad96e68847f315e6d5df18d3219f308"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointXYZ RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>transformPoint</b> (const pcl::PointXYZ &pt, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &transform)</td></tr>
|
||
<tr class="memdesc:ga2ad96e68847f315e6d5df18d3219f308"><td class="mdescLeft"> </td><td class="mdescRight">Transforms <code>pcl::PointXYZ</code> point type. <br /></td></tr>
|
||
<tr class="separator:ga2ad96e68847f315e6d5df18d3219f308"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga7bfb9d7e10b81cd3b5e3f164081388be" id="r_ga7bfb9d7e10b81cd3b5e3f164081388be"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointXYZI RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>transformPoint</b> (const pcl::PointXYZI &pt, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &transform)</td></tr>
|
||
<tr class="memdesc:ga7bfb9d7e10b81cd3b5e3f164081388be"><td class="mdescLeft"> </td><td class="mdescRight">Transforms <code>pcl::PointXYZI</code> point type. <br /></td></tr>
|
||
<tr class="separator:ga7bfb9d7e10b81cd3b5e3f164081388be"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga90e6ffecb159bdff5afc75e16ab1fe19" id="r_ga90e6ffecb159bdff5afc75e16ab1fe19"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointXYZRGB RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>transformPoint</b> (const pcl::PointXYZRGB &pt, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &transform)</td></tr>
|
||
<tr class="memdesc:ga90e6ffecb159bdff5afc75e16ab1fe19"><td class="mdescLeft"> </td><td class="mdescRight">Transforms <code>pcl::PointXYZRGB</code> point type. <br /></td></tr>
|
||
<tr class="separator:ga90e6ffecb159bdff5afc75e16ab1fe19"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gad98c1e7ba04edb9a57c5557d88360afd" id="r_gad98c1e7ba04edb9a57c5557d88360afd"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointNormal RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>transformPoint</b> (const pcl::PointNormal &point, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &transform)</td></tr>
|
||
<tr class="memdesc:gad98c1e7ba04edb9a57c5557d88360afd"><td class="mdescLeft"> </td><td class="mdescRight">Transforms <code>pcl::PointNormal</code> point type. <br /></td></tr>
|
||
<tr class="separator:gad98c1e7ba04edb9a57c5557d88360afd"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ga8cf51597b74c589365d2e0e2272bea70" id="r_ga8cf51597b74c589365d2e0e2272bea70"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointXYZRGBNormal RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>transformPoint</b> (const pcl::PointXYZRGBNormal &point, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &transform)</td></tr>
|
||
<tr class="memdesc:ga8cf51597b74c589365d2e0e2272bea70"><td class="mdescLeft"> </td><td class="mdescRight">Transforms <code>pcl::PointXYZRGBNormal</code> point type. <br /></td></tr>
|
||
<tr class="separator:ga8cf51597b74c589365d2e0e2272bea70"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:gae272348c0353fe96683680b981a6b0fa" id="r_gae272348c0353fe96683680b981a6b0fa"><td class="memItemLeft" align="right" valign="top">
|
||
pcl::PointXYZINormal RTABMAP_CORE_EXPORT </td><td class="memItemRight" valign="bottom"><b>transformPoint</b> (const pcl::PointXYZINormal &point, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &transform)</td></tr>
|
||
<tr class="memdesc:gae272348c0353fe96683680b981a6b0fa"><td class="mdescLeft"> </td><td class="mdescRight">Transforms <code>pcl::PointXYZINormal</code> point type. <br /></td></tr>
|
||
<tr class="separator:gae272348c0353fe96683680b981a6b0fa"><td class="memSeparator" colspan="2"> </td></tr>
|
||
</table>
|
||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||
<div class="textblock"><p>3D utilities: point cloud conversion and filtering, projection, registration, surface reconstruction, mapping and transforms. </p>
|
||
<p>Declared across <code>util3d.h</code>, <code><a class="el" href="util3d__filtering_8h_source.html">util3d_filtering.h</a></code>, <code><a class="el" href="util3d__mapping_8h_source.html">util3d_mapping.h</a></code>, <code><a class="el" href="util3d__registration_8h_source.html">util3d_registration.h</a></code>, <code><a class="el" href="util3d__surface_8h_source.html">util3d_surface.h</a></code> and <code><a class="el" href="util3d__transforms_8h_source.html">util3d_transforms.h</a></code>. </p>
|
||
</div><h2 class="groupheader">Function Documentation</h2>
|
||
<a id="a3bdae076cc5054f35393b744f478b980" name="a3bdae076cc5054f35393b744f478b980"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a3bdae076cc5054f35393b744f478b980">◆ </a></span>projectCloudOnXYPlane()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<div class="memtemplate">
|
||
template<typename PointT > </div>
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">pcl::PointCloud< PointT >::Ptr rtabmap::util3d::projectCloudOnXYPlane </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const typename pcl::PointCloud< PointT > & </td>
|
||
<td class="paramname"><em>cloud</em></td><td>)</td>
|
||
<td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Projects a point cloud onto the XY plane by setting all Z coordinates to zero. </p>
|
||
<p>This function creates a copy of the input point cloud and modifies each point's Z coordinate to be zero, effectively projecting the entire cloud onto the XY plane.</p>
|
||
<dl class="tparams"><dt>Template Parameters</dt><dd>
|
||
<table class="tparams">
|
||
<tr><td class="paramname">PointT</td><td>The type of point used in the point cloud (e.g., pcl::PointXYZ). </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">cloud</td><td>The input point cloud to project. </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>typename pcl::PointCloud<PointT>::Ptr A pointer to the projected point cloud with Z coordinates set to zero. </dd></dl>
|
||
|
||
<p class="definition">Definition at line <a class="el" href="util3d__mapping_8hpp_source.html#l00041">41</a> of file <a class="el" href="util3d__mapping_8hpp_source.html">util3d_mapping.hpp</a>.</p>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a0fcf62b8f873e9e8426f24c4a1716baa" name="a0fcf62b8f873e9e8426f24c4a1716baa"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a0fcf62b8f873e9e8426f24c4a1716baa">◆ </a></span>segmentObstaclesFromGround() <span class="overload">[1/3]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<div class="memtemplate">
|
||
template<typename PointT > </div>
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">void rtabmap::util3d::segmentObstaclesFromGround </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const typename pcl::PointCloud< PointT >::Ptr & </td>
|
||
<td class="paramname"><em>cloud</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const typename pcl::IndicesPtr & </td>
|
||
<td class="paramname"><em>indices</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">pcl::IndicesPtr & </td>
|
||
<td class="paramname"><em>ground</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">pcl::IndicesPtr & </td>
|
||
<td class="paramname"><em>obstacles</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>normalKSearch</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>groundNormalAngle</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>clusterRadius</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>minClusterSize</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">bool </td>
|
||
<td class="paramname"><em>segmentFlatObstacles</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>maxGroundHeight</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">pcl::IndicesPtr * </td>
|
||
<td class="paramname"><em>flatObstacles</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const Eigen::Vector4f & </td>
|
||
<td class="paramname"><em>viewPoint</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>groundNormalsUp</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p class="definition">Definition at line <a class="el" href="util3d__mapping_8hpp_source.html#l00054">54</a> of file <a class="el" href="util3d__mapping_8hpp_source.html">util3d_mapping.hpp</a>.</p>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a72b271fa98352180241614517ef3b21e" name="a72b271fa98352180241614517ef3b21e"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a72b271fa98352180241614517ef3b21e">◆ </a></span>segmentObstaclesFromGround() <span class="overload">[2/3]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<div class="memtemplate">
|
||
template<typename PointT > </div>
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">void rtabmap::util3d::segmentObstaclesFromGround </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const typename pcl::PointCloud< PointT >::Ptr & </td>
|
||
<td class="paramname"><em>cloud</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">pcl::IndicesPtr & </td>
|
||
<td class="paramname"><em>ground</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">pcl::IndicesPtr & </td>
|
||
<td class="paramname"><em>obstacles</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>normalKSearch</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>groundNormalAngle</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>clusterRadius</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>minClusterSize</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">bool </td>
|
||
<td class="paramname"><em>segmentFlatObstacles</em> = <code>false</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>maxGroundHeight</em> = <code>0.0f</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">pcl::IndicesPtr * </td>
|
||
<td class="paramname"><em>flatObstacles</em> = <code>0</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const Eigen::Vector4f & </td>
|
||
<td class="paramname"><em>viewPoint</em> = <code>Eigen::Vector4f(0, 0, 100, 0)</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>groundNormalsUp</em> = <code>0</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Segments ground and obstacle indices from a point cloud using surface normals and clustering. </p>
|
||
<dl class="section see"><dt>See also</dt><dd><code>segmentObstaclesFromGround()</code> with indices </dd></dl>
|
||
|
||
<p class="definition">Definition at line <a class="el" href="util3d__mapping_8hpp_source.html#l00202">202</a> of file <a class="el" href="util3d__mapping_8hpp_source.html">util3d_mapping.hpp</a>.</p>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="ab156e4308c21e118ea0aa164a5ae9812" name="ab156e4308c21e118ea0aa164a5ae9812"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#ab156e4308c21e118ea0aa164a5ae9812">◆ </a></span>occupancy2DFromGroundObstacles() <span class="overload">[1/2]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<div class="memtemplate">
|
||
template<typename PointT > </div>
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">void rtabmap::util3d::occupancy2DFromGroundObstacles </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const typename pcl::PointCloud< PointT >::Ptr & </td>
|
||
<td class="paramname"><em>cloud</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const pcl::IndicesPtr & </td>
|
||
<td class="paramname"><em>groundIndices</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const pcl::IndicesPtr & </td>
|
||
<td class="paramname"><em>obstaclesIndices</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">cv::Mat & </td>
|
||
<td class="paramname"><em>ground</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">cv::Mat & </td>
|
||
<td class="paramname"><em>obstacles</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>cellSize</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Projects 3D ground and obstacle point clouds onto the 2D XY plane and voxelizes them into 2D occupancy data. </p>
|
||
<dl class="section see"><dt>See also</dt><dd><a class="el" href="namespacertabmap_1_1util3d.html#ab156e4308c21e118ea0aa164a5ae9812" title="Projects 3D ground and obstacle point clouds onto the 2D XY plane and voxelizes them into 2D occupanc...">occupancy2DFromGroundObstacles()</a> without indices </dd></dl>
|
||
|
||
<p class="definition">Definition at line <a class="el" href="util3d__mapping_8hpp_source.html#l00234">234</a> of file <a class="el" href="util3d__mapping_8hpp_source.html">util3d_mapping.hpp</a>.</p>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a9b93d07997a94a78b6be6bd573e39148" name="a9b93d07997a94a78b6be6bd573e39148"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a9b93d07997a94a78b6be6bd573e39148">◆ </a></span>occupancy2DFromGroundObstacles() <span class="overload">[2/2]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<div class="memtemplate">
|
||
template<typename PointT > </div>
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">void rtabmap::util3d::occupancy2DFromGroundObstacles </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const typename pcl::PointCloud< PointT >::Ptr & </td>
|
||
<td class="paramname"><em>groundCloud</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const typename pcl::PointCloud< PointT >::Ptr & </td>
|
||
<td class="paramname"><em>obstaclesCloud</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">cv::Mat & </td>
|
||
<td class="paramname"><em>ground</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">cv::Mat & </td>
|
||
<td class="paramname"><em>obstacles</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>cellSize</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Projects 3D ground and obstacle point clouds onto the 2D XY plane and voxelizes them into 2D occupancy data. </p>
|
||
<p>This function takes two 3D point clouds—representing ground and obstacles—and performs the following steps:</p><ul>
|
||
<li>Projects them onto the XY plane (setting Z = 0).</li>
|
||
<li>Voxelizes them based on the specified cell size.</li>
|
||
<li>Converts the resulting 2D points into OpenCV matrices (1-row, N-columns, <code>CV_32FC2</code>) where each element is a (x, y) coordinate.</li>
|
||
</ul>
|
||
<dl class="tparams"><dt>Template Parameters</dt><dd>
|
||
<table class="tparams">
|
||
<tr><td class="paramname">PointT</td><td>The type of point in the input point clouds (e.g., pcl::PointXYZ).</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">groundCloud</td><td>The input point cloud representing ground points. </td></tr>
|
||
<tr><td class="paramname">obstaclesCloud</td><td>The input point cloud representing obstacle points. </td></tr>
|
||
<tr><td class="paramname">ground</td><td>Output matrix containing 2D (x, y) coordinates of projected ground points (type: <code>CV_32FC2</code>). </td></tr>
|
||
<tr><td class="paramname">obstacles</td><td>Output matrix containing 2D (x, y) coordinates of projected obstacle points (type: <code>CV_32FC2</code>). </td></tr>
|
||
<tr><td class="paramname">cellSize</td><td>The size of each voxel/grid cell used for downsampling the projected cloud (in meters). </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
|
||
<p class="definition">Definition at line <a class="el" href="util3d__mapping_8hpp_source.html#l00264">264</a> of file <a class="el" href="util3d__mapping_8hpp_source.html">util3d_mapping.hpp</a>.</p>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a7d90f3a00301f9f7c79cd6fc6cd663c2" name="a7d90f3a00301f9f7c79cd6fc6cd663c2"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a7d90f3a00301f9f7c79cd6fc6cd663c2">◆ </a></span>occupancy2DFromCloud3D() <span class="overload">[1/2]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<div class="memtemplate">
|
||
template<typename PointT > </div>
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">void rtabmap::util3d::occupancy2DFromCloud3D </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const typename pcl::PointCloud< PointT >::Ptr & </td>
|
||
<td class="paramname"><em>cloud</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const pcl::IndicesPtr & </td>
|
||
<td class="paramname"><em>indices</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">cv::Mat & </td>
|
||
<td class="paramname"><em>ground</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">cv::Mat & </td>
|
||
<td class="paramname"><em>obstacles</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>cellSize</em> = <code>0.05f</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>groundNormalAngle</em> = <code>M_PI_4</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>minClusterSize</em> = <code>20</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">bool </td>
|
||
<td class="paramname"><em>segmentFlatObstacles</em> = <code>false</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>maxGroundHeight</em> = <code>0.0f</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Generates 2D ground and obstacle occupancy data from a 3D point cloud. </p>
|
||
<p>This function performs segmentation on a 3D point cloud to separate ground and obstacle points based on normal orientation and clustering, then projects both onto the XY plane to create 2D occupancy representations using voxelization.</p>
|
||
<p>The resulting occupancy data is returned as two OpenCV matrices (<code>cv::Mat</code>) of type <code>CV_32FC2</code>, where each entry contains a 2D point (x, y) in meters corresponding to a ground or obstacle voxel.</p>
|
||
<dl class="tparams"><dt>Template Parameters</dt><dd>
|
||
<table class="tparams">
|
||
<tr><td class="paramname">PointT</td><td>The type of point used in the input point cloud (e.g., pcl::PointXYZ).</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">cloud</td><td>The input 3D point cloud. </td></tr>
|
||
<tr><td class="paramname">indices</td><td>Optional subset of points from the cloud to use for processing (can be full cloud indices). </td></tr>
|
||
<tr><td class="paramname">ground</td><td>Output matrix containing 2D ground points projected and voxelized (<code>CV_32FC2</code>). </td></tr>
|
||
<tr><td class="paramname">obstacles</td><td>Output matrix containing 2D obstacle points projected and voxelized (<code>CV_32FC2</code>). </td></tr>
|
||
<tr><td class="paramname">cellSize</td><td>The voxel size (in meters) for projecting and grouping points in 2D. </td></tr>
|
||
<tr><td class="paramname">groundNormalAngle</td><td>Maximum allowable angle (in radians) between a point's normal and the vertical axis for it to be considered part of the ground. </td></tr>
|
||
<tr><td class="paramname">minClusterSize</td><td>Minimum number of points required to form a valid obstacle cluster. </td></tr>
|
||
<tr><td class="paramname">segmentFlatObstacles</td><td>Whether to separate flat horizontal surfaces (e.g., tables) from the ground and treat them as obstacles. </td></tr>
|
||
<tr><td class="paramname">maxGroundHeight</td><td>Maximum Z value (in meters) for a surface to be considered ground. If 0, height filtering is disabled.</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section note"><dt>Note</dt><dd>Internally, this function calls:<ul>
|
||
<li><code>segmentObstaclesFromGround()</code> to classify ground vs. obstacle points.</li>
|
||
<li><code><a class="el" href="namespacertabmap_1_1util3d.html#ab156e4308c21e118ea0aa164a5ae9812" title="Projects 3D ground and obstacle point clouds onto the 2D XY plane and voxelizes them into 2D occupanc...">occupancy2DFromGroundObstacles()</a></code> to project and voxelize the classified data. </li>
|
||
</ul>
|
||
</dd></dl>
|
||
|
||
<p class="definition">Definition at line <a class="el" href="util3d__mapping_8hpp_source.html#l00309">309</a> of file <a class="el" href="util3d__mapping_8hpp_source.html">util3d_mapping.hpp</a>.</p>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a969e2d135e91a6e2ace68850086ae0e9" name="a969e2d135e91a6e2ace68850086ae0e9"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a969e2d135e91a6e2ace68850086ae0e9">◆ </a></span>occupancy2DFromCloud3D() <span class="overload">[2/2]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<div class="memtemplate">
|
||
template<typename PointT > </div>
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">void rtabmap::util3d::occupancy2DFromCloud3D </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const typename pcl::PointCloud< PointT >::Ptr & </td>
|
||
<td class="paramname"><em>cloud</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">cv::Mat & </td>
|
||
<td class="paramname"><em>ground</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">cv::Mat & </td>
|
||
<td class="paramname"><em>obstacles</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>cellSize</em> = <code>0.05f</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>groundNormalAngle</em> = <code>M_PI_4</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>minClusterSize</em> = <code>20</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">bool </td>
|
||
<td class="paramname"><em>segmentFlatObstacles</em> = <code>false</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>maxGroundHeight</em> = <code>0.0f</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Generates 2D ground and obstacle occupancy data from a 3D point cloud. </p>
|
||
<dl class="section see"><dt>See also</dt><dd><code><a class="el" href="namespacertabmap_1_1util3d.html#a7d90f3a00301f9f7c79cd6fc6cd663c2" title="Generates 2D ground and obstacle occupancy data from a 3D point cloud.">occupancy2DFromCloud3D()</a></code> with indices </dd></dl>
|
||
|
||
<p class="definition">Definition at line <a class="el" href="util3d__mapping_8hpp_source.html#l00348">348</a> of file <a class="el" href="util3d__mapping_8hpp_source.html">util3d_mapping.hpp</a>.</p>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a1b78d426f871504e47402511dd769b19" name="a1b78d426f871504e47402511dd769b19"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a1b78d426f871504e47402511dd769b19">◆ </a></span>normalizePolygonsSide()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<div class="memtemplate">
|
||
template<typename pointT > </div>
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">std::vector< pcl::Vertices > rtabmap::util3d::normalizePolygonsSide </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const typename pcl::PointCloud< pointT > & </td>
|
||
<td class="paramname"><em>cloud</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::vector< pcl::Vertices > & </td>
|
||
<td class="paramname"><em>polygons</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const pcl::PointXYZ & </td>
|
||
<td class="paramname"><em>viewPoint</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p class="definition">Definition at line <a class="el" href="util3d__surface_8hpp_source.html#l00020">20</a> of file <a class="el" href="util3d__surface_8hpp_source.html">util3d_surface.hpp</a>.</p>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="abba5998ac528571c5f6e77971b44c4bb" name="abba5998ac528571c5f6e77971b44c4bb"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#abba5998ac528571c5f6e77971b44c4bb">◆ </a></span>denseMeshPostProcessing()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<div class="memtemplate">
|
||
template<typename pointRGBT > </div>
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">void rtabmap::util3d::denseMeshPostProcessing </td>
|
||
<td>(</td>
|
||
<td class="paramtype">pcl::PolygonMeshPtr & </td>
|
||
<td class="paramname"><em>mesh</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>meshDecimationFactor</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>maximumPolygons</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const typename pcl::PointCloud< pointRGBT >::Ptr & </td>
|
||
<td class="paramname"><em>cloud</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>transferColorRadius</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">bool </td>
|
||
<td class="paramname"><em>coloredOutput</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">bool </td>
|
||
<td class="paramname"><em>cleanMesh</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>minClusterSize</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype"><a class="el" href="classrtabmap_1_1ProgressState.html">ProgressState</a> * </td>
|
||
<td class="paramname"><em>progressState</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p class="definition">Definition at line <a class="el" href="util3d__surface_8hpp_source.html#l00050">50</a> of file <a class="el" href="util3d__surface_8hpp_source.html">util3d_surface.hpp</a>.</p>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="ae51dc73bb2bcf61962c49260a840df29" name="ae51dc73bb2bcf61962c49260a840df29"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#ae51dc73bb2bcf61962c49260a840df29">◆ </a></span>intersectRayMesh()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<div class="memtemplate">
|
||
template<typename PointT > </div>
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">bool rtabmap::util3d::intersectRayMesh </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const Eigen::Vector3f & </td>
|
||
<td class="paramname"><em>origin</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const Eigen::Vector3f & </td>
|
||
<td class="paramname"><em>dir</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const typename pcl::PointCloud< PointT > & </td>
|
||
<td class="paramname"><em>cloud</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::vector< pcl::Vertices > & </td>
|
||
<td class="paramname"><em>polygons</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">bool </td>
|
||
<td class="paramname"><em>ignoreBackFaces</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float & </td>
|
||
<td class="paramname"><em>distance</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">Eigen::Vector3f & </td>
|
||
<td class="paramname"><em>normal</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int & </td>
|
||
<td class="paramname"><em>index</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p class="definition">Definition at line <a class="el" href="util3d__surface_8hpp_source.html#l00315">315</a> of file <a class="el" href="util3d__surface_8hpp_source.html">util3d_surface.hpp</a>.</p>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a3366d0a9c24960ee3f5b720945e12b1b" name="a3366d0a9c24960ee3f5b720945e12b1b"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a3366d0a9c24960ee3f5b720945e12b1b">◆ </a></span>rgbFromCloud()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">cv::Mat RTABMAP_CORE_EXPORT rtabmap::util3d::rgbFromCloud </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const pcl::PointCloud< pcl::PointXYZRGBA > & </td>
|
||
<td class="paramname"><em>cloud</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">bool </td>
|
||
<td class="paramname"><em>bgrOrder</em> = <code>true</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Converts a PCL point cloud with RGBA information to an OpenCV RGB or BGR image. </p>
|
||
<p>This function takes a structured point cloud (organized as height × width) and creates a corresponding OpenCV <code>cv::Mat</code> image containing the RGB (or BGR) color values from the cloud.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">cloud</td><td>The input organized point cloud of type <code>pcl::PointCloud<pcl::PointXYZRGBA></code>. The cloud must be organized (i.e., <code>cloud.width</code> and <code>cloud.height</code> must be greater than 0). </td></tr>
|
||
<tr><td class="paramname">bgrOrder</td><td>If true, the output image will be in BGR format (OpenCV default); if false, it will be RGB.</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>A <code>cv::Mat</code> of type <code>CV_8UC3</code> with the same width and height as the input point cloud, containing RGB or BGR color values depending on the <code>bgrOrder</code> flag.</dd></dl>
|
||
<dl class="section note"><dt>Note</dt><dd>This function assumes that the point cloud is organized. If the cloud is unorganized, the behavior is undefined. </dd></dl>
|
||
<dl class="section see"><dt>See also</dt><dd>pcl::PointCloud, cv::Mat </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="aaf77cb59d32f36c1e9baa2111a7b1b3d" name="aaf77cb59d32f36c1e9baa2111a7b1b3d"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#aaf77cb59d32f36c1e9baa2111a7b1b3d">◆ </a></span>depthFromCloud()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">cv::Mat RTABMAP_CORE_EXPORT rtabmap::util3d::depthFromCloud </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const pcl::PointCloud< pcl::PointXYZRGBA > & </td>
|
||
<td class="paramname"><em>cloud</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">bool </td>
|
||
<td class="paramname"><em>depth16U</em> = <code>true</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Generates a depth image from a PCL organized point cloud. </p>
|
||
<p>This function converts a given organized point cloud of type <code>pcl::PointXYZRGBA</code> into a depth image (<code>cv::Mat</code>) in either 32-bit float or 16-bit unsigned format. The depth image contains the Z coordinate (depth) values of each point.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">cloud</td><td>The input organized point cloud (height x width), where each point contains XYZ and RGBA. </td></tr>
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">depth16U</td><td>If true, output depth will be in 16-bit unsigned integer (millimeters); otherwise, 32-bit float (meters).</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>A depth image (<code>cv::Mat</code>) of the same resolution as the input cloud, with type <code>CV_16UC1</code> or <code>CV_32FC1</code>.</dd></dl>
|
||
<dl class="section note"><dt>Note</dt><dd>The function assumes that the point cloud is organized (structured as an image). </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a5ec62aa90ceb52a032e7e49c22e0fd76" name="a5ec62aa90ceb52a032e7e49c22e0fd76"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a5ec62aa90ceb52a032e7e49c22e0fd76">◆ </a></span>rgbdFromCloud()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">void RTABMAP_CORE_EXPORT rtabmap::util3d::rgbdFromCloud </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const pcl::PointCloud< pcl::PointXYZRGBA > & </td>
|
||
<td class="paramname"><em>cloud</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">cv::Mat & </td>
|
||
<td class="paramname"><em>rgb</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">cv::Mat & </td>
|
||
<td class="paramname"><em>depth</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">bool </td>
|
||
<td class="paramname"><em>bgrOrder</em> = <code>true</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">bool </td>
|
||
<td class="paramname"><em>depth16U</em> = <code>true</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Converts a PCL point cloud (with RGBA colors) into aligned RGB and depth OpenCV images. </p>
|
||
<p>This function extracts RGB and depth information from a structured PCL point cloud (organized point cloud with width and height) and fills the corresponding OpenCV matrices.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">cloud</td><td>The input organized point cloud containing RGBA data (structured as height x width). </td></tr>
|
||
<tr><td class="paramdir">[out]</td><td class="paramname">frameBGR</td><td>The output color image (CV_8UC3). The channels are ordered as BGR if bgrOrder is true, otherwise RGB. </td></tr>
|
||
<tr><td class="paramdir">[out]</td><td class="paramname">frameDepth</td><td>The output depth image (either CV_32FC1 for meters or CV_16UC1 for millimeters depending on depth16U). </td></tr>
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">bgrOrder</td><td>If true, store colors in BGR order. If false, store as RGB. </td></tr>
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">depth16U</td><td>If true, store depth as 16-bit unsigned integers (in millimeters), otherwise use 32-bit floats (in meters).</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section note"><dt>Note</dt><dd>The function assumes that the point cloud is organized. If the point cloud is not organized, the output matrices will not be valid. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a4a95aa3704280ecff8ae50db2fdb03b5" name="a4a95aa3704280ecff8ae50db2fdb03b5"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a4a95aa3704280ecff8ae50db2fdb03b5">◆ </a></span>projectDepthTo3D()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">pcl::PointXYZ RTABMAP_CORE_EXPORT rtabmap::util3d::projectDepthTo3D </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const cv::Mat & </td>
|
||
<td class="paramname"><em>depthImage</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>x</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>y</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>cx</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>cy</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>fx</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>fy</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">bool </td>
|
||
<td class="paramname"><em>smoothing</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>depthErrorRatio</em> = <code>0.02f</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Projects a single depth pixel into 3D space. </p>
|
||
<p>This function computes the 3D coordinates of a point given a depth image and camera intrinsic parameters. It optionally applies smoothing and depth error compensation to improve the accuracy of the result.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">depthImage</td><td>The depth image (CV_16UC1 in millimeters or CV_32FC1 in meters). </td></tr>
|
||
<tr><td class="paramname">x</td><td>The x coordinate (column index) of the pixel to project. </td></tr>
|
||
<tr><td class="paramname">y</td><td>The y coordinate (row index) of the pixel to project. </td></tr>
|
||
<tr><td class="paramname">cx</td><td>The principal point x-coordinate. If set to 0, it will default to image center. </td></tr>
|
||
<tr><td class="paramname">cy</td><td>The principal point y-coordinate. If set to 0, it will default to image center. </td></tr>
|
||
<tr><td class="paramname">fx</td><td>The focal length in x direction (in pixels). </td></tr>
|
||
<tr><td class="paramname">fy</td><td>The focal length in y direction (in pixels). </td></tr>
|
||
<tr><td class="paramname">smoothing</td><td>Whether to apply smoothing on the depth value at (x, y). </td></tr>
|
||
<tr><td class="paramname">depthErrorRatio</td><td>Ratio used to reject outlier depths when smoothing is enabled.</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>A pcl::PointXYZ containing the 3D coordinates of the pixel in the depth image. If the depth value is invalid or <= 0, all coordinates are set to NaN. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a791904051b63ab0da4d972166a25ae5f" name="a791904051b63ab0da4d972166a25ae5f"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a791904051b63ab0da4d972166a25ae5f">◆ </a></span>projectDepthTo3DRay()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">Eigen::Vector3f RTABMAP_CORE_EXPORT rtabmap::util3d::projectDepthTo3DRay </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const cv::Size & </td>
|
||
<td class="paramname"><em>imageSize</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>x</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>y</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>cx</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>cy</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>fx</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>fy</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Projects pixel coordinates to a normalized 3D ray in camera coordinates. </p>
|
||
<p>This function computes the direction of a 3D ray from the camera origin through a pixel in the image plane, assuming a pinhole camera model. The returned ray is not scaled by depth; it has a fixed z component of 1.0.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">imageSize</td><td>The size of the image (width, height). </td></tr>
|
||
<tr><td class="paramname">x</td><td>The x-coordinate of the pixel in the image. </td></tr>
|
||
<tr><td class="paramname">y</td><td>The y-coordinate of the pixel in the image. </td></tr>
|
||
<tr><td class="paramname">cx</td><td>The x-coordinate of the principal point. If zero or negative, defaults to (image width / 2) - 0.5. </td></tr>
|
||
<tr><td class="paramname">cy</td><td>The y-coordinate of the principal point. If zero or negative, defaults to (image height / 2) - 0.5. </td></tr>
|
||
<tr><td class="paramname">fx</td><td>The focal length in the x direction (pixels). </td></tr>
|
||
<tr><td class="paramname">fy</td><td>The focal length in the y direction (pixels). </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>A normalized Eigen::Vector3f representing the direction of the ray in camera coordinates. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a45c699a4a8f4108aa31148fb706e6249" name="a45c699a4a8f4108aa31148fb706e6249"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a45c699a4a8f4108aa31148fb706e6249">◆ </a></span>cloudFromDepth() <span class="overload">[1/2]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">RTABMAP_DEPRECATED pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT rtabmap::util3d::cloudFromDepth </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const cv::Mat & </td>
|
||
<td class="paramname"><em>imageDepth</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>cx</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>cy</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>fx</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>fy</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>decimation</em> = <code>1</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>maxDepth</em> = <code>0.0f</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>minDepth</em> = <code>0.0f</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">std::vector< int > * </td>
|
||
<td class="paramname"><em>validIndices</em> = <code>0</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Converts a depth image to a 3D point cloud. </p>
|
||
<p>This function uses the camera model's intrinsic parameters to convert each pixel in the depth image to a 3D point in the camera's coordinate system. It handles the decimation of the image and ensures the resulting point cloud does not exceed the specified maximum and minimum depth values.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">imageDepth</td><td>The input depth image, which should be of type <code>CV_16UC1</code> or <code>CV_32FC1</code>. </td></tr>
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">cx</td><td>The optical center of the camera in the x-axis (usually the center of the image). </td></tr>
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">cy</td><td>The optical center of the camera in the y-axis (usually the center of the image). </td></tr>
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">fx</td><td>The focal length of the camera in the x-axis. </td></tr>
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">fy</td><td>The focal length of the camera in the y-axis. </td></tr>
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">decimation</td><td>Decimation factor, used to reduce the image resolution (use 0 for no decimation). </td></tr>
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">maxDepth</td><td>The maximum depth value to consider when creating the point cloud. </td></tr>
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">minDepth</td><td>The minimum depth value to consider when creating the point cloud. </td></tr>
|
||
<tr><td class="paramdir">[out]</td><td class="paramname">validIndices</td><td>A pointer to a vector where the indices of valid points will be stored. If null, this is ignored.</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>A <code>pcl::PointCloud<pcl::PointXYZ>::Ptr</code> containing the 3D points corresponding to the depth image.</dd></dl>
|
||
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000017">Deprecated:</a></b></dt><dd>This function is deprecated and will be removed in future versions. Use the <code>cloudFromDepth</code> function that accepts a <code><a class="el" href="classrtabmap_1_1CameraModel.html" title="Represents a pinhole camera model containing intrinsic and extrinsic parameters, used for projection,...">rtabmap::CameraModel</a></code> instead. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a9fa0222fe9a7f74fcfa4c04c0c2dd532" name="a9fa0222fe9a7f74fcfa4c04c0c2dd532"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a9fa0222fe9a7f74fcfa4c04c0c2dd532">◆ </a></span>cloudFromDepth() <span class="overload">[2/2]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT rtabmap::util3d::cloudFromDepth </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const cv::Mat & </td>
|
||
<td class="paramname"><em>imageDepth</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const <a class="el" href="classrtabmap_1_1CameraModel.html">CameraModel</a> & </td>
|
||
<td class="paramname"><em>model</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>decimation</em> = <code>1</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>maxDepth</em> = <code>0.0f</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>minDepth</em> = <code>0.0f</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">std::vector< int > * </td>
|
||
<td class="paramname"><em>validIndices</em> = <code>0</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Converts a depth image to a 3D point cloud using a camera model. </p>
|
||
<p>This function performs the conversion of a depth image to a point cloud using the provided <code><a class="el" href="classrtabmap_1_1CameraModel.html" title="Represents a pinhole camera model containing intrinsic and extrinsic parameters, used for projection,...">CameraModel</a></code> object. It handles decimation, validates the depth values, and calculates the corresponding 3D coordinates in the camera's optical coordinate system.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">imageDepthIn</td><td>The input depth image, which should be of type <code>CV_16UC1</code> or <code>CV_32FC1</code>. </td></tr>
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">model</td><td>The camera model containing the intrinsic parameters (fx, fy, cx, cy). </td></tr>
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">decimation</td><td>The decimation factor for image resolution reduction (use 0 for no decimation). </td></tr>
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">maxDepth</td><td>The maximum depth value to consider when creating the point cloud. </td></tr>
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">minDepth</td><td>The minimum depth value to consider when creating the point cloud. </td></tr>
|
||
<tr><td class="paramdir">[out]</td><td class="paramname">validIndices</td><td>A pointer to a vector to store indices of valid points in the point cloud. If null, it is ignored.</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>A <code>pcl::PointCloud<pcl::PointXYZ>::Ptr</code> containing the 3D points corresponding to the depth image. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a982bc5d13fea129a174e16373aa8a31c" name="a982bc5d13fea129a174e16373aa8a31c"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a982bc5d13fea129a174e16373aa8a31c">◆ </a></span>cloudFromDepthRGB() <span class="overload">[1/2]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">RTABMAP_DEPRECATED pcl::PointCloud< pcl::PointXYZRGB >::Ptr RTABMAP_CORE_EXPORT rtabmap::util3d::cloudFromDepthRGB </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const cv::Mat & </td>
|
||
<td class="paramname"><em>imageRgb</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const cv::Mat & </td>
|
||
<td class="paramname"><em>imageDepth</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>cx</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>cy</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>fx</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>fy</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>decimation</em> = <code>1</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>maxDepth</em> = <code>0.0f</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>minDepth</em> = <code>0.0f</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">std::vector< int > * </td>
|
||
<td class="paramname"><em>validIndices</em> = <code>0</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Creates a point cloud from an RGB image and a depth image. </p>
|
||
<p>This function uses the RGB and depth images, along with camera intrinsic parameters, to generate a point cloud where each point contains RGB color and 3D spatial information. It also handles decimation and depth constraints (min/max depth) for efficient processing and memory management.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">imageRgb</td><td>The RGB image (e.g., in BGR format for OpenCV). </td></tr>
|
||
<tr><td class="paramname">imageDepth</td><td>The depth image (CV_16UC1 or CV_32FC1 format). </td></tr>
|
||
<tr><td class="paramname">cx</td><td>The x-coordinate of the camera's principal point (optical center). </td></tr>
|
||
<tr><td class="paramname">cy</td><td>The y-coordinate of the camera's principal point. </td></tr>
|
||
<tr><td class="paramname">fx</td><td>The focal length in x-direction (in pixels). </td></tr>
|
||
<tr><td class="paramname">fy</td><td>The focal length in y-direction (in pixels). </td></tr>
|
||
<tr><td class="paramname">decimation</td><td>The decimation factor for the image (negative value for decimation from RGB size). </td></tr>
|
||
<tr><td class="paramname">maxDepth</td><td>The maximum depth value to consider for valid points (set 0 to ignore). </td></tr>
|
||
<tr><td class="paramname">minDepth</td><td>The minimum depth value to consider for valid points. </td></tr>
|
||
<tr><td class="paramname">validIndices</td><td>A pointer to a vector that will store valid point indices (optional).</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>A shared pointer to a point cloud (pcl::PointCloud<pcl::PointXYZRGB>) containing RGB and 3D point data.</dd></dl>
|
||
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000018">Deprecated:</a></b></dt><dd>This function is deprecated and will be removed in future versions. Use the version that accepts a <code><a class="el" href="classrtabmap_1_1CameraModel.html" title="Represents a pinhole camera model containing intrinsic and extrinsic parameters, used for projection,...">rtabmap::CameraModel</a></code> instead. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a64b369873a01960576cb34aab4c5a319" name="a64b369873a01960576cb34aab4c5a319"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a64b369873a01960576cb34aab4c5a319">◆ </a></span>cloudFromDepthRGB() <span class="overload">[2/2]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">pcl::PointCloud< pcl::PointXYZRGB >::Ptr RTABMAP_CORE_EXPORT rtabmap::util3d::cloudFromDepthRGB </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const cv::Mat & </td>
|
||
<td class="paramname"><em>imageRgb</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const cv::Mat & </td>
|
||
<td class="paramname"><em>imageDepth</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const <a class="el" href="classrtabmap_1_1CameraModel.html">CameraModel</a> & </td>
|
||
<td class="paramname"><em>model</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>decimation</em> = <code>1</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>maxDepth</em> = <code>0.0f</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>minDepth</em> = <code>0.0f</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">std::vector< int > * </td>
|
||
<td class="paramname"><em>validIndices</em> = <code>0</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Creates a point cloud from an RGB image and a depth image using a <a class="el" href="classrtabmap_1_1CameraModel.html" title="Represents a pinhole camera model containing intrinsic and extrinsic parameters, used for projection,...">CameraModel</a>. </p>
|
||
<p>This function generates a point cloud where each point contains RGB color and 3D spatial information derived from the provided RGB and depth images, using intrinsic parameters provided in the <a class="el" href="classrtabmap_1_1CameraModel.html" title="Represents a pinhole camera model containing intrinsic and extrinsic parameters, used for projection,...">CameraModel</a>. It also applies decimation for efficiency, and depth constraints (min/max depth) to limit the points to a valid range.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">imageRgb</td><td>The RGB image (e.g., in BGR format for OpenCV). </td></tr>
|
||
<tr><td class="paramname">imageDepthIn</td><td>The depth image (CV_16UC1 or CV_32FC1 format). </td></tr>
|
||
<tr><td class="paramname">model</td><td>A <a class="el" href="classrtabmap_1_1CameraModel.html" title="Represents a pinhole camera model containing intrinsic and extrinsic parameters, used for projection,...">CameraModel</a> object that contains intrinsic camera parameters (fx, fy, cx, cy). </td></tr>
|
||
<tr><td class="paramname">decimation</td><td>The decimation factor for the image (negative value for decimation from RGB size). </td></tr>
|
||
<tr><td class="paramname">maxDepth</td><td>The maximum depth value to consider for valid points (set 0 to ignore). </td></tr>
|
||
<tr><td class="paramname">minDepth</td><td>The minimum depth value to consider for valid points. </td></tr>
|
||
<tr><td class="paramname">validIndices</td><td>A pointer to a vector that will store valid point indices (optional).</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>A shared pointer to a point cloud (pcl::PointCloud<pcl::PointXYZRGB>) containing RGB and 3D point data.</dd></dl>
|
||
<dl class="section note"><dt>Note</dt><dd>This version uses a <a class="el" href="classrtabmap_1_1CameraModel.html" title="Represents a pinhole camera model containing intrinsic and extrinsic parameters, used for projection,...">CameraModel</a> to encapsulate the camera parameters. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="aee34b5fe56014a9fa058fbdbf90cab71" name="aee34b5fe56014a9fa058fbdbf90cab71"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#aee34b5fe56014a9fa058fbdbf90cab71">◆ </a></span>cloudFromDisparity()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT rtabmap::util3d::cloudFromDisparity </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const cv::Mat & </td>
|
||
<td class="paramname"><em>imageDisparity</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const <a class="el" href="classrtabmap_1_1StereoCameraModel.html">StereoCameraModel</a> & </td>
|
||
<td class="paramname"><em>model</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>decimation</em> = <code>1</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>maxDepth</em> = <code>0.0f</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>minDepth</em> = <code>0.0f</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">std::vector< int > * </td>
|
||
<td class="paramname"><em>validIndices</em> = <code>0</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Converts a disparity image to a 3D point cloud. </p>
|
||
<p>This function takes a disparity image and projects each disparity value to a 3D point in space using the provided stereo camera model. The points are stored in a <code>pcl::PointCloud</code> object. The function also supports decimating the image for faster processing.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">imageDisparity</td><td>The input disparity image, which must be of type <code>CV_32FC1</code> (floating-point) or <code>CV_16SC1</code> (16-bit signed short). </td></tr>
|
||
<tr><td class="paramname">model</td><td>The stereo camera model used to project disparity to 3D. </td></tr>
|
||
<tr><td class="paramname">decimation</td><td>The decimation factor for downsampling the image. It must be greater than or equal to 1. </td></tr>
|
||
<tr><td class="paramname">maxDepth</td><td>The maximum depth for valid points in meters. Points with a depth greater than this value will be discarded. A non-positive value means no maximum depth constraint. </td></tr>
|
||
<tr><td class="paramname">minDepth</td><td>The minimum depth for valid points in meters. Points with a depth less than this value will be discarded. </td></tr>
|
||
<tr><td class="paramname">validIndices</td><td>An optional vector that will be filled with the indices of valid points in the cloud (those within the depth constraints). If nullptr, the indices are not stored.</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>A shared pointer to a <code>pcl::PointCloud<pcl::PointXYZ></code> containing the 3D points derived from the disparity image.</dd></dl>
|
||
<dl class="section note"><dt>Note</dt><dd>If the disparity image dimensions are not divisible by the decimation factor, the decimation factor will be adjusted to the highest compatible value. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a1e4a96407fb1b92018e640ef41b8db8e" name="a1e4a96407fb1b92018e640ef41b8db8e"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a1e4a96407fb1b92018e640ef41b8db8e">◆ </a></span>cloudFromDisparityRGB()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">pcl::PointCloud< pcl::PointXYZRGB >::Ptr RTABMAP_CORE_EXPORT rtabmap::util3d::cloudFromDisparityRGB </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const cv::Mat & </td>
|
||
<td class="paramname"><em>imageRgb</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const cv::Mat & </td>
|
||
<td class="paramname"><em>imageDisparity</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const <a class="el" href="classrtabmap_1_1StereoCameraModel.html">StereoCameraModel</a> & </td>
|
||
<td class="paramname"><em>model</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>decimation</em> = <code>1</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>maxDepth</em> = <code>0.0f</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>minDepth</em> = <code>0.0f</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">std::vector< int > * </td>
|
||
<td class="paramname"><em>validIndices</em> = <code>0</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Converts a disparity image and an RGB image to a 3D point cloud with color. </p>
|
||
<p>This function takes both a disparity image and an RGB image to create a colored 3D point cloud. Each RGB pixel is associated with a 3D point generated from the disparity value. The function also supports decimating the images for faster processing.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">imageRgb</td><td>The input RGB image, which must have 3 channels (color->BGR) or 1 channel (grayscale). The image is used to assign colors to the 3D points. </td></tr>
|
||
<tr><td class="paramname">imageDisparity</td><td>The input disparity image, which must be of type <code>CV_32FC1</code> (floating-point) or <code>CV_16SC1</code> (16-bit signed short). </td></tr>
|
||
<tr><td class="paramname">model</td><td>The stereo camera model used to project disparity to 3D. </td></tr>
|
||
<tr><td class="paramname">decimation</td><td>The decimation factor for downsampling the images. It must be greater than or equal to 1. </td></tr>
|
||
<tr><td class="paramname">maxDepth</td><td>The maximum depth for valid points in meters. Points with a depth greater than this value will be discarded. A non-positive value means no maximum depth constraint. </td></tr>
|
||
<tr><td class="paramname">minDepth</td><td>The minimum depth for valid points in meters. Points with a depth less than this value will be discarded. </td></tr>
|
||
<tr><td class="paramname">validIndices</td><td>An optional vector that will be filled with the indices of valid points in the cloud (those within the depth constraints). If nullptr, the indices are not stored.</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>A shared pointer to a <code>pcl::PointCloud<pcl::PointXYZRGB></code> containing the 3D points with associated RGB color values.</dd></dl>
|
||
<dl class="section note"><dt>Note</dt><dd>If the disparity image dimensions are not divisible by the decimation factor, the decimation factor will be adjusted to the highest compatible value.</dd></dl>
|
||
<dl class="section warning"><dt>Warning</dt><dd>The RGB image must have the same size as the disparity image. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a406caa6c0c51bae870a8c3a44e7daccc" name="a406caa6c0c51bae870a8c3a44e7daccc"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a406caa6c0c51bae870a8c3a44e7daccc">◆ </a></span>cloudFromStereoImages()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">pcl::PointCloud< pcl::PointXYZRGB >::Ptr RTABMAP_CORE_EXPORT rtabmap::util3d::cloudFromStereoImages </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const cv::Mat & </td>
|
||
<td class="paramname"><em>imageLeft</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const cv::Mat & </td>
|
||
<td class="paramname"><em>imageRight</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const <a class="el" href="classrtabmap_1_1StereoCameraModel.html">StereoCameraModel</a> & </td>
|
||
<td class="paramname"><em>model</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>decimation</em> = <code>1</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>maxDepth</em> = <code>0.0f</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>minDepth</em> = <code>0.0f</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">std::vector< int > * </td>
|
||
<td class="paramname"><em>validIndices</em> = <code>0</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></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>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Converts a pair of stereo images (left and right) into a 3D point cloud with RGB color information. </p>
|
||
<p>This function takes a pair of stereo images, computes the disparity map between the left and right images, and then converts the disparity map into a 3D point cloud where each point contains the 3D coordinates (x, y, z) and RGB color values from the corresponding pixel in the left image.</p>
|
||
<p>The function supports both color and monochrome images and performs stereo rectification and disparity calculation internally. The resulting 3D point cloud is returned in the PCL format with RGB color for each point, using the <code>pcl::PointXYZRGB</code> type. Points outside the specified depth range are discarded.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">imageLeft</td><td>The left stereo image (either grayscale or color). If color, the image is converted to grayscale internally for disparity calculation. </td></tr>
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">imageRight</td><td>The right stereo image (either grayscale or color). If color, the image is converted to grayscale internally for disparity calculation. </td></tr>
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">model</td><td>The stereo camera model that contains the parameters for projecting disparity values into 3D. </td></tr>
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">decimation</td><td>The decimation factor used to downsample the image and reduce computation time. It must be greater than or equal to 1. </td></tr>
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">maxDepth</td><td>The maximum allowable depth (z value). Points with a depth greater than this value will be discarded. </td></tr>
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">minDepth</td><td>The minimum allowable depth (z value). Points with a depth smaller than this value will be discarded. </td></tr>
|
||
<tr><td class="paramdir">[out]</td><td class="paramname">validIndices</td><td>A pointer to a vector that will be filled with the indices of the valid points in the resulting point cloud. Can be set to <code>nullptr</code> if this information is not needed. </td></tr>
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">parameters</td><td>A map of additional parameters for disparity computation, used by the stereo disparity function.</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>A pointer to a <code>pcl::PointCloud<pcl::PointXYZRGB></code> containing the 3D points with RGB colors. The cloud is dense only in regions with valid disparity values and within the specified depth range.</dd></dl>
|
||
<dl class="section note"><dt>Note</dt><dd>The function assumes that the input images are rectified and aligned to the same coordinate system. The disparity map is computed from the left and right mono images using the <code>disparityFromStereoImages</code> utility function, which is provided by the <code><a class="el" href="namespacertabmap_1_1util2d.html" title="This namespace contains 2D image processing utilities.">util2d</a></code> namespace.</dd></dl>
|
||
<dl class="section warning"><dt>Warning</dt><dd>The input images must have the same size, and the disparity computation assumes that the stereo pair is well-calibrated. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="ada07c0379fcc7bb7465e31a5a53ebfaa" name="ada07c0379fcc7bb7465e31a5a53ebfaa"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#ada07c0379fcc7bb7465e31a5a53ebfaa">◆ </a></span>cloudsFromSensorData()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">std::vector< pcl::PointCloud< pcl::PointXYZ >::Ptr > RTABMAP_CORE_EXPORT rtabmap::util3d::cloudsFromSensorData </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const <a class="el" href="classrtabmap_1_1SensorData.html">SensorData</a> & </td>
|
||
<td class="paramname"><em>sensorData</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>decimation</em> = <code>1</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>maxDepth</em> = <code>0.0f</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>minDepth</em> = <code>0.0f</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">std::vector< pcl::IndicesPtr > * </td>
|
||
<td class="paramname"><em>validIndices</em> = <code>0</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const <a class="el" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a> & </td>
|
||
<td class="paramname"><em>stereoParameters</em> = <code><a class="el" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a>()</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::vector< float > & </td>
|
||
<td class="paramname"><em>roiRatios</em> = <code>std::vector< float >()</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">unsigned char </td>
|
||
<td class="paramname"><em>confidenceThr</em> = <code>0</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Generates a set of point clouds from sensor data. </p>
|
||
<p>This function processes depth and image data from the provided <code><a class="el" href="classrtabmap_1_1SensorData.html" title="Container class for all sensor data captured at a specific time.">SensorData</a></code> object to generate point clouds. It supports both depth camera data (using a camera model) and stereo camera data (using disparity computation). It handles various preprocessing operations like decimation, applying regions of interest (ROIs), and transforming point clouds.</p>
|
||
<p>The function creates a point cloud for each camera model (or stereo camera model) in the <code><a class="el" href="classrtabmap_1_1SensorData.html" title="Container class for all sensor data captured at a specific time.">SensorData</a></code> and returns them in a vector of point cloud pointers.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">sensorData</td><td>A reference to the <code><a class="el" href="classrtabmap_1_1SensorData.html" title="Container class for all sensor data captured at a specific time.">SensorData</a></code> object that contains raw depth or image data, along with camera models. </td></tr>
|
||
<tr><td class="paramname">decimation</td><td>The decimation factor to downsample the data. A value of 0 means no decimation. The decimation factor should be a factor of the image width and height. </td></tr>
|
||
<tr><td class="paramname">maxDepth</td><td>The maximum depth value to be considered in the generated point clouds. </td></tr>
|
||
<tr><td class="paramname">minDepth</td><td>The minimum depth value to be considered in the generated point clouds. </td></tr>
|
||
<tr><td class="paramname">validIndices</td><td>An optional vector to store valid point indices for each point cloud. If provided, the function will populate it with indices of valid points in each corresponding cloud. </td></tr>
|
||
<tr><td class="paramname">stereoParameters</td><td>A map of parameters for stereo image processing, used to compute disparity. </td></tr>
|
||
<tr><td class="paramname">roiRatios</td><td>A vector containing four float values representing the region of interest (ROI) in normalized coordinates (left, right, top, bottom). If not specified or set to [0 0 0 0], the entire image is used.</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>A vector of <code>pcl::PointCloud<pcl::PointXYZ>::Ptr</code> representing the generated point clouds in base coordinate frame.</dd></dl>
|
||
<dl class="section note"><dt>Note</dt><dd><ul>
|
||
<li>The <code>sensorData</code> object must contain either depth data (for depth cameras) or image data with a right image (for stereo cameras).</li>
|
||
<li>The ROI ratios must be in the range [0.0f, 1.0f] and will be applied to both depth and image data if provided.</li>
|
||
<li>If the ROI cannot be divided evenly by the decimation factor, the function will ignore the ROI and log an error.</li>
|
||
<li>If the stereo data is provided, disparity will be computed from the left and right images, and the resulting disparity image will be used to generate 3D point clouds. </li>
|
||
</ul>
|
||
</dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="aacda489f2336d8edb4e982f61f55cc66" name="aacda489f2336d8edb4e982f61f55cc66"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#aacda489f2336d8edb4e982f61f55cc66">◆ </a></span>cloudFromSensorData()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT rtabmap::util3d::cloudFromSensorData </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const <a class="el" href="classrtabmap_1_1SensorData.html">SensorData</a> & </td>
|
||
<td class="paramname"><em>sensorData</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>decimation</em> = <code>1</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>maxDepth</em> = <code>0.0f</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>minDepth</em> = <code>0.0f</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">std::vector< int > * </td>
|
||
<td class="paramname"><em>validIndices</em> = <code>0</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const <a class="el" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a> & </td>
|
||
<td class="paramname"><em>stereoParameters</em> = <code><a class="el" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a>()</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::vector< float > & </td>
|
||
<td class="paramname"><em>roiRatios</em> = <code>std::vector< float >()</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">unsigned char </td>
|
||
<td class="paramname"><em>confidenceThr</em> = <code>0</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Generates a point cloud from sensor data. </p>
|
||
<p>This function processes the provided sensor data, generates point clouds for each sensor, and combines them into a single point cloud. It handles both single-camera and stereo data by calling the <code>cloudsFromSensorData</code> function. The resulting point cloud can be decimated according to the specified parameter and filtered based on depth constraints.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">sensorData</td><td>The sensor data containing depth and image information. This data is used to generate the point clouds. </td></tr>
|
||
<tr><td class="paramname">decimation</td><td>The factor by which the generated point cloud should be decimated. A value of 1 means no decimation. The decimation factor should be a factor of the image width and height. </td></tr>
|
||
<tr><td class="paramname">maxDepth</td><td>The maximum depth allowed for valid points in the generated cloud. </td></tr>
|
||
<tr><td class="paramname">minDepth</td><td>The minimum depth allowed for valid points in the generated cloud. </td></tr>
|
||
<tr><td class="paramname">validIndices</td><td>Optional vector to store the indices of valid points in the generated point cloud. </td></tr>
|
||
<tr><td class="paramname">stereoParameters</td><td>The stereo parameters that may be used when dealing with stereo camera data. </td></tr>
|
||
<tr><td class="paramname">roiRatios</td><td>A vector containing four float values representing the region of interest (ROI) ratios (left, right, top, bottom) to crop the sensor images before processing. The values should be between 0 and 1. If not specified or set to [0 0 0 0], the entire image is used.</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>A pointer to a <code>pcl::PointCloud<pcl::PointXYZ></code> containing the combined point cloud generated from the sensor data. The point cloud is transformed in base coordinate frame.</dd></dl>
|
||
<dl class="section note"><dt>Note</dt><dd>The function will automatically handle the removal of NaN points from the cloud. If the <code>validIndices</code> pointer is provided, it will be filled with the indices of valid points. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a2155fca440675ca9697a2fe7b2efb30e" name="a2155fca440675ca9697a2fe7b2efb30e"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a2155fca440675ca9697a2fe7b2efb30e">◆ </a></span>cloudsRGBFromSensorData()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">std::vector< pcl::PointCloud< pcl::PointXYZRGB >::Ptr > RTABMAP_CORE_EXPORT rtabmap::util3d::cloudsRGBFromSensorData </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const <a class="el" href="classrtabmap_1_1SensorData.html">SensorData</a> & </td>
|
||
<td class="paramname"><em>sensorData</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>decimation</em> = <code>1</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>maxDepth</em> = <code>0.0f</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>minDepth</em> = <code>0.0f</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">std::vector< pcl::IndicesPtr > * </td>
|
||
<td class="paramname"><em>validIndices</em> = <code>0</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const <a class="el" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a> & </td>
|
||
<td class="paramname"><em>stereoParameters</em> = <code><a class="el" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a>()</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::vector< float > & </td>
|
||
<td class="paramname"><em>roiRatios</em> = <code>std::vector< float >()</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">unsigned char </td>
|
||
<td class="paramname"><em>confidenceThr</em> = <code>0</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Generates a point cloud with RGB color data from sensor data. </p>
|
||
<p>This function creates RGB point clouds from depth and color images obtained from a sensor. It supports both single camera models and stereo camera models. The RGB and depth images are processed and converted into a 3D point cloud using the provided camera models. Optionally, Region-of-Interest (ROI) ratios can be applied to the images to focus on specific areas.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">sensorData</td><td>The sensor data that contains the raw image and depth information. </td></tr>
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">decimation</td><td>The decimation factor to reduce the resolution of the point cloud. </td></tr>
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">maxDepth</td><td>The maximum depth to consider while generating the point cloud. </td></tr>
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">minDepth</td><td>The minimum depth to consider while generating the point cloud. </td></tr>
|
||
<tr><td class="paramdir">[out]</td><td class="paramname">validIndices</td><td>A pointer to a vector of indices that indicate the valid points in the cloud. If nullptr, no indices will be returned. </td></tr>
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">stereoParameters</td><td>A map of parameters used for stereo vision processing (if stereo camera models are used). </td></tr>
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">roiRatios</td><td>A vector of 4 floats that represent the region of interest (ROI) ratios (left, right, top, bottom) for cropping the image. Each value should be between 0.0 and 1.0, representing the normalized position of the ROI. A value of 0.0 means no cropping, and a value of 1.0 means full cropping.</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>A vector of point clouds containing the RGB point cloud data for each camera model. Each point cloud is represented by pcl::PointCloud<pcl::PointXYZRGB>::Ptr. The point clouds are transformed in base coordinate frame.</dd></dl>
|
||
<dl class="section note"><dt>Note</dt><dd>If the sensor data does not contain both image and depth data, or if no camera models are available, an empty vector will be returned.</dd>
|
||
<dd>
|
||
If stereo camera models are used, the left and right images are processed for disparity computation.</dd></dl>
|
||
<dl class="section warning"><dt>Warning</dt><dd>The function performs several assertions and checks, such as ensuring that the image and depth images are divisible by the number of camera models, and that the ROI ratios are compatible with the decimation factor. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a29ece82e01f041cab271fe9322cf9745" name="a29ece82e01f041cab271fe9322cf9745"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a29ece82e01f041cab271fe9322cf9745">◆ </a></span>cloudRGBFromSensorData()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">pcl::PointCloud< pcl::PointXYZRGB >::Ptr RTABMAP_CORE_EXPORT rtabmap::util3d::cloudRGBFromSensorData </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const <a class="el" href="classrtabmap_1_1SensorData.html">SensorData</a> & </td>
|
||
<td class="paramname"><em>sensorData</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>decimation</em> = <code>1</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>maxDepth</em> = <code>0.0f</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>minDepth</em> = <code>0.0f</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">std::vector< int > * </td>
|
||
<td class="paramname"><em>validIndices</em> = <code>0</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const <a class="el" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a> & </td>
|
||
<td class="paramname"><em>stereoParameters</em> = <code><a class="el" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a>()</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::vector< float > & </td>
|
||
<td class="paramname"><em>roiRatios</em> = <code>std::vector< float >()</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">unsigned char </td>
|
||
<td class="paramname"><em>confidenceThr</em> = <code>0</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Generates a point cloud of type pcl::PointXYZRGB from sensor data. </p>
|
||
<p>This function processes sensor data (such as RGB images and depth images) to generate a point cloud of type pcl::PointXYZRGB. It can handle stereo or multiple camera models, apply decimation, and filter points based on the maximum and minimum depth values. Optionally, it can also apply region-of-interest (ROI) ratios.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">sensorData</td><td>The sensor data containing raw RGB and depth images, as well as camera models. </td></tr>
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">decimation</td><td>The decimation factor to reduce the point cloud size. Default is 1. </td></tr>
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">maxDepth</td><td>The maximum depth value (points beyond this distance will be ignored). </td></tr>
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">minDepth</td><td>The minimum depth value (points closer than this distance will be ignored). </td></tr>
|
||
<tr><td class="paramdir">[out]</td><td class="paramname">validIndices</td><td>A vector to store the indices of the valid points in the generated point cloud. It will be resized to the point cloud's size. </td></tr>
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">stereoParameters</td><td>A map of stereo camera parameters, used when dealing with stereo images. </td></tr>
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">roiRatios</td><td>A vector of four float values representing the region-of-interest (ROI) ratios for cropping the depth and RGB images (left right top bottom). If not specified or set to [0 0 0 0], the entire image is used.</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>A pointer to a pcl::PointCloud<pcl::PointXYZRGB> containing the generated point cloud. If multiple clouds are generated, they are merged into a single cloud. The validIndices vector is populated if it is provided. The point cloud(s) is/are transformed in base coordinate frame.</dd></dl>
|
||
<dl class="section note"><dt>Note</dt><dd>If the sensor data is stereo, the function will use stereo processing to generate the point cloud. If multiple camera models are provided, it generates and merges the point clouds from each camera. </dd>
|
||
<dd>
|
||
The validIndices vector will be resized and populated if it is passed as an argument. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a39d4adb63b4bd06592e2c65641a32558" name="a39d4adb63b4bd06592e2c65641a32558"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a39d4adb63b4bd06592e2c65641a32558">◆ </a></span>laserScanFromDepthImage()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">pcl::PointCloud< pcl::PointXYZ > RTABMAP_CORE_EXPORT rtabmap::util3d::laserScanFromDepthImage </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const cv::Mat & </td>
|
||
<td class="paramname"><em>depthImage</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>fx</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>fy</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>cx</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>cy</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>maxDepth</em> = <code>0</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>minDepth</em> = <code>0</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> & </td>
|
||
<td class="paramname"><em>localTransform</em> = <code><a class="el" href="classrtabmap_1_1Transform.html#a8ea4368f2018d751d2733038081d56a2">Transform::getIdentity</a>()</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Converts the middle row of a depth image into a laser scan (point cloud) using camera intrinsics and a local transformation. </p>
|
||
<p>This function projects each pixel from a depth image into 3D space using the camera intrinsics (focal lengths and principal point) and applies a transformation to each point in 3D space. It filters out points that are outside the specified depth range (maxDepth, minDepth) and excludes any invalid points.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">depthImage</td><td>The input depth image (single channel, 16-bit unsigned or 32-bit floating point). </td></tr>
|
||
<tr><td class="paramname">fx</td><td>The focal length in the x-axis (in pixels). </td></tr>
|
||
<tr><td class="paramname">fy</td><td>The focal length in the y-axis (in pixels). </td></tr>
|
||
<tr><td class="paramname">cx</td><td>The optical center in the x-axis (in pixels). </td></tr>
|
||
<tr><td class="paramname">cy</td><td>The optical center in the y-axis (in pixels). </td></tr>
|
||
<tr><td class="paramname">maxDepth</td><td>The maximum depth value (in meters). Points with depth larger than this will be discarded. If 0, no maximum depth filtering is applied. </td></tr>
|
||
<tr><td class="paramname">minDepth</td><td>The minimum depth value (in meters). Points with depth smaller than this will be discarded. </td></tr>
|
||
<tr><td class="paramname">localTransform</td><td>A transformation that will be applied to all points in the resulting point cloud. This can be an identity transformation if not needed.</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>pcl::PointCloud<pcl::PointXYZ> The resulting point cloud where each point represents a 3D coordinate projected from the depth image.</dd></dl>
|
||
<dl class="section note"><dt>Note</dt><dd>Assumes the input depth image is either CV_16UC1 (16-bit unsigned integers) or CV_32FC1 (32-bit floating-point). </dd>
|
||
<dd>
|
||
Assumes the camera is pointing parallel to ground (e.g., forward looking camera). </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a07f8a125805ac013039b7fa0ddb623e0" name="a07f8a125805ac013039b7fa0ddb623e0"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a07f8a125805ac013039b7fa0ddb623e0">◆ </a></span>laserScanFromDepthImages()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">pcl::PointCloud< pcl::PointXYZ > RTABMAP_CORE_EXPORT rtabmap::util3d::laserScanFromDepthImages </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const cv::Mat & </td>
|
||
<td class="paramname"><em>depthImages</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::vector< <a class="el" href="classrtabmap_1_1CameraModel.html">CameraModel</a> > & </td>
|
||
<td class="paramname"><em>cameraModels</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>maxDepth</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>minDepth</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Converts multiple depth images (e.g., from a stereo or multi-camera setup) into a single laser scan (point cloud). </p>
|
||
<p>This function processes multiple depth images, one for each camera in a stereo or multi-camera setup. It uses the camera models to project the depth values of the middle row to 3D space and combines them into a single point cloud. Each camera's depth image is projected using the associated camera intrinsics, and the points are transformed according to the camera's local transformation.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">depthImages</td><td>The input depth images concatenated horizontally. Each camera's depth image is assumed to be of equal width and placed side by side. </td></tr>
|
||
<tr><td class="paramname">cameraModels</td><td>A vector of camera models, one for each depth image in the input. Each model contains the intrinsics and the local transformation for a specific camera. </td></tr>
|
||
<tr><td class="paramname">maxDepth</td><td>The maximum depth value (in meters). Points with depth larger than this will be discarded. If 0, no maximum depth filtering is applied. </td></tr>
|
||
<tr><td class="paramname">minDepth</td><td>The minimum depth value (in meters). Points with depth smaller than this will be discarded.</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>pcl::PointCloud<pcl::PointXYZ> The resulting point cloud where each point represents a 3D coordinate projected from the depth images.</dd></dl>
|
||
<dl class="section note"><dt>Note</dt><dd>This function assumes that the number of camera models corresponds to the number of sub-images in the input depth images. </dd>
|
||
<dd>
|
||
Each depth image is projected using the corresponding camera model in the <code>cameraModels</code> array. </dd>
|
||
<dd>
|
||
Assumes the cameras are pointing parallel to ground (e.g., forward and backward looking cameras). </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="ad857475644e8de6d7d84b920637b2018" name="ad857475644e8de6d7d84b920637b2018"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#ad857475644e8de6d7d84b920637b2018">◆ </a></span>getMinMax3D() <span class="overload">[1/2]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">void RTABMAP_CORE_EXPORT rtabmap::util3d::getMinMax3D </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const cv::Mat & </td>
|
||
<td class="paramname"><em>laserScan</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">cv::Point3f & </td>
|
||
<td class="paramname"><em>min</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">cv::Point3f & </td>
|
||
<td class="paramname"><em>max</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Computes the minimum and maximum 3D points from a laser scan matrix. </p>
|
||
<p>This function computes the minimum and maximum values along each of the X, Y, and Z axes in the laser scan matrix. The laser scan is assumed to be a matrix of type <code>CV_32FC2</code>, <code>CV_32FC3</code>, <code>CV_32FC4</code>, <code>CV_32FC5</code>, <code>CV_32FC6</code>, or <code>CV_32FC7</code>, where each row represents a point in space. The matrix is expected to have 3 or more channels for 3D data, but it can have additional channels (e.g., intensity, color, etc.).</p>
|
||
<p>The Z-coordinate is only considered if the matrix has at least 3 channels (3D scan). If the scan has fewer than 3 channels, the Z-coordinate is set to 0.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">laserScan</td><td>The input laser scan data, which must be a matrix of type <code>CV_32FC2</code>, <code>CV_32FC3</code>, <code>CV_32FC4</code>, <code>CV_32FC5</code>, <code>CV_32FC6</code>, or <code>CV_32FC7</code> (with at least 2 channels, and at least 3 channels for 3D). </td></tr>
|
||
<tr><td class="paramname">min</td><td>A reference to a <code>cv::Point3f</code> object where the minimum 3D point (X, Y, Z) will be stored. </td></tr>
|
||
<tr><td class="paramname">max</td><td>A reference to a <code>cv::Point3f</code> object where the maximum 3D point (X, Y, Z) will be stored.</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="exception"><dt>Exceptions</dt><dd>
|
||
<table class="exception">
|
||
<tr><td class="paramname">exception</td><td>if the input matrix is empty or has an invalid type. </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="afc22f82c00f6dcc8a4ec1963891f4b7e" name="afc22f82c00f6dcc8a4ec1963891f4b7e"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#afc22f82c00f6dcc8a4ec1963891f4b7e">◆ </a></span>getMinMax3D() <span class="overload">[2/2]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">void RTABMAP_CORE_EXPORT rtabmap::util3d::getMinMax3D </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const cv::Mat & </td>
|
||
<td class="paramname"><em>laserScan</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">pcl::PointXYZ & </td>
|
||
<td class="paramname"><em>min</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">pcl::PointXYZ & </td>
|
||
<td class="paramname"><em>max</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Computes the minimum and maximum 3D points from a laser scan matrix and stores the results in pcl::PointXYZ. </p>
|
||
<p>This function calls the <code>getMinMax3D</code> function that operates on <code>cv::Point3f</code> and converts the results to <code>pcl::PointXYZ</code> format. It is useful when working with PCL data structures for 3D processing.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">laserScan</td><td>The input laser scan data, which must be a matrix of type <code>CV_32FC2</code>, <code>CV_32FC3</code>, <code>CV_32FC4</code>, <code>CV_32FC5</code>, <code>CV_32FC6</code>, or <code>CV_32FC7</code> (with at least 2 channels, and at least 3 channels for 3D). </td></tr>
|
||
<tr><td class="paramname">min</td><td>A reference to a <code>pcl::PointXYZ</code> object where the minimum 3D point (X, Y, Z) will be stored. </td></tr>
|
||
<tr><td class="paramname">max</td><td>A reference to a <code>pcl::PointXYZ</code> object where the maximum 3D point (X, Y, Z) will be stored.</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="exception"><dt>Exceptions</dt><dd>
|
||
<table class="exception">
|
||
<tr><td class="paramname">exception</td><td>if the input matrix is empty or has an invalid type. </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a42fb0c483553db3b06e78d85106b8ee5" name="a42fb0c483553db3b06e78d85106b8ee5"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a42fb0c483553db3b06e78d85106b8ee5">◆ </a></span>projectDisparityTo3D() <span class="overload">[1/2]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">cv::Point3f RTABMAP_CORE_EXPORT rtabmap::util3d::projectDisparityTo3D </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const cv::Point2f & </td>
|
||
<td class="paramname"><em>pt</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>disparity</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const <a class="el" href="classrtabmap_1_1StereoCameraModel.html">StereoCameraModel</a> & </td>
|
||
<td class="paramname"><em>model</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Projects a 2D point from the left image and its disparity into 3D space. </p>
|
||
<p>This function converts a 2D point from the left image and its corresponding disparity value into a 3D point in space using the provided stereo camera model.</p>
|
||
<p>The conversion follows the formula: </p><p class="formulaDsp">
|
||
<img class="formulaDsp" alt="\[ Z = \frac{baseline \times f}{disparity + (cx1 - cx0)} \]" src="form_6.png"/>
|
||
</p>
|
||
<p> Where:</p><ul>
|
||
<li><code>baseline</code> is the distance between the left and right camera centers</li>
|
||
<li><code>f</code> is the focal length of the camera</li>
|
||
<li><code>cx1</code> and <code>cx0</code> are the x-coordinates of the principal points of the right and left cameras, respectively.</li>
|
||
</ul>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">pt</td><td>The 2D point in the left image (in pixels). </td></tr>
|
||
<tr><td class="paramname">disparity</td><td>The disparity value for the corresponding point (in pixels). </td></tr>
|
||
<tr><td class="paramname">model</td><td>The stereo camera model containing the intrinsic parameters.</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>A 3D point (x, y, z) in space corresponding to the input 2D point and disparity. If the disparity is invalid or any required camera parameters are not set, it returns a point containing NaN values.</dd></dl>
|
||
<dl class="section note"><dt>Note</dt><dd>This function assumes that the disparity value is positive, and that the baseline and focal lengths are also positive. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a05a022ff5229033fc248bc497edd5449" name="a05a022ff5229033fc248bc497edd5449"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a05a022ff5229033fc248bc497edd5449">◆ </a></span>projectDisparityTo3D() <span class="overload">[2/2]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">cv::Point3f RTABMAP_CORE_EXPORT rtabmap::util3d::projectDisparityTo3D </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const cv::Point2f & </td>
|
||
<td class="paramname"><em>pt</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const cv::Mat & </td>
|
||
<td class="paramname"><em>disparity</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const <a class="el" href="classrtabmap_1_1StereoCameraModel.html">StereoCameraModel</a> & </td>
|
||
<td class="paramname"><em>model</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Projects a 2D point from the left image and the disparity map into 3D space. </p>
|
||
<p>This function converts a 2D point from the left image and the disparity value from a disparity map into a 3D point in space using the provided stereo camera model.</p>
|
||
<p>The function first retrieves the disparity value for the given 2D point from the disparity map. It then calls the other <code>projectDisparityTo3D</code> function to perform the conversion to 3D.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">pt</td><td>The 2D point in the left image (in pixels). </td></tr>
|
||
<tr><td class="paramname">disparity</td><td>The disparity map (CV_32FC1 or CV_16SC1) from which the disparity value for the point is retrieved. </td></tr>
|
||
<tr><td class="paramname">model</td><td>The stereo camera model containing the intrinsic parameters.</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>A 3D point (x, y, z) in space corresponding to the input 2D point and the disparity value. If the point is outside the disparity map bounds or if the disparity value is invalid, it returns a point containing NaN values.</dd></dl>
|
||
<dl class="section note"><dt>Note</dt><dd>This function checks that the input disparity matrix is not empty and has an appropriate type (either CV_32FC1 or CV_16SC1). </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a826310ce938a13b9fff64f71e7ecc057" name="a826310ce938a13b9fff64f71e7ecc057"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a826310ce938a13b9fff64f71e7ecc057">◆ </a></span>projectCloudToCamera() <span class="overload">[1/3]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">cv::Mat RTABMAP_CORE_EXPORT rtabmap::util3d::projectCloudToCamera </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const cv::Size & </td>
|
||
<td class="paramname"><em>imageSize</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const cv::Mat & </td>
|
||
<td class="paramname"><em>cameraMatrixK</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const cv::Mat & </td>
|
||
<td class="paramname"><em>laserScan</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const <a class="el" href="classrtabmap_1_1Transform.html">rtabmap::Transform</a> & </td>
|
||
<td class="paramname"><em>cameraTransform</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Register a point cloud (laser scan) to the camera's frame of reference and return a registered depth image. </p>
|
||
<p>This function projects a laser scan (in /base_link coordinate system) into the camera frame of reference using the camera's intrinsic parameters and the camera's transform. The result is stored in a depth image (cv::Mat), where each pixel corresponds to the distance of the projected point in the camera frame.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">imageSize</td><td>The desired size of the output depth image (in pixels). </td></tr>
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">cameraMatrixK</td><td>The camera matrix (intrinsics), containing the focal lengths and principal points. </td></tr>
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">laserScan</td><td>A matrix of laser scan points. The type can be CV_32FC2 (2D), CV_32FC3, CV_32FC4, etc., where the points are assumed to be in the /base_link coordinate system. </td></tr>
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">cameraTransform</td><td>The transform from /base_link to /camera_link, used to adjust the point cloud to the camera's reference frame.</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>A cv::Mat object representing the registered depth image, with each pixel corresponding to the projected point's depth (z value) in the camera frame.</dd></dl>
|
||
<dl class="exception"><dt>Exceptions</dt><dd>
|
||
<table class="exception">
|
||
<tr><td class="paramname">exception</td><td>if the input cameraTransform is null, the laser scan is empty, or the cameraMatrixK has incorrect dimensions. </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a7dea084f1dbb77c8f5bc2a7241c3b566" name="a7dea084f1dbb77c8f5bc2a7241c3b566"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a7dea084f1dbb77c8f5bc2a7241c3b566">◆ </a></span>projectCloudToCamera() <span class="overload">[2/3]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">cv::Mat RTABMAP_CORE_EXPORT rtabmap::util3d::projectCloudToCamera </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const cv::Size & </td>
|
||
<td class="paramname"><em>imageSize</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const cv::Mat & </td>
|
||
<td class="paramname"><em>cameraMatrixK</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const pcl::PointCloud< pcl::PointXYZ >::Ptr </td>
|
||
<td class="paramname"><em>laserScan</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const <a class="el" href="classrtabmap_1_1Transform.html">rtabmap::Transform</a> & </td>
|
||
<td class="paramname"><em>cameraTransform</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Register a point cloud (laser scan) to the camera's frame of reference and return a registered depth image. </p>
|
||
<p>This function projects a laser scan (pcl::PointCloud) into the camera frame of reference using the camera's intrinsic parameters and the camera's transform. The result is stored in a depth image (cv::Mat), where each pixel corresponds to the distance of the projected point in the camera frame.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">imageSize</td><td>The desired size of the output depth image (in pixels). </td></tr>
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">cameraMatrixK</td><td>The camera matrix (intrinsics), containing the focal lengths and principal points. </td></tr>
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">laserScan</td><td>A pointer to a pcl::PointCloud<pcl::PointXYZ> object containing the laser scan points. The points are assumed to be in the /base_link coordinate system. </td></tr>
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">cameraTransform</td><td>The transform from /base_link to /camera_link, used to adjust the point cloud to the camera's reference frame.</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>A cv::Mat object representing the registered depth image, with each pixel corresponding to the projected point's depth (z value) in the camera frame.</dd></dl>
|
||
<dl class="exception"><dt>Exceptions</dt><dd>
|
||
<table class="exception">
|
||
<tr><td class="paramname">exception</td><td>if the input cameraTransform is null, the laser scan is empty, or the cameraMatrixK has incorrect dimensions. </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a285e01226d60613ffd77d929780069ba" name="a285e01226d60613ffd77d929780069ba"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a285e01226d60613ffd77d929780069ba">◆ </a></span>projectCloudToCamera() <span class="overload">[3/3]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">cv::Mat RTABMAP_CORE_EXPORT rtabmap::util3d::projectCloudToCamera </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const cv::Size & </td>
|
||
<td class="paramname"><em>imageSize</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const cv::Mat & </td>
|
||
<td class="paramname"><em>cameraMatrixK</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const pcl::PCLPointCloud2::Ptr </td>
|
||
<td class="paramname"><em>laserScan</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const <a class="el" href="classrtabmap_1_1Transform.html">rtabmap::Transform</a> & </td>
|
||
<td class="paramname"><em>cameraTransform</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Register a point cloud (laser scan) to the camera's frame of reference and return a registered depth image. </p>
|
||
<p>This function projects a laser scan (pcl::PCLPointCloud2) into the camera frame of reference using the camera's intrinsic parameters and the camera's transform. The result is stored in a depth image (cv::Mat), where each pixel corresponds to the distance of the projected point in the camera frame.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">imageSize</td><td>The desired size of the output depth image (in pixels). </td></tr>
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">cameraMatrixK</td><td>The camera matrix (intrinsics), containing the focal lengths and principal points. </td></tr>
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">laserScan</td><td>A pointer to a pcl::PCLPointCloud2 object containing the laser scan points. The points are assumed to be in the /base_link coordinate system. </td></tr>
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">cameraTransform</td><td>The transform from /base_link to /camera_link, used to adjust the point cloud to the camera's reference frame.</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>A cv::Mat object representing the registered depth image, with each pixel corresponding to the projected point's depth (z value) in the camera frame.</dd></dl>
|
||
<dl class="exception"><dt>Exceptions</dt><dd>
|
||
<table class="exception">
|
||
<tr><td class="paramname">exception</td><td>if the input cameraTransform is null, the laser scan is empty, or the cameraMatrixK has incorrect dimensions. </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a992c9dd2c6243261244e0650d3e98564" name="a992c9dd2c6243261244e0650d3e98564"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a992c9dd2c6243261244e0650d3e98564">◆ </a></span>fillProjectedCloudHoles()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">void RTABMAP_CORE_EXPORT rtabmap::util3d::fillProjectedCloudHoles </td>
|
||
<td>(</td>
|
||
<td class="paramtype">cv::Mat & </td>
|
||
<td class="paramname"><em>depthRegistered</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">bool </td>
|
||
<td class="paramname"><em>verticalDirection</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">bool </td>
|
||
<td class="paramname"><em>fillToBorder</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Fills holes (missing depth values) in a depth image by interpolating between non-zero values. </p>
|
||
<p>This function iterates through a depth image and fills holes by interpolating between the surrounding non-zero depth values. It works either vertically or horizontally, depending on the <code>verticalDirection</code> parameter. The interpolation method fills the missing values based on the linear slope between two valid depth values. Optionally, the interpolation can be extended to the border of the image if <code>fillToBorder</code> is set to <code>true</code>.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">registeredDepth</td><td>A matrix representing the registered depth image, where missing depth values are assumed to be zero. The matrix must be of type <code>CV_32FC1</code>. </td></tr>
|
||
<tr><td class="paramname">verticalDirection</td><td>If <code>true</code>, the holes are filled vertically (by column), otherwise the holes are filled horizontally (by row). </td></tr>
|
||
<tr><td class="paramname">fillToBorder</td><td>If <code>true</code>, the interpolation will fill the depth holes all the way to the border of the image (i.e., it will propagate the nearest valid depth to the edges of the image).</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section note"><dt>Note</dt><dd>The input <code>registeredDepth</code> matrix must be of type <code>CV_32FC1</code>, where depth values are stored as single-precision floating-point numbers. </dd>
|
||
<dd>
|
||
With <code>fillToBorder</code> enabled, the current implementation only fills up to last pixel, i.e., first/last rows or columns are not filled.</dd></dl>
|
||
<dl class="section warning"><dt>Warning</dt><dd>This function modifies the input <code>registeredDepth</code> matrix in place. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="ae145af1bf4955fa135bcf359fb1fe628" name="ae145af1bf4955fa135bcf359fb1fe628"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#ae145af1bf4955fa135bcf359fb1fe628">◆ </a></span>filterFloor()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">cv::Mat RTABMAP_CORE_EXPORT rtabmap::util3d::filterFloor </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const cv::Mat & </td>
|
||
<td class="paramname"><em>depth</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::vector< <a class="el" href="classrtabmap_1_1CameraModel.html">CameraModel</a> > & </td>
|
||
<td class="paramname"><em>cameraModels</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>threshold</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">cv::Mat * </td>
|
||
<td class="paramname"><em>depthBelow</em> = <code>0</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Filters out points below a certain threshold in a depth image based on camera models. </p>
|
||
<p>This function processes a depth image and filters out points below a specified threshold, which are assumed to belong to the floor. It does this by projecting the depth pixels into 3D space (base frame) using the camera models, and if the z-coordinate of the projected point is less than the threshold, the corresponding depth value is set to 0.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">depth</td><td>The input depth image to be filtered. The matrix should contain depth values in either <code>CV_16UC1</code> (unsigned short) or <code>CV_32FC1</code> (float) format. </td></tr>
|
||
<tr><td class="paramname">cameraModels</td><td>A vector of camera models used for reprojection. The camera models are used to convert the 2D image coordinates to 3D space. </td></tr>
|
||
<tr><td class="paramname">threshold</td><td>The z-threshold in meters, below which points are considered part of the floor and will be filtered out. </td></tr>
|
||
<tr><td class="paramname">depthBelow</td><td>A pointer to an optional output depth image where the filtered-out points (below the threshold) will be saved. If this is <code>nullptr</code>, no output is generated for filtered-out points.</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>A new depth image where points below the specified threshold are set to zero.</dd></dl>
|
||
<dl class="section note"><dt>Note</dt><dd><ul>
|
||
<li>The function assumes that the depth image has valid depth values.</li>
|
||
<li>If the input <code>depthBelow</code> is provided, it will contain the depth values for the points that were considered as floor points.</li>
|
||
<li>The function assumes that all camera models have the same resolution and are valid for reprojection.</li>
|
||
</ul>
|
||
</dd></dl>
|
||
<dl class="exception"><dt>Exceptions</dt><dd>
|
||
<table class="exception">
|
||
<tr><td class="paramname">std::invalid_argument</td><td>if the camera models are empty or invalid. </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="aa5a81a30a05507cb5d222f2f23c111ea" name="aa5a81a30a05507cb5d222f2f23c111ea"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#aa5a81a30a05507cb5d222f2f23c111ea">◆ </a></span>projectCloudToCameras() <span class="overload">[1/2]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">std::vector< std::pair< std::pair< int, int >, pcl::PointXY > > RTABMAP_CORE_EXPORT rtabmap::util3d::projectCloudToCameras </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const pcl::PointCloud< pcl::PointXYZRGBNormal > & </td>
|
||
<td class="paramname"><em>cloud</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > & </td>
|
||
<td class="paramname"><em>cameraPoses</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::map< int, std::vector< <a class="el" href="classrtabmap_1_1CameraModel.html">CameraModel</a> > > & </td>
|
||
<td class="paramname"><em>cameraModels</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>maxDistance</em> = <code>0.0f</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>maxAngle</em> = <code>0.0f</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>maxDepthError</em> = <code>0.0f</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::vector< float > & </td>
|
||
<td class="paramname"><em>roiRatios</em> = <code>std::vector< float >()</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const cv::Mat & </td>
|
||
<td class="paramname"><em>projMask</em> = <code>cv::Mat()</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">bool </td>
|
||
<td class="paramname"><em>distanceToCamPolicy</em> = <code>false</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const <a class="el" href="classrtabmap_1_1ProgressState.html">ProgressState</a> * </td>
|
||
<td class="paramname"><em>state</em> = <code>0</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Projects a 3D point cloud to the best camera (NodeID -> CameraIndex) for each point based on a policy. </p>
|
||
<p>This function takes a point cloud of type <code>pcl::PointXYZRGBNormal</code> and projects each point to the best camera that sees the point. The "best" camera is selected based on the distance, angle, and other parameters like Region of Interest (ROI) ratios and projection mask.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">cloud</td><td>The input point cloud of type <code>pcl::PointXYZRGBNormal</code> containing 3D points. </td></tr>
|
||
<tr><td class="paramname">cameraPoses</td><td>A map of camera IDs to their respective poses (transformations). </td></tr>
|
||
<tr><td class="paramname">cameraModels</td><td>A map of camera IDs to their camera models (internal camera parameters). </td></tr>
|
||
<tr><td class="paramname">maxDistance</td><td>Maximum allowable distance from the camera for a point to be considered. </td></tr>
|
||
<tr><td class="paramname">maxAngle</td><td>Maximum allowable angle between the camera and the point normal for it to be considered. </td></tr>
|
||
<tr><td class="paramname">roiRatios</td><td>A vector of four floats defining the region of interest ratios for the camera image. See <a class="el" href="group__RoiComputation.html#ga79d3f93673fb236980f0be532695f478" title="Computes a region of interest (ROI) in the image using string-defined ratios.">util2d::computeRoi()</a> for format. </td></tr>
|
||
<tr><td class="paramname">projMask</td><td>A binary mask for projection, which will be checked to ensure the point lies within the mask. </td></tr>
|
||
<tr><td class="paramname">distanceToCamPolicy</td><td>If true, the distance to the camera is considered in the decision of the best camera, otherwise distance to center of the camera is used. </td></tr>
|
||
<tr><td class="paramname">state</td><td>A <code><a class="el" href="classrtabmap_1_1ProgressState.html">ProgressState</a></code> object to provide feedback on progress or cancellation.</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>A vector of pairs, where each pair contains a pair of camera ID and camera index, and a 2D UV coordinate. The UV coordinate represents the projection of each point onto the best camera. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="ae29c5a7ba359682e2430f55318226b39" name="ae29c5a7ba359682e2430f55318226b39"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#ae29c5a7ba359682e2430f55318226b39">◆ </a></span>projectCloudToCameras() <span class="overload">[2/2]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">std::vector< std::pair< std::pair< int, int >, pcl::PointXY > > RTABMAP_CORE_EXPORT rtabmap::util3d::projectCloudToCameras </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const pcl::PointCloud< pcl::PointXYZINormal > & </td>
|
||
<td class="paramname"><em>cloud</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > & </td>
|
||
<td class="paramname"><em>cameraPoses</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::map< int, std::vector< <a class="el" href="classrtabmap_1_1CameraModel.html">CameraModel</a> > > & </td>
|
||
<td class="paramname"><em>cameraModels</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>maxDistance</em> = <code>0.0f</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>maxAngle</em> = <code>0.0f</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>maxDepthError</em> = <code>0.0f</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::vector< float > & </td>
|
||
<td class="paramname"><em>roiRatios</em> = <code>std::vector< float >()</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const cv::Mat & </td>
|
||
<td class="paramname"><em>projMask</em> = <code>cv::Mat()</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">bool </td>
|
||
<td class="paramname"><em>distanceToCamPolicy</em> = <code>false</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const <a class="el" href="classrtabmap_1_1ProgressState.html">ProgressState</a> * </td>
|
||
<td class="paramname"><em>state</em> = <code>0</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Projects a 3D point cloud to the best camera (NodeID -> CameraIndex) for each point based on a policy. </p>
|
||
<p>This function takes a point cloud of type <code>pcl::PointXYZINormal</code> and projects each point to the best camera that sees the point. The "best" camera is selected based on the distance, angle, and other parameters like Region of Interest (ROI) ratios and projection mask.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">cloud</td><td>The input point cloud of type <code>pcl::PointXYZINormal</code> containing 3D points. </td></tr>
|
||
<tr><td class="paramname">cameraPoses</td><td>A map of camera IDs to their respective poses (transformations). </td></tr>
|
||
<tr><td class="paramname">cameraModels</td><td>A map of camera IDs to their camera models (internal camera parameters). </td></tr>
|
||
<tr><td class="paramname">maxDistance</td><td>Maximum allowable distance from the camera for a point to be considered. </td></tr>
|
||
<tr><td class="paramname">maxAngle</td><td>Maximum allowable angle between the camera and the point normal for it to be considered. </td></tr>
|
||
<tr><td class="paramname">roiRatios</td><td>A vector of four floats defining the region of interest ratios for the camera image. See <a class="el" href="group__RoiComputation.html#ga79d3f93673fb236980f0be532695f478" title="Computes a region of interest (ROI) in the image using string-defined ratios.">util2d::computeRoi()</a> for format. </td></tr>
|
||
<tr><td class="paramname">projMask</td><td>A binary mask for projection, which will be checked to ensure the point lies within the mask. </td></tr>
|
||
<tr><td class="paramname">distanceToCamPolicy</td><td>If true, the distance to the camera is considered in the decision of the best camera, otherwise distance to center of the camera is used. </td></tr>
|
||
<tr><td class="paramname">state</td><td>A <code><a class="el" href="classrtabmap_1_1ProgressState.html">ProgressState</a></code> object to provide feedback on progress or cancellation.</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>A vector of pairs, where each pair contains a pair of camera ID and camera index, and a 2D UV coordinate. The UV coordinate represents the projection of each point onto the best camera. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="acc048e10b70e3ad3efb299926e575020" name="acc048e10b70e3ad3efb299926e575020"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#acc048e10b70e3ad3efb299926e575020">◆ </a></span>isFinite()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">bool RTABMAP_CORE_EXPORT rtabmap::util3d::isFinite </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const cv::Point3f & </td>
|
||
<td class="paramname"><em>pt</em></td><td>)</td>
|
||
<td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Checks if all coordinates of a 3D point are finite. </p>
|
||
<p>This function verifies that the x, y, and z components of the given <code>cv::Point3f</code> are all finite values (i.e., not NaN or infinite).</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">pt</td><td>The 3D point to check. </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>true if all components of the point are finite, false otherwise. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a863268b894de375aa45485dafe52dd7b" name="a863268b894de375aa45485dafe52dd7b"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a863268b894de375aa45485dafe52dd7b">◆ </a></span>concatenateClouds() <span class="overload">[1/2]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT rtabmap::util3d::concatenateClouds </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const std::list< pcl::PointCloud< pcl::PointXYZ >::Ptr > & </td>
|
||
<td class="paramname"><em>clouds</em></td><td>)</td>
|
||
<td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Concatenates a list of PointXYZ point clouds into a single point cloud. </p>
|
||
<p>This function takes a list of shared pointers to <code>pcl::PointCloud<pcl::PointXYZ></code> objects, and merges them into a single point cloud by appending the points of each input cloud.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">clouds</td><td>A list of pointers to PointXYZ point clouds to concatenate. </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>A new <code>pcl::PointCloud<pcl::PointXYZ>::Ptr</code> containing all the points from the input clouds. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a909a600c90d8bc4f77b62ff21a97ddc1" name="a909a600c90d8bc4f77b62ff21a97ddc1"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a909a600c90d8bc4f77b62ff21a97ddc1">◆ </a></span>concatenateClouds() <span class="overload">[2/2]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">pcl::PointCloud< pcl::PointXYZRGB >::Ptr RTABMAP_CORE_EXPORT rtabmap::util3d::concatenateClouds </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const std::list< pcl::PointCloud< pcl::PointXYZRGB >::Ptr > & </td>
|
||
<td class="paramname"><em>clouds</em></td><td>)</td>
|
||
<td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Concatenates a list of PointXYZRGB point clouds into a single point cloud. </p>
|
||
<p>This function takes a list of shared pointers to <code>pcl::PointCloud<pcl::PointXYZRGB></code> objects, and merges them into a single point cloud by appending the points of each input cloud.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">clouds</td><td>A list of pointers to PointXYZRGB point clouds to concatenate. </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>A new <code>pcl::PointCloud<pcl::PointXYZRGB>::Ptr</code> containing all the points from the input clouds. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="aff3c61a08b0fcad7f1c3f7c847190969" name="aff3c61a08b0fcad7f1c3f7c847190969"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#aff3c61a08b0fcad7f1c3f7c847190969">◆ </a></span>concatenate() <span class="overload">[1/2]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">pcl::IndicesPtr RTABMAP_CORE_EXPORT rtabmap::util3d::concatenate </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const std::vector< pcl::IndicesPtr > & </td>
|
||
<td class="paramname"><em>indices</em></td><td>)</td>
|
||
<td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Concatenates multiple sets of indices into a single index vector. </p>
|
||
<p>This function takes a vector of shared pointers to PCL index vectors and combines them into a single shared pointer containing all indices in the same order as they appear in the input.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">indices</td><td>A vector of <code>pcl::IndicesPtr</code> (shared pointers to index vectors). </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>A single <code>pcl::IndicesPtr</code> containing the concatenated indices.</dd></dl>
|
||
<dl class="section note"><dt>Note</dt><dd>The output order preserves the original order of indices from each input set.</dd></dl>
|
||
<dl class="section see"><dt>See also</dt><dd><a class="el" href="namespacertabmap_1_1util3d.html#ac6c2019b1dad806d0c593e2ee3c21185" title="Concatenates two sets of indices into one.">concatenate(const pcl::IndicesPtr &, const pcl::IndicesPtr &)</a> </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="ac6c2019b1dad806d0c593e2ee3c21185" name="ac6c2019b1dad806d0c593e2ee3c21185"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#ac6c2019b1dad806d0c593e2ee3c21185">◆ </a></span>concatenate() <span class="overload">[2/2]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">pcl::IndicesPtr RTABMAP_CORE_EXPORT rtabmap::util3d::concatenate </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const pcl::IndicesPtr & </td>
|
||
<td class="paramname"><em>indicesA</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const pcl::IndicesPtr & </td>
|
||
<td class="paramname"><em>indicesB</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Concatenates two sets of indices into one. </p>
|
||
<p>This function creates a new index vector containing all indices from <code>indicesA</code> followed by all indices from <code>indicesB</code>.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">indicesA</td><td>The first set of indices to include. </td></tr>
|
||
<tr><td class="paramname">indicesB</td><td>The second set of indices to append. </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>A <code>pcl::IndicesPtr</code> containing the combined indices from both inputs.</dd></dl>
|
||
<dl class="section note"><dt>Note</dt><dd>The input index vectors are not modified.</dd></dl>
|
||
<dl class="section see"><dt>See also</dt><dd><a class="el" href="namespacertabmap_1_1util3d.html#aff3c61a08b0fcad7f1c3f7c847190969" title="Concatenates multiple sets of indices into a single index vector.">concatenate(const std::vector<pcl::IndicesPtr> &)</a> </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a4e297ff4baacb0c658d7481eef5201a6" name="a4e297ff4baacb0c658d7481eef5201a6"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a4e297ff4baacb0c658d7481eef5201a6">◆ </a></span>savePCDWords() <span class="overload">[1/2]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">void RTABMAP_CORE_EXPORT rtabmap::util3d::savePCDWords </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const std::string & </td>
|
||
<td class="paramname"><em>fileName</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::multimap< int, pcl::PointXYZ > & </td>
|
||
<td class="paramname"><em>words</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> & </td>
|
||
<td class="paramname"><em>transform</em> = <code><a class="el" href="classrtabmap_1_1Transform.html#a8ea4368f2018d751d2733038081d56a2">Transform::getIdentity</a>()</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Saves 3D word points to a PCD file, applying a transform to each point. </p>
|
||
<p>This function takes a multimap of word identifiers and corresponding 3D PCL points, applies the given transform to each point, and saves the resulting point cloud to the specified PCD file.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">fileName</td><td>The path to the output PCD file. </td></tr>
|
||
<tr><td class="paramname">words</td><td>A multimap containing word IDs and their associated pcl::PointXYZ coordinates. </td></tr>
|
||
<tr><td class="paramname">transform</td><td>A transform to apply to each 3D point before saving. </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="abf6955904a45f28187e73aa1f4c409e0" name="abf6955904a45f28187e73aa1f4c409e0"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#abf6955904a45f28187e73aa1f4c409e0">◆ </a></span>savePCDWords() <span class="overload">[2/2]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">void RTABMAP_CORE_EXPORT rtabmap::util3d::savePCDWords </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const std::string & </td>
|
||
<td class="paramname"><em>fileName</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::multimap< int, cv::Point3f > & </td>
|
||
<td class="paramname"><em>words</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> & </td>
|
||
<td class="paramname"><em>transform</em> = <code><a class="el" href="classrtabmap_1_1Transform.html#a8ea4368f2018d751d2733038081d56a2">Transform::getIdentity</a>()</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Saves 3D word points (as OpenCV points) to a PCD file, applying a transform to each point. </p>
|
||
<p>This function takes a multimap of word identifiers and corresponding 3D OpenCV points, converts them to PCL format after applying the given transform, and saves them as a point cloud to the specified PCD file.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">fileName</td><td>The path to the output PCD file. </td></tr>
|
||
<tr><td class="paramname">words</td><td>A multimap containing word IDs and their associated cv::Point3f coordinates. </td></tr>
|
||
<tr><td class="paramname">transform</td><td>A transform to apply to each 3D point before saving. </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a5ee08270b4a9e8ad93193721c7c71556" name="a5ee08270b4a9e8ad93193721c7c71556"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a5ee08270b4a9e8ad93193721c7c71556">◆ </a></span>loadBINScan()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">cv::Mat RTABMAP_CORE_EXPORT rtabmap::util3d::loadBINScan </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const std::string & </td>
|
||
<td class="paramname"><em>fileName</em></td><td>)</td>
|
||
<td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Loads a KITTI-style Velodyne binary scan file into an OpenCV matrix. </p>
|
||
<p>This function assumes the binary file contains a series of 4-float values per point representing (X, Y, Z, Intensity). It loads the entire file into a <code>cv::Mat</code> with type <code>CV_32FC4</code>.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">fileName</td><td>Path to the .bin file. </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>A 1-row <code>cv::Mat</code> with 4 channels (XYZI), one column per point. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a636c56f4ab6e58044595f95e44f93d06" name="a636c56f4ab6e58044595f95e44f93d06"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a636c56f4ab6e58044595f95e44f93d06">◆ </a></span>loadBINCloud() <span class="overload">[1/2]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT rtabmap::util3d::loadBINCloud </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const std::string & </td>
|
||
<td class="paramname"><em>fileName</em></td><td>)</td>
|
||
<td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Loads a KITTI-style Velodyne binary scan and converts it to a PCL point cloud. </p>
|
||
<p>Internally calls <code><a class="el" href="namespacertabmap_1_1util3d.html#aefffe4f3418377f85659e7546668b190" title="Loads a 3D scan from a file (.pcd, .ply, or .bin format).">loadScan()</a></code> and converts the result into a <code>pcl::PointCloud<pcl::PointXYZ></code>.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">fileName</td><td>Path to the .bin file. </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>Pointer to the loaded point cloud. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="ae112015538769a29c920da97096e0d17" name="ae112015538769a29c920da97096e0d17"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#ae112015538769a29c920da97096e0d17">◆ </a></span>loadBINCloud() <span class="overload">[2/2]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">RTABMAP_DEPRECATED pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT rtabmap::util3d::loadBINCloud </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const std::string & </td>
|
||
<td class="paramname"><em>fileName</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>dim</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Loads a KITTI-style Velodyne binary scan and converts it to a PCL point cloud. </p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">fileName</td><td>Path to the .bin file. </td></tr>
|
||
<tr><td class="paramname">dim</td><td>Unused parameter. </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>Pointer to the loaded point cloud. </dd></dl>
|
||
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000019">Deprecated:</a></b></dt><dd>This overload exists for compatibility but ignores the <code>dim</code> parameter. Use version without <code>dim</code> directly. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="aefffe4f3418377f85659e7546668b190" name="aefffe4f3418377f85659e7546668b190"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#aefffe4f3418377f85659e7546668b190">◆ </a></span>loadScan()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname"><a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> RTABMAP_CORE_EXPORT rtabmap::util3d::loadScan </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const std::string & </td>
|
||
<td class="paramname"><em>path</em></td><td>)</td>
|
||
<td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Loads a 3D scan from a file (.pcd, .ply, or .bin format). </p>
|
||
<p>This function detects the file type based on the extension and loads the scan accordingly. Binary .bin files are interpreted using the KITTI format (XYZI). For .pcd or .ply files, a PCL point cloud is loaded and optionally interpreted as 2D if all Z values are 0.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">path</td><td>Path to the scan file. </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>A <code><a class="el" href="classrtabmap_1_1LaserScan.html" title="Represents 2D or 3D laser scan data with support for multiple point data formats.">LaserScan</a></code> object containing the loaded scan data. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a86ba029bd916ab76dd5645ba7e1b2ef8" name="a86ba029bd916ab76dd5645ba7e1b2ef8"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a86ba029bd916ab76dd5645ba7e1b2ef8">◆ </a></span>loadCloud()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">RTABMAP_DEPRECATED pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT rtabmap::util3d::loadCloud </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const std::string & </td>
|
||
<td class="paramname"><em>path</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> & </td>
|
||
<td class="paramname"><em>transform</em> = <code><a class="el" href="classrtabmap_1_1Transform.html#a8ea4368f2018d751d2733038081d56a2">Transform::getIdentity</a>()</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>downsampleStep</em> = <code>1</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>voxelSize</em> = <code>0.0f</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Loads and optionally transforms/downsamples/voxelizes a point cloud. </p>
|
||
<p>This function loads a point cloud from a .bin, .pcd, or .ply file. It can apply a transformation, downsample using a step size, or filter using a voxel grid.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">path</td><td>Path to the scan file. </td></tr>
|
||
<tr><td class="paramname">transform</td><td>Transformation to apply to the cloud (must not be null). </td></tr>
|
||
<tr><td class="paramname">downsampleStep</td><td>Step size to downsample (1 = no downsampling). </td></tr>
|
||
<tr><td class="paramname">voxelSize</td><td>Size of the voxel grid filter in meters (0 = no filtering). </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>Transformed and optionally filtered <code>pcl::PointCloud<pcl::PointXYZ>::Ptr</code>. </dd></dl>
|
||
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000020">Deprecated:</a></b></dt><dd>Use <a class="el" href="namespacertabmap_1_1util3d.html#aefffe4f3418377f85659e7546668b190" title="Loads a 3D scan from a file (.pcd, .ply, or .bin format).">loadScan()</a> instead. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="ae4f056638c16889c7cb1d41ecac2866c" name="ae4f056638c16889c7cb1d41ecac2866c"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#ae4f056638c16889c7cb1d41ecac2866c">◆ </a></span>deskew()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname"><a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> RTABMAP_CORE_EXPORT rtabmap::util3d::deskew </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const <a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> & </td>
|
||
<td class="paramname"><em>input</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">double </td>
|
||
<td class="paramname"><em>inputStamp</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const <a class="el" href="classrtabmap_1_1Transform.html">rtabmap::Transform</a> & </td>
|
||
<td class="paramname"><em>velocity</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p><a class="el" href="classrtabmap_1_1Lidar.html">Lidar</a> deskewing. </p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">input</td><td>lidar, format should have time channel </td></tr>
|
||
<tr><td class="paramname">input</td><td>stamp of the lidar </td></tr>
|
||
<tr><td class="paramname">velocity</td><td>in base frame </td></tr>
|
||
<tr><td class="paramname">velocity</td><td>stamp at which it has been computed </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>lidar deskewed</dd></dl>
|
||
<p>Deskews a laser scan based on the velocity transform and timestamp information.</p>
|
||
<p>This function takes an input <code><a class="el" href="classrtabmap_1_1LaserScan.html" title="Represents 2D or 3D laser scan data with support for multiple point data formats.">LaserScan</a></code> with a time channel (<code>kXYZIT</code> format), and deskews the scan based on the provided velocity transform. It assumes that the scan has a time channel with time information for each point relative to <code>inputStamp</code>. The deskewing process involves calculating the pose of the laser at each point in time and correcting the scan data accordingly.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">input</td><td>The input <a class="el" href="classrtabmap_1_1LaserScan.html" title="Represents 2D or 3D laser scan data with support for multiple point data formats.">LaserScan</a> to be deskewed. </td></tr>
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">inputStamp</td><td>The timestamp of the input scan (e.g., epoch time). </td></tr>
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">velocity</td><td>The velocity transform (linear and angular velocities), in base frame.</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>A new <code><a class="el" href="classrtabmap_1_1LaserScan.html" title="Represents 2D or 3D laser scan data with support for multiple point data formats.">LaserScan</a></code> that has been deskewed based on the provided velocity and timestamps.</dd></dl>
|
||
<dl class="section note"><dt>Note</dt><dd>If the velocity is null or if the input scan does not have the correct format, an error will be logged. If the first and last timestamps are identical, deskewing cannot be performed, and an error is logged.</dd></dl>
|
||
<dl class="section warning"><dt>Warning</dt><dd>This function assumes that the input <code><a class="el" href="classrtabmap_1_1LaserScan.html" title="Represents 2D or 3D laser scan data with support for multiple point data formats.">LaserScan</a></code> is in the <code>kXYZIT</code> format (with time data). If not, an error will be logged and an empty <code><a class="el" href="classrtabmap_1_1LaserScan.html" title="Represents 2D or 3D laser scan data with support for multiple point data formats.">LaserScan</a></code> will be returned.</dd></dl>
|
||
<dl class="exception"><dt>Exceptions</dt><dd>
|
||
<table class="exception">
|
||
<tr><td class="paramname">exception</td><td>if velocity is null or the format is incorrect. </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a58b9802c1fc28b7e8927359173f98de8" name="a58b9802c1fc28b7e8927359173f98de8"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a58b9802c1fc28b7e8927359173f98de8">◆ </a></span>extractXYZCorrespondences() <span class="overload">[1/4]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">void RTABMAP_CORE_EXPORT rtabmap::util3d::extractXYZCorrespondences </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const std::multimap< int, pcl::PointXYZ > & </td>
|
||
<td class="paramname"><em>words1</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::multimap< int, pcl::PointXYZ > & </td>
|
||
<td class="paramname"><em>words2</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">pcl::PointCloud< pcl::PointXYZ > & </td>
|
||
<td class="paramname"><em>cloud1</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">pcl::PointCloud< pcl::PointXYZ > & </td>
|
||
<td class="paramname"><em>cloud2</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Extracts 3D point correspondences between two sets of labeled 3D points. </p>
|
||
<p>This function identifies common point IDs (keys) between two multimap structures containing <code>pcl::PointXYZ</code> points. For each shared key that appears <b>exactly once</b> in both input maps, and where both corresponding points are finite, the matched points are added to two output point clouds.</p>
|
||
<p>The resulting <code>cloud1</code> and <code>cloud2</code> point clouds will contain points with a one-to-one correspondence, useful for geometric registration (e.g., ICP).</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">words1</td><td>Input multimap of point ID to 3D point for the first dataset. </td></tr>
|
||
<tr><td class="paramname">words2</td><td>Input multimap of point ID to 3D point for the second dataset. </td></tr>
|
||
<tr><td class="paramname">cloud1</td><td>Output point cloud (corresponding to points from <code>words1</code>). </td></tr>
|
||
<tr><td class="paramname">cloud2</td><td>Output point cloud (corresponding to points from <code>words2</code>).</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section note"><dt>Note</dt><dd>Only keys that appear exactly once in both <code>words1</code> and <code>words2</code>, and whose associated <code>pcl::PointXYZ</code> entries are finite, will be included in the output clouds. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="ab6a2896e40afacde8cb8b0d10a955e02" name="ab6a2896e40afacde8cb8b0d10a955e02"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#ab6a2896e40afacde8cb8b0d10a955e02">◆ </a></span>extractXYZCorrespondencesRANSAC()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">void RTABMAP_CORE_EXPORT rtabmap::util3d::extractXYZCorrespondencesRANSAC </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const std::multimap< int, pcl::PointXYZ > & </td>
|
||
<td class="paramname"><em>words1</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::multimap< int, pcl::PointXYZ > & </td>
|
||
<td class="paramname"><em>words2</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">pcl::PointCloud< pcl::PointXYZ > & </td>
|
||
<td class="paramname"><em>cloud1</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">pcl::PointCloud< pcl::PointXYZ > & </td>
|
||
<td class="paramname"><em>cloud2</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Extracts reliable 3D point correspondences between two sets of labeled 3D points using RANSAC filtering. </p>
|
||
<p>This function finds correspondences between <code>words1</code> and <code>words2</code> based on shared unique keys. For each common key that appears exactly once in both maps, and where the corresponding 3D points are finite, a candidate correspondence is formed. If more than 7 such pairs exist, RANSAC is used via OpenCV’s <code>cv::findFundamentalMat</code> to reject outliers based on the geometric consistency of the 2D projections.</p>
|
||
<p>Only the inlier correspondences determined by RANSAC are returned in the output point clouds <code>cloud1</code> and <code>cloud2</code>.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">words1</td><td>Input multimap of point ID to <code>pcl::PointXYZ</code> for the first set of 3D features. </td></tr>
|
||
<tr><td class="paramname">words2</td><td>Input multimap of point ID to <code>pcl::PointXYZ</code> for the second set of 3D features. </td></tr>
|
||
<tr><td class="paramname">cloud1</td><td>Output point cloud containing inlier points from <code>words1</code>. </td></tr>
|
||
<tr><td class="paramname">cloud2</td><td>Output point cloud containing inlier points from <code>words2</code>.</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section note"><dt>Note</dt><dd>At least 8 valid point correspondences are required for RANSAC to compute a fundamental matrix. If fewer than 8 valid matches exist, the function does not modify the output clouds.</dd></dl>
|
||
<dl class="section warning"><dt>Warning</dt><dd>Only 2D <code>(x, y)</code> components of the 3D points are used for RANSAC filtering. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a0696277eef10a197af8fd5dcba52fc12" name="a0696277eef10a197af8fd5dcba52fc12"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a0696277eef10a197af8fd5dcba52fc12">◆ </a></span>extractXYZCorrespondences() <span class="overload">[2/4]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">void RTABMAP_CORE_EXPORT rtabmap::util3d::extractXYZCorrespondences </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const std::list< std::pair< cv::Point2f, cv::Point2f > > & </td>
|
||
<td class="paramname"><em>correspondences</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const cv::Mat & </td>
|
||
<td class="paramname"><em>depthImage1</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const cv::Mat & </td>
|
||
<td class="paramname"><em>depthImage2</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>cx</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>cy</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>fx</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>fy</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>maxDepth</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">pcl::PointCloud< pcl::PointXYZ > & </td>
|
||
<td class="paramname"><em>cloud1</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">pcl::PointCloud< pcl::PointXYZ > & </td>
|
||
<td class="paramname"><em>cloud2</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Extracts 3D point correspondences from 2D pixel matches using depth images. </p>
|
||
<p>This function projects matched 2D keypoints (pixel correspondences) from two RGB-D images into 3D space using the provided camera intrinsic parameters. Only valid and finite 3D points are retained. If a <code>maxDepth</code> threshold is provided, points farther than this threshold are excluded.</p>
|
||
<p>The function returns two synchronized point clouds, <code>cloud1</code> and <code>cloud2</code>, where each point pair at the same index corresponds to a match between the two views.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">correspondences</td><td>List of 2D point correspondences between image 1 and image 2. </td></tr>
|
||
<tr><td class="paramname">depthImage1</td><td>Depth image corresponding to the first set of points (CV_32FC1 or CV_16UC1). </td></tr>
|
||
<tr><td class="paramname">depthImage2</td><td>Depth image corresponding to the second set of points (same format as depthImage1). </td></tr>
|
||
<tr><td class="paramname">cx</td><td>Principal point x-coordinate (camera intrinsic). </td></tr>
|
||
<tr><td class="paramname">cy</td><td>Principal point y-coordinate (camera intrinsic). </td></tr>
|
||
<tr><td class="paramname">fx</td><td>Focal length in x-direction (camera intrinsic). </td></tr>
|
||
<tr><td class="paramname">fy</td><td>Focal length in y-direction (camera intrinsic). </td></tr>
|
||
<tr><td class="paramname">maxDepth</td><td>Maximum allowed depth for a correspondence to be considered valid. If <= 0, all depths are accepted. </td></tr>
|
||
<tr><td class="paramname">cloud1</td><td>Output point cloud with 3D points corresponding to the first image. </td></tr>
|
||
<tr><td class="paramname">cloud2</td><td>Output point cloud with 3D points corresponding to the second image.</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section note"><dt>Note</dt><dd><ul>
|
||
<li>Both output point clouds are resized to contain only the valid 3D matches after filtering.</li>
|
||
<li>Invalid, non-finite, or out-of-range depth values are automatically filtered out. </li>
|
||
</ul>
|
||
</dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a340e76117340170fb465ade8b11dd6af" name="a340e76117340170fb465ade8b11dd6af"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a340e76117340170fb465ade8b11dd6af">◆ </a></span>extractXYZCorrespondences() <span class="overload">[3/4]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">void RTABMAP_CORE_EXPORT rtabmap::util3d::extractXYZCorrespondences </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const std::list< std::pair< cv::Point2f, cv::Point2f > > & </td>
|
||
<td class="paramname"><em>correspondences</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const pcl::PointCloud< pcl::PointXYZ > & </td>
|
||
<td class="paramname"><em>cloud1</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const pcl::PointCloud< pcl::PointXYZ > & </td>
|
||
<td class="paramname"><em>cloud2</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">pcl::PointCloud< pcl::PointXYZ > & </td>
|
||
<td class="paramname"><em>inliers1</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">pcl::PointCloud< pcl::PointXYZ > & </td>
|
||
<td class="paramname"><em>inliers2</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Extracts 3D correspondences from 2D feature matches using <code>pcl::PointXYZ</code> organized point clouds. </p>
|
||
<p>This function projects 2D keypoint matches into 3D using the corresponding organized point clouds (<code>cloud1</code> and <code>cloud2</code>). Points that are not finite are discarded.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">correspondences</td><td>List of 2D point correspondences between image 1 and image 2. </td></tr>
|
||
<tr><td class="paramname">cloud1</td><td>Organized <code>pcl::PointXYZ</code> point cloud corresponding to the first image. </td></tr>
|
||
<tr><td class="paramname">cloud2</td><td>Organized <code>pcl::PointXYZ</code> point cloud corresponding to the second image. </td></tr>
|
||
<tr><td class="paramname">inliers1</td><td>Output 3D points from <code>cloud1</code> corresponding to valid 2D matches. </td></tr>
|
||
<tr><td class="paramname">inliers2</td><td>Output 3D points from <code>cloud2</code> corresponding to valid 2D matches.</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section note"><dt>Note</dt><dd><ul>
|
||
<li>Only organized point clouds are supported (i.e., width × height layout must match image size from which 2D keypoints were taken). </li>
|
||
</ul>
|
||
</dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a43b6de83939173dfd275cbd17f5d7500" name="a43b6de83939173dfd275cbd17f5d7500"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a43b6de83939173dfd275cbd17f5d7500">◆ </a></span>extractXYZCorrespondences() <span class="overload">[4/4]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">void RTABMAP_CORE_EXPORT rtabmap::util3d::extractXYZCorrespondences </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const std::list< std::pair< cv::Point2f, cv::Point2f > > & </td>
|
||
<td class="paramname"><em>correspondences</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const pcl::PointCloud< pcl::PointXYZRGB > & </td>
|
||
<td class="paramname"><em>cloud1</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const pcl::PointCloud< pcl::PointXYZRGB > & </td>
|
||
<td class="paramname"><em>cloud2</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">pcl::PointCloud< pcl::PointXYZ > & </td>
|
||
<td class="paramname"><em>inliers1</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">pcl::PointCloud< pcl::PointXYZ > & </td>
|
||
<td class="paramname"><em>inliers2</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Extracts 3D correspondences from 2D feature matches using <code>pcl::PointXYZRGB</code> organized point clouds. </p>
|
||
<p>This overload behaves identically to the <code>pcl::PointXYZ</code> version, but supports input point clouds that contain RGB color data. The color is not used—only the XYZ fields are extracted.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">correspondences</td><td>List of matched 2D keypoints between two images. </td></tr>
|
||
<tr><td class="paramname">cloud1</td><td>Organized <code>pcl::PointXYZRGB</code> point cloud for the first image. </td></tr>
|
||
<tr><td class="paramname">cloud2</td><td>Organized <code>pcl::PointXYZRGB</code> point cloud for the second image. </td></tr>
|
||
<tr><td class="paramname">inliers1</td><td>Output 3D points from <code>cloud1</code> corresponding to valid 2D matches. </td></tr>
|
||
<tr><td class="paramname">inliers2</td><td>Output 3D points from <code>cloud2</code> corresponding to valid 2D matches. </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="af7d4d348836959bbdce0e5db0a4af91c" name="af7d4d348836959bbdce0e5db0a4af91c"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#af7d4d348836959bbdce0e5db0a4af91c">◆ </a></span>countUniquePairs()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">int RTABMAP_CORE_EXPORT rtabmap::util3d::countUniquePairs </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const std::multimap< int, pcl::PointXYZ > & </td>
|
||
<td class="paramname"><em>wordsA</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::multimap< int, pcl::PointXYZ > & </td>
|
||
<td class="paramname"><em>wordsB</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Counts the number of unique 3D point correspondences between two sets of word-indexed features. </p>
|
||
<p>This function iterates over the unique keys (word IDs) in <code>wordsA</code> and checks if the same key exists in <code>wordsB</code>. A pair is considered "unique" if both <code>wordsA</code> and <code>wordsB</code> contain exactly one 3D point (i.e., one <code>pcl::PointXYZ</code>) associated with the same key.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">wordsA</td><td>A multimap of word IDs to 3D points (e.g., from frame A). </td></tr>
|
||
<tr><td class="paramname">wordsB</td><td>A multimap of word IDs to 3D points (e.g., from frame B). </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>The number of unique pairs where both <code>wordsA</code> and <code>wordsB</code> contain exactly one point for a given word ID. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a96efcf6ed971e5a5d6b7f9a5e03d1ce3" name="a96efcf6ed971e5a5d6b7f9a5e03d1ce3"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a96efcf6ed971e5a5d6b7f9a5e03d1ce3">◆ </a></span>filterMaxDepth()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">void RTABMAP_CORE_EXPORT rtabmap::util3d::filterMaxDepth </td>
|
||
<td>(</td>
|
||
<td class="paramtype">pcl::PointCloud< pcl::PointXYZ > & </td>
|
||
<td class="paramname"><em>inliers1</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">pcl::PointCloud< pcl::PointXYZ > & </td>
|
||
<td class="paramname"><em>inliers2</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>maxDepth</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">char </td>
|
||
<td class="paramname"><em>depthAxis</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">bool </td>
|
||
<td class="paramname"><em>removeDuplicates</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Filters pairs of 3D points by maximum depth along a specified axis and optionally removes duplicates. </p>
|
||
<p>This function takes two point clouds (<code>inliers1</code> and <code>inliers2</code>) containing corresponding 3D points, and filters out pairs where either point exceeds a specified maximum depth value along the given axis. It can also optionally remove duplicate points in the first point cloud.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramdir">[in,out]</td><td class="paramname">inliers1</td><td>The first point cloud of 3D points to be filtered. Points failing the filter will be removed. </td></tr>
|
||
<tr><td class="paramdir">[in,out]</td><td class="paramname">inliers2</td><td>The second point cloud of 3D points corresponding to <code>inliers1</code>. Points failing the filter will be removed. Must be the same size as <code>inliers1</code>. </td></tr>
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">maxDepth</td><td>The maximum allowed depth value along the specified axis. Points with coordinate values greater or equal to this value on that axis will be removed. If <code>maxDepth</code> is less or equal to zero, no filtering is performed. </td></tr>
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">depthAxis</td><td>The axis ('x', 'y', or 'z') along which to measure depth for filtering. </td></tr>
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">removeDuplicates</td><td>If <code>true</code>, duplicate points in <code>inliers1</code> (exact coordinate matches) will be removed. Duplicates are detected only in <code>inliers1</code>.</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section warning"><dt>Warning</dt><dd>The function modifies <code>inliers1</code> and <code>inliers2</code> in place, replacing them with filtered versions. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a188c2a13980f6b7d85e6e0804a38cb50" name="a188c2a13980f6b7d85e6e0804a38cb50"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a188c2a13980f6b7d85e6e0804a38cb50">◆ </a></span>findCorrespondences() <span class="overload">[1/3]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">void RTABMAP_CORE_EXPORT rtabmap::util3d::findCorrespondences </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const std::multimap< int, cv::KeyPoint > & </td>
|
||
<td class="paramname"><em>wordsA</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::multimap< int, cv::KeyPoint > & </td>
|
||
<td class="paramname"><em>wordsB</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">std::list< std::pair< cv::Point2f, cv::Point2f > > & </td>
|
||
<td class="paramname"><em>pairs</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Finds 2D point correspondences between two sets of keypoints based on matching word IDs. </p>
|
||
<p>This function compares two multimap structures containing word IDs associated with <code>cv::KeyPoint</code>s. It extracts correspondences where the same word ID appears <b>exactly once</b> in each set.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">wordsA</td><td>A multimap from word ID to keypoints in set A. </td></tr>
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">wordsB</td><td>A multimap from word ID to keypoints in set B. </td></tr>
|
||
<tr><td class="paramdir">[out]</td><td class="paramname">pairs</td><td>A list of matching 2D point correspondences (Point2f) between wordsA and wordsB.</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section note"><dt>Note</dt><dd>Only unique word ID matches (count == 1 in both sets) are considered valid correspondences.</dd></dl>
|
||
<dl class="section user"><dt>Example</dt><dd>If <code>wordsA = [1 2 3 4 6 6]</code> and <code>wordsB = [1 1 2 4 5 6 6]</code>, the output <code>pairs</code> will contain correspondences for IDs <code>2</code> and <code>4</code>, because only those have exactly one match in both sets. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="ac466a705ab9ee7d99f23842cd71f3c96" name="ac466a705ab9ee7d99f23842cd71f3c96"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#ac466a705ab9ee7d99f23842cd71f3c96">◆ </a></span>findCorrespondences() <span class="overload">[2/3]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">void RTABMAP_CORE_EXPORT rtabmap::util3d::findCorrespondences </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const std::multimap< int, cv::Point3f > & </td>
|
||
<td class="paramname"><em>words1</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::multimap< int, cv::Point3f > & </td>
|
||
<td class="paramname"><em>words2</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">std::vector< cv::Point3f > & </td>
|
||
<td class="paramname"><em>inliers1</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">std::vector< cv::Point3f > & </td>
|
||
<td class="paramname"><em>inliers2</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>maxDepth</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">std::vector< int > * </td>
|
||
<td class="paramname"><em>uniqueCorrespondences</em> = <code>0</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Finds 3D point correspondences between two sets of points based on matching word IDs. </p>
|
||
<p>This function compares two multimaps of 3D points (typically from different views or frames). It returns point pairs where the same word ID appears <b>once</b> in both maps, the points are finite and valid, and optionally filtered by a maximum X-depth.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">words1</td><td>A multimap of word IDs to 3D points in the first set. </td></tr>
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">words2</td><td>A multimap of word IDs to 3D points in the second set. </td></tr>
|
||
<tr><td class="paramdir">[out]</td><td class="paramname">inliers1</td><td>Output vector of 3D points from <code>words1</code> with valid correspondences. </td></tr>
|
||
<tr><td class="paramdir">[out]</td><td class="paramname">inliers2</td><td>Output vector of corresponding 3D points from <code>words2</code>. </td></tr>
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">maxDepth</td><td>Optional filter: only points with X-values in (0, maxDepth] are kept. Use <= 0 to disable. </td></tr>
|
||
<tr><td class="paramdir">[out]</td><td class="paramname">uniqueCorrespondences</td><td>(Optional) Vector of word IDs corresponding to each pair.</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section note"><dt>Note</dt><dd>Only pairs with exactly one occurrence in each map and non-zero, finite coordinates are kept. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a5c07f098f9f5ba889e18d22b927f3cd4" name="a5c07f098f9f5ba889e18d22b927f3cd4"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a5c07f098f9f5ba889e18d22b927f3cd4">◆ </a></span>findCorrespondences() <span class="overload">[3/3]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">void RTABMAP_CORE_EXPORT rtabmap::util3d::findCorrespondences </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const std::map< int, cv::Point3f > & </td>
|
||
<td class="paramname"><em>words1</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::map< int, cv::Point3f > & </td>
|
||
<td class="paramname"><em>words2</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">std::vector< cv::Point3f > & </td>
|
||
<td class="paramname"><em>inliers1</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">std::vector< cv::Point3f > & </td>
|
||
<td class="paramname"><em>inliers2</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>maxDepth</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">std::vector< int > * </td>
|
||
<td class="paramname"><em>correspondences</em> = <code>0</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Finds 3D point correspondences between two sets of uniquely indexed 3D points. </p>
|
||
<p>This overload works with <code>std::map</code>, where each word ID appears at most once. It finds matching IDs and returns valid point pairs based on similar criteria to the multimap version.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">words1</td><td>A map of word IDs to 3D points in the first set. </td></tr>
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">words2</td><td>A map of word IDs to 3D points in the second set. </td></tr>
|
||
<tr><td class="paramdir">[out]</td><td class="paramname">inliers1</td><td>Output vector of 3D points from <code>words1</code> with valid correspondences. </td></tr>
|
||
<tr><td class="paramdir">[out]</td><td class="paramname">inliers2</td><td>Output vector of corresponding 3D points from <code>words2</code>. </td></tr>
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">maxDepth</td><td>Optional filter: only points with X-values in (0, maxDepth] are kept. Use <= 0 to disable. </td></tr>
|
||
<tr><td class="paramdir">[out]</td><td class="paramname">correspondences</td><td>(Optional) Vector of word IDs corresponding to valid matched pairs.</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section note"><dt>Note</dt><dd>Finite, non-zero points are required. The function ignores word IDs not found in both sets. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a785db0d55f5eccf209b9d3d712ec92b2" name="a785db0d55f5eccf209b9d3d712ec92b2"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a785db0d55f5eccf209b9d3d712ec92b2">◆ </a></span>generateKeypoints3DDepth() <span class="overload">[1/2]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">std::vector< cv::Point3f > RTABMAP_CORE_EXPORT rtabmap::util3d::generateKeypoints3DDepth </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const std::vector< cv::KeyPoint > & </td>
|
||
<td class="paramname"><em>keypoints</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const cv::Mat & </td>
|
||
<td class="paramname"><em>depth</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::vector< <a class="el" href="classrtabmap_1_1CameraModel.html">CameraModel</a> > & </td>
|
||
<td class="paramname"><em>cameraModels</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>minDepth</em> = <code>0</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>maxDepth</em> = <code>0</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Projects 2D keypoints to 3D space using the provided depth image and camera models. </p>
|
||
<p>This function takes a vector of 2D keypoints and projects them into 3D space by using depth values from a depth image and the associated camera models. It supports multi-camera setups by assuming the depth image is horizontally stacked with sub-images corresponding to each camera.</p>
|
||
<p>If a depth value at a keypoint location is invalid or outside the specified depth range (<code>minDepth</code>, <code>maxDepth</code>), the output 3D point will be set to NaN.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">keypoints</td><td>A vector of 2D keypoints (in image coordinates). </td></tr>
|
||
<tr><td class="paramname">depth</td><td>The depth image (must be either <code>CV_32FC1</code> or <code>CV_16UC1</code>). For multiple cameras, the depth images should be horizontally concatenated. </td></tr>
|
||
<tr><td class="paramname">cameraModels</td><td>A vector of camera models, one per camera. Each model must provide intrinsic parameters and optionally a local transform to apply to the resulting 3D point. </td></tr>
|
||
<tr><td class="paramname">minDepth</td><td>Minimum valid depth value. If negative, no minimum is enforced. </td></tr>
|
||
<tr><td class="paramname">maxDepth</td><td>Maximum valid depth value. If zero or negative, no maximum is enforced.</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>A vector of 3D points (<code>cv::Point3f</code>) corresponding to the input keypoints. If the depth is invalid or outside the valid range, the point will contain NaNs.</dd></dl>
|
||
<dl class="exception"><dt>Exceptions</dt><dd>
|
||
<table class="exception">
|
||
<tr><td class="paramname">Assertion</td><td>failure if the depth image is empty or not of the expected type, or if the camera model vector is empty, or if camera index computation fails. </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a4f938d094d62997e0fb5d53c59f7ef82" name="a4f938d094d62997e0fb5d53c59f7ef82"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a4f938d094d62997e0fb5d53c59f7ef82">◆ </a></span>generateKeypoints3DDepth() <span class="overload">[2/2]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">std::vector< cv::Point3f > RTABMAP_CORE_EXPORT rtabmap::util3d::generateKeypoints3DDepth </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const std::vector< cv::KeyPoint > & </td>
|
||
<td class="paramname"><em>keypoints</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const cv::Mat & </td>
|
||
<td class="paramname"><em>depth</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const <a class="el" href="classrtabmap_1_1CameraModel.html">CameraModel</a> & </td>
|
||
<td class="paramname"><em>cameraModel</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>minDepth</em> = <code>0</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>maxDepth</em> = <code>0</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Projects 2D keypoints to 3D space using the provided depth image and camera model. </p>
|
||
<dl class="section see"><dt>See also</dt><dd><a class="el" href="namespacertabmap_1_1util3d.html#a785db0d55f5eccf209b9d3d712ec92b2" title="Projects 2D keypoints to 3D space using the provided depth image and camera models.">util3d::generateKeypoints3DDepth()</a> </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="af34bc7763a1e077a3520f4952ed9d196" name="af34bc7763a1e077a3520f4952ed9d196"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#af34bc7763a1e077a3520f4952ed9d196">◆ </a></span>generateKeypoints3DDisparity()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">std::vector< cv::Point3f > RTABMAP_CORE_EXPORT rtabmap::util3d::generateKeypoints3DDisparity </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const std::vector< cv::KeyPoint > & </td>
|
||
<td class="paramname"><em>keypoints</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const cv::Mat & </td>
|
||
<td class="paramname"><em>disparity</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const <a class="el" href="classrtabmap_1_1StereoCameraModel.html">StereoCameraModel</a> & </td>
|
||
<td class="paramname"><em>stereoCameraModel</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>minDepth</em> = <code>0</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>maxDepth</em> = <code>0</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Projects 2D keypoints into 3D space using a disparity image and a stereo camera model. </p>
|
||
<p>This function computes 3D coordinates for each input 2D keypoint by using the disparity image and the stereo camera model. Invalid or out-of-range depth values result in 3D points with <code>NaN</code> components.</p>
|
||
<p>The function applies the local transform of the left camera (from the stereo model) to each valid 3D point, if the transform is not null or identity.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">keypoints</td><td>A vector of 2D keypoints (image coordinates) to be projected into 3D. </td></tr>
|
||
<tr><td class="paramname">disparity</td><td>The disparity image (must be of type <code>CV_16SC1</code> or <code>CV_32F</code>). Disparity values should correspond to the keypoints' locations. </td></tr>
|
||
<tr><td class="paramname">stereoCameraModel</td><td>A valid stereo camera model that provides projection parameters and an optional local transform. </td></tr>
|
||
<tr><td class="paramname">minDepth</td><td>Minimum depth threshold. If negative, no minimum constraint is applied. </td></tr>
|
||
<tr><td class="paramname">maxDepth</td><td>Maximum depth threshold. If zero or negative, no maximum constraint is applied.</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>A vector of 3D points (<code>cv::Point3f</code>) corresponding to the input keypoints. Points with invalid or out-of-range depth are returned as <code>(NaN, NaN, NaN)</code>.</dd></dl>
|
||
<dl class="exception"><dt>Exceptions</dt><dd>
|
||
<table class="exception">
|
||
<tr><td class="paramname">Assertion</td><td>failure if the disparity image is empty or of incorrect type, or if the stereo camera model is not valid for projection. </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a7d48db86fe2f0cfc9abc974a66be8695" name="a7d48db86fe2f0cfc9abc974a66be8695"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a7d48db86fe2f0cfc9abc974a66be8695">◆ </a></span>generateKeypoints3DStereo()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">std::vector< cv::Point3f > RTABMAP_CORE_EXPORT rtabmap::util3d::generateKeypoints3DStereo </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const std::vector< cv::Point2f > & </td>
|
||
<td class="paramname"><em>leftCorners</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::vector< cv::Point2f > & </td>
|
||
<td class="paramname"><em>rightCorners</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const <a class="el" href="classrtabmap_1_1StereoCameraModel.html">StereoCameraModel</a> & </td>
|
||
<td class="paramname"><em>model</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::vector< unsigned char > & </td>
|
||
<td class="paramname"><em>mask</em> = <code>std::vector< unsigned char >()</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>minDepth</em> = <code>0</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>maxDepth</em> = <code>0</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Computes 3D keypoints from corresponding 2D points in a stereo image pair. </p>
|
||
<p>This function triangulates 3D points from pairs of corresponding 2D points (<code>leftCorners</code>, <code>rightCorners</code>) using a given stereo camera model. It optionally applies a validity mask and filters 3D points by depth range.</p>
|
||
<p>For each point pair, the disparity is computed as the x-coordinate difference between left and right corners. Only positive disparities are considered valid. If a mask is provided, only entries with a non-zero value are processed.</p>
|
||
<p>The resulting 3D points are optionally transformed using the stereo camera model's local transform, if one is defined and non-identity.</p>
|
||
<p>Invalid or out-of-range points are set to <code>(NaN, NaN, NaN)</code>.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">leftCorners</td><td>A vector of 2D points from the left stereo image. </td></tr>
|
||
<tr><td class="paramname">rightCorners</td><td>A vector of corresponding 2D points from the right stereo image. </td></tr>
|
||
<tr><td class="paramname">model</td><td>The stereo camera model containing intrinsic parameters and optional local transform. </td></tr>
|
||
<tr><td class="paramname">mask</td><td>(Optional) A binary mask indicating which matches are valid (non-zero = valid). If empty, all matches are considered valid. </td></tr>
|
||
<tr><td class="paramname">minDepth</td><td>Minimum allowed depth value. If negative, no minimum is applied. </td></tr>
|
||
<tr><td class="paramname">maxDepth</td><td>Maximum allowed depth value. If zero or negative, no maximum is applied.</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>A vector of 3D points (<code>cv::Point3f</code>) corresponding to valid stereo matches. Invalid points or those outside the depth range are returned as <code>(NaN, NaN, NaN)</code>.</dd></dl>
|
||
<dl class="exception"><dt>Exceptions</dt><dd>
|
||
<table class="exception">
|
||
<tr><td class="paramname">Assertion</td><td>failure if the input vectors are inconsistent in size, or if the stereo camera model is invalid (e.g., non-positive focal length or baseline). </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="acc3c59044fcfdb8cc1fba8a41a0e9eab" name="acc3c59044fcfdb8cc1fba8a41a0e9eab"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#acc3c59044fcfdb8cc1fba8a41a0e9eab">◆ </a></span>aggregate()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">std::multimap< int, cv::KeyPoint > RTABMAP_CORE_EXPORT rtabmap::util3d::aggregate </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const std::list< int > & </td>
|
||
<td class="paramname"><em>wordIds</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::vector< cv::KeyPoint > & </td>
|
||
<td class="paramname"><em>keypoints</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Aggregates word IDs and corresponding keypoints into a multimap. </p>
|
||
<p>This function pairs each word ID from the input list with the corresponding keypoint from the input vector and stores them in a <code>std::multimap<int, cv::KeyPoint></code>.</p>
|
||
<p>It is assumed that the <code>wordIds</code> list and the <code>keypoints</code> vector are of the same length and ordered such that each word ID corresponds to the keypoint at the same index.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">wordIds</td><td>A list of integer word IDs (e.g., visual word identifiers). </td></tr>
|
||
<tr><td class="paramname">keypoints</td><td>A vector of keypoints associated with the word IDs.</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>A multimap where each key is a word ID and the value is the corresponding <code>cv::KeyPoint</code>. Multiple keypoints can be associated with the same word ID.</dd></dl>
|
||
<dl class="exception"><dt>Exceptions</dt><dd>
|
||
<table class="exception">
|
||
<tr><td class="paramname">Assertion</td><td>failure if <code>wordIds.size() != keypoints.size()</code>. </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a7edd91750858112fd161f0ed30af7f45" name="a7edd91750858112fd161f0ed30af7f45"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a7edd91750858112fd161f0ed30af7f45">◆ </a></span>commonFiltering() <span class="overload">[1/2]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname"><a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> RTABMAP_CORE_EXPORT rtabmap::util3d::commonFiltering </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const <a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> & </td>
|
||
<td class="paramname"><em>scan</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>downsamplingStep</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>rangeMin</em> = <code>0.0f</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>rangeMax</em> = <code>0.0f</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>voxelSize</em> = <code>0.0f</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>normalK</em> = <code>0</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>normalRadius</em> = <code>0.0f</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>groundNormalsUp</em> = <code>0.0f</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Applies a common set of filters to a <a class="el" href="classrtabmap_1_1LaserScan.html" title="Represents 2D or 3D laser scan data with support for multiple point data formats.">LaserScan</a>, including downsampling, range limits, voxel grid filtering, and normal estimation. </p>
|
||
<p>This function performs a sequence of optional preprocessing steps on the input <a class="el" href="classrtabmap_1_1LaserScan.html" title="Represents 2D or 3D laser scan data with support for multiple point data formats.">LaserScan</a>:</p><ul>
|
||
<li>Downsampling: Reduces the number of points by selecting every N-th point.</li>
|
||
<li>Range filtering: Removes points outside the specified minimum and maximum range.</li>
|
||
<li>Voxel grid filtering: Reduces point density using a voxel grid.</li>
|
||
<li>Normal estimation: Computes surface normals using k-nearest neighbors or radius search.</li>
|
||
<li>Normal reorientation: normals are first flipped to face the view point, then optionally oriented upward if this condition is fulfilled: for each normal, if normal.z < <code>-groundNormalsUp</code> and the corresponding point is below viewpoint, it is flipped upward. The view point is the sensor origin, as the scan is kept in sensor frame (its local transform is not applied), so "below" and "upward" are along the sensor Z axis.</li>
|
||
</ul>
|
||
<p>The function supports both 2D and 3D scans and adapts behavior based on whether the scan contains RGB or intensity data.</p>
|
||
<p>Depending on the filtering options used, the output point cloud may be dense if the input is organized.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">scanIn</td><td>Input <a class="el" href="classrtabmap_1_1LaserScan.html" title="Represents 2D or 3D laser scan data with support for multiple point data formats.">LaserScan</a> to be filtered. </td></tr>
|
||
<tr><td class="paramname">downsamplingStep</td><td>Step size for downsampling. A value >1 will reduce the scan resolution. For organized scans, only the largest dimension is downsampled and the result is dense. For example, if the input organized scan is 16x1024, the resulting scan will be 1x8192 (if all values are valid). </td></tr>
|
||
<tr><td class="paramname">rangeMin</td><td>Minimum range to keep points from the scan viewpoint. Points closer than this value will be discarded. Output point cloud will be dense. Set to 0 to disable. </td></tr>
|
||
<tr><td class="paramname">rangeMax</td><td>Maximum range to keep points from the scan viewpoint. Points farther than this value will be discarded. Output point cloud will be dense. Set to 0 to disable. </td></tr>
|
||
<tr><td class="paramname">voxelSize</td><td>Size of the voxel grid in meters. A value >0 enables voxel filtering. Output point cloud will be dense. </td></tr>
|
||
<tr><td class="paramname">normalK</td><td>Number of nearest neighbors to use for normal estimation. Set to 0 to disable. </td></tr>
|
||
<tr><td class="paramname">normalRadius</td><td>Radius used for normal estimation. Set to 0 to disable. </td></tr>
|
||
<tr><td class="paramname">groundNormalsUp</td><td>If >0, normal vectors close to -Z axis will be oriented upward (+Z). Expected value is around <code>0.8</code>.</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>A new <a class="el" href="classrtabmap_1_1LaserScan.html" title="Represents 2D or 3D laser scan data with support for multiple point data formats.">LaserScan</a> instance with the applied filters and potential normals. </dd></dl>
|
||
<dl class="section see"><dt>See also</dt><dd>adjustNormalsToViewPoint() </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="ad02c78c4d3ca36fa9a27a845540ebe55" name="ad02c78c4d3ca36fa9a27a845540ebe55"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#ad02c78c4d3ca36fa9a27a845540ebe55">◆ </a></span>commonFiltering() <span class="overload">[2/2]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">RTABMAP_DEPRECATED <a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> RTABMAP_CORE_EXPORT rtabmap::util3d::commonFiltering </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const <a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> & </td>
|
||
<td class="paramname"><em>scan</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>downsamplingStep</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>rangeMin</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>rangeMax</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>voxelSize</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>normalK</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>normalRadius</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">bool </td>
|
||
<td class="paramname"><em>forceGroundNormalsUp</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Applies a common set of filters to a <a class="el" href="classrtabmap_1_1LaserScan.html" title="Represents 2D or 3D laser scan data with support for multiple point data formats.">LaserScan</a>, including downsampling, range limits, voxel grid filtering, and normal estimation. </p>
|
||
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000021">Deprecated:</a></b></dt><dd>Use version with groundNormalsUp as float. For forceGroundNormalsUp=true, set groundNormalsUpAngle=0.8, otherwise set groundNormalsUpAngle=0.0. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="ae33bcf90896fbedc448097bed3bde0ae" name="ae33bcf90896fbedc448097bed3bde0ae"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#ae33bcf90896fbedc448097bed3bde0ae">◆ </a></span>rangeFiltering()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname"><a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> RTABMAP_CORE_EXPORT rtabmap::util3d::rangeFiltering </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const <a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> & </td>
|
||
<td class="paramname"><em>scan</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>rangeMin</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>rangeMax</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Filters a <a class="el" href="classrtabmap_1_1LaserScan.html" title="Represents 2D or 3D laser scan data with support for multiple point data formats.">LaserScan</a> data on a minimum and maximum Euclidean range. </p>
|
||
<p>This function removes scan points from the input <a class="el" href="classrtabmap_1_1LaserScan.html" title="Represents 2D or 3D laser scan data with support for multiple point data formats.">LaserScan</a> that fall outside the specified minimum and maximum range (in meters) from the <a class="el" href="classrtabmap_1_1LaserScan.html" title="Represents 2D or 3D laser scan data with support for multiple point data formats.">LaserScan</a>'s viewpoint.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">scan</td><td>The input <a class="el" href="classrtabmap_1_1LaserScan.html" title="Represents 2D or 3D laser scan data with support for multiple point data formats.">LaserScan</a> object containing the scan data. </td></tr>
|
||
<tr><td class="paramname">rangeMin</td><td>The minimum range threshold. Points closer than this will be excluded. </td></tr>
|
||
<tr><td class="paramname">rangeMax</td><td>The maximum range threshold. Points farther than this will be excluded. </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>A new <a class="el" href="classrtabmap_1_1LaserScan.html" title="Represents 2D or 3D laser scan data with support for multiple point data formats.">LaserScan</a> object containing only the points within the specified range. If the input scan is empty or the range limits are both zero, the original scan is returned.</dd></dl>
|
||
<dl class="section note"><dt>Note</dt><dd>The function handles both 2D and 3D scans based on the <code>scan.is2d()</code> flag. The function doesn't keep the scan organized if the input is. </dd></dl>
|
||
<dl class="exception"><dt>Exceptions</dt><dd>
|
||
<table class="exception">
|
||
<tr><td class="paramname">Assertion</td><td>failure if either <code>rangeMin</code> or <code>rangeMax</code> is negative. </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a858e0a5338f348eb1033d6a85c3db926" name="a858e0a5338f348eb1033d6a85c3db926"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a858e0a5338f348eb1033d6a85c3db926">◆ </a></span>uniformSampling() <span class="overload">[1/3]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="mlabels">
|
||
<tr>
|
||
<td class="mlabels-left">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">pcl::PointCloud< pcl::PointXYZ >::Ptr rtabmap::util3d::uniformSampling </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const pcl::PointCloud< pcl::PointXYZ >::Ptr & </td>
|
||
<td class="paramname"><em>cloud</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>voxelSize</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">inline</span></span> </td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>DEPRECATED: Use <a class="el" href="group__VoxelFiltering.html#gad8d88a06174857cf53b1dc2cf2310d89" title="Performs voxel grid downsampling on a point cloud of type pcl::PointXYZ on provided indices.">voxelize()</a> instead. </p>
|
||
<p>Performs uniform sampling of a point cloud by applying voxel grid filtering with the specified voxel size. This is a legacy wrapper for <code><a class="el" href="group__VoxelFiltering.html#gad8d88a06174857cf53b1dc2cf2310d89" title="Performs voxel grid downsampling on a point cloud of type pcl::PointXYZ on provided indices.">voxelize()</a></code>.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">cloud</td><td>The input point cloud (pcl::PointXYZ). </td></tr>
|
||
<tr><td class="paramname">voxelSize</td><td>The voxel size (resolution) used for downsampling. </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>A downsampled point cloud using voxel grid filtering.</dd></dl>
|
||
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000022">Deprecated:</a></b></dt><dd>This function is deprecated. Use <a class="el" href="group__VoxelFiltering.html#gad8d88a06174857cf53b1dc2cf2310d89" title="Performs voxel grid downsampling on a point cloud of type pcl::PointXYZ on provided indices.">voxelize()</a> for equivalent behavior. </dd></dl>
|
||
|
||
<p class="definition">Definition at line <a class="el" href="util3d__filtering_8h_source.html#l00359">359</a> of file <a class="el" href="util3d__filtering_8h_source.html">util3d_filtering.h</a>.</p>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a8dfd7d808fa94e809b4a1a1fba6b8226" name="a8dfd7d808fa94e809b4a1a1fba6b8226"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a8dfd7d808fa94e809b4a1a1fba6b8226">◆ </a></span>uniformSampling() <span class="overload">[2/3]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="mlabels">
|
||
<tr>
|
||
<td class="mlabels-left">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">pcl::PointCloud< pcl::PointXYZRGB >::Ptr rtabmap::util3d::uniformSampling </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const pcl::PointCloud< pcl::PointXYZRGB >::Ptr & </td>
|
||
<td class="paramname"><em>cloud</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>voxelSize</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">inline</span></span> </td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>DEPRECATED: Use <a class="el" href="group__VoxelFiltering.html#gad8d88a06174857cf53b1dc2cf2310d89" title="Performs voxel grid downsampling on a point cloud of type pcl::PointXYZ on provided indices.">voxelize()</a> instead. </p>
|
||
<p>Performs uniform sampling of a point cloud by applying voxel grid filtering with the specified voxel size. This is a legacy wrapper for <code><a class="el" href="group__VoxelFiltering.html#gad8d88a06174857cf53b1dc2cf2310d89" title="Performs voxel grid downsampling on a point cloud of type pcl::PointXYZ on provided indices.">voxelize()</a></code>.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">cloud</td><td>The input point cloud (pcl::PointXYZRGB). </td></tr>
|
||
<tr><td class="paramname">voxelSize</td><td>The voxel size (resolution) used for downsampling. </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>A downsampled point cloud using voxel grid filtering.</dd></dl>
|
||
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000023">Deprecated:</a></b></dt><dd>This function is deprecated. Use <a class="el" href="group__VoxelFiltering.html#gad8d88a06174857cf53b1dc2cf2310d89" title="Performs voxel grid downsampling on a point cloud of type pcl::PointXYZ on provided indices.">voxelize()</a> for equivalent behavior. </dd></dl>
|
||
|
||
<p class="definition">Definition at line <a class="el" href="util3d__filtering_8h_source.html#l00377">377</a> of file <a class="el" href="util3d__filtering_8h_source.html">util3d_filtering.h</a>.</p>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="af526f72e838659de76ac45447d3860ae" name="af526f72e838659de76ac45447d3860ae"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#af526f72e838659de76ac45447d3860ae">◆ </a></span>uniformSampling() <span class="overload">[3/3]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="mlabels">
|
||
<tr>
|
||
<td class="mlabels-left">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr rtabmap::util3d::uniformSampling </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr & </td>
|
||
<td class="paramname"><em>cloud</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>voxelSize</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">inline</span></span> </td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>DEPRECATED: Use <a class="el" href="group__VoxelFiltering.html#gad8d88a06174857cf53b1dc2cf2310d89" title="Performs voxel grid downsampling on a point cloud of type pcl::PointXYZ on provided indices.">voxelize()</a> instead. </p>
|
||
<p>Performs uniform sampling of a point cloud by applying voxel grid filtering with the specified voxel size. This is a legacy wrapper for <code><a class="el" href="group__VoxelFiltering.html#gad8d88a06174857cf53b1dc2cf2310d89" title="Performs voxel grid downsampling on a point cloud of type pcl::PointXYZ on provided indices.">voxelize()</a></code>.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">cloud</td><td>The input point cloud (pcl::PointXYZRGBNormal). </td></tr>
|
||
<tr><td class="paramname">voxelSize</td><td>The voxel size (resolution) used for downsampling. </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>A downsampled point cloud using voxel grid filtering.</dd></dl>
|
||
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000024">Deprecated:</a></b></dt><dd>This function is deprecated. Use <a class="el" href="group__VoxelFiltering.html#gad8d88a06174857cf53b1dc2cf2310d89" title="Performs voxel grid downsampling on a point cloud of type pcl::PointXYZ on provided indices.">voxelize()</a> for equivalent behavior. </dd></dl>
|
||
|
||
<p class="definition">Definition at line <a class="el" href="util3d__filtering_8h_source.html#l00395">395</a> of file <a class="el" href="util3d__filtering_8h_source.html">util3d_filtering.h</a>.</p>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a2d730d57c10b9ef235388c8e6bd49132" name="a2d730d57c10b9ef235388c8e6bd49132"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a2d730d57c10b9ef235388c8e6bd49132">◆ </a></span>subtractAdaptiveFiltering() <span class="overload">[1/2]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">pcl::IndicesPtr RTABMAP_CORE_EXPORT rtabmap::util3d::subtractAdaptiveFiltering </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const pcl::PointCloud< pcl::PointXYZRGB >::Ptr & </td>
|
||
<td class="paramname"><em>cloud</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const pcl::IndicesPtr & </td>
|
||
<td class="paramname"><em>indices</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const pcl::PointCloud< pcl::PointXYZRGB >::Ptr & </td>
|
||
<td class="paramname"><em>subtractCloud</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const pcl::IndicesPtr & </td>
|
||
<td class="paramname"><em>subtractIndices</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>radiusSearchRatio</em> = <code>0.01</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>minNeighborsInRadius</em> = <code>1</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const Eigen::Vector3f & </td>
|
||
<td class="paramname"><em>viewpoint</em> = <code>Eigen::Vector3f(0, 0, 0)</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Performs adaptive radius-based subtraction filtering on a point cloud. </p>
|
||
<p>This function removes points from the input <code>cloud</code> that have at least <code>minNeighborsInRadius</code> neighbors within an adaptive radius in the <code>subtractCloud</code>. The search radius is scaled proportionally to the distance of each point from the <code>viewpoint</code>, using the <code>radiusSearchRatio</code>.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">cloud</td><td>The input point cloud to filter. </td></tr>
|
||
<tr><td class="paramname">indices</td><td>The subset of points in <code>cloud</code> to consider. If empty, the entire cloud is used. </td></tr>
|
||
<tr><td class="paramname">subtractCloud</td><td>The reference point cloud to search against. </td></tr>
|
||
<tr><td class="paramname">subtractIndices</td><td>Optional indices for <code>subtractCloud</code>. If empty, the full cloud is used. </td></tr>
|
||
<tr><td class="paramname">radiusSearchRatio</td><td>The ratio to scale the radius based on distance to <code>viewpoint</code>. </td></tr>
|
||
<tr><td class="paramname">minNeighborsInRadius</td><td>Minimum number of neighbors required to consider a point "covered". </td></tr>
|
||
<tr><td class="paramname">viewpoint</td><td>The reference viewpoint used to compute adaptive search radius.</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>The retained point indices from <code>cloud</code>.</dd></dl>
|
||
<dl class="section note"><dt>Note</dt><dd>Points with fewer than <code>minNeighborsInRadius</code> neighbors in the subtract cloud are retained. </dd></dl>
|
||
<dl class="section warning"><dt>Warning</dt><dd>This version does not consider surface normals; it is purely geometric. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="aa82dd73da48128b88a6aaf20c625814d" name="aa82dd73da48128b88a6aaf20c625814d"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#aa82dd73da48128b88a6aaf20c625814d">◆ </a></span>subtractAdaptiveFiltering() <span class="overload">[2/2]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">pcl::IndicesPtr RTABMAP_CORE_EXPORT rtabmap::util3d::subtractAdaptiveFiltering </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr & </td>
|
||
<td class="paramname"><em>cloud</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const pcl::IndicesPtr & </td>
|
||
<td class="paramname"><em>indices</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr & </td>
|
||
<td class="paramname"><em>subtractCloud</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const pcl::IndicesPtr & </td>
|
||
<td class="paramname"><em>subtractIndices</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>radiusSearchRatio</em> = <code>0.01</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>maxAngle</em> = <code>M_PI/4.0f</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>minNeighborsInRadius</em> = <code>1</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const Eigen::Vector3f & </td>
|
||
<td class="paramname"><em>viewpoint</em> = <code>Eigen::Vector3f(0, 0, 0)</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Performs adaptive radius-based subtraction filtering on a point cloud with normals, also considering normal direction differences. </p>
|
||
<p>This function removes points from the input <code>cloud</code> that have at least <code>minNeighborsInRadius</code> neighbors within an adaptive radius in the <code>subtractCloud</code>, unless the angular difference between normals exceeds <code>maxAngle</code>.</p>
|
||
<p>The search radius is scaled based on the distance of each point from the <code>viewpoint</code>, using the <code>radiusSearchRatio</code>. For neighbors found, the angle between their normals and the input point’s normal is evaluated. If the angle exceeds <code>maxAngle</code>, the neighbor is ignored.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">cloud</td><td>The input point cloud with normals to filter. </td></tr>
|
||
<tr><td class="paramname">indices</td><td>The subset of points in <code>cloud</code> to consider. If empty, the entire cloud is used. </td></tr>
|
||
<tr><td class="paramname">subtractCloud</td><td>The reference point cloud with normals to search against. </td></tr>
|
||
<tr><td class="paramname">subtractIndices</td><td>Optional indices for <code>subtractCloud</code>. If empty, the full cloud is used. </td></tr>
|
||
<tr><td class="paramname">radiusSearchRatio</td><td>The ratio to scale the radius based on distance to <code>viewpoint</code>. </td></tr>
|
||
<tr><td class="paramname">maxAngle</td><td>Maximum angle (in radians) allowed between normals of matched neighbors. </td></tr>
|
||
<tr><td class="paramname">minNeighborsInRadius</td><td>Minimum number of valid neighbors required to exclude a point. </td></tr>
|
||
<tr><td class="paramname">viewpoint</td><td>The reference viewpoint used to compute adaptive search radius.</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>The retained point indices from <code>cloud</code>.</dd></dl>
|
||
<dl class="section note"><dt>Note</dt><dd>Neighbors with normals exceeding <code>maxAngle</code> from the input point's normal are discarded. Points with fewer than <code>minNeighborsInRadius</code> valid neighbors are retained. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="acc584a6135a4567d4566f72a64d0770a" name="acc584a6135a4567d4566f72a64d0770a"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#acc584a6135a4567d4566f72a64d0770a">◆ </a></span>extractPlane()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">pcl::IndicesPtr RTABMAP_CORE_EXPORT rtabmap::util3d::extractPlane </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const pcl::PointCloud< pcl::PointXYZ >::Ptr & </td>
|
||
<td class="paramname"><em>cloud</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const pcl::IndicesPtr & </td>
|
||
<td class="paramname"><em>indices</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>distanceThreshold</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>maxIterations</em> = <code>100</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">pcl::ModelCoefficients * </td>
|
||
<td class="paramname"><em>coefficientsOut</em> = <code>0</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Extracts the indices of the inliers that belong to a plane using RANSAC. </p>
|
||
<p>This function uses the RANSAC algorithm to fit a plane model to a set of 3D points and returns the indices of the points that are considered inliers (i.e., those that lie close to the fitted plane). It also optionally outputs the coefficients of the plane (normal and offset).</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">cloud</td><td>The input point cloud. </td></tr>
|
||
<tr><td class="paramname">indices</td><td>An optional set of indices in the point cloud to use for segmentation. If empty, the whole cloud is used. </td></tr>
|
||
<tr><td class="paramname">distanceThreshold</td><td>The distance threshold for considering points as inliers to the plane. Points within this threshold are classified as inliers. </td></tr>
|
||
<tr><td class="paramname">maxIterations</td><td>The maximum number of iterations the RANSAC algorithm should run. </td></tr>
|
||
<tr><td class="paramname">coefficientsOut</td><td>An optional output pointer to store the coefficients of the plane model. The coefficients include the plane normal and offset.</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>A list of indices of points that are considered inliers to the fitted plane.</dd></dl>
|
||
<dl class="section note"><dt>Note</dt><dd>If the input <code>indices</code> is empty, the entire point cloud will be used for segmentation. </dd>
|
||
<dd>
|
||
If the <code>coefficientsOut</code> is not null, it will be filled with the model coefficients of the plane. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a4f1002c1825baf4b7606a94b4ea9b15d" name="a4f1002c1825baf4b7606a94b4ea9b15d"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a4f1002c1825baf4b7606a94b4ea9b15d">◆ </a></span>occupancy2DFromLaserScan() <span class="overload">[1/3]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">RTABMAP_DEPRECATED void RTABMAP_CORE_EXPORT rtabmap::util3d::occupancy2DFromLaserScan </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const cv::Mat & </td>
|
||
<td class="paramname"><em>scan</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">cv::Mat & </td>
|
||
<td class="paramname"><em>empty</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">cv::Mat & </td>
|
||
<td class="paramname"><em>occupied</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>cellSize</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">bool </td>
|
||
<td class="paramname"><em>unknownSpaceFilled</em> = <code>false</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>scanMaxRange</em> = <code>0.0f</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000025">Deprecated:</a></b></dt><dd>Use the overload taking a <code>viewpoint</code>, so that ray tracing starts from the sensor and not from the base frame. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="aa1c9dfd681662ff1c164956a83e30b57" name="aa1c9dfd681662ff1c164956a83e30b57"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#aa1c9dfd681662ff1c164956a83e30b57">◆ </a></span>occupancy2DFromLaserScan() <span class="overload">[2/3]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">RTABMAP_DEPRECATED void RTABMAP_CORE_EXPORT rtabmap::util3d::occupancy2DFromLaserScan </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const cv::Mat & </td>
|
||
<td class="paramname"><em>scan</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const cv::Point3f & </td>
|
||
<td class="paramname"><em>viewpoint</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">cv::Mat & </td>
|
||
<td class="paramname"><em>empty</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">cv::Mat & </td>
|
||
<td class="paramname"><em>occupied</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>cellSize</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">bool </td>
|
||
<td class="paramname"><em>unknownSpaceFilled</em> = <code>false</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>scanMaxRange</em> = <code>0.0f</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000026">Deprecated:</a></b></dt><dd>Use the overload taking <code>scanHit</code> / <code>scanNoHit</code>; passing a null <code>scanNoHit</code> is equivalent to this one. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a2d2f6d5adead09c6f87ef3f7cdebc65e" name="a2d2f6d5adead09c6f87ef3f7cdebc65e"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a2d2f6d5adead09c6f87ef3f7cdebc65e">◆ </a></span>occupancy2DFromLaserScan() <span class="overload">[3/3]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">void RTABMAP_CORE_EXPORT rtabmap::util3d::occupancy2DFromLaserScan </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const cv::Mat & </td>
|
||
<td class="paramname"><em>scanHit</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const cv::Mat & </td>
|
||
<td class="paramname"><em>scanNoHit</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const cv::Point3f & </td>
|
||
<td class="paramname"><em>viewpoint</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">cv::Mat & </td>
|
||
<td class="paramname"><em>empty</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">cv::Mat & </td>
|
||
<td class="paramname"><em>occupied</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>cellSize</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">bool </td>
|
||
<td class="paramname"><em>unknownSpaceFilled</em> = <code>false</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>scanMaxRange</em> = <code>0.0f</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Generates 2D occupancy grid maps (free and occupied cells) from laser scan data. </p>
|
||
<p>This function takes in a laser scan composed of hit and no-hit points and computes two 2D maps:</p><ul>
|
||
<li><code>empty</code>: 2D coordinates of free space (where the laser passed without hitting obstacles).</li>
|
||
<li><code>occupied</code>: precise 2D coordinates of obstacle hits (where the laser reflected).</li>
|
||
</ul>
|
||
<p>The internal representation uses a temporary occupancy map generated from <code><a class="el" href="namespacertabmap_1_1util3d.html#ae7dca67101116f7de0114cea5442ec23">create2DMap()</a></code>, from which free cells are extracted. Obstacle points are directly passed through, potentially clipped by a maximum range filter.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">scanHitIn</td><td>CV_32FC2 or CV_32FC(n>=2) matrix representing obstacle hits in 2D or 3D space (relative to base frame, not laser frame). </td></tr>
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">scanNoHitIn</td><td>CV_32FC2 or CV_32FC(n>=2) matrix representing laser rays that did not hit an obstacle (relative to base frame, not laser frame). </td></tr>
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">viewpoint</td><td>The viewpoint (sensor origin) from which the scan was taken, in 3D space, relative to base frame. This used to determinate the origin of ray tracing. </td></tr>
|
||
<tr><td class="paramdir">[out]</td><td class="paramname">empty</td><td>Output matrix (CV_32FC2) of free space points derived from ray tracing. </td></tr>
|
||
<tr><td class="paramdir">[out]</td><td class="paramname">occupied</td><td>Output matrix (CV_32FC2) of occupied (hit) points, filtered by max range if required. </td></tr>
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">cellSize</td><td>The resolution of the occupancy map grid (in meters per cell). </td></tr>
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">unknownSpaceFilled</td><td>If true, unknown space between hits is also filled via ray tracing. </td></tr>
|
||
<tr><td class="paramdir">[in]</td><td class="paramname">scanMaxRange</td><td>Maximum range of the scan (in meters). Values beyond this are clipped.</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section note"><dt>Note</dt><dd>The function assumes a single scan already converted in base frame for internal processing. </dd>
|
||
<dd>
|
||
If <code>scanMaxRange <= cellSize</code>, no range filtering is applied to the occupied points.</dd></dl>
|
||
<dl class="section see"><dt>See also</dt><dd><a class="el" href="namespacertabmap_1_1util3d.html#ae7dca67101116f7de0114cea5442ec23">create2DMap()</a>, <a class="el" href="namespacertabmap_1_1util3d.html#ae33bcf90896fbedc448097bed3bde0ae" title="Filters a LaserScan data on a minimum and maximum Euclidean range.">util3d::rangeFiltering()</a> </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a86ea393c958183f10da8f7327e25d894" name="a86ea393c958183f10da8f7327e25d894"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a86ea393c958183f10da8f7327e25d894">◆ </a></span>create2DMapFromOccupancyLocalMaps()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">cv::Mat RTABMAP_CORE_EXPORT rtabmap::util3d::create2DMapFromOccupancyLocalMaps </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > & </td>
|
||
<td class="paramname"><em>poses</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::map< int, std::pair< cv::Mat, cv::Mat > > & </td>
|
||
<td class="paramname"><em>occupancy</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>cellSize</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float & </td>
|
||
<td class="paramname"><em>xMin</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float & </td>
|
||
<td class="paramname"><em>yMin</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>minMapSize</em> = <code>0.0f</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">bool </td>
|
||
<td class="paramname"><em>erode</em> = <code>false</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>footprintRadius</em> = <code>0.0f</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Creates a 2D occupancy grid map from local occupancy data. </p>
|
||
<p>Generates a 2D occupancy grid (<code>CV_8S</code>) where:</p><ul>
|
||
<li>-1 indicates unknown space,</li>
|
||
<li>0 indicates free space,</li>
|
||
<li>100 indicates an occupied (obstacle) cell.</li>
|
||
</ul>
|
||
<p>This function transforms and merges local empty/occupied occupancy maps from multiple robot poses into a single global 2D grid map.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramdir"></td><td class="paramname">posesIn</td><td>Map of robot poses, indexed by node ID. </td></tr>
|
||
<tr><td class="paramdir"></td><td class="paramname">occupancy</td><td>Map of local occupancy data, indexed by node ID. Each pair contains two cv::Mat elements:<ul>
|
||
<li>First: empty cells (CV_32FC2) relative to base frame,</li>
|
||
<li>Second: occupied cells (CV_32FC2) relative to base frame. </li>
|
||
</ul>
|
||
</td></tr>
|
||
<tr><td class="paramdir"></td><td class="paramname">cellSize</td><td>The resolution of the map in meters per cell. </td></tr>
|
||
<tr><td class="paramdir">[out]</td><td class="paramname">xMin</td><td>Minimum x-coordinate (origin offset) of the resulting map (in meters). </td></tr>
|
||
<tr><td class="paramdir">[out]</td><td class="paramname">yMin</td><td>Minimum y-coordinate (origin offset) of the resulting map (in meters). </td></tr>
|
||
<tr><td class="paramdir"></td><td class="paramname">minMapSize</td><td>Minimum width/height of the output map in meters. If 0, size is computed from poses and occupancy data. </td></tr>
|
||
<tr><td class="paramdir"></td><td class="paramname">erode</td><td>Whether to post-process (erode) noisy obstacles. This helps remove isolated or thin obstacle artifacts. </td></tr>
|
||
<tr><td class="paramdir"></td><td class="paramname">footprintRadius</td><td>Radius of the robot footprint (in meters). Free space will be cleared under the robot.</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>cv::Mat The resulting occupancy grid map (CV_8S): -1 = unknown, 0 = free space, 100 = obstacle.</dd></dl>
|
||
<dl class="section warning"><dt>Warning</dt><dd>The output map can be very large if poses are far apart or cellSize is small. The function will not create a map if the estimated size exceeds reasonable limits (e.g. > 1.5 km).</dd></dl>
|
||
<dl class="section note"><dt>Note</dt><dd>The function will fill small holes surrounded by known cells and optionally erode noisy borders. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="ae7dca67101116f7de0114cea5442ec23" name="ae7dca67101116f7de0114cea5442ec23"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#ae7dca67101116f7de0114cea5442ec23">◆ </a></span>create2DMap() <span class="overload">[1/3]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">RTABMAP_DEPRECATED cv::Mat RTABMAP_CORE_EXPORT rtabmap::util3d::create2DMap </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > & </td>
|
||
<td class="paramname"><em>poses</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::map< int, pcl::PointCloud< pcl::PointXYZ >::Ptr > & </td>
|
||
<td class="paramname"><em>scans</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>cellSize</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">bool </td>
|
||
<td class="paramname"><em>unknownSpaceFilled</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float & </td>
|
||
<td class="paramname"><em>xMin</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float & </td>
|
||
<td class="paramname"><em>yMin</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>minMapSize</em> = <code>0.0f</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>scanMaxRange</em> = <code>0.0f</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000027">Deprecated:</a></b></dt><dd>Use the overload taking <code>viewpoints</code>, so that ray tracing starts from the sensor and not from the base frame. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="adcc1d4aca3da4fcb11fa44d3a20f46ca" name="adcc1d4aca3da4fcb11fa44d3a20f46ca"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#adcc1d4aca3da4fcb11fa44d3a20f46ca">◆ </a></span>create2DMap() <span class="overload">[2/3]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">RTABMAP_DEPRECATED cv::Mat RTABMAP_CORE_EXPORT rtabmap::util3d::create2DMap </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > & </td>
|
||
<td class="paramname"><em>poses</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::map< int, pcl::PointCloud< pcl::PointXYZ >::Ptr > & </td>
|
||
<td class="paramname"><em>scans</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::map< int, cv::Point3f > & </td>
|
||
<td class="paramname"><em>viewpoints</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>cellSize</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">bool </td>
|
||
<td class="paramname"><em>unknownSpaceFilled</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float & </td>
|
||
<td class="paramname"><em>xMin</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float & </td>
|
||
<td class="paramname"><em>yMin</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>minMapSize</em> = <code>0.0f</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>scanMaxRange</em> = <code>0.0f</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000028">Deprecated:</a></b></dt><dd>Use the overload taking <code>cv::Mat</code> scans. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="afff989b8fc8d612a69d82bdfa7a28fe8" name="afff989b8fc8d612a69d82bdfa7a28fe8"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#afff989b8fc8d612a69d82bdfa7a28fe8">◆ </a></span>create2DMap() <span class="overload">[3/3]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">cv::Mat RTABMAP_CORE_EXPORT rtabmap::util3d::create2DMap </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > & </td>
|
||
<td class="paramname"><em>poses</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::map< int, std::pair< cv::Mat, cv::Mat > > & </td>
|
||
<td class="paramname"><em>scans</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::map< int, cv::Point3f > & </td>
|
||
<td class="paramname"><em>viewpoints</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>cellSize</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">bool </td>
|
||
<td class="paramname"><em>unknownSpaceFilled</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float & </td>
|
||
<td class="paramname"><em>xMin</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float & </td>
|
||
<td class="paramname"><em>yMin</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>minMapSize</em> = <code>0.0f</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>scanMaxRange</em> = <code>0.0f</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Generates a 2D occupancy grid map from a set of poses, laser scans, and viewpoints. </p>
|
||
<p>This function aggregates laser scan data from multiple poses and creates a 2D occupancy grid (CV_8S: signed 8-bit) where:</p><ul>
|
||
<li><code>-1</code> represents unknown space,</li>
|
||
<li><code>0</code> represents free space,</li>
|
||
<li><code>100</code> represents occupied space (obstacles).</li>
|
||
</ul>
|
||
<p>The scans are first transformed into the global map frame using the corresponding pose. Obstacles and free space are inserted using ray tracing. Optionally, unknown areas between known rays can also be filled using radial sweeping.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramdir"></td><td class="paramname">poses</td><td>A map of node IDs to 3D poses (used to transform local scans to the global frame). </td></tr>
|
||
<tr><td class="paramdir"></td><td class="paramname">scans</td><td>A map of node IDs to pairs of laser scans (<code><hit, no-hit></code>), each as a <code>cv::Mat</code> of type <code>CV_32FC2</code>.<ul>
|
||
<li><code>first</code>: endpoints of beams hitting obstacles (relative to base frame, not laser frame).</li>
|
||
<li><code>second</code>: endpoints of beams not hitting any obstacle (relative to base frame, not laser frame). </li>
|
||
</ul>
|
||
</td></tr>
|
||
<tr><td class="paramdir"></td><td class="paramname">viewpoints</td><td>A map of node IDs to local sensor origin offsets relative to each pose (e.g., lidar offset /base_link -> /base_scan). This is used to determinate the starting point for each ray trace. </td></tr>
|
||
<tr><td class="paramdir"></td><td class="paramname">cellSize</td><td>The size of each grid cell in meters. </td></tr>
|
||
<tr><td class="paramdir"></td><td class="paramname">unknownSpaceFilled</td><td>If true, fills areas between known rays (fan sweeping) up to <code>scanMaxRange</code>. </td></tr>
|
||
<tr><td class="paramdir">[out]</td><td class="paramname">xMin</td><td>The minimum x value (in meters) of the grid origin relative to map coordinates. </td></tr>
|
||
<tr><td class="paramdir">[out]</td><td class="paramname">yMin</td><td>The minimum y value (in meters) of the grid origin relative to map coordinates. </td></tr>
|
||
<tr><td class="paramdir"></td><td class="paramname">minMapSize</td><td>The minimum width and height (in meters) of the map. Ensures the output map has a minimum footprint. </td></tr>
|
||
<tr><td class="paramdir"></td><td class="paramname">scanMaxRange</td><td>The maximum range (in meters) of the sensor. Used to limit ray tracing and padding.</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>A 2D occupancy grid map (<code>cv::Mat</code> of type <code>CV_8S</code>) where:<ul>
|
||
<li><code>-1</code> = unknown</li>
|
||
<li><code>0</code> = free space</li>
|
||
<li><code>100</code> = obstacle</li>
|
||
</ul>
|
||
</dd></dl>
|
||
<dl class="section note"><dt>Note</dt><dd>If <code>scanMaxRange <= 0</code>, map size is determined based on scan data bounds. </dd>
|
||
<dd>
|
||
Grid coordinates are calculated with padding to ensure all points fall within the map. </dd>
|
||
<dd>
|
||
This function uses ray tracing internally via the <code><a class="el" href="namespacertabmap_1_1util3d.html#a281695150f5c02e6222d050f488a9d6b" title="Performs a 2D ray tracing operation between two points on a grid map.">rayTrace()</a></code> function. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a281695150f5c02e6222d050f488a9d6b" name="a281695150f5c02e6222d050f488a9d6b"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a281695150f5c02e6222d050f488a9d6b">◆ </a></span>rayTrace()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">void RTABMAP_CORE_EXPORT rtabmap::util3d::rayTrace </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const cv::Point2i & </td>
|
||
<td class="paramname"><em>start</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const cv::Point2i & </td>
|
||
<td class="paramname"><em>end</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">cv::Mat & </td>
|
||
<td class="paramname"><em>grid</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">bool </td>
|
||
<td class="paramname"><em>stopOnObstacle</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Performs a 2D ray tracing operation between two points on a grid map. </p>
|
||
<p>This function draws a line from the <code>start</code> point to the <code>end</code> point on a grid (e.g., occupancy grid), marking all traversed cells as free (value = 0) unless an obstacle (value = 100) is encountered. The line follows an integer rasterization algorithm (like Bresenham’s line), accounting for steep slopes by transposing axes when needed.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">start</td><td>The starting point of the ray (2D grid coordinates). </td></tr>
|
||
<tr><td class="paramname">end</td><td>The ending point of the ray (2D grid coordinates). This point is clipped to the grid bounds. </td></tr>
|
||
<tr><td class="paramname">grid</td><td>A mutable 2D grid represented as a <code>cv::Mat</code> of signed char values. Assumes 100 denotes obstacles; 0 denotes free space. </td></tr>
|
||
<tr><td class="paramname">stopOnObstacle</td><td>If true, the ray trace stops upon hitting a cell marked with 100 (an obstacle).</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section note"><dt>Note</dt><dd><ul>
|
||
<li>If the slope of the line is steep (outside the range [-1, 1]), the algorithm swaps x and y axes for correctness.</li>
|
||
<li>The function ensures both the start and end points are within the bounds of the grid.</li>
|
||
<li>All visited cells along the path (except obstacles when <code>stopOnObstacle</code> is true) will be updated to 0 (free).</li>
|
||
<li>The grid must have type <code>CV_8SC1</code> (signed 8-bit single-channel matrix). </li>
|
||
</ul>
|
||
</dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="ae57dd8dcc488496a2c3872eba97eb4e4" name="ae57dd8dcc488496a2c3872eba97eb4e4"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#ae57dd8dcc488496a2c3872eba97eb4e4">◆ </a></span>convertMap2Image8U()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">cv::Mat RTABMAP_CORE_EXPORT rtabmap::util3d::convertMap2Image8U </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const cv::Mat & </td>
|
||
<td class="paramname"><em>map8S</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">bool </td>
|
||
<td class="paramname"><em>pgmFormat</em> = <code>false</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Converts an occupancy grid map (CV_8S) to a grayscale image (CV_8U). </p>
|
||
<p>This function takes a signed 8-bit occupancy grid map and produces a corresponding 8-bit unsigned grayscale image. The pixel values are mapped based on the occupancy values:</p>
|
||
<ul>
|
||
<li><code>0</code> (free space) → 178 (normal) or 254 (PGM format)</li>
|
||
<li><code>100</code> (obstacle) → 0 (black)</li>
|
||
<li><code>-2</code> (robot footprint) → 200 (normal) or 254 (PGM format)</li>
|
||
<li><code>-1</code> (unknown) → 89 (normal) or 205 (PGM format)</li>
|
||
<li><code>v > 50</code> (partial obstacle): scaled to range [0, 89]</li>
|
||
<li><code>v < 50</code> (partial free): scaled to range [89, 178]</li>
|
||
</ul>
|
||
<p>If <code>pgmFormat</code> is true, the vertical axis is flipped (for PGM format compatibility).</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">map8S</td><td>The input occupancy grid map as a CV_8S single-channel matrix. Must contain values such as -1 (unknown), 0 (free), 100 (occupied). </td></tr>
|
||
<tr><td class="paramname">pgmFormat</td><td>If true, output will be formatted for PGM file format (inverted Y-axis and different gray scale mapping).</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>A CV_8U grayscale image with pixel values representing occupancy status.</dd></dl>
|
||
<dl class="exception"><dt>Exceptions</dt><dd>
|
||
<table class="exception">
|
||
<tr><td class="paramname">UASSERT</td><td>if the input map is not a single-channel CV_8S matrix. </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="acb47883439442306b63f5bf234e87049" name="acb47883439442306b63f5bf234e87049"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#acb47883439442306b63f5bf234e87049">◆ </a></span>convertImage8U2Map()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">cv::Mat RTABMAP_CORE_EXPORT rtabmap::util3d::convertImage8U2Map </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const cv::Mat & </td>
|
||
<td class="paramname"><em>map8U</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">bool </td>
|
||
<td class="paramname"><em>pgmFormat</em> = <code>false</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Converts a grayscale occupancy image (CV_8U) to an occupancy grid map (CV_8S). </p>
|
||
<p>This function interprets grayscale pixel values from an input image and converts them into occupancy values used in a typical occupancy grid map:</p><ul>
|
||
<li>100: Occupied</li>
|
||
<li>0: Free</li>
|
||
<li>-1: Unknown</li>
|
||
<li>-2: Free space under robot footprint (non-PGM only)</li>
|
||
</ul>
|
||
<p>The interpretation differs slightly depending on whether the input image is in PGM format (common in ROS map_server) or in standard grayscale.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">map8U</td><td>Input grayscale image (type CV_8U, single-channel). </td></tr>
|
||
<tr><td class="paramname">pgmFormat</td><td>If true, assumes PGM format:<ul>
|
||
<li>0 = occupied</li>
|
||
<li>254 = free</li>
|
||
<li>205 = unknown If false (normal format):</li>
|
||
<li>0 = occupied</li>
|
||
<li>178 = free</li>
|
||
<li>200 = footprint (free space under robot)</li>
|
||
<li>89 = unknown</li>
|
||
</ul>
|
||
</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>A CV_8S occupancy grid map with encoded occupancy values.</dd></dl>
|
||
<dl class="exception"><dt>Exceptions</dt><dd>
|
||
<table class="exception">
|
||
<tr><td class="paramname">Assertion</td><td>failure if input image is not of type CV_8U or not single-channel. </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="aa4d323d39ec23ea314c22f0668ab11c4" name="aa4d323d39ec23ea314c22f0668ab11c4"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#aa4d323d39ec23ea314c22f0668ab11c4">◆ </a></span>erodeMap()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">cv::Mat RTABMAP_CORE_EXPORT rtabmap::util3d::erodeMap </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const cv::Mat & </td>
|
||
<td class="paramname"><em>map</em></td><td>)</td>
|
||
<td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Performs erosion on an occupancy grid map to reduce small noisy obstacles. </p>
|
||
<p>This function scans a given occupancy grid (<code>CV_8SC1</code> format) and removes obstacle cells (value <code>100</code>) that are surrounded by at least 3 empty cells (value <code>0</code>) and no adjacent unknown cells (value <code>-1</code>). These obstacles are likely noise and are converted into empty space (value <code>0</code>) in the resulting map.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">map</td><td>Input occupancy grid map of type <code>CV_8SC1</code> where:<ul>
|
||
<li><code>100</code> represents obstacles,</li>
|
||
<li><code>0</code> represents free space,</li>
|
||
<li><code>-1</code> represents unknown space.</li>
|
||
</ul>
|
||
</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>A new <code>cv::Mat</code> of the same size and type as the input map, with eroded obstacles. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a58ee399b0bca3a8af41e74d0eced5f84" name="a58ee399b0bca3a8af41e74d0eced5f84"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a58ee399b0bca3a8af41e74d0eced5f84">◆ </a></span>segmentObstaclesFromGround() <span class="overload">[3/3]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<div class="memtemplate">
|
||
template<typename PointT > </div>
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">void rtabmap::util3d::segmentObstaclesFromGround </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const typename pcl::PointCloud< PointT >::Ptr & </td>
|
||
<td class="paramname"><em>cloud</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const pcl::IndicesPtr & </td>
|
||
<td class="paramname"><em>indices</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">pcl::IndicesPtr & </td>
|
||
<td class="paramname"><em>ground</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">pcl::IndicesPtr & </td>
|
||
<td class="paramname"><em>obstacles</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>normalKSearch</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>groundNormalAngle</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>clusterRadius</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>minClusterSize</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">bool </td>
|
||
<td class="paramname"><em>segmentFlatObstacles</em> = <code>false</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>maxGroundHeight</em> = <code>0.0f</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">pcl::IndicesPtr * </td>
|
||
<td class="paramname"><em>flatObstacles</em> = <code>0</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const Eigen::Vector4f & </td>
|
||
<td class="paramname"><em>viewPoint</em> = <code>Eigen::Vector4f(0, 0, 100, 0)</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>groundNormalsUp</em> = <code>0</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Segments ground and obstacle indices from a point cloud using surface normals and clustering. </p>
|
||
<p>This function analyzes a point cloud to identify flat surfaces (e.g., ground) and separates them from potential obstacles based on normal orientation, height constraints, and optional clustering. Optionally, flat obstacles (e.g., tables, ramps) can be segmented separately.</p>
|
||
<dl class="tparams"><dt>Template Parameters</dt><dd>
|
||
<table class="tparams">
|
||
<tr><td class="paramname">PointT</td><td>The type of point used in the point cloud (e.g., pcl::PointXYZ).</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">cloud</td><td>The input point cloud. </td></tr>
|
||
<tr><td class="paramname">indices</td><td>Optional input indices to consider from the cloud (e.g., from a prior ROI extraction). </td></tr>
|
||
<tr><td class="paramname">ground</td><td>Output pointer where indices corresponding to ground points will be stored. </td></tr>
|
||
<tr><td class="paramname">obstacles</td><td>Output pointer where indices corresponding to obstacle points will be stored. </td></tr>
|
||
<tr><td class="paramname">normalKSearch</td><td>Number of neighbors to use for normal estimation. </td></tr>
|
||
<tr><td class="paramname">groundNormalAngle</td><td>Maximum angle (in radians) between the estimated normal and the "up" direction for a surface to be considered ground. </td></tr>
|
||
<tr><td class="paramname">clusterRadius</td><td>The Euclidean distance threshold for clustering flat surfaces and obstacles. </td></tr>
|
||
<tr><td class="paramname">minClusterSize</td><td>The minimum number of points required to form a valid cluster. </td></tr>
|
||
<tr><td class="paramname">segmentFlatObstacles</td><td>If true, flat but non-ground surfaces (e.g., tables) are detected and optionally returned via <code>flatObstacles</code>. </td></tr>
|
||
<tr><td class="paramname">maxGroundHeight</td><td>Maximum Z-height for a surface to be considered ground (0 disables filtering). Note that all obstacle points under that threshold will be ignored (i.e., won't be returned in <code>obstacles</code>). </td></tr>
|
||
<tr><td class="paramname">flatObstacles</td><td>Optional output pointer where indices corresponding to flat obstacles will be stored (only valid if <code>segmentFlatObstacles</code> is true). </td></tr>
|
||
<tr><td class="paramname">viewPoint</td><td>The viewpoint to use for normal estimation (important for consistent orientation). </td></tr>
|
||
<tr><td class="paramname">groundNormalsUp</td><td>Threshold (between 0 and 1) used to detect and flip ground-facing normals (set to 0.0f to disable). If the Z component of a normal is less than <code>-groundNormalsUp</code> and the corresponding point is below the viewpoint, the normal will be flipped. </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a5f95aa913b08b0d0f12e9fc02b087692" name="a5f95aa913b08b0d0f12e9fc02b087692"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a5f95aa913b08b0d0f12e9fc02b087692">◆ </a></span>setRansacDeterministicSeed()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">void RTABMAP_CORE_EXPORT rtabmap::util3d::setRansacDeterministicSeed </td>
|
||
<td>(</td>
|
||
<td class="paramtype">bool </td>
|
||
<td class="paramname"><em>enable</em></td><td>)</td>
|
||
<td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Toggle a deterministic seed for OpenGV's internal RANSAC RNG. </p>
|
||
<p>OpenGV's <code>SampleConsensusProblem</code> (and its multi-camera sibling) seeds its internal <code>std::mt19937</code> from the system clock when default-constructed, which makes every <a class="el" href="namespacertabmap_1_1util3d.html#a94321442a82f05368f8fd9c9a998284e">estimateMotion3DTo2D()</a> call non-reproducible across runs. Calling <code>setRansacDeterministicSeed(true)</code> reseeds OpenGV's RNG with the fixed value <code>12345</code> before each RANSAC pass so identical inputs always produce identical inlier sets, covariances and output transforms.</p>
|
||
<p>Intended for tests; production code should leave this off (default).</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">enable</td><td>If true, force the deterministic seed; if false (default), use OpenGV's system-clock seed.</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="ad918f390fa8b4d331561d5a00d61ea7b" name="ad918f390fa8b4d331561d5a00d61ea7b"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#ad918f390fa8b4d331561d5a00d61ea7b">◆ </a></span>ransacDeterministicSeedEnabled()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">bool RTABMAP_CORE_EXPORT rtabmap::util3d::ransacDeterministicSeedEnabled </td>
|
||
<td>(</td>
|
||
<td class="paramname"></td><td>)</td>
|
||
<td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
<dl class="section return"><dt>Returns</dt><dd>Whether the deterministic-seed toggle is currently enabled. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a94321442a82f05368f8fd9c9a998284e" name="a94321442a82f05368f8fd9c9a998284e"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a94321442a82f05368f8fd9c9a998284e">◆ </a></span>estimateMotion3DTo2D() <span class="overload">[1/3]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname"><a class="el" href="classrtabmap_1_1Transform.html">Transform</a> RTABMAP_CORE_EXPORT rtabmap::util3d::estimateMotion3DTo2D </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const std::map< int, cv::Point3f > & </td>
|
||
<td class="paramname"><em>words3A</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::map< int, cv::KeyPoint > & </td>
|
||
<td class="paramname"><em>words2B</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const <a class="el" href="classrtabmap_1_1CameraModel.html">CameraModel</a> & </td>
|
||
<td class="paramname"><em>cameraModel</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>minInliers</em> = <code>10</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>iterations</em> = <code>100</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">double </td>
|
||
<td class="paramname"><em>reprojError</em> = <code>5.</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>flagsPnP</em> = <code>0</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>pnpRefineIterations</em> = <code>1</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>varianceMedianRatio</em> = <code>4</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>maxVariance</em> = <code>0</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> & </td>
|
||
<td class="paramname"><em>guess</em> = <code><a class="el" href="classrtabmap_1_1Transform.html#a8ea4368f2018d751d2733038081d56a2">Transform::getIdentity</a>()</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::map< int, cv::Point3f > & </td>
|
||
<td class="paramname"><em>words3B</em> = <code>std::map< int, cv::Point3f >()</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">cv::Mat * </td>
|
||
<td class="paramname"><em>covariance</em> = <code>0</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">std::vector< int > * </td>
|
||
<td class="paramname"><em>matchesOut</em> = <code>0</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">std::vector< int > * </td>
|
||
<td class="paramname"><em>inliersOut</em> = <code>0</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">bool </td>
|
||
<td class="paramname"><em>splitLinearCovarianceComponents</em> = <code>false</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Estimates a 6-DOF camera transform from 3D-2D point correspondences using PnP RANSAC. </p>
|
||
<p>This function estimates the motion (transform) between two views by solving the Perspective-n-Point (PnP) problem using 3D points from one frame and their corresponding 2D keypoints in another frame. It optionally refines the result, computes covariance of the pose estimate, and handles degenerate cases.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">words3A</td><td>3D points in frame A, indexed by feature ID. </td></tr>
|
||
<tr><td class="paramname">words2B</td><td>2D keypoints in frame B, indexed by feature ID (shared with <code>words3A</code>). </td></tr>
|
||
<tr><td class="paramname">cameraModel</td><td>Intrinsic and extrinsic parameters of the camera (must be valid). </td></tr>
|
||
<tr><td class="paramname">minInliers</td><td>Minimum number of inliers required to accept the estimated transform. If the value is <4, it is set internally to 4. </td></tr>
|
||
<tr><td class="paramname">iterations</td><td>Number of RANSAC iterations for PnP. </td></tr>
|
||
<tr><td class="paramname">reprojError</td><td>Maximum allowed reprojection error (in pixels) to consider a point an inlier. </td></tr>
|
||
<tr><td class="paramname">flagsPnP</td><td>Flags to control the <code>cv::solvePnPRansac</code> behavior (e.g., <code>cv::SOLVEPNP_ITERATIVE</code>). </td></tr>
|
||
<tr><td class="paramname">refineIterations</td><td>Number of iterations for non-linear optimization (set to 0 to disable refinement). </td></tr>
|
||
<tr><td class="paramname">varianceMedianRatio</td><td>Index divisor used to select the robust variance threshold from sorted error residuals (e.g., 4 → use the 25% percentile). </td></tr>
|
||
<tr><td class="paramname">maxVariance</td><td>Maximum allowed median variance (linear error). Estimates with higher variance are rejected. </td></tr>
|
||
<tr><td class="paramname">guess</td><td>Initial guess for the camera pose (must not be null). Typically from odometry or motion model. </td></tr>
|
||
<tr><td class="paramname">words3B</td><td>Optional 3D points in frame B (if available). Used to better estimate 3D errors and variances. </td></tr>
|
||
<tr><td class="paramname">covariance</td><td>Optional output pointer for the estimated 6x6 pose covariance matrix. The matrix contains linear variance in the top-left 3x3 and angular variance in the bottom-right 3x3. </td></tr>
|
||
<tr><td class="paramname">matchesOut</td><td>Optional output vector of all matched IDs used (regardless of inlier status). </td></tr>
|
||
<tr><td class="paramname">inliersOut</td><td>Optional output vector of matched IDs that were determined to be inliers. </td></tr>
|
||
<tr><td class="paramname">splitLinearCovarianceComponents</td><td>Whether to split and compute variance for X, Y, Z components separately.</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>The estimated transformation from frame B to frame A. If estimation fails or is rejected due to variance, a null transform is returned (i.e., <code>transform.isNull()</code> will be true).</dd></dl>
|
||
<dl class="section note"><dt>Note</dt><dd><ul>
|
||
<li>If <code>words3B</code> is provided, 3D variance is computed by comparing reprojected points to actual transformed points.</li>
|
||
<li>If <code>words3B</code> is empty, variance is estimated using reprojection error only.</li>
|
||
<li>The function assumes the camera model's local transform is known and factored into the pose estimation.</li>
|
||
</ul>
|
||
</dd></dl>
|
||
<dl class="section see"><dt>See also</dt><dd>cv::solvePnPRansac </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a3fffe99bf880decfb8a9f60ff7b882bd" name="a3fffe99bf880decfb8a9f60ff7b882bd"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a3fffe99bf880decfb8a9f60ff7b882bd">◆ </a></span>estimateMotion3DTo2D() <span class="overload">[2/3]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname"><a class="el" href="classrtabmap_1_1Transform.html">Transform</a> RTABMAP_CORE_EXPORT rtabmap::util3d::estimateMotion3DTo2D </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const std::map< int, cv::Point3f > & </td>
|
||
<td class="paramname"><em>words3A</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::map< int, cv::KeyPoint > & </td>
|
||
<td class="paramname"><em>words2B</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::vector< <a class="el" href="classrtabmap_1_1CameraModel.html">CameraModel</a> > & </td>
|
||
<td class="paramname"><em>cameraModels</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">unsigned int </td>
|
||
<td class="paramname"><em>samplingPolicy</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>minInliers</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>iterations</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">double </td>
|
||
<td class="paramname"><em>reprojError</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>flagsPnP</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>refineIterations</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>varianceMedianRatio</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>maxVariance</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> & </td>
|
||
<td class="paramname"><em>guess</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::map< int, cv::Point3f > & </td>
|
||
<td class="paramname"><em>words3B</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">cv::Mat * </td>
|
||
<td class="paramname"><em>covariance</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">std::vector< std::vector< int > > * </td>
|
||
<td class="paramname"><em>matchesOut</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">std::vector< std::vector< int > > * </td>
|
||
<td class="paramname"><em>inliersOut</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">bool </td>
|
||
<td class="paramname"><em>splitLinearCovarianceComponents</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Estimates the 3D-to-2D motion (pose) transformation between a set of 3D points and their corresponding 2D keypoints using the OpenGV library. </p>
|
||
<p>This function uses a robust multi-camera Perspective-n-Point (PnP) algorithm to estimate the transformation from a 3D point cloud (scene A) to a set of 2D keypoints (scene B) given the corresponding camera models and initial pose guess. The method supports multiple camera models and uses RANSAC with OpenGV for outlier rejection.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">words3A</td><td>3D points in the source frame (scene A), indexed by feature ID. </td></tr>
|
||
<tr><td class="paramname">words2B</td><td>2D keypoints in the destination frame (scene B), indexed by feature ID. </td></tr>
|
||
<tr><td class="paramname">cameraModels</td><td>List of camera models (multi-camera rig setup) for the destination frame. </td></tr>
|
||
<tr><td class="paramname">samplingPolicy</td><td>Sampling strategy (0 = auto, 1 = any, 2 = homogeneous multi-camera). </td></tr>
|
||
<tr><td class="paramname">minInliers</td><td>Minimum number of inliers required to consider the estimated transform as valid. </td></tr>
|
||
<tr><td class="paramname">iterations</td><td>Maximum number of RANSAC iterations. </td></tr>
|
||
<tr><td class="paramname">reprojError</td><td>Reprojection error threshold used by RANSAC. </td></tr>
|
||
<tr><td class="paramname">flagsPnP</td><td>PnP flags (not used internally). </td></tr>
|
||
<tr><td class="paramname">refineIterations</td><td>Number of pose refinement iterations after RANSAC (not used internally). </td></tr>
|
||
<tr><td class="paramname">varianceMedianRatio</td><td>Divider used to compute median-based variance from the error distribution. </td></tr>
|
||
<tr><td class="paramname">maxVariance</td><td>Maximum allowed variance to accept the transform. Higher values permit more noisy estimates. </td></tr>
|
||
<tr><td class="paramname">guess</td><td>Initial guess of the transformation. </td></tr>
|
||
<tr><td class="paramname">words3B</td><td>Optional 3D points in destination frame (scene B) to evaluate the covariance using 3D correspondences, otherwise covariance is estimated from reprojection errors. </td></tr>
|
||
<tr><td class="paramname">covariance</td><td>Optional output 6x6 covariance matrix of the estimated transform. </td></tr>
|
||
<tr><td class="paramname">matchesOut</td><td>Optional output: matches grouped per camera. </td></tr>
|
||
<tr><td class="paramname">inliersOut</td><td>Optional output: inliers grouped per camera. </td></tr>
|
||
<tr><td class="paramname">splitLinearCovarianceComponents</td><td>If true, linear covariance is split into separate x/y/z components.</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>The estimated <a class="el" href="classrtabmap_1_1Transform.html" title="Represents a 3D rigid body transformation (rotation + translation).">Transform</a> from scene A to scene B. Returns a null <a class="el" href="classrtabmap_1_1Transform.html" title="Represents a 3D rigid body transformation (rotation + translation).">Transform</a> if estimation fails or variance exceeds threshold.</dd></dl>
|
||
<dl class="section note"><dt>Note</dt><dd>This function requires RTAB-Map to be built with OpenGV support.</dd></dl>
|
||
<dl class="section warning"><dt>Warning</dt><dd>The function assumes all camera models have the same image width and valid intrinsic parameters.</dd></dl>
|
||
<dl class="section see"><dt>See also</dt><dd><a href="https://github.com/laurentkneip/opengv">https://github.com/laurentkneip/opengv</a> </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a0a1a57cb2be47c4b6670672b2a0a5a93" name="a0a1a57cb2be47c4b6670672b2a0a5a93"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a0a1a57cb2be47c4b6670672b2a0a5a93">◆ </a></span>estimateMotion3DTo2D() <span class="overload">[3/3]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname"><a class="el" href="classrtabmap_1_1Transform.html">Transform</a> RTABMAP_CORE_EXPORT rtabmap::util3d::estimateMotion3DTo2D </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const std::map< int, cv::Point3f > & </td>
|
||
<td class="paramname"><em>words3A</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::map< int, cv::KeyPoint > & </td>
|
||
<td class="paramname"><em>words2B</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::vector< <a class="el" href="classrtabmap_1_1CameraModel.html">CameraModel</a> > & </td>
|
||
<td class="paramname"><em>cameraModels</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">unsigned int </td>
|
||
<td class="paramname"><em>samplingPolicy</em> = <code>0</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>minInliers</em> = <code>10</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>iterations</em> = <code>100</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">double </td>
|
||
<td class="paramname"><em>reprojError</em> = <code>5.</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>flagsPnP</em> = <code>0</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>pnpRefineIterations</em> = <code>1</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>varianceMedianRatio</em> = <code>4</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>maxVariance</em> = <code>0</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> & </td>
|
||
<td class="paramname"><em>guess</em> = <code><a class="el" href="classrtabmap_1_1Transform.html#a8ea4368f2018d751d2733038081d56a2">Transform::getIdentity</a>()</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::map< int, cv::Point3f > & </td>
|
||
<td class="paramname"><em>words3B</em> = <code>std::map< int, cv::Point3f >()</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">cv::Mat * </td>
|
||
<td class="paramname"><em>covariance</em> = <code>0</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">std::vector< int > * </td>
|
||
<td class="paramname"><em>matchesOut</em> = <code>0</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">std::vector< int > * </td>
|
||
<td class="paramname"><em>inliersOut</em> = <code>0</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">bool </td>
|
||
<td class="paramname"><em>splitLinearCovarianceComponents</em> = <code>false</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Estimates the 3D-to-2D motion (pose) transformation between a set of 3D points and their corresponding 2D keypoints using the OpenGV library. </p>
|
||
<dl class="section see"><dt>See also</dt><dd><a class="el" href="namespacertabmap_1_1util3d.html#a94321442a82f05368f8fd9c9a998284e" title="Estimates a 6-DOF camera transform from 3D-2D point correspondences using PnP RANSAC.">estimateMotion3DTo2D()</a>, the only difference is that output matches and inliers are combined in same vector instead of per camera </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a717fefeecb331b1dddc3ec3b4f6beb3a" name="a717fefeecb331b1dddc3ec3b4f6beb3a"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a717fefeecb331b1dddc3ec3b4f6beb3a">◆ </a></span>estimateMotion3DTo3D()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname"><a class="el" href="classrtabmap_1_1Transform.html">Transform</a> RTABMAP_CORE_EXPORT rtabmap::util3d::estimateMotion3DTo3D </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const std::map< int, cv::Point3f > & </td>
|
||
<td class="paramname"><em>words3A</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::map< int, cv::Point3f > & </td>
|
||
<td class="paramname"><em>words3B</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>minInliers</em> = <code>10</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">double </td>
|
||
<td class="paramname"><em>inliersDistance</em> = <code>0.1</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>iterations</em> = <code>100</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>refineIterations</em> = <code>5</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">cv::Mat * </td>
|
||
<td class="paramname"><em>covariance</em> = <code>0</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">std::vector< int > * </td>
|
||
<td class="paramname"><em>matchesOut</em> = <code>0</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">std::vector< int > * </td>
|
||
<td class="paramname"><em>inliersOut</em> = <code>0</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Estimates the 3D rigid transformation between two sets of 3D points. </p>
|
||
<p>This function matches 3D points from two frames (A and B) using their unique IDs, filters correspondences based on a minimum number of inliers and distance threshold, and estimates the 6DoF transformation using PCL's RANSAC-based method.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">words3A</td><td>A map of 3D points from the previous frame (id -> point). </td></tr>
|
||
<tr><td class="paramname">words3B</td><td>A map of 3D points from the current frame (id -> point). </td></tr>
|
||
<tr><td class="paramname">minInliers</td><td>Minimum number of inliers required to accept the transformation. </td></tr>
|
||
<tr><td class="paramname">inliersDistance</td><td>Maximum distance between correspondences to be considered inliers. </td></tr>
|
||
<tr><td class="paramname">iterations</td><td>Maximum number of RANSAC iterations. </td></tr>
|
||
<tr><td class="paramname">refineIterations</td><td>Number of iterations for refining the transformation after RANSAC. </td></tr>
|
||
<tr><td class="paramname">covariance</td><td>(Optional) Output 6x6 covariance matrix of the estimated transform. </td></tr>
|
||
<tr><td class="paramname">matchesOut</td><td>(Optional) Output vector of all matched point IDs (from words3A). </td></tr>
|
||
<tr><td class="paramname">inliersOut</td><td>(Optional) Output vector of inlier point IDs (subset of matchesOut).</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>A <a class="el" href="classrtabmap_1_1Transform.html" title="Represents a 3D rigid body transformation (rotation + translation).">Transform</a> object representing the estimated rigid body motion from frame B to A. If not enough inliers are found or the estimation fails, a null <a class="el" href="classrtabmap_1_1Transform.html" title="Represents a 3D rigid body transformation (rotation + translation).">Transform</a> is returned. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="ad426e396a196d6f69a004bb55982f9f7" name="ad426e396a196d6f69a004bb55982f9f7"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#ad426e396a196d6f69a004bb55982f9f7">◆ </a></span>solvePnPRansac()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">void RTABMAP_CORE_EXPORT rtabmap::util3d::solvePnPRansac </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const std::vector< cv::Point3f > & </td>
|
||
<td class="paramname"><em>objectPoints</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::vector< cv::Point2f > & </td>
|
||
<td class="paramname"><em>imagePoints</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const cv::Mat & </td>
|
||
<td class="paramname"><em>cameraMatrix</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const cv::Mat & </td>
|
||
<td class="paramname"><em>distCoeffs</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">cv::Mat & </td>
|
||
<td class="paramname"><em>rvec</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">cv::Mat & </td>
|
||
<td class="paramname"><em>tvec</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">bool </td>
|
||
<td class="paramname"><em>useExtrinsicGuess</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>iterationsCount</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>reprojectionError</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>minInliersCount</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">std::vector< int > & </td>
|
||
<td class="paramname"><em>inliers</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>flags</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>refineIterations</em> = <code>1</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>refineSigma</em> = <code>3.0f</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Estimates the camera pose using the PnP RANSAC algorithm and optionally refines it. </p>
|
||
<p>This function computes the rotation and translation vectors (rvec, tvec) that transform 3D object points into the camera frame, using the Perspective-n-Point (PnP) method with RANSAC for robust outlier rejection. After an initial estimation using OpenCV's <code>solvePnPRansac</code>, it optionally refines the model iteratively based on reprojection error thresholds.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">objectPoints</td><td>A vector of 3D points in the object coordinate space. </td></tr>
|
||
<tr><td class="paramname">imagePoints</td><td>A vector of corresponding 2D points in the image plane. </td></tr>
|
||
<tr><td class="paramname">cameraMatrix</td><td>The camera intrinsic matrix (3x3). </td></tr>
|
||
<tr><td class="paramname">distCoeffs</td><td>Vector of distortion coefficients (k1, k2, p1, p2, k3, ...). </td></tr>
|
||
<tr><td class="paramname">rvec</td><td>Output rotation vector (Rodrigues form). </td></tr>
|
||
<tr><td class="paramname">tvec</td><td>Output translation vector. </td></tr>
|
||
<tr><td class="paramname">useExtrinsicGuess</td><td>If true, uses the provided rvec and tvec as an initial guess. </td></tr>
|
||
<tr><td class="paramname">iterationsCount</td><td>The number of RANSAC iterations. </td></tr>
|
||
<tr><td class="paramname">reprojectionError</td><td>Maximum allowed reprojection error to classify an inlier. </td></tr>
|
||
<tr><td class="paramname">minInliersCount</td><td>Minimum number of inliers required to accept a model. </td></tr>
|
||
<tr><td class="paramname">inliers</td><td>Output vector of indices of inlier points. </td></tr>
|
||
<tr><td class="paramname">flags</td><td>Method for solving PnP (<code>cv::SOLVEPNP_*</code> flags). </td></tr>
|
||
<tr><td class="paramname">refineIterations</td><td>Number of refinement iterations after RANSAC. </td></tr>
|
||
<tr><td class="paramname">refineSigma</td><td>Multiplier for the reprojection error standard deviation to define adaptive inlier threshold.</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section note"><dt>Note</dt><dd>This function uses OpenCV 3's implementation of <code>solvePnPRansac</code> for robustness. After RANSAC, the pose is optionally refined by minimizing reprojection error on inliers.</dd></dl>
|
||
<dl class="section warning"><dt>Warning</dt><dd>Refinement may oscillate or terminate early if convergence is poor or the inlier set becomes unstable.</dd></dl>
|
||
<dl class="section see"><dt>See also</dt><dd>cv::solvePnP, cv::solvePnPRansac </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a56797352c7d47f815c694bc4ccb1faea" name="a56797352c7d47f815c694bc4ccb1faea"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a56797352c7d47f815c694bc4ccb1faea">◆ </a></span>transformFromXYZCorrespondencesSVD()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname"><a class="el" href="classrtabmap_1_1Transform.html">Transform</a> RTABMAP_CORE_EXPORT rtabmap::util3d::transformFromXYZCorrespondencesSVD </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const pcl::PointCloud< pcl::PointXYZ > & </td>
|
||
<td class="paramname"><em>cloud1</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const pcl::PointCloud< pcl::PointXYZ > & </td>
|
||
<td class="paramname"><em>cloud2</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Estimates the rigid 3D transformation between two point clouds using SVD. </p>
|
||
<p>This function computes the transformation (rotation and translation) that best aligns <code>cloud2</code> to <code>cloud1</code> using Singular Value Decomposition (SVD) based on point correspondences. It assumes a one-to-one correspondence between points in the two clouds.</p>
|
||
<p>Internally, it uses PCL's <code>TransformationEstimationSVD</code> to compute the 4x4 transformation matrix, which is then converted to a <code><a class="el" href="classrtabmap_1_1Transform.html" title="Represents a 3D rigid body transformation (rotation + translation).">Transform</a></code> object.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">cloud1</td><td>Target point cloud (reference frame). </td></tr>
|
||
<tr><td class="paramname">cloud2</td><td>Source point cloud to be aligned with <code>cloud1</code>. It must have the same number of points as <code>cloud1</code>, and the points should correspond to each other by index.</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>A <code><a class="el" href="classrtabmap_1_1Transform.html" title="Represents a 3D rigid body transformation (rotation + translation).">Transform</a></code> representing the rigid-body transformation from <code>cloud1</code> to <code>cloud2</code>.</dd></dl>
|
||
<dl class="section note"><dt>Note</dt><dd>This function does not perform any outlier rejection or correspondence estimation— it assumes that the input clouds are already matched appropriately. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="aab3ff771d2b43075bb8e7ca6e730c37c" name="aab3ff771d2b43075bb8e7ca6e730c37c"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#aab3ff771d2b43075bb8e7ca6e730c37c">◆ </a></span>transformFromXYZCorrespondences()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname"><a class="el" href="classrtabmap_1_1Transform.html">Transform</a> RTABMAP_CORE_EXPORT rtabmap::util3d::transformFromXYZCorrespondences </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const pcl::PointCloud< pcl::PointXYZ >::ConstPtr & </td>
|
||
<td class="paramname"><em>cloud1</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const pcl::PointCloud< pcl::PointXYZ >::ConstPtr & </td>
|
||
<td class="paramname"><em>cloud2</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">double </td>
|
||
<td class="paramname"><em>inlierThreshold</em> = <code>0.02</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>iterations</em> = <code>100</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>refineModelIterations</em> = <code>10</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">double </td>
|
||
<td class="paramname"><em>refineModelSigma</em> = <code>3.0</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">std::vector< int > * </td>
|
||
<td class="paramname"><em>inliers</em> = <code>0</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">cv::Mat * </td>
|
||
<td class="paramname"><em>variance</em> = <code>0</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Estimates a rigid transformation between two point clouds using RANSAC with optional refinement. </p>
|
||
<p>This function finds a 3D rigid-body transform from <code>cloud1</code> to <code>cloud2</code> using one-to-one point correspondences. It applies a RANSAC-based outlier rejection and optionally refines the transformation with iterative model optimization.</p>
|
||
<p>It also optionally returns the inlier indices used to compute the final model and an approximate 6x6 covariance matrix of the transform.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">cloud1</td><td>Target point cloud (reference frame). Must contain at least 3 points and match <code>cloud2</code> in size. </td></tr>
|
||
<tr><td class="paramname">cloud2</td><td>Source point cloud to align to <code>cloud1</code>. Must be the same size as <code>cloud1</code>. </td></tr>
|
||
<tr><td class="paramname">inlierThreshold</td><td>Maximum Euclidean distance (in meters) between corresponding points for them to be considered inliers. </td></tr>
|
||
<tr><td class="paramname">iterations</td><td>Number of RANSAC iterations to perform. </td></tr>
|
||
<tr><td class="paramname">refineIterations</td><td>Number of refinement steps to perform after the initial RANSAC. If set to 0, no refinement is done. </td></tr>
|
||
<tr><td class="paramname">refineSigma</td><td>Multiplier for standard deviation used to adjust the inlier threshold during refinement. </td></tr>
|
||
<tr><td class="paramname">inliersOut</td><td>Optional pointer to a vector that will receive the indices of the inlier correspondences. </td></tr>
|
||
<tr><td class="paramname">covariance</td><td>Optional pointer to a 6x6 covariance matrix of the estimated transform (as <code>CV_64FC1</code>). Will be identity if set and no inliers are found.</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>A <code><a class="el" href="classrtabmap_1_1Transform.html" title="Represents a 3D rigid body transformation (rotation + translation).">Transform</a></code> representing the estimated pose from <code>cloud1</code> to <code>cloud2</code>. If no valid model is found, the returned transform will be identity.</dd></dl>
|
||
<dl class="section note"><dt>Note</dt><dd>This function assumes a one-to-one correspondence between points in the two clouds (e.g., index <code>i</code> in <code>cloud1</code> corresponds to index <code>i</code> in <code>cloud2</code>). </dd>
|
||
<dd>
|
||
If fewer than 3 points are provided or point counts do not match, the identity transform is returned.</dd></dl>
|
||
<dl class="section warning"><dt>Warning</dt><dd>Inlier refinement is sensitive to oscillation and may stop early if alternating inlier counts are detected. </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="af9f16d681288b1f91ce6e5a8ee9f6967" name="af9f16d681288b1f91ce6e5a8ee9f6967"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#af9f16d681288b1f91ce6e5a8ee9f6967">◆ </a></span>icp() <span class="overload">[1/2]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname"><a class="el" href="classrtabmap_1_1Transform.html">Transform</a> RTABMAP_CORE_EXPORT rtabmap::util3d::icp </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const pcl::PointCloud< pcl::PointXYZ >::ConstPtr & </td>
|
||
<td class="paramname"><em>cloud_source</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const pcl::PointCloud< pcl::PointXYZ >::ConstPtr & </td>
|
||
<td class="paramname"><em>cloud_target</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">double </td>
|
||
<td class="paramname"><em>maxCorrespondenceDistance</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>maximumIterations</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">bool & </td>
|
||
<td class="paramname"><em>hasConverged</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">pcl::PointCloud< pcl::PointXYZ > & </td>
|
||
<td class="paramname"><em>cloud_source_registered</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>epsilon</em> = <code>0.0f</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">bool </td>
|
||
<td class="paramname"><em>icp2D</em> = <code>false</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>ransacOutlierRatio</em> = <code>0.0f</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int * </td>
|
||
<td class="paramname"><em>iterationsDone</em> = <code>nullptr</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Performs Iterative Closest Point (ICP) alignment between two point clouds and returns the resulting transform. </p>
|
||
<p>This function aligns the <code>cloud_source</code> to the <code>cloud_target</code> using PCL's ICP algorithm. It optionally supports 2D ICP, which constrains the estimated transformation to the XY-plane with rotation about the Z-axis.</p>
|
||
<p>The result is returned as a <code><a class="el" href="classrtabmap_1_1Transform.html" title="Represents a 3D rigid body transformation (rotation + translation).">Transform</a></code> representing the transformation from source to target. The aligned version of the source cloud is written into <code>cloud_source_registered</code>.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramdir"></td><td class="paramname">cloud_source</td><td>The input source point cloud to align. </td></tr>
|
||
<tr><td class="paramdir"></td><td class="paramname">cloud_target</td><td>The input target point cloud to align to. </td></tr>
|
||
<tr><td class="paramdir"></td><td class="paramname">maxCorrespondenceDistance</td><td>Maximum distance threshold for point correspondences. </td></tr>
|
||
<tr><td class="paramdir"></td><td class="paramname">maximumIterations</td><td>Maximum number of ICP iterations to perform. </td></tr>
|
||
<tr><td class="paramdir">[out]</td><td class="paramname">hasConverged</td><td>Set to true if ICP converged to a solution; false otherwise. </td></tr>
|
||
<tr><td class="paramdir">[out]</td><td class="paramname">cloud_source_registered</td><td>Output point cloud containing the source aligned to the target. </td></tr>
|
||
<tr><td class="paramdir"></td><td class="paramname">epsilon</td><td>Convergence threshold for transformation changes between iterations (applied as squared value). </td></tr>
|
||
<tr><td class="paramdir"></td><td class="paramname">icp2D</td><td>If true, enforces 2D ICP using only XY translation and Z rotation (ignores Z and X/Y rotation).</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="classrtabmap_1_1Transform.html" title="Represents a 3D rigid body transformation (rotation + translation).">Transform</a> The estimated transformation from <code>cloud_source</code> to <code>cloud_target</code>.</dd></dl>
|
||
<dl class="section note"><dt>Note</dt><dd>All input points in both clouds must be finite (i.e., no NaNs or infinite values).</dd></dl>
|
||
<dl class="section see"><dt>See also</dt><dd>pcl::IterativeClosestPoint </dd>
|
||
<dd>
|
||
pcl::registration::TransformationEstimation2D </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a1a153cf0e597dd206c6a850957f6c1ef" name="a1a153cf0e597dd206c6a850957f6c1ef"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a1a153cf0e597dd206c6a850957f6c1ef">◆ </a></span>icp() <span class="overload">[2/2]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname"><a class="el" href="classrtabmap_1_1Transform.html">Transform</a> RTABMAP_CORE_EXPORT rtabmap::util3d::icp </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const pcl::PointCloud< pcl::PointXYZI >::ConstPtr & </td>
|
||
<td class="paramname"><em>cloud_source</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const pcl::PointCloud< pcl::PointXYZI >::ConstPtr & </td>
|
||
<td class="paramname"><em>cloud_target</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">double </td>
|
||
<td class="paramname"><em>maxCorrespondenceDistance</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>maximumIterations</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">bool & </td>
|
||
<td class="paramname"><em>hasConverged</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">pcl::PointCloud< pcl::PointXYZI > & </td>
|
||
<td class="paramname"><em>cloud_source_registered</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>epsilon</em> = <code>0.0f</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">bool </td>
|
||
<td class="paramname"><em>icp2D</em> = <code>false</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>ransacOutlierRatio</em> = <code>0.0f</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int * </td>
|
||
<td class="paramname"><em>iterationsDone</em> = <code>nullptr</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Performs Iterative Closest Point (ICP) alignment between two point clouds and returns the resulting transform. </p>
|
||
<dl class="section see"><dt>See also</dt><dd><a class="el" href="namespacertabmap_1_1util3d.html#af9f16d681288b1f91ce6e5a8ee9f6967" title="Performs Iterative Closest Point (ICP) alignment between two point clouds and returns the resulting t...">util3d::icp()</a></dd></dl>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">ransacOutlierRatio</td><td>If > 0 and < 1, install a PCL RANSAC correspondence rejector with inlier threshold = ransacOutlierRatio * maxCorrespondenceDistance. 0 disables the rejector (default). </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a6ac0f56608f1760d60eda7861b8dc303" name="a6ac0f56608f1760d60eda7861b8dc303"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a6ac0f56608f1760d60eda7861b8dc303">◆ </a></span>icpPointToPlane() <span class="overload">[1/2]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname"><a class="el" href="classrtabmap_1_1Transform.html">Transform</a> RTABMAP_CORE_EXPORT rtabmap::util3d::icpPointToPlane </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const pcl::PointCloud< pcl::PointNormal >::ConstPtr & </td>
|
||
<td class="paramname"><em>cloud_source</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const pcl::PointCloud< pcl::PointNormal >::ConstPtr & </td>
|
||
<td class="paramname"><em>cloud_target</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">double </td>
|
||
<td class="paramname"><em>maxCorrespondenceDistance</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>maximumIterations</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">bool & </td>
|
||
<td class="paramname"><em>hasConverged</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">pcl::PointCloud< pcl::PointNormal > & </td>
|
||
<td class="paramname"><em>cloud_source_registered</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>epsilon</em> = <code>0.0f</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">bool </td>
|
||
<td class="paramname"><em>icp2D</em> = <code>false</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>ransacOutlierRatio</em> = <code>0.0f</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int * </td>
|
||
<td class="paramname"><em>iterationsDone</em> = <code>nullptr</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Performs Iterative Closest Point (ICP) alignment using a point-to-plane error metric. </p>
|
||
<p>This function aligns a source point cloud to a target point cloud using PCL's point-to-plane ICP implementation with a linear least squares estimator. It returns the estimated transformation from the source to the target.</p>
|
||
<p>Optionally, if <code>icp2D</code> is true, the resulting transformation is projected to 3DoF (XY translation and rotation about Z).</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramdir"></td><td class="paramname">cloud_source</td><td>Input source point cloud with normals. </td></tr>
|
||
<tr><td class="paramdir"></td><td class="paramname">cloud_target</td><td>Input target point cloud with normals. </td></tr>
|
||
<tr><td class="paramdir"></td><td class="paramname">maxCorrespondenceDistance</td><td>Maximum distance for considering point correspondences. </td></tr>
|
||
<tr><td class="paramdir"></td><td class="paramname">maximumIterations</td><td>Maximum number of ICP iterations to perform. </td></tr>
|
||
<tr><td class="paramdir">[out]</td><td class="paramname">hasConverged</td><td>Set to true if the ICP algorithm successfully converged. </td></tr>
|
||
<tr><td class="paramdir">[out]</td><td class="paramname">cloud_source_registered</td><td>Output cloud representing the aligned source. </td></tr>
|
||
<tr><td class="paramdir"></td><td class="paramname">epsilon</td><td>Convergence threshold for the transformation change (used as squared value). </td></tr>
|
||
<tr><td class="paramdir"></td><td class="paramname">icp2D</td><td>If true, the result is projected to 2D (XY + Yaw only).</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>The transformation from the source to the target cloud.</dd></dl>
|
||
<dl class="section note"><dt>Note</dt><dd>All points and normals in both input clouds must be finite (no NaNs or infinities).</dd></dl>
|
||
<dl class="section see"><dt>See also</dt><dd>pcl::IterativeClosestPoint </dd>
|
||
<dd>
|
||
pcl::registration::TransformationEstimationPointToPlaneLLS </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a12d008fea5babe6a208fca7b1fb719d3" name="a12d008fea5babe6a208fca7b1fb719d3"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a12d008fea5babe6a208fca7b1fb719d3">◆ </a></span>icpPointToPlane() <span class="overload">[2/2]</span></h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname"><a class="el" href="classrtabmap_1_1Transform.html">Transform</a> RTABMAP_CORE_EXPORT rtabmap::util3d::icpPointToPlane </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const pcl::PointCloud< pcl::PointXYZINormal >::ConstPtr & </td>
|
||
<td class="paramname"><em>cloud_source</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const pcl::PointCloud< pcl::PointXYZINormal >::ConstPtr & </td>
|
||
<td class="paramname"><em>cloud_target</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">double </td>
|
||
<td class="paramname"><em>maxCorrespondenceDistance</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>maximumIterations</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">bool & </td>
|
||
<td class="paramname"><em>hasConverged</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">pcl::PointCloud< pcl::PointXYZINormal > & </td>
|
||
<td class="paramname"><em>cloud_source_registered</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>epsilon</em> = <code>0.0f</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">bool </td>
|
||
<td class="paramname"><em>icp2D</em> = <code>false</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>ransacOutlierRatio</em> = <code>0.0f</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int * </td>
|
||
<td class="paramname"><em>iterationsDone</em> = <code>nullptr</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Performs Iterative Closest Point (ICP) alignment using a point-to-plane error metric. </p>
|
||
<dl class="section see"><dt>See also</dt><dd><a class="el" href="namespacertabmap_1_1util3d.html#a6ac0f56608f1760d60eda7861b8dc303" title="Performs Iterative Closest Point (ICP) alignment using a point-to-plane error metric.">util3d::icpPointToPlane()</a></dd></dl>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">ransacOutlierRatio</td><td>If > 0 and < 1, install a PCL RANSAC correspondence rejector with inlier threshold = ransacOutlierRatio * maxCorrespondenceDistance. 0 disables the rejector (default). </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a9ebe11bdf534e3bdbcb2802d5dd70e62" name="a9ebe11bdf534e3bdbcb2802d5dd70e62"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a9ebe11bdf534e3bdbcb2802d5dd70e62">◆ </a></span>createPolygonIndexes()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">void RTABMAP_CORE_EXPORT rtabmap::util3d::createPolygonIndexes </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const std::vector< pcl::Vertices > & </td>
|
||
<td class="paramname"><em>polygons</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>cloudSize</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">std::vector< std::set< int > > & </td>
|
||
<td class="paramname"><em>neighborPolygons</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">std::vector< std::set< int > > & </td>
|
||
<td class="paramname"><em>vertexPolygons</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Given a set of polygons, create two indexes: polygons to neighbor polygons and vertices to polygons. </p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">polygons</td><td>the polygons to be indexed. </td></tr>
|
||
<tr><td class="paramname">cloudSize</td><td>the size of the cloud of the corresponding mesh to polygons (must be at least as high as the highest vertex value contained in the polygons). </td></tr>
|
||
<tr><td class="paramname">neighborPolygons</td><td>returned index from polygons to neighbor polygons (index size = polygons size). </td></tr>
|
||
<tr><td class="paramname">vertexPolygons</td><td>returned index from vertices to polygons (index size = cloudSize). </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a07466d3f99ac7f763ba476f65c99ebb0" name="a07466d3f99ac7f763ba476f65c99ebb0"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a07466d3f99ac7f763ba476f65c99ebb0">◆ </a></span>cleanTextureMesh()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">void RTABMAP_CORE_EXPORT rtabmap::util3d::cleanTextureMesh </td>
|
||
<td>(</td>
|
||
<td class="paramtype">pcl::TextureMesh & </td>
|
||
<td class="paramname"><em>textureMesh</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>minClusterSize</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
<p>Remove not textured polygon clusters. If minClusterSize<0, only the largest cluster is kept. </p>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="aeec8dd0024231c36c089340895609238" name="aeec8dd0024231c36c089340895609238"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#aeec8dd0024231c36c089340895609238">◆ </a></span>mergeTextures()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">cv::Mat RTABMAP_CORE_EXPORT rtabmap::util3d::mergeTextures </td>
|
||
<td>(</td>
|
||
<td class="paramtype">pcl::TextureMesh & </td>
|
||
<td class="paramname"><em>mesh</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::map< int, cv::Mat > & </td>
|
||
<td class="paramname"><em>images</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::map< int, <a class="el" href="classrtabmap_1_1CameraModel.html">CameraModel</a> > & </td>
|
||
<td class="paramname"><em>calibrations</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const <a class="el" href="classrtabmap_1_1Memory.html">Memory</a> * </td>
|
||
<td class="paramname"><em>memory</em> = <code>0</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const <a class="el" href="classrtabmap_1_1DBDriver.html">DBDriver</a> * </td>
|
||
<td class="paramname"><em>dbDriver</em> = <code>0</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>textureSize</em> = <code>4096</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>textureCount</em> = <code>1</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::vector< std::map< int, pcl::PointXY > > & </td>
|
||
<td class="paramname"><em>vertexToPixels</em> = <code>std::vector< std::map< int, pcl::PointXY > >()</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">bool </td>
|
||
<td class="paramname"><em>gainCompensation</em> = <code>true</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float </td>
|
||
<td class="paramname"><em>gainBeta</em> = <code>10.0f</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">bool </td>
|
||
<td class="paramname"><em>gainRGB</em> = <code>true</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">bool </td>
|
||
<td class="paramname"><em>blending</em> = <code>true</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>blendingDecimation</em> = <code>0</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>brightnessContrastRatioLow</em> = <code>0</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>brightnessContrastRatioHigh</em> = <code>0</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">bool </td>
|
||
<td class="paramname"><em>exposureFusion</em> = <code>false</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const <a class="el" href="classrtabmap_1_1ProgressState.html">ProgressState</a> * </td>
|
||
<td class="paramname"><em>state</em> = <code>0</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">unsigned char </td>
|
||
<td class="paramname"><em>blankValue</em> = <code>255</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">bool </td>
|
||
<td class="paramname"><em>clearVertexColorUnderTexture</em> = <code>true</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">std::map< int, std::map< int, cv::Vec4d > > * </td>
|
||
<td class="paramname"><em>gains</em> = <code>0</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">std::map< int, std::map< int, cv::Mat > > * </td>
|
||
<td class="paramname"><em>blendingGains</em> = <code>0</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">std::pair< float, float > * </td>
|
||
<td class="paramname"><em>contrastValues</em> = <code>0</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
<p>Merge all textures in the mesh into "textureCount" textures of size "textureSize". </p><dl class="section return"><dt>Returns</dt><dd>merged textures corresponding to new materials set in TextureMesh (height=textureSize, width=textureSize*materials) </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a695eb29e9b2679634edb6b8c36a11942" name="a695eb29e9b2679634edb6b8c36a11942"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a695eb29e9b2679634edb6b8c36a11942">◆ </a></span>multiBandTexturing()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">bool RTABMAP_CORE_EXPORT rtabmap::util3d::multiBandTexturing </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const std::string & </td>
|
||
<td class="paramname"><em>outputOBJPath</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const pcl::PCLPointCloud2 & </td>
|
||
<td class="paramname"><em>cloud</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::vector< pcl::Vertices > & </td>
|
||
<td class="paramname"><em>polygons</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::map< int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> > & </td>
|
||
<td class="paramname"><em>cameraPoses</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::vector< std::map< int, pcl::PointXY > > & </td>
|
||
<td class="paramname"><em>vertexToPixels</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::map< int, cv::Mat > & </td>
|
||
<td class="paramname"><em>images</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::map< int, std::vector< <a class="el" href="classrtabmap_1_1CameraModel.html">CameraModel</a> > > & </td>
|
||
<td class="paramname"><em>cameraModels</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const <a class="el" href="classrtabmap_1_1Memory.html">Memory</a> * </td>
|
||
<td class="paramname"><em>memory</em> = <code>0</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const <a class="el" href="classrtabmap_1_1DBDriver.html">DBDriver</a> * </td>
|
||
<td class="paramname"><em>dbDriver</em> = <code>0</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">unsigned int </td>
|
||
<td class="paramname"><em>textureSize</em> = <code>8192</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">unsigned int </td>
|
||
<td class="paramname"><em>textureDownscale</em> = <code>2</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::string & </td>
|
||
<td class="paramname"><em>nbContrib</em> = <code>"1 5 10 0"</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::string & </td>
|
||
<td class="paramname"><em>textureFormat</em> = <code>"jpg"</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::map< int, std::map< int, cv::Vec4d > > & </td>
|
||
<td class="paramname"><em>gains</em> = <code>std::map< int, std::map< int, cv::Vec4d > >()</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::map< int, std::map< int, cv::Mat > > & </td>
|
||
<td class="paramname"><em>blendingGains</em> = <code>std::map< int, std::map< int, cv::Mat > >()</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::pair< float, float > & </td>
|
||
<td class="paramname"><em>contrastValues</em> = <code>std::pair< float, float >(0, 0)</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">bool </td>
|
||
<td class="paramname"><em>gainRGB</em> = <code>true</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">unsigned int </td>
|
||
<td class="paramname"><em>unwrapMethod</em> = <code>0</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">bool </td>
|
||
<td class="paramname"><em>fillHoles</em> = <code>false</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">unsigned int </td>
|
||
<td class="paramname"><em>padding</em> = <code>5</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">double </td>
|
||
<td class="paramname"><em>bestScoreThreshold</em> = <code>0.1</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">double </td>
|
||
<td class="paramname"><em>angleHardThreshold</em> = <code>90.0</code>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">bool </td>
|
||
<td class="paramname"><em>forceVisibleByAllVertices</em> = <code>false</code> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
<p>Texture mesh with AliceVision's multiband texturing approach. See also <a href="https://meshroom-manual.readthedocs.io/en/bibtex1/node-reference/nodes/Texturing.html">https://meshroom-manual.readthedocs.io/en/bibtex1/node-reference/nodes/Texturing.html</a>. </p><dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">outputOBJPath</td><td>Output OBJ path </td></tr>
|
||
<tr><td class="paramname">cloud</td><td>input Cloud of the mesh. </td></tr>
|
||
<tr><td class="paramname">polygons</td><td>Input polygons of the mesh. </td></tr>
|
||
<tr><td class="paramname">cameraPoses</td><td>Poses of the cameras. </td></tr>
|
||
<tr><td class="paramname">vertexToPixels</td><td>Output from <code>createTextureMesh()</code>. </td></tr>
|
||
<tr><td class="paramname">images</td><td>Images corresponding to cameraPoses, raw or compressed, can be empty if memory or dbDriver should be used. </td></tr>
|
||
<tr><td class="paramname">cameraModels</td><td><a class="el" href="classrtabmap_1_1Camera.html">Camera</a> calibrations corresponding to cameraPoses. </td></tr>
|
||
<tr><td class="paramname">memory</td><td>Should be set if images and dbDriver are not set. </td></tr>
|
||
<tr><td class="paramname">dbDriver</td><td>Should be set if images and memory are not set. </td></tr>
|
||
<tr><td class="paramname">textureSize</td><td>Output texture size 1024, 2048, 4096, 8192, 16384. </td></tr>
|
||
<tr><td class="paramname">textureDownscale</td><td>Downscaling to 4 or 8 will reduce the texture quality but speed up the computation time. Set Texture Downscale to 1 instead of 2 to get the maximum possible resolution with the resolution of your images. The output texture size will be divided by this value, e.g., with texture size of 8192 and downscale value of 2, the output will be 4096. </td></tr>
|
||
<tr><td class="paramname">nbContrib</td><td>number of contributions per frequency band for the multi-band blending (should be 4 values) </td></tr>
|
||
<tr><td class="paramname">textureFormat</td><td>Output texture format: "png" or "jpg". </td></tr>
|
||
<tr><td class="paramname">gains</td><td>Optional output of <code><a class="el" href="namespacertabmap_1_1util3d.html#aeec8dd0024231c36c089340895609238">mergeTextures()</a></code>. </td></tr>
|
||
<tr><td class="paramname">blendingGains</td><td>Optional output of <code><a class="el" href="namespacertabmap_1_1util3d.html#aeec8dd0024231c36c089340895609238">mergeTextures()</a></code>. </td></tr>
|
||
<tr><td class="paramname">contrastValues</td><td>Optional output of <code><a class="el" href="namespacertabmap_1_1util3d.html#aeec8dd0024231c36c089340895609238">mergeTextures()</a></code>. </td></tr>
|
||
<tr><td class="paramname">gainRGB</td><td>Apply gain compensation on each RGB channels separately, otherwise it is apply equally to all channels. </td></tr>
|
||
<tr><td class="paramname">unwrapMethod</td><td>Method to unwrap input mesh if it does not have UV coordinates 0=Basic (> 600k faces) fast and simple. Can generate multiple atlases 2=LSCM (<= 600k faces): optimize space. Generates one atlas 1=ABF (<= 300k faces): optimize space and stretch. Generates one atlas. </td></tr>
|
||
<tr><td class="paramname">fillHoles</td><td>Fill Texture holes with plausible values True/False. </td></tr>
|
||
<tr><td class="paramname">padding</td><td>Texture edge padding size in pixel (0-100). </td></tr>
|
||
<tr><td class="paramname">bestScoreThreshold</td><td>0.0 to disable filtering based on threshold to relative best score (0.0-1.0). </td></tr>
|
||
<tr><td class="paramname">angleHardThreshold</td><td>0.0 to disable angle hard threshold filtering (0.0, 180.0). </td></tr>
|
||
<tr><td class="paramname">forceVisibleByAllVertices</td><td>Triangle visibility is based on the union of vertices visibility. </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="ab138227ab6c0511088e846b2276e7afc" name="ab138227ab6c0511088e846b2276e7afc"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#ab138227ab6c0511088e846b2276e7afc">◆ </a></span>intersectRayTriangle()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">bool RTABMAP_CORE_EXPORT rtabmap::util3d::intersectRayTriangle </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const Eigen::Vector3f & </td>
|
||
<td class="paramname"><em>p</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const Eigen::Vector3f & </td>
|
||
<td class="paramname"><em>dir</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const Eigen::Vector3f & </td>
|
||
<td class="paramname"><em>v0</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const Eigen::Vector3f & </td>
|
||
<td class="paramname"><em>v1</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const Eigen::Vector3f & </td>
|
||
<td class="paramname"><em>v2</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">float & </td>
|
||
<td class="paramname"><em>distance</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">Eigen::Vector3f & </td>
|
||
<td class="paramname"><em>normal</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
<p><a class="el" href="namespacertabmap_1_1util3d.html#ab138227ab6c0511088e846b2276e7afc">intersectRayTriangle()</a>: find the 3D intersection of a ray with a triangle Input: p = origin of the ray dir = direction of the ray v0 = point 0 of the triangle v1 = point 1 of the triangle v2 = point 2 of the triangle Output: distance = distance from origin along ray direction normal = normal of the triangle (not normalized) Return: true = intersect in unique point inside the triangle</p>
|
||
<p>Intersection point can be computed with "I = p + dir*distance"</p>
|
||
<p>Copyright 2001 softSurfer, 2012 Dan Sunday This code may be freely used and modified for any purpose providing that this copyright notice is included with it. SoftSurfer makes no warranty for this code, and cannot be held liable for any real or imagined damage resulting from its use. Users of this code must verify correctness for their application.</p>
|
||
<p>Mathieu: Adapted for PCL format </p>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="abf12a46cc48ee93e6575ea624377fb42" name="abf12a46cc48ee93e6575ea624377fb42"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#abf12a46cc48ee93e6575ea624377fb42">◆ </a></span>transformLaserScan()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname"><a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> RTABMAP_CORE_EXPORT rtabmap::util3d::transformLaserScan </td>
|
||
<td>(</td>
|
||
<td class="paramtype">const <a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> & </td>
|
||
<td class="paramname"><em>laserScan</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> & </td>
|
||
<td class="paramname"><em>transform</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Applies a 3D transform to all points (and normals if present) in a <a class="el" href="classrtabmap_1_1LaserScan.html" title="Represents 2D or 3D laser scan data with support for multiple point data formats.">LaserScan</a>. </p>
|
||
<p>This function transforms each point in the input <code><a class="el" href="classrtabmap_1_1LaserScan.html" title="Represents 2D or 3D laser scan data with support for multiple point data formats.">LaserScan</a></code> using the specified <code><a class="el" href="classrtabmap_1_1Transform.html" title="Represents a 3D rigid body transformation (rotation + translation).">Transform</a></code>. The transformation is applied on a cloned copy of the scan data, preserving the original. It supports both 2D and 3D scans, and if normals are present, they are also properly transformed.</p>
|
||
<p>The transformation is only applied if it is neither null nor the identity transform.</p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">laserScan</td><td>The input <code><a class="el" href="classrtabmap_1_1LaserScan.html" title="Represents 2D or 3D laser scan data with support for multiple point data formats.">LaserScan</a></code> object containing scan data to be transformed. </td></tr>
|
||
<tr><td class="paramname">transform</td><td>A <code><a class="el" href="classrtabmap_1_1Transform.html" title="Represents a 3D rigid body transformation (rotation + translation).">Transform</a></code> representing the spatial transformation to apply (translation + rotation). Can be 3DoF or 6DoF depending on the scan dimensionality.</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>A new <code><a class="el" href="classrtabmap_1_1LaserScan.html" title="Represents 2D or 3D laser scan data with support for multiple point data formats.">LaserScan</a></code> object with transformed points (and optionally normals), and the same metadata such as range limits, angle information, format, and local transform as the input scan.</dd></dl>
|
||
<h3>Behavior:</h3>
|
||
<ul>
|
||
<li>If the transform is null or identity, the scan is returned unchanged.</li>
|
||
<li>If the scan has normals (e.g., format is <code>kXYZNormal</code>, <code>kXYZINormal</code>, etc.), both positions and normals are transformed.</li>
|
||
<li>If the scan has no normals, only point positions are transformed.</li>
|
||
<li>Angle-based scans (2D with valid angle increment) retain angular properties in the returned object.</li>
|
||
<li>The <code>localTransform</code> of the original scan is preserved in the returned scan.</li>
|
||
</ul>
|
||
<h3>Supported Formats:</h3>
|
||
<p>This function works with all valid formats defined by <code><a class="el" href="classrtabmap_1_1LaserScan.html#a38f5602d1411c204d54be9b3c7320007" title="Enumeration of possible formats for laser scan data.">LaserScan::Format</a></code>, including:</p><ul>
|
||
<li>2D: <code>kXY</code>, <code>kXYI</code>, <code>kXYNormal</code>, <code>kXYINormal</code></li>
|
||
<li>3D: <code>kXYZ</code>, <code>kXYZI</code>, <code>kXYZNormal</code>, <code>kXYZINormal</code>, <code>kXYZRGB</code>, <code>kXYZRGBNormal</code>, <code>kXYZIT</code></li>
|
||
</ul>
|
||
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classrtabmap_1_1LaserScan.html" title="Represents 2D or 3D laser scan data with support for multiple point data formats.">LaserScan</a>, <a class="el" href="classrtabmap_1_1Transform.html" title="Represents a 3D rigid body transformation (rotation + translation).">Transform</a>, <a class="el" href="group__TransformPoint.html#ga88b4f827a105254bf08bdae73cebdbe9" title="Transforms cv::Point3f point type.">util3d::transformPoint()</a> </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
</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="namespacertabmap_1_1util3d.html">util3d</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>
|