|
Point Cloud Library (PCL)
1.7.2
|
The pcl_segmentation library contains algorithms for segmenting a point cloud into distinct clusters. These algorithms are best suited to processing a point cloud that is composed of a number of spatially isolated regions. In such cases, clustering is often used to break the cloud down into its constituent parts, which can then be processed independently.
Classes | |
| class | pcl::ConditionalEuclideanClustering< PointT > |
| ConditionalEuclideanClustering performs segmentation based on Euclidean distance and a user-defined clustering condition. More... | |
| class | pcl::EuclideanClusterExtraction< PointT > |
| EuclideanClusterExtraction represents a segmentation class for cluster extraction in an Euclidean sense. More... | |
| class | pcl::LabeledEuclideanClusterExtraction< PointT > |
| LabeledEuclideanClusterExtraction represents a segmentation class for cluster extraction in an Euclidean sense, with label info. More... | |
| class | pcl::ExtractPolygonalPrismData< PointT > |
| ExtractPolygonalPrismData uses a set of point indices that represent a planar model, and together with a given height, generates a 3D polygonal prism. More... | |
| class | pcl::GrabCut< PointT > |
| Implementation of the GrabCut segmentation in "GrabCut — Interactive Foreground Extraction using Iterated Graph Cuts" by Carsten Rother, Vladimir Kolmogorov and Andrew Blake. More... | |
| class | pcl::SACSegmentation< PointT > |
| SACSegmentation represents the Nodelet segmentation class for Sample Consensus methods and models, in the sense that it just creates a Nodelet wrapper for generic-purpose SAC-based segmentation. More... | |
| class | pcl::SACSegmentationFromNormals< PointT, PointNT > |
| SACSegmentationFromNormals represents the PCL nodelet segmentation class for Sample Consensus methods and models that require the use of surface normals for estimation. More... | |
| class | pcl::SeededHueSegmentation |
| SeededHueSegmentation. More... | |
| class | pcl::SegmentDifferences< PointT > |
| SegmentDifferences obtains the difference between two spatially aligned point clouds and returns the difference between them for a maximum given distance threshold. More... | |
Functions | |
| template<typename PointT > | |
| void | pcl::extractEuclideanClusters (const PointCloud< PointT > &cloud, const boost::shared_ptr< search::Search< PointT > > &tree, float tolerance, std::vector< PointIndices > &clusters, unsigned int min_pts_per_cluster=1, unsigned int max_pts_per_cluster=(std::numeric_limits< int >::max)()) |
| Decompose a region of space into clusters based on the Euclidean distance between points. More... | |
| template<typename PointT > | |
| void | pcl::extractEuclideanClusters (const PointCloud< PointT > &cloud, const std::vector< int > &indices, const boost::shared_ptr< search::Search< PointT > > &tree, float tolerance, std::vector< PointIndices > &clusters, unsigned int min_pts_per_cluster=1, unsigned int max_pts_per_cluster=(std::numeric_limits< int >::max)()) |
| Decompose a region of space into clusters based on the Euclidean distance between points. More... | |
| template<typename PointT , typename Normal > | |
| void | pcl::extractEuclideanClusters (const PointCloud< PointT > &cloud, const PointCloud< Normal > &normals, float tolerance, const boost::shared_ptr< KdTree< PointT > > &tree, std::vector< PointIndices > &clusters, double eps_angle, unsigned int min_pts_per_cluster=1, unsigned int max_pts_per_cluster=(std::numeric_limits< int >::max)()) |
| Decompose a region of space into clusters based on the euclidean distance between points, and the normal angular deviation. More... | |
| template<typename PointT , typename Normal > | |
| void | pcl::extractEuclideanClusters (const PointCloud< PointT > &cloud, const PointCloud< Normal > &normals, const std::vector< int > &indices, const boost::shared_ptr< KdTree< PointT > > &tree, float tolerance, std::vector< PointIndices > &clusters, double eps_angle, unsigned int min_pts_per_cluster=1, unsigned int max_pts_per_cluster=(std::numeric_limits< int >::max)()) |
| Decompose a region of space into clusters based on the euclidean distance between points, and the normal angular deviation. More... | |
| bool | pcl::comparePointClusters (const pcl::PointIndices &a, const pcl::PointIndices &b) |
| Sort clusters method (for std::sort). More... | |
| template<typename PointT > | |
| void | pcl::extractLabeledEuclideanClusters (const PointCloud< PointT > &cloud, const boost::shared_ptr< search::Search< PointT > > &tree, float tolerance, std::vector< std::vector< PointIndices > > &labeled_clusters, unsigned int min_pts_per_cluster=1, unsigned int max_pts_per_cluster=std::numeric_limits< unsigned int >::max(), unsigned int max_label=std::numeric_limits< unsigned int >::max()) |
| Decompose a region of space into clusters based on the Euclidean distance between points. More... | |
| bool | pcl::compareLabeledPointClusters (const pcl::PointIndices &a, const pcl::PointIndices &b) |
| Sort clusters method (for std::sort). More... | |
| template<typename PointT > | |
| bool | pcl::isPointIn2DPolygon (const PointT &point, const pcl::PointCloud< PointT > &polygon) |
| General purpose method for checking if a 3D point is inside or outside a given 2D polygon. More... | |
| template<typename PointT > | |
| bool | pcl::isXYPointIn2DXYPolygon (const PointT &point, const pcl::PointCloud< PointT > &polygon) |
| Check if a 2d point (X and Y coordinates considered only!) is inside or outside a given polygon. More... | |
| void | pcl::seededHueSegmentation (const PointCloud< PointXYZRGB > &cloud, const boost::shared_ptr< search::Search< PointXYZRGB > > &tree, float tolerance, PointIndices &indices_in, PointIndices &indices_out, float delta_hue=0.0) |
| Decompose a region of space into clusters based on the Euclidean distance between points. More... | |
| void | pcl::seededHueSegmentation (const PointCloud< PointXYZRGB > &cloud, const boost::shared_ptr< search::Search< PointXYZRGBL > > &tree, float tolerance, PointIndices &indices_in, PointIndices &indices_out, float delta_hue=0.0) |
| Decompose a region of space into clusters based on the Euclidean distance between points. More... | |
| template<typename PointT > | |
| void | pcl::getPointCloudDifference (const pcl::PointCloud< PointT > &src, const pcl::PointCloud< PointT > &tgt, double threshold, const boost::shared_ptr< pcl::search::Search< PointT > > &tree, pcl::PointCloud< PointT > &output) |
| Obtain the difference between two aligned point clouds as another point cloud, given a distance threshold. More... | |
|
inline |
Sort clusters method (for std::sort).
Definition at line 183 of file extract_labeled_clusters.h.
References pcl::PointIndices::indices.
|
inline |
Sort clusters method (for std::sort).
Definition at line 418 of file extract_clusters.h.
References pcl::PointIndices::indices.
Referenced by pcl::LabeledEuclideanClusterExtraction< PointT >::extract(), and pcl::EuclideanClusterExtraction< PointT >::extract().
| void pcl::extractEuclideanClusters | ( | const PointCloud< PointT > & | cloud, |
| const boost::shared_ptr< search::Search< PointT > > & | tree, | ||
| float | tolerance, | ||
| std::vector< PointIndices > & | clusters, | ||
| unsigned int | min_pts_per_cluster = 1, |
||
| unsigned int | max_pts_per_cluster = (std::numeric_limits<int>::max) () |
||
| ) |
Decompose a region of space into clusters based on the Euclidean distance between points.
| cloud | the point cloud message |
| tree | the spatial locator (e.g., kd-tree) used for nearest neighbors searching |
| tolerance | the spatial cluster tolerance as a measure in L2 Euclidean space |
| clusters | the resultant clusters containing point indices (as a vector of PointIndices) |
| min_pts_per_cluster | minimum number of points that a cluster may contain (default: 1) |
| max_pts_per_cluster | maximum number of points that a cluster may contain (default: max int) |
Definition at line 45 of file extract_clusters.hpp.
References pcl::PointIndices::header, pcl::PointCloud< T >::header, pcl::PointIndices::indices, and pcl::PointCloud< T >::points.
Referenced by pcl::EuclideanClusterExtraction< PointT >::extract().
| void pcl::extractEuclideanClusters | ( | const PointCloud< PointT > & | cloud, |
| const std::vector< int > & | indices, | ||
| const boost::shared_ptr< search::Search< PointT > > & | tree, | ||
| float | tolerance, | ||
| std::vector< PointIndices > & | clusters, | ||
| unsigned int | min_pts_per_cluster = 1, |
||
| unsigned int | max_pts_per_cluster = (std::numeric_limits<int>::max) () |
||
| ) |
Decompose a region of space into clusters based on the Euclidean distance between points.
| cloud | the point cloud message |
| indices | a list of point indices to use from cloud |
| tree | the spatial locator (e.g., kd-tree) used for nearest neighbors searching |
| tolerance | the spatial cluster tolerance as a measure in L2 Euclidean space |
| clusters | the resultant clusters containing point indices (as a vector of PointIndices) |
| min_pts_per_cluster | minimum number of points that a cluster may contain (default: 1) |
| max_pts_per_cluster | maximum number of points that a cluster may contain (default: max int) |
Definition at line 118 of file extract_clusters.hpp.
References pcl::PointIndices::header, pcl::PointCloud< T >::header, pcl::PointIndices::indices, and pcl::PointCloud< T >::points.
| void pcl::extractEuclideanClusters | ( | const PointCloud< PointT > & | cloud, |
| const PointCloud< Normal > & | normals, | ||
| float | tolerance, | ||
| const boost::shared_ptr< KdTree< PointT > > & | tree, | ||
| std::vector< PointIndices > & | clusters, | ||
| double | eps_angle, | ||
| unsigned int | min_pts_per_cluster = 1, |
||
| unsigned int | max_pts_per_cluster = (std::numeric_limits<int>::max) () |
||
| ) |
Decompose a region of space into clusters based on the euclidean distance between points, and the normal angular deviation.
| cloud | the point cloud message |
| normals | the point cloud message containing normal information |
| tree | the spatial locator (e.g., kd-tree) used for nearest neighbors searching |
| tolerance | the spatial cluster tolerance as a measure in the L2 Euclidean space |
| clusters | the resultant clusters containing point indices (as a vector of PointIndices) |
| eps_angle | the maximum allowed difference between normals in radians for cluster/region growing |
| min_pts_per_cluster | minimum number of points that a cluster may contain (default: 1) |
| max_pts_per_cluster | maximum number of points that a cluster may contain (default: max int) |
Definition at line 99 of file extract_clusters.h.
References pcl::PointIndices::header, pcl::PointCloud< T >::header, pcl::PointIndices::indices, and pcl::PointCloud< T >::points.
| void pcl::extractEuclideanClusters | ( | const PointCloud< PointT > & | cloud, |
| const PointCloud< Normal > & | normals, | ||
| const std::vector< int > & | indices, | ||
| const boost::shared_ptr< KdTree< PointT > > & | tree, | ||
| float | tolerance, | ||
| std::vector< PointIndices > & | clusters, | ||
| double | eps_angle, | ||
| unsigned int | min_pts_per_cluster = 1, |
||
| unsigned int | max_pts_per_cluster = (std::numeric_limits<int>::max) () |
||
| ) |
Decompose a region of space into clusters based on the euclidean distance between points, and the normal angular deviation.
| cloud | the point cloud message |
| normals | the point cloud message containing normal information |
| indices | a list of point indices to use from cloud |
| tree | the spatial locator (e.g., kd-tree) used for nearest neighbors searching |
| tolerance | the spatial cluster tolerance as a measure in the L2 Euclidean space |
| clusters | the resultant clusters containing point indices (as PointIndices) |
| eps_angle | the maximum allowed difference between normals in degrees for cluster/region growing |
| min_pts_per_cluster | minimum number of points that a cluster may contain (default: 1) |
| max_pts_per_cluster | maximum number of points that a cluster may contain (default: max int) |
Definition at line 198 of file extract_clusters.h.
References pcl::PointIndices::header, pcl::PointCloud< T >::header, pcl::PointIndices::indices, and pcl::PointCloud< T >::points.
| void pcl::extractLabeledEuclideanClusters | ( | const PointCloud< PointT > & | cloud, |
| const boost::shared_ptr< search::Search< PointT > > & | tree, | ||
| float | tolerance, | ||
| std::vector< std::vector< PointIndices > > & | labeled_clusters, | ||
| unsigned int | min_pts_per_cluster = 1, |
||
| unsigned int | max_pts_per_cluster = std::numeric_limits<unsigned int>::max (), |
||
| unsigned int | max_label = std::numeric_limits<unsigned int>::max () |
||
| ) |
Decompose a region of space into clusters based on the Euclidean distance between points.
| [in] | cloud | the point cloud message |
| [in] | tree | the spatial locator (e.g., kd-tree) used for nearest neighbors searching |
| [in] | tolerance | the spatial cluster tolerance as a measure in L2 Euclidean space |
| [out] | labeled_clusters | the resultant clusters containing point indices (as a vector of PointIndices) |
| [in] | min_pts_per_cluster | minimum number of points that a cluster may contain (default: 1) |
| [in] | max_pts_per_cluster | maximum number of points that a cluster may contain (default: max int) |
| [in] | max_label |
Definition at line 44 of file extract_labeled_clusters.hpp.
References pcl::PointIndices::header, pcl::PointCloud< T >::header, pcl::PointIndices::indices, and pcl::PointCloud< T >::points.
Referenced by pcl::LabeledEuclideanClusterExtraction< PointT >::extract().
| void pcl::getPointCloudDifference | ( | const pcl::PointCloud< PointT > & | src, |
| const pcl::PointCloud< PointT > & | tgt, | ||
| double | threshold, | ||
| const boost::shared_ptr< pcl::search::Search< PointT > > & | tree, | ||
| pcl::PointCloud< PointT > & | output | ||
| ) |
Obtain the difference between two aligned point clouds as another point cloud, given a distance threshold.
| src | the input point cloud source |
| tgt | the input point cloud target we need to obtain the difference against |
| threshold | the distance threshold (tolerance) for point correspondences. (e.g., check if f a point p1 from src has a correspondence > threshold than a point p2 from tgt) |
| tree | the spatial locator (e.g., kd-tree) used for nearest neighbors searching built over tgt |
| output | the resultant output point cloud difference |
Definition at line 46 of file segment_differences.hpp.
References pcl::copyPointCloud(), pcl::PointCloud< T >::header, pcl::PointCloud< T >::height, pcl::PointCloud< T >::is_dense, pcl::isFinite(), pcl::PointCloud< T >::points, and pcl::PointCloud< T >::width.
Referenced by pcl::SegmentDifferences< PointT >::segment().
| bool pcl::isPointIn2DPolygon | ( | const PointT & | point, |
| const pcl::PointCloud< PointT > & | polygon | ||
| ) |
General purpose method for checking if a 3D point is inside or outside a given 2D polygon.
| point | a 3D point projected onto the same plane as the polygon |
| polygon | a polygon |
Definition at line 47 of file extract_polygonal_prism_data.hpp.
References pcl::computeMeanAndCovarianceMatrix(), pcl::eigen33(), pcl::EIGEN_ALIGN16, pcl::isXYPointIn2DXYPolygon(), and pcl::PointCloud< T >::points.
| bool pcl::isXYPointIn2DXYPolygon | ( | const PointT & | point, |
| const pcl::PointCloud< PointT > & | polygon | ||
| ) |
Check if a 2d point (X and Y coordinates considered only!) is inside or outside a given polygon.
This method assumes that both the point and the polygon are projected onto the XY plane.
| point | a 3D point projected onto the same plane as the polygon |
| polygon | a polygon |
Definition at line 107 of file extract_polygonal_prism_data.hpp.
References pcl::PointCloud< T >::points.
Referenced by pcl::isPointIn2DPolygon(), and pcl::ExtractPolygonalPrismData< PointT >::segment().
| void pcl::seededHueSegmentation | ( | const PointCloud< PointXYZRGB > & | cloud, |
| const boost::shared_ptr< search::Search< PointXYZRGB > > & | tree, | ||
| float | tolerance, | ||
| PointIndices & | indices_in, | ||
| PointIndices & | indices_out, | ||
| float | delta_hue = 0.0 |
||
| ) |
Decompose a region of space into clusters based on the Euclidean distance between points.
| [in] | cloud | the point cloud message |
| [in] | tree | the spatial locator (e.g., kd-tree) used for nearest neighbors searching |
| [in] | tolerance | the spatial cluster tolerance as a measure in L2 Euclidean space |
| [in] | indices_in | the cluster containing the seed point indices (as a vector of PointIndices) |
| [out] | indices_out | |
| [in] | delta_hue |
Definition at line 46 of file seeded_hue_segmentation.hpp.
References pcl::_PointXYZHSV::h, pcl::PointIndices::indices, pcl::PointCloud< T >::points, and pcl::PointXYZRGBtoXYZHSV().
Referenced by pcl::SeededHueSegmentation::segment().
| void pcl::seededHueSegmentation | ( | const PointCloud< PointXYZRGB > & | cloud, |
| const boost::shared_ptr< search::Search< PointXYZRGBL > > & | tree, | ||
| float | tolerance, | ||
| PointIndices & | indices_in, | ||
| PointIndices & | indices_out, | ||
| float | delta_hue = 0.0 |
||
| ) |
Decompose a region of space into clusters based on the Euclidean distance between points.
| [in] | cloud | the point cloud message |
| [in] | tree | the spatial locator (e.g., kd-tree) used for nearest neighbors searching |
| [in] | tolerance | the spatial cluster tolerance as a measure in L2 Euclidean space |
| [in] | indices_in | the cluster containing the seed point indices (as a vector of PointIndices) |
| [out] | indices_out | |
| [in] | delta_hue |
Definition at line 122 of file seeded_hue_segmentation.hpp.
References pcl::_PointXYZHSV::h, pcl::PointIndices::indices, pcl::PointCloud< T >::points, and pcl::PointXYZRGBtoXYZHSV().