<divclass="line"><aid="l00005"name="l00005"></a><spanclass="lineno"> 5</span><spanclass="comment">Redistribution and use in source and binary forms, with or without</span></div>
<divclass="line"><aid="l00006"name="l00006"></a><spanclass="lineno"> 6</span><spanclass="comment">modification, are permitted provided that the following conditions are met:</span></div>
<divclass="line"><aid="l00007"name="l00007"></a><spanclass="lineno"> 7</span><spanclass="comment"> * Redistributions of source code must retain the above copyright</span></div>
<divclass="line"><aid="l00008"name="l00008"></a><spanclass="lineno"> 8</span><spanclass="comment"> notice, this list of conditions and the following disclaimer.</span></div>
<divclass="line"><aid="l00009"name="l00009"></a><spanclass="lineno"> 9</span><spanclass="comment"> * Redistributions in binary form must reproduce the above copyright</span></div>
<divclass="line"><aid="l00010"name="l00010"></a><spanclass="lineno"> 10</span><spanclass="comment"> notice, this list of conditions and the following disclaimer in the</span></div>
<divclass="line"><aid="l00011"name="l00011"></a><spanclass="lineno"> 11</span><spanclass="comment"> documentation and/or other materials provided with the distribution.</span></div>
<divclass="line"><aid="l00012"name="l00012"></a><spanclass="lineno"> 12</span><spanclass="comment"> * Neither the name of the Universite de Sherbrooke nor the</span></div>
<divclass="line"><aid="l00013"name="l00013"></a><spanclass="lineno"> 13</span><spanclass="comment"> names of its contributors may be used to endorse or promote products</span></div>
<divclass="line"><aid="l00014"name="l00014"></a><spanclass="lineno"> 14</span><spanclass="comment"> derived from this software without specific prior written permission.</span></div>
<divclass="line"><aid="l00016"name="l00016"></a><spanclass="lineno"> 16</span><spanclass="comment">THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND</span></div>
<divclass="line"><aid="l00017"name="l00017"></a><spanclass="lineno"> 17</span><spanclass="comment">ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED</span></div>
<divclass="line"><aid="l00018"name="l00018"></a><spanclass="lineno"> 18</span><spanclass="comment">WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE</span></div>
<divclass="line"><aid="l00019"name="l00019"></a><spanclass="lineno"> 19</span><spanclass="comment">DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY</span></div>
<divclass="line"><aid="l00020"name="l00020"></a><spanclass="lineno"> 20</span><spanclass="comment">DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES</span></div>
<divclass="line"><aid="l00021"name="l00021"></a><spanclass="lineno"> 21</span><spanclass="comment">(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;</span></div>
<divclass="line"><aid="l00022"name="l00022"></a><spanclass="lineno"> 22</span><spanclass="comment">LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND</span></div>
<divclass="line"><aid="l00023"name="l00023"></a><spanclass="lineno"> 23</span><spanclass="comment">ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT</span></div>
<divclass="line"><aid="l00024"name="l00024"></a><spanclass="lineno"> 24</span><spanclass="comment">(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS</span></div>
<divclass="line"><aid="l00025"name="l00025"></a><spanclass="lineno"> 25</span><spanclass="comment">SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</span></div>
<divclass="line"><aid="l00053"name="l00053"></a><spanclass="lineno"> 53</span><spanclass="comment">// Point type carrying xyz + intensity + ring (laser line index) + time</span></div>
<divclass="line"><aid="l00054"name="l00054"></a><spanclass="lineno"> 54</span><spanclass="comment">// (per-point acquisition offset, seconds from the scan start). Matches the</span></div>
<divclass="line"><aid="l00055"name="l00055"></a><spanclass="lineno"> 55</span><spanclass="comment">// layout expected by LIO-SAM's Velodyne feature extractor so it can be fed</span></div>
<divclass="line"><aid="l00056"name="l00056"></a><spanclass="lineno"> 56</span><spanclass="comment">// directly via util3d::laserScanFromPointCloud().</span></div>
<divclass="line"><aid="l00238"name="l00238"></a><spanclass="lineno"> 238</span><spanclass="keyword">const</span> cv::Mat & imageDepth,</div>
<divclass="line"><aid="l00239"name="l00239"></a><spanclass="lineno"> 239</span><spanclass="keyword">const</span> cv::Mat & imageDepthConfidence,</div>
<divclass="line"><aid="l00312"name="l00312"></a><spanclass="lineno"> 312</span><spanclass="keyword">const</span> cv::Mat & imageRgb,</div>
<divclass="line"><aid="l00313"name="l00313"></a><spanclass="lineno"> 313</span><spanclass="keyword">const</span> cv::Mat & imageDepth,</div>
<divclass="line"><aid="l00314"name="l00314"></a><spanclass="lineno"> 314</span><spanclass="keyword">const</span> cv::Mat & imageDepthConfidence,</div>
<divclass="line"><aid="l00834"name="l00834"></a><spanclass="lineno"><aclass="line"href="namespacertabmap_1_1util3d.html#ad857475644e8de6d7d84b920637b2018"> 834</a></span><spanclass="keywordtype">void</span> RTABMAP_CORE_EXPORT <aclass="code hl_function"href="namespacertabmap_1_1util3d.html#ad857475644e8de6d7d84b920637b2018">getMinMax3D</a>(<spanclass="keyword">const</span> cv::Mat & laserScan, cv::Point3f & min, cv::Point3f & max);</div>
<divclass="line"><aid="l00849"name="l00849"></a><spanclass="lineno"><aclass="line"href="namespacertabmap_1_1util3d.html#afc22f82c00f6dcc8a4ec1963891f4b7e"> 849</a></span><spanclass="keywordtype">void</span> RTABMAP_CORE_EXPORT <aclass="code hl_function"href="namespacertabmap_1_1util3d.html#ad857475644e8de6d7d84b920637b2018">getMinMax3D</a>(<spanclass="keyword">const</span> cv::Mat & laserScan, pcl::PointXYZ & min, pcl::PointXYZ & max);</div>
<divclass="line"><aid="l01166"name="l01166"></a><spanclass="lineno"> 1166</span><spanclass="keyword">const</span> pcl::IndicesPtr & indicesA,</div>
<divclass="line"><aid="l01167"name="l01167"></a><spanclass="lineno"> 1167</span><spanclass="keyword">const</span> pcl::IndicesPtr & indicesB);</div>
<divclass="ttc"id="aclassrtabmap_1_1CameraModel_html"><divclass="ttname"><ahref="classrtabmap_1_1CameraModel.html">rtabmap::CameraModel</a></div><divclass="ttdoc">Represents a pinhole camera model containing intrinsic and extrinsic parameters, used for projection,...</div><divclass="ttdef"><b>Definition</b><ahref="CameraModel_8h_source.html#l00052">CameraModel.h:53</a></div></div>
<divclass="ttc"id="aclassrtabmap_1_1LaserScan_html"><divclass="ttname"><ahref="classrtabmap_1_1LaserScan.html">rtabmap::LaserScan</a></div><divclass="ttdoc">Represents 2D or 3D laser scan data with support for multiple point data formats.</div><divclass="ttdef"><b>Definition</b><ahref="LaserScan_8h_source.html#l00045">LaserScan.h:46</a></div></div>
<divclass="ttc"id="aclassrtabmap_1_1SensorData_html"><divclass="ttname"><ahref="classrtabmap_1_1SensorData.html">rtabmap::SensorData</a></div><divclass="ttdoc">Container class for all sensor data captured at a specific time.</div><divclass="ttdef"><b>Definition</b><ahref="SensorData_8h_source.html#l00096">SensorData.h:97</a></div></div>
<divclass="ttc"id="aclassrtabmap_1_1StereoCameraModel_html"><divclass="ttname"><ahref="classrtabmap_1_1StereoCameraModel.html">rtabmap::StereoCameraModel</a></div><divclass="ttdoc">A class representing a calibrated stereo camera system.</div><divclass="ttdef"><b>Definition</b><ahref="StereoCameraModel_8h_source.html#l00053">StereoCameraModel.h:54</a></div></div>
<divclass="ttc"id="aclassrtabmap_1_1Transform_html"><divclass="ttname"><ahref="classrtabmap_1_1Transform.html">rtabmap::Transform</a></div><divclass="ttdoc">Represents a 3D rigid body transformation (rotation + translation).</div><divclass="ttdef"><b>Definition</b><ahref="Transform_8h_source.html#l00052">Transform.h:53</a></div></div>
<divclass="ttc"id="agroup__LaserScanFromPointCloud_html_ga078f5eae0077169e636ec76e03973edc"><divclass="ttname"><ahref="group__LaserScanFromPointCloud.html#ga078f5eae0077169e636ec76e03973edc">rtabmap::util3d::laserScanFromPointCloud</a></div><divclass="ttdeci">LaserScan laserScanFromPointCloud(const PointCloud2T &cloud, bool filterNaNs, bool is2D, const Transform &transform)</div><divclass="ttdoc">Convert pcl::PCLPointCloud2 to rtabmap::LaserScan with all supported fields (see rtabmap::LaserScan::...</div><divclass="ttdef"><b>Definition</b><ahref="util3d_8hpp_source.html#l00037">util3d.hpp:37</a></div></div>
<divclass="ttc"id="agroup__LaserScanToPointCloud_html_ga03b1c3a49aba08fcbc01b5991f25d0cc"><divclass="ttname"><ahref="group__LaserScanToPointCloud.html#ga03b1c3a49aba08fcbc01b5991f25d0cc">rtabmap::util3d::laserScanToPointI</a></div><divclass="ttdeci">pcl::PointXYZI RTABMAP_CORE_EXPORT laserScanToPointI(const LaserScan &laserScan, int index, float intensity)</div><divclass="ttdoc">The point at index of the scan, as PointXYZI.</div></div>
<divclass="ttc"id="agroup__LaserScanToPointCloud_html_ga394ec840a58a1203fac9725d49a0013c"><divclass="ttname"><ahref="group__LaserScanToPointCloud.html#ga394ec840a58a1203fac9725d49a0013c">rtabmap::util3d::laserScanToPointCloud2</a></div><divclass="ttdeci">pcl::PCLPointCloud2::Ptr RTABMAP_CORE_EXPORT laserScanToPointCloud2(const LaserScan &laserScan, const Transform &transform=Transform())</div><divclass="ttdoc">Convert rtabmap::LaserScan to pcl::PCLPointCloud2 with all supported fields (see rtabmap::LaserScan::...</div></div>
<divclass="ttc"id="agroup__LaserScanToPointCloud_html_ga4412f275d60b69f0f62db56321c5991c"><divclass="ttname"><ahref="group__LaserScanToPointCloud.html#ga4412f275d60b69f0f62db56321c5991c">rtabmap::util3d::laserScanToPointNormal</a></div><divclass="ttdeci">pcl::PointNormal RTABMAP_CORE_EXPORT laserScanToPointNormal(const LaserScan &laserScan, int index)</div><divclass="ttdoc">The point at index of the scan, as PointNormal.</div></div>
<divclass="ttc"id="agroup__LaserScanToPointCloud_html_ga675b84c6a6edde91883e38f49c087f31"><divclass="ttname"><ahref="group__LaserScanToPointCloud.html#ga675b84c6a6edde91883e38f49c087f31">rtabmap::util3d::laserScanToPointRGBNormal</a></div><divclass="ttdeci">pcl::PointXYZRGBNormal RTABMAP_CORE_EXPORT laserScanToPointRGBNormal(const LaserScan &laserScan, int index, unsigned char r, unsigned char g, unsigned char b)</div><divclass="ttdoc">The point at index of the scan, as PointXYZRGBNormal.</div></div>
<divclass="ttc"id="agroup__LaserScanToPointCloud_html_ga734628cdc1b15384476dc94d1c3dbb4d"><divclass="ttname"><ahref="group__LaserScanToPointCloud.html#ga734628cdc1b15384476dc94d1c3dbb4d">rtabmap::util3d::laserScanToPointCloudI</a></div><divclass="ttdeci">pcl::PointCloud< pcl::PointXYZI >::Ptr RTABMAP_CORE_EXPORT laserScanToPointCloudI(const LaserScan &laserScan, const Transform &transform=Transform(), float intensity=0.0f)</div><divclass="ttdoc">LaserScan → PointXYZI (x, y, z, intensity); intensity is used if the scan has none.</div></div>
<divclass="ttc"id="agroup__LaserScanToPointCloud_html_ga741bd010511d5284831012194eab99b9"><divclass="ttname"><ahref="group__LaserScanToPointCloud.html#ga741bd010511d5284831012194eab99b9">rtabmap::util3d::laserScanToPointCloudRGBNormal</a></div><divclass="ttdeci">pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr RTABMAP_CORE_EXPORT laserScanToPointCloudRGBNormal(const LaserScan &laserScan, const Transform &transform=Transform(), unsigned char r=100, unsigned char g=100, unsigned char b=100)</div><divclass="ttdoc">LaserScan → PointXYZRGBNormal (x, y, z, rgb, nx, ny, nz); missing color and normals are filled as abo...</div></div>
<divclass="ttc"id="agroup__LaserScanToPointCloud_html_ga8ee678c27ae59e2bb3fac8aeb55f9d92"><divclass="ttname"><ahref="group__LaserScanToPointCloud.html#ga8ee678c27ae59e2bb3fac8aeb55f9d92">rtabmap::util3d::laserScanToPointCloudINormal</a></div><divclass="ttdeci">pcl::PointCloud< pcl::PointXYZINormal >::Ptr RTABMAP_CORE_EXPORT laserScanToPointCloudINormal(const LaserScan &laserScan, const Transform &transform=Transform(), float intensity=0.0f)</div><divclass="ttdoc">LaserScan → PointXYZINormal (x, y, z, intensity, nx, ny, nz); missing intensity and normals are fille...</div></div>
<divclass="ttc"id="agroup__LaserScanToPointCloud_html_gab69062f7ffd0f2192983c6d7afa4a171"><divclass="ttname"><ahref="group__LaserScanToPointCloud.html#gab69062f7ffd0f2192983c6d7afa4a171">rtabmap::util3d::laserScanToPointINormal</a></div><divclass="ttdeci">pcl::PointXYZINormal RTABMAP_CORE_EXPORT laserScanToPointINormal(const LaserScan &laserScan, int index, float intensity)</div><divclass="ttdoc">The point at index of the scan, as PointXYZINormal.</div></div>
<divclass="ttc"id="agroup__LaserScanToPointCloud_html_gac4aef207f79791db5064dc596e25513b"><divclass="ttname"><ahref="group__LaserScanToPointCloud.html#gac4aef207f79791db5064dc596e25513b">rtabmap::util3d::laserScanToPointCloud</a></div><divclass="ttdeci">pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT laserScanToPointCloud(const LaserScan &laserScan, const Transform &transform=Transform())</div><divclass="ttdoc">LaserScan → PointXYZ (x, y, z); any other field of the scan is dropped.</div></div>
<divclass="ttc"id="agroup__LaserScanToPointCloud_html_gad0183648eae48143b33bfe969f8cbe43"><divclass="ttname"><ahref="group__LaserScanToPointCloud.html#gad0183648eae48143b33bfe969f8cbe43">rtabmap::util3d::laserScanToPointRGB</a></div><divclass="ttdeci">pcl::PointXYZRGB RTABMAP_CORE_EXPORT laserScanToPointRGB(const LaserScan &laserScan, int index, unsigned char r=100, unsigned char g=100, unsigned char b=100)</div><divclass="ttdoc">The point at index of the scan, as PointXYZRGB.</div></div>
<divclass="ttc"id="agroup__LaserScanToPointCloud_html_gaeda3b4a673cb96e6421688e6c575e4e5"><divclass="ttname"><ahref="group__LaserScanToPointCloud.html#gaeda3b4a673cb96e6421688e6c575e4e5">rtabmap::util3d::laserScanToPoint</a></div><divclass="ttdeci">pcl::PointXYZ RTABMAP_CORE_EXPORT laserScanToPoint(const LaserScan &laserScan, int index)</div><divclass="ttdoc">The point at index of the scan, as PointXYZ.</div></div>
<divclass="ttc"id="agroup__LaserScanToPointCloud_html_gaee3e6a7ef23f6e5f9a19a0b033d7522c"><divclass="ttname"><ahref="group__LaserScanToPointCloud.html#gaee3e6a7ef23f6e5f9a19a0b033d7522c">rtabmap::util3d::laserScanToPointCloudRGB</a></div><divclass="ttdeci">pcl::PointCloud< pcl::PointXYZRGB >::Ptr RTABMAP_CORE_EXPORT laserScanToPointCloudRGB(const LaserScan &laserScan, const Transform &transform=Transform(), unsigned char r=100, unsigned char g=100, unsigned char b=100)</div><divclass="ttdoc">LaserScan → PointXYZRGB (x, y, z, rgb); r, g and b are used if the scan has no color.</div></div>
<divclass="ttc"id="agroup__LaserScanToPointCloud_html_gafe2b6826178bf0af878be67bddf3c9bd"><divclass="ttname"><ahref="group__LaserScanToPointCloud.html#gafe2b6826178bf0af878be67bddf3c9bd">rtabmap::util3d::laserScanToPointCloudNormal</a></div><divclass="ttdeci">pcl::PointCloud< pcl::PointNormal >::Ptr RTABMAP_CORE_EXPORT laserScanToPointCloudNormal(const LaserScan &laserScan, const Transform &transform=Transform())</div><divclass="ttdoc">LaserScan → PointNormal (x, y, z, nx, ny, nz); normals are zeroed if the scan has none.</div></div>
<divclass="ttc"id="anamespacertabmap_1_1util3d_html_a07f8a125805ac013039b7fa0ddb623e0"><divclass="ttname"><ahref="namespacertabmap_1_1util3d.html#a07f8a125805ac013039b7fa0ddb623e0">rtabmap::util3d::laserScanFromDepthImages</a></div><divclass="ttdeci">pcl::PointCloud< pcl::PointXYZ > RTABMAP_CORE_EXPORT laserScanFromDepthImages(const cv::Mat &depthImages, const std::vector< CameraModel >&cameraModels, float maxDepth, float minDepth)</div><divclass="ttdoc">Converts multiple depth images (e.g., from a stereo or multi-camera setup) into a single laser scan (...</div></div>
<divclass="ttc"id="anamespacertabmap_1_1util3d_html_a1e4a96407fb1b92018e640ef41b8db8e"><divclass="ttname"><ahref="namespacertabmap_1_1util3d.html#a1e4a96407fb1b92018e640ef41b8db8e">rtabmap::util3d::cloudFromDisparityRGB</a></div><divclass="ttdeci">pcl::PointCloud< pcl::PointXYZRGB >::Ptr RTABMAP_CORE_EXPORT cloudFromDisparityRGB(const cv::Mat &imageRgb, const cv::Mat &imageDisparity, const StereoCameraModel &model, int decimation=1, float maxDepth=0.0f, float minDepth=0.0f, std::vector< int > *validIndices=0)</div><divclass="ttdoc">Converts a disparity image and an RGB image to a 3D point cloud with color.</div></div>
<divclass="ttc"id="anamespacertabmap_1_1util3d_html_a2155fca440675ca9697a2fe7b2efb30e"><divclass="ttname"><ahref="namespacertabmap_1_1util3d.html#a2155fca440675ca9697a2fe7b2efb30e">rtabmap::util3d::cloudsRGBFromSensorData</a></div><divclass="ttdeci">std::vector< pcl::PointCloud< pcl::PointXYZRGB >::Ptr > RTABMAP_CORE_EXPORT cloudsRGBFromSensorData(const SensorData &sensorData, int decimation=1, float maxDepth=0.0f, float minDepth=0.0f, std::vector< pcl::IndicesPtr > *validIndices=0, const ParametersMap &stereoParameters=ParametersMap(), const std::vector< float >&roiRatios=std::vector< float >(), unsigned char confidenceThr=0)</div><divclass="ttdoc">Generates a point cloud with RGB color data from sensor data.</div></div>
<divclass="ttc"id="anamespacertabmap_1_1util3d_html_a29ece82e01f041cab271fe9322cf9745"><divclass="ttname"><ahref="namespacertabmap_1_1util3d.html#a29ece82e01f041cab271fe9322cf9745">rtabmap::util3d::cloudRGBFromSensorData</a></div><divclass="ttdeci">pcl::PointCloud< pcl::PointXYZRGB >::Ptr RTABMAP_CORE_EXPORT cloudRGBFromSensorData(const SensorData &sensorData, int decimation=1, float maxDepth=0.0f, float minDepth=0.0f, std::vector< int > *validIndices=0, const ParametersMap &stereoParameters=ParametersMap(), const std::vector< float >&roiRatios=std::vector< float >(), unsigned char confidenceThr=0)</div><divclass="ttdoc">Generates a point cloud of type pcl::PointXYZRGB from sensor data.</div></div>
<divclass="ttc"id="anamespacertabmap_1_1util3d_html_a3366d0a9c24960ee3f5b720945e12b1b"><divclass="ttname"><ahref="namespacertabmap_1_1util3d.html#a3366d0a9c24960ee3f5b720945e12b1b">rtabmap::util3d::rgbFromCloud</a></div><divclass="ttdeci">cv::Mat RTABMAP_CORE_EXPORT rgbFromCloud(const pcl::PointCloud< pcl::PointXYZRGBA >&cloud, bool bgrOrder=true)</div><divclass="ttdoc">Converts a PCL point cloud with RGBA information to an OpenCV RGB or BGR image.</div></div>
<divclass="ttc"id="anamespacertabmap_1_1util3d_html_a39d4adb63b4bd06592e2c65641a32558"><divclass="ttname"><ahref="namespacertabmap_1_1util3d.html#a39d4adb63b4bd06592e2c65641a32558">rtabmap::util3d::laserScanFromDepthImage</a></div><divclass="ttdeci">pcl::PointCloud< pcl::PointXYZ > RTABMAP_CORE_EXPORT laserScanFromDepthImage(const cv::Mat &depthImage, float fx, float fy, float cx, float cy, float maxDepth=0, float minDepth=0, const Transform &localTransform=Transform::getIdentity())</div><divclass="ttdoc">Converts the middle row of a depth image into a laser scan (point cloud) using camera intrinsics and ...</div></div>
<divclass="ttc"id="anamespacertabmap_1_1util3d_html_a406caa6c0c51bae870a8c3a44e7daccc"><divclass="ttname"><ahref="namespacertabmap_1_1util3d.html#a406caa6c0c51bae870a8c3a44e7daccc">rtabmap::util3d::cloudFromStereoImages</a></div><divclass="ttdeci">pcl::PointCloud< pcl::PointXYZRGB >::Ptr RTABMAP_CORE_EXPORT cloudFromStereoImages(const cv::Mat &imageLeft, const cv::Mat &imageRight, const StereoCameraModel &model, int decimation=1, float maxDepth=0.0f, float minDepth=0.0f, std::vector< int > *validIndices=0, const ParametersMap &parameters=ParametersMap())</div><divclass="ttdoc">Converts a pair of stereo images (left and right) into a 3D point cloud with RGB color information.</div></div>
<divclass="ttc"id="anamespacertabmap_1_1util3d_html_a42fb0c483553db3b06e78d85106b8ee5"><divclass="ttname"><ahref="namespacertabmap_1_1util3d.html#a42fb0c483553db3b06e78d85106b8ee5">rtabmap::util3d::projectDisparityTo3D</a></div><divclass="ttdeci">cv::Point3f RTABMAP_CORE_EXPORT projectDisparityTo3D(const cv::Point2f &pt, float disparity, const StereoCameraModel &model)</div><divclass="ttdoc">Projects a 2D point from the left image and its disparity into 3D space.</div></div>
<divclass="ttc"id="anamespacertabmap_1_1util3d_html_a45c699a4a8f4108aa31148fb706e6249"><divclass="ttname"><ahref="namespacertabmap_1_1util3d.html#a45c699a4a8f4108aa31148fb706e6249">rtabmap::util3d::cloudFromDepth</a></div><divclass="ttdeci">RTABMAP_DEPRECATED pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT cloudFromDepth(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)</div><divclass="ttdoc">Converts a depth image to a 3D point cloud.</div></div>
<divclass="ttc"id="anamespacertabmap_1_1util3d_html_a4a95aa3704280ecff8ae50db2fdb03b5"><divclass="ttname"><ahref="namespacertabmap_1_1util3d.html#a4a95aa3704280ecff8ae50db2fdb03b5">rtabmap::util3d::projectDepthTo3D</a></div><divclass="ttdeci">pcl::PointXYZ RTABMAP_CORE_EXPORT projectDepthTo3D(const cv::Mat &depthImage, float x, float y, float cx, float cy, float fx, float fy, bool smoothing, float depthErrorRatio=0.02f)</div><divclass="ttdoc">Projects a single depth pixel into 3D space.</div></div>
<divclass="ttc"id="anamespacertabmap_1_1util3d_html_a4e297ff4baacb0c658d7481eef5201a6"><divclass="ttname"><ahref="namespacertabmap_1_1util3d.html#a4e297ff4baacb0c658d7481eef5201a6">rtabmap::util3d::savePCDWords</a></div><divclass="ttdeci">void RTABMAP_CORE_EXPORT savePCDWords(const std::string &fileName, const std::multimap< int, pcl::PointXYZ >&words, const Transform &transform=Transform::getIdentity())</div><divclass="ttdoc">Saves 3D word points to a PCD file, applying a transform to each point.</div></div>
<divclass="ttc"id="anamespacertabmap_1_1util3d_html_a5ec62aa90ceb52a032e7e49c22e0fd76"><divclass="ttname"><ahref="namespacertabmap_1_1util3d.html#a5ec62aa90ceb52a032e7e49c22e0fd76">rtabmap::util3d::rgbdFromCloud</a></div><divclass="ttdeci">void RTABMAP_CORE_EXPORT rgbdFromCloud(const pcl::PointCloud< pcl::PointXYZRGBA >&cloud, cv::Mat &rgb, cv::Mat &depth, bool bgrOrder=true, bool depth16U=true)</div><divclass="ttdoc">Converts a PCL point cloud (with RGBA colors) into aligned RGB and depth OpenCV images.</div></div>
<divclass="ttc"id="anamespacertabmap_1_1util3d_html_a5ee08270b4a9e8ad93193721c7c71556"><divclass="ttname"><ahref="namespacertabmap_1_1util3d.html#a5ee08270b4a9e8ad93193721c7c71556">rtabmap::util3d::loadBINScan</a></div><divclass="ttdeci">cv::Mat RTABMAP_CORE_EXPORT loadBINScan(const std::string &fileName)</div><divclass="ttdoc">Loads a KITTI-style Velodyne binary scan file into an OpenCV matrix.</div></div>
<divclass="ttc"id="anamespacertabmap_1_1util3d_html_a636c56f4ab6e58044595f95e44f93d06"><divclass="ttname"><ahref="namespacertabmap_1_1util3d.html#a636c56f4ab6e58044595f95e44f93d06">rtabmap::util3d::loadBINCloud</a></div><divclass="ttdeci">pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT loadBINCloud(const std::string &fileName)</div><divclass="ttdoc">Loads a KITTI-style Velodyne binary scan and converts it to a PCL point cloud.</div></div>
<divclass="ttc"id="anamespacertabmap_1_1util3d_html_a791904051b63ab0da4d972166a25ae5f"><divclass="ttname"><ahref="namespacertabmap_1_1util3d.html#a791904051b63ab0da4d972166a25ae5f">rtabmap::util3d::projectDepthTo3DRay</a></div><divclass="ttdeci">Eigen::Vector3f RTABMAP_CORE_EXPORT projectDepthTo3DRay(const cv::Size &imageSize, float x, float y, float cx, float cy, float fx, float fy)</div><divclass="ttdoc">Projects pixel coordinates to a normalized 3D ray in camera coordinates.</div></div>
<divclass="ttc"id="anamespacertabmap_1_1util3d_html_a826310ce938a13b9fff64f71e7ecc057"><divclass="ttname"><ahref="namespacertabmap_1_1util3d.html#a826310ce938a13b9fff64f71e7ecc057">rtabmap::util3d::projectCloudToCamera</a></div><divclass="ttdeci">cv::Mat RTABMAP_CORE_EXPORT projectCloudToCamera(const cv::Size &imageSize, const cv::Mat &cameraMatrixK, const cv::Mat &laserScan, const rtabmap::Transform &cameraTransform)</div><divclass="ttdoc">Register a point cloud (laser scan) to the camera's frame of reference and return a registered depth ...</div></div>
<divclass="ttc"id="anamespacertabmap_1_1util3d_html_a863268b894de375aa45485dafe52dd7b"><divclass="ttname"><ahref="namespacertabmap_1_1util3d.html#a863268b894de375aa45485dafe52dd7b">rtabmap::util3d::concatenateClouds</a></div><divclass="ttdeci">pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT concatenateClouds(const std::list< pcl::PointCloud< pcl::PointXYZ >::Ptr >&clouds)</div><divclass="ttdoc">Concatenates a list of PointXYZ point clouds into a single point cloud.</div></div>
<divclass="ttc"id="anamespacertabmap_1_1util3d_html_a86ba029bd916ab76dd5645ba7e1b2ef8"><divclass="ttname"><ahref="namespacertabmap_1_1util3d.html#a86ba029bd916ab76dd5645ba7e1b2ef8">rtabmap::util3d::loadCloud</a></div><divclass="ttdeci">RTABMAP_DEPRECATED pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT loadCloud(const std::string &path, const Transform &transform=Transform::getIdentity(), int downsampleStep=1, float voxelSize=0.0f)</div><divclass="ttdoc">Loads and optionally transforms/downsamples/voxelizes a point cloud.</div></div>
<divclass="ttc"id="anamespacertabmap_1_1util3d_html_a982bc5d13fea129a174e16373aa8a31c"><divclass="ttname"><ahref="namespacertabmap_1_1util3d.html#a982bc5d13fea129a174e16373aa8a31c">rtabmap::util3d::cloudFromDepthRGB</a></div><divclass="ttdeci">RTABMAP_DEPRECATED pcl::PointCloud< pcl::PointXYZRGB >::Ptr RTABMAP_CORE_EXPORT cloudFromDepthRGB(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)</div><divclass="ttdoc">Creates a point cloud from an RGB image and a depth image.</div></div>
<divclass="ttc"id="anamespacertabmap_1_1util3d_html_a992c9dd2c6243261244e0650d3e98564"><divclass="ttname"><ahref="namespacertabmap_1_1util3d.html#a992c9dd2c6243261244e0650d3e98564">rtabmap::util3d::fillProjectedCloudHoles</a></div><divclass="ttdeci">void RTABMAP_CORE_EXPORT fillProjectedCloudHoles(cv::Mat &depthRegistered, bool verticalDirection, bool fillToBorder)</div><divclass="ttdoc">Fills holes (missing depth values) in a depth image by interpolating between non-zero values.</div></div>
<divclass="ttc"id="anamespacertabmap_1_1util3d_html_aa5a81a30a05507cb5d222f2f23c111ea"><divclass="ttname"><ahref="namespacertabmap_1_1util3d.html#aa5a81a30a05507cb5d222f2f23c111ea">rtabmap::util3d::projectCloudToCameras</a></div><divclass="ttdeci">std::vector< std::pair< std::pair< int, int >, pcl::PointXY >> RTABMAP_CORE_EXPORT projectCloudToCameras(const pcl::PointCloud< pcl::PointXYZRGBNormal >&cloud, const std::map< int, Transform >&cameraPoses, const std::map< int, std::vector< CameraModel >>&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 ProgressState *state=0)</div><divclass="ttdoc">Projects a 3D point cloud to the best camera (NodeID -> CameraIndex) for each point based on a policy...</div></div>
<divclass="ttc"id="anamespacertabmap_1_1util3d_html_aacda489f2336d8edb4e982f61f55cc66"><divclass="ttname"><ahref="namespacertabmap_1_1util3d.html#aacda489f2336d8edb4e982f61f55cc66">rtabmap::util3d::cloudFromSensorData</a></div><divclass="ttdeci">pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT cloudFromSensorData(const SensorData &sensorData, int decimation=1, float maxDepth=0.0f, float minDepth=0.0f, std::vector< int > *validIndices=0, const ParametersMap &stereoParameters=ParametersMap(), const std::vector< float >&roiRatios=std::vector< float >(), unsigned char confidenceThr=0)</div><divclass="ttdoc">Generates a point cloud from sensor data.</div></div>
<divclass="ttc"id="anamespacertabmap_1_1util3d_html_aaf77cb59d32f36c1e9baa2111a7b1b3d"><divclass="ttname"><ahref="namespacertabmap_1_1util3d.html#aaf77cb59d32f36c1e9baa2111a7b1b3d">rtabmap::util3d::depthFromCloud</a></div><divclass="ttdeci">cv::Mat RTABMAP_CORE_EXPORT depthFromCloud(const pcl::PointCloud< pcl::PointXYZRGBA >&cloud, bool depth16U=true)</div><divclass="ttdoc">Generates a depth image from a PCL organized point cloud.</div></div>
<divclass="ttc"id="anamespacertabmap_1_1util3d_html_acc048e10b70e3ad3efb299926e575020"><divclass="ttname"><ahref="namespacertabmap_1_1util3d.html#acc048e10b70e3ad3efb299926e575020">rtabmap::util3d::isFinite</a></div><divclass="ttdeci">bool RTABMAP_CORE_EXPORT isFinite(const cv::Point3f &pt)</div><divclass="ttdoc">Checks if all coordinates of a 3D point are finite.</div></div>
<divclass="ttc"id="anamespacertabmap_1_1util3d_html_ad857475644e8de6d7d84b920637b2018"><divclass="ttname"><ahref="namespacertabmap_1_1util3d.html#ad857475644e8de6d7d84b920637b2018">rtabmap::util3d::getMinMax3D</a></div><divclass="ttdeci">void RTABMAP_CORE_EXPORT getMinMax3D(const cv::Mat &laserScan, cv::Point3f &min, cv::Point3f &max)</div><divclass="ttdoc">Computes the minimum and maximum 3D points from a laser scan matrix.</div></div>
<divclass="ttc"id="anamespacertabmap_1_1util3d_html_ada07c0379fcc7bb7465e31a5a53ebfaa"><divclass="ttname"><ahref="namespacertabmap_1_1util3d.html#ada07c0379fcc7bb7465e31a5a53ebfaa">rtabmap::util3d::cloudsFromSensorData</a></div><divclass="ttdeci">std::vector< pcl::PointCloud< pcl::PointXYZ >::Ptr > RTABMAP_CORE_EXPORT cloudsFromSensorData(const SensorData &sensorData, int decimation=1, float maxDepth=0.0f, float minDepth=0.0f, std::vector< pcl::IndicesPtr > *validIndices=0, const ParametersMap &stereoParameters=ParametersMap(), const std::vector< float >&roiRatios=std::vector< float >(), unsigned char confidenceThr=0)</div><divclass="ttdoc">Generates a set of point clouds from sensor data.</div></div>
<divclass="ttc"id="anamespacertabmap_1_1util3d_html_ae145af1bf4955fa135bcf359fb1fe628"><divclass="ttname"><ahref="namespacertabmap_1_1util3d.html#ae145af1bf4955fa135bcf359fb1fe628">rtabmap::util3d::filterFloor</a></div><divclass="ttdeci">cv::Mat RTABMAP_CORE_EXPORT filterFloor(const cv::Mat &depth, const std::vector< CameraModel >&cameraModels, float threshold, cv::Mat *depthBelow=0)</div><divclass="ttdoc">Filters out points below a certain threshold in a depth image based on camera models.</div></div>
<divclass="ttc"id="anamespacertabmap_1_1util3d_html_aee34b5fe56014a9fa058fbdbf90cab71"><divclass="ttname"><ahref="namespacertabmap_1_1util3d.html#aee34b5fe56014a9fa058fbdbf90cab71">rtabmap::util3d::cloudFromDisparity</a></div><divclass="ttdeci">pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT cloudFromDisparity(const cv::Mat &imageDisparity, const StereoCameraModel &model, int decimation=1, float maxDepth=0.0f, float minDepth=0.0f, std::vector< int > *validIndices=0)</div><divclass="ttdoc">Converts a disparity image to a 3D point cloud.</div></div>
<divclass="ttc"id="anamespacertabmap_1_1util3d_html_aefffe4f3418377f85659e7546668b190"><divclass="ttname"><ahref="namespacertabmap_1_1util3d.html#aefffe4f3418377f85659e7546668b190">rtabmap::util3d::loadScan</a></div><divclass="ttdeci">LaserScan RTABMAP_CORE_EXPORT loadScan(const std::string &path)</div><divclass="ttdoc">Loads a 3D scan from a file (.pcd, .ply, or .bin format).</div></div>
<divclass="ttc"id="anamespacertabmap_1_1util3d_html_aff3c61a08b0fcad7f1c3f7c847190969"><divclass="ttname"><ahref="namespacertabmap_1_1util3d.html#aff3c61a08b0fcad7f1c3f7c847190969">rtabmap::util3d::concatenate</a></div><divclass="ttdeci">pcl::IndicesPtr RTABMAP_CORE_EXPORT concatenate(const std::vector< pcl::IndicesPtr >&indices)</div><divclass="ttdoc">Concatenates multiple sets of indices into a single index vector.</div></div>
<divclass="ttc"id="anamespacertabmap_html_ad08b6f1796a27dd7316c99c385e2cc55"><divclass="ttname"><ahref="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">rtabmap::ParametersMap</a></div><divclass="ttdeci">std::map< std::string, std::string > ParametersMap</div><divclass="ttdoc">Parameter keys mapped to their values, as used by every configurable class (see Parameters).</div><divclass="ttdef"><b>Definition</b><ahref="Parameters_8h_source.html#l00044">Parameters.h:44</a></div></div>
<divclass="ttc"id="astructrtabmap_1_1PointXYZIRT_html"><divclass="ttname"><ahref="structrtabmap_1_1PointXYZIRT.html">rtabmap::PointXYZIRT</a></div><divclass="ttdoc">This namespace contains 3D point cloud processing utilities.</div><divclass="ttdef"><b>Definition</b><ahref="util3d_8h_source.html#l00057">util3d.h:58</a></div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<divid="nav-path"class="navpath"><!-- id is needed for treeview function! -->
<liclass="footer">Generated by <ahref="https://www.doxygen.org/index.html"><imgclass="footer"src="doxygen.svg"width="104"height="31"alt="doxygen"/></a> 1.9.8 </li>