Classes | Functions

Module segmentation


Detailed Description

Overview

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.

History

Requirements

Classes

class  pcl::EuclideanClusterExtraction< PointT >
 EuclideanClusterExtraction represents a segmentation class for cluster extraction in an Euclidean sense. 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::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::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< KdTree< 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.
template<typename PointT >
void pcl::extractEuclideanClusters (const PointCloud< PointT > &cloud, const std::vector< int > &indices, const boost::shared_ptr< KdTree< 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.
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.
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.
bool pcl::comparePointClusters (const pcl::PointIndices &a, const pcl::PointIndices &b)
 Sort clusters method (for std::sort).
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.
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.
template<typename PointT >
void pcl::getPointCloudDifference (const pcl::PointCloud< PointT > &src, const pcl::PointCloud< PointT > &tgt, double threshold, const boost::shared_ptr< pcl::KdTree< PointT > > &tree, pcl::PointCloud< PointT > &output)
 Obtain the difference between two aligned point clouds as another point cloud, given a distance threshold.

Function Documentation

bool pcl::comparePointClusters ( const pcl::PointIndices a,
const pcl::PointIndices b 
) [inline]

Sort clusters method (for std::sort).

Definition at line 383 of file extract_clusters.h.

template<typename PointT >
void pcl::extractEuclideanClusters ( const PointCloud< PointT > &  cloud,
const boost::shared_ptr< KdTree< 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.

Parameters:
cloud the point cloud message
tree the spatial locator (e.g., kd-tree) used for nearest neighbors searching
Note:
the tree has to be created as a spatial locator on cloud
Parameters:
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.

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.

Parameters:
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
Note:
the tree has to be created as a spatial locator on cloud
Parameters:
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 188 of file extract_clusters.h.

template<typename PointT >
void pcl::extractEuclideanClusters ( const PointCloud< PointT > &  cloud,
const std::vector< int > &  indices,
const boost::shared_ptr< KdTree< 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.

Parameters:
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
Note:
the tree has to be created as a spatial locator on cloud and indices
Parameters:
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 114 of file extract_clusters.hpp.

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.

Parameters:
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
Note:
the tree has to be created as a spatial locator on cloud
Parameters:
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 90 of file extract_clusters.h.

template<typename PointT >
void pcl::getPointCloudDifference ( const pcl::PointCloud< PointT > &  src,
const pcl::PointCloud< PointT > &  tgt,
double  threshold,
const boost::shared_ptr< pcl::KdTree< PointT > > &  tree,
pcl::PointCloud< PointT > &  output 
)

Obtain the difference between two aligned point clouds as another point cloud, given a distance threshold.

Parameters:
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.

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.

Note:
this method accepts any general 3D point that is projected onto the 2D polygon, but performs an internal XY projection of both the polygon and the point.
Parameters:
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.

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.

This method assumes that both the point and the polygon are projected onto the XY plane.

Note:
(This is highly optimized code taken from http://www.visibone.com/inpoly/) Copyright (c) 1995-1996 Galacticomm, Inc. Freeware source code.
Parameters:
point a 3D point projected onto the same plane as the polygon
polygon a polygon

Definition at line 111 of file extract_polygonal_prism_data.hpp.