RTAB-Map 0.23.10
Real-Time Appearance-Based Mapping
Loading...
Searching...
No Matches
Proportional Radius Filtering

Performs proportional radius outlier filtering using viewpoint-dependent adaptive radii. More...

Functions

pcl::IndicesPtr RTABMAP_CORE_EXPORT rtabmap::util3d::proportionalRadiusFiltering (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const std::vector< int > &viewpointIndices, const std::map< int, Transform > &viewpoints, float factor=0.01f, float neighborScale=2.0f)
 Proportional radius filtering for point cloud of type pcl::PointXYZ.
 
pcl::IndicesPtr RTABMAP_CORE_EXPORT rtabmap::util3d::proportionalRadiusFiltering (const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const std::vector< int > &viewpointIndices, const std::map< int, Transform > &viewpoints, float factor=0.01f, float neighborScale=2.0f)
 Proportional radius filtering for point cloud of type pcl::PointNormal.
 
pcl::IndicesPtr RTABMAP_CORE_EXPORT rtabmap::util3d::proportionalRadiusFiltering (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const std::vector< int > &viewpointIndices, const std::map< int, Transform > &viewpoints, float factor=0.01f, float neighborScale=2.0f)
 Proportional radius filtering for point cloud of type pcl::PointXYZRGB.
 
pcl::IndicesPtr RTABMAP_CORE_EXPORT rtabmap::util3d::proportionalRadiusFiltering (const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const std::vector< int > &viewpointIndices, const std::map< int, Transform > &viewpoints, float factor=0.01f, float neighborScale=2.0f)
 Proportional radius filtering for point cloud of type pcl::PointXYZRGBNormal.
 
pcl::IndicesPtr RTABMAP_CORE_EXPORT rtabmap::util3d::proportionalRadiusFiltering (const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, const std::vector< int > &viewpointIndices, const std::map< int, Transform > &viewpoints, float factor=0.01f, float neighborScale=2.0f)
 Proportional radius filtering for point cloud of type pcl::PointXYZI.
 
pcl::IndicesPtr RTABMAP_CORE_EXPORT rtabmap::util3d::proportionalRadiusFiltering (const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const std::vector< int > &viewpointIndices, const std::map< int, Transform > &viewpoints, float factor=0.01f, float neighborScale=2.0f)
 Proportional radius filtering for point cloud of type pcl::PointXYZINormal.
 
pcl::IndicesPtr RTABMAP_CORE_EXPORT rtabmap::util3d::proportionalRadiusFiltering (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, const std::vector< int > &viewpointIndices, const std::map< int, Transform > &viewpoints, float factor=0.01f, float neighborScale=2.0f)
 Proportional radius filtering for point cloud of type pcl::PointXYZ with indices.
 
pcl::IndicesPtr RTABMAP_CORE_EXPORT rtabmap::util3d::proportionalRadiusFiltering (const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, const std::vector< int > &viewpointIndices, const std::map< int, Transform > &viewpoints, float factor=0.01f, float neighborScale=2.0f)
 Proportional radius filtering for point cloud of type pcl::PointNormal with indices.
 
pcl::IndicesPtr RTABMAP_CORE_EXPORT rtabmap::util3d::proportionalRadiusFiltering (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::IndicesPtr &indices, const std::vector< int > &viewpointIndices, const std::map< int, Transform > &viewpoints, float factor=0.01f, float neighborScale=2.0f)
 Proportional radius filtering for point cloud of type pcl::PointXYZRGB with indices.
 
pcl::IndicesPtr RTABMAP_CORE_EXPORT rtabmap::util3d::proportionalRadiusFiltering (const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, const std::vector< int > &viewpointIndices, const std::map< int, Transform > &viewpoints, float factor=0.01f, float neighborScale=2.0f)
 Proportional radius filtering for point cloud of type pcl::PointXYZRGBNormal with indices.
 
pcl::IndicesPtr RTABMAP_CORE_EXPORT rtabmap::util3d::proportionalRadiusFiltering (const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, const pcl::IndicesPtr &indices, const std::vector< int > &viewpointIndices, const std::map< int, Transform > &viewpoints, float factor=0.01f, float neighborScale=2.0f)
 Proportional radius filtering for point cloud of type pcl::PointXYZI with indices.
 
pcl::IndicesPtr RTABMAP_CORE_EXPORT rtabmap::util3d::proportionalRadiusFiltering (const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const pcl::IndicesPtr &indices, const std::vector< int > &viewpointIndices, const std::map< int, Transform > &viewpoints, float factor=0.01f, float neighborScale=2.0f)
 Proportional radius filtering for point cloud of type pcl::PointXYZINormal with indices.
 

Detailed Description

Performs proportional radius outlier filtering using viewpoint-dependent adaptive radii.

This function filters a point cloud by performing a radius search for each point, where the radius is proportional to the distance from a known viewpoint. A point is retained only if it has at least one neighbor within the computed radius, and all neighbors lie within an adjusted radius from their own viewpoints, scaled by neighborScale.

This method is useful in 3D reconstruction and SLAM where density can vary with distance from the sensor, and traditional fixed-radius filtering is insufficient.

Parameters
cloudThe input point cloud.
indicesThe subset of indices to process. If empty, the entire cloud is processed.
viewpointIndicesA vector mapping each point index in the cloud to its associated viewpoint ID. Must be the same size as the input cloud.
viewpointsA map from viewpoint IDs to 3D poses (transforms) representing sensor positions.
factorA scaling factor used to determine the radius search distance based on viewpoint distance. Must be greater than 0. Setting it higher will filter points farther from the more accurate points (but processing time will be also higher).
neighborScaleA scaling factor applied to neighbors' viewpoint-based radius. Must be ≥ 1. Setting it higher will accept more noisy points close to the more accurate points (but processing time will be also higher).
Returns
A vector of indices of the points that passed the filtering criteria.
Note
  • A KdTree is used for neighbor search.
  • Points with no valid neighbors within the proportional radius are removed.
  • For a point to be kept, all its neighbors (except itself) must also lie within their own scaled proportional radius (factor * distance_to_own_viewpoint * neighborScale).
  • OpenMP is used to parallelize the full-cloud version for performance.
  • The function throws exceptions to enforce internal assumptions (e.g., input sizes and valid viewpoint mappings).