point_cloud_library / 1.12.1 / classpcl_1_1_region_growing_r_g_b.html /

Implements the well known Region Growing algorithm used for segmentation based on color of points. More...

#include <pcl/segmentation/region_growing_rgb.h>

Public Member Functions

RegionGrowingRGB ()
Constructor that sets default values for member variables. More...
~RegionGrowingRGB ()
Destructor that frees memory. More...
float getPointColorThreshold () const
Returns the color threshold value used for testing if points belong to the same region. More...
void setPointColorThreshold (float thresh)
This method specifies the threshold value for color test between the points. More...
float getRegionColorThreshold () const
Returns the color threshold value used for testing if regions can be merged. More...
void setRegionColorThreshold (float thresh)
This method specifies the threshold value for color test between the regions. More...
float getDistanceThreshold () const
Returns the distance threshold. More...
void setDistanceThreshold (float thresh)
Allows to set distance threshold. More...
unsigned int getNumberOfRegionNeighbours () const
Returns the number of nearest neighbours used for searching K nearest segments. More...
void setNumberOfRegionNeighbours (unsigned int nghbr_number)
This method allows to set the number of neighbours that is used for finding neighbouring segments. More...
bool getNormalTestFlag () const
Returns the flag that signalize if the smoothness test is turned on/off. More...
void setNormalTestFlag (bool value)
Allows to turn on/off the smoothness test. More...
void setCurvatureTestFlag (bool value) override
Allows to turn on/off the curvature test. More...
void setResidualTestFlag (bool value) override
Allows to turn on/off the residual test. More...
void extract (std::vector< pcl::PointIndices > &clusters) override
This method launches the segmentation algorithm and returns the clusters that were obtained during the segmentation. More...
void getSegmentFromPoint (index_t index, pcl::PointIndices &cluster) override
For a given point this function builds a segment to which it belongs and returns this segment. More...
- Public Member Functions inherited from pcl::RegionGrowing< PointT, pcl::Normal >
RegionGrowing ()
Constructor that sets default values for member variables. More...
~RegionGrowing ()
This destructor destroys the cloud, normals and search method used for finding KNN. More...
pcl::uindex_t getMinClusterSize ()
Get the minimum number of points that a cluster needs to contain in order to be considered valid. More...
void setMinClusterSize (pcl::uindex_t min_cluster_size)
Set the minimum number of points that a cluster needs to contain in order to be considered valid. More...
pcl::uindex_t getMaxClusterSize ()
Get the maximum number of points that a cluster needs to contain in order to be considered valid. More...
void setMaxClusterSize (pcl::uindex_t max_cluster_size)
Set the maximum number of points that a cluster needs to contain in order to be considered valid. More...
bool getSmoothModeFlag () const
Returns the flag value. More...
void setSmoothModeFlag (bool value)
This function allows to turn on/off the smoothness constraint. More...
bool getCurvatureTestFlag () const
Returns the flag that signalize if the curvature test is turned on/off. More...
bool getResidualTestFlag () const
Returns the flag that signalize if the residual test is turned on/off. More...
float getSmoothnessThreshold () const
Returns smoothness threshold. More...
void setSmoothnessThreshold (float theta)
Allows to set smoothness threshold used for testing the points. More...
float getResidualThreshold () const
Returns residual threshold. More...
void setResidualThreshold (float residual)
Allows to set residual threshold used for testing the points. More...
float getCurvatureThreshold () const
Returns curvature threshold. More...
void setCurvatureThreshold (float curvature)
Allows to set curvature threshold used for testing the points. More...
unsigned int getNumberOfNeighbours () const
Returns the number of nearest neighbours used for KNN. More...
void setNumberOfNeighbours (unsigned int neighbour_number)
Allows to set the number of neighbours. More...
KdTreePtr getSearchMethod () const
Returns the pointer to the search method that is used for KNN. More...
void setSearchMethod (const KdTreePtr &tree)
Allows to set search method that will be used for finding KNN. More...
NormalPtr getInputNormals () const
Returns normals. More...
void setInputNormals (const NormalPtr &norm)
This method sets the normals. More...
pcl::PointCloud< pcl::PointXYZRGB >::Ptr getColoredCloud ()
If the cloud was successfully segmented, then function returns colored cloud. More...
pcl::PointCloud< pcl::PointXYZRGBA >::Ptr getColoredCloudRGBA ()
If the cloud was successfully segmented, then function returns colored cloud. More...
- Public Member Functions inherited from pcl::PCLBase< PointT >
PCLBase ()
Empty constructor. More...
PCLBase (const PCLBase &base)
Copy constructor. More...
virtual ~PCLBase ()=default
Destructor. More...
virtual void setInputCloud (const PointCloudConstPtr &cloud)
Provide a pointer to the input dataset. More...
const PointCloudConstPtr getInputCloud () const
Get a pointer to the input point cloud dataset. More...
virtual void setIndices (const IndicesPtr &indices)
Provide a pointer to the vector of indices that represents the input data. More...
virtual void setIndices (const IndicesConstPtr &indices)
Provide a pointer to the vector of indices that represents the input data. More...
virtual void setIndices (const PointIndicesConstPtr &indices)
Provide a pointer to the vector of indices that represents the input data. More...
virtual void setIndices (std::size_t row_start, std::size_t col_start, std::size_t nb_rows, std::size_t nb_cols)
Set the indices for the points laying within an interest region of the point cloud. More...
IndicesPtr getIndices ()
Get a pointer to the vector of indices used. More...
const IndicesConstPtr getIndices () const
Get a pointer to the vector of indices used. More...
const PointT & operator[] (std::size_t pos) const
Override PointCloud operator[] to shorten code. More...

Protected Member Functions

bool prepareForSegmentation () override
This method simply checks if it is possible to execute the segmentation algorithm with the current settings. More...
void findPointNeighbours () override
This method finds KNN for each point and saves them to the array because the algorithm needs to find KNN a few times. More...
void findSegmentNeighbours ()
This method simply calls the findRegionsKNN for each segment and saves the results for later use. More...
void findRegionsKNN (pcl::index_t index, pcl::uindex_t nghbr_number, Indices &nghbrs, std::vector< float > &dist)
This method finds K nearest neighbours of the given segment. More...
void applyRegionMergingAlgorithm ()
This function implements the merging algorithm described in the article "Color-based segmentation of point clouds" by Qingming Zhan, Yubin Liang, Yinghui Xiao. More...
float calculateColorimetricalDifference (std::vector< unsigned int > &first_color, std::vector< unsigned int > &second_color) const
This method calculates the colorimetrical difference between two points. More...
void findRegionNeighbours (std::vector< std::vector< std::pair< float, pcl::index_t > > > &neighbours_out, std::vector< std::vector< int > > &regions_in)
This method assembles the array containing neighbours of each homogeneous region. More...
void assembleRegions (std::vector< unsigned int > &num_pts_in_region, int num_regions)
This function simply assembles the regions from list of point labels. More...
bool validatePoint (index_t initial_seed, index_t point, index_t nghbr, bool &is_a_seed) const override
This function is checking if the point with index 'nghbr' belongs to the segment. More...
- Protected Member Functions inherited from pcl::RegionGrowing< PointT, pcl::Normal >
void applySmoothRegionGrowingAlgorithm ()
This function implements the algorithm described in the article "Segmentation of point clouds using smoothness constraint" by T. More...
int growRegion (int initial_seed, int segment_number)
This method grows a segment for the given seed point. More...
void assembleRegions ()
This function simply assembles the regions from list of point labels. More...
- Protected Member Functions inherited from pcl::PCLBase< PointT >
bool initCompute ()
This method should get called before starting the actual computation. More...
bool deinitCompute ()
This method should get called after finishing the actual computation. More...

Protected Attributes

float color_p2p_threshold_
Thershold used in color test for points. More...
float color_r2r_threshold_
Thershold used in color test for regions. More...
float distance_threshold_
Threshold that tells which points we need to assume neighbouring. More...
unsigned int region_neighbour_number_
Number of neighbouring segments to find. More...
std::vector< std::vector< float > > point_distances_
Stores distances for the point neighbours from point_neighbours_. More...
std::vector< pcl::Indices > segment_neighbours_
Stores the neighboures for the corresponding segments. More...
std::vector< std::vector< float > > segment_distances_
Stores distances for the segment neighbours from segment_neighbours_. More...
std::vector< int > segment_labels_
Stores new indices for segments that were obtained at the region growing stage. More...
- Protected Attributes inherited from pcl::RegionGrowing< PointT, pcl::Normal >
pcl::uindex_t min_pts_per_cluster_
Stores the minimum number of points that a cluster needs to contain in order to be considered valid. More...
pcl::uindex_t max_pts_per_cluster_
Stores the maximum number of points that a cluster needs to contain in order to be considered valid. More...
bool smooth_mode_flag_
Flag that signalizes if the smoothness constraint will be used. More...
bool curvature_flag_
If set to true then curvature test will be done during segmentation. More...
bool residual_flag_
If set to true then residual test will be done during segmentation. More...
float theta_threshold_
Thershold used for testing the smoothness between points. More...
float residual_threshold_
Thershold used in residual test. More...
float curvature_threshold_
Thershold used in curvature test. More...
unsigned int neighbour_number_
Number of neighbours to find. More...
KdTreePtr search_
Serch method that will be used for KNN. More...
NormalPtr normals_
Contains normals of the points that will be segmented. More...
std::vector< pcl::Indices > point_neighbours_
Contains neighbours of each point. More...
std::vector< int > point_labels_
Point labels that tells to which segment each point belongs. More...
bool normal_flag_
If set to true then normal/smoothness test will be done during segmentation. More...
std::vector< pcl::uindex_t > num_pts_in_segment_
Tells how much points each segment contains. More...
std::vector< pcl::PointIndices > clusters_
After the segmentation it will contain the segments. More...
int number_of_segments_
Stores the number of segments. More...
- Protected Attributes inherited from pcl::PCLBase< PointT >
PointCloudConstPtr input_
The input point cloud dataset. More...
IndicesPtr indices_
A pointer to the vector of point indices to use. More...
bool use_indices_
Set to true if point indices are used. More...
bool fake_indices_
If no set of indices are given, we construct a set of fake indices that mimic the input PointCloud. More...

Additional Inherited Members

- Public Types inherited from pcl::RegionGrowing< PointT, pcl::Normal >
using KdTree = pcl::search::Search< PointT >
using KdTreePtr = typename KdTree::Ptr
using Normal = pcl::PointCloud< pcl::Normal >
using NormalPtr = typename Normal::Ptr
using PointCloud = pcl::PointCloud< PointT >
- Public Types inherited from pcl::PCLBase< PointT >
using PointCloud = pcl::PointCloud< PointT >
using PointCloudPtr = typename PointCloud::Ptr
using PointCloudConstPtr = typename PointCloud::ConstPtr
using PointIndicesPtr = PointIndices::Ptr
using PointIndicesConstPtr = PointIndices::ConstPtr

Detailed Description

template<typename PointT, typename NormalT = pcl::Normal>
class pcl::RegionGrowingRGB< PointT, NormalT >

Implements the well known Region Growing algorithm used for segmentation based on color of points.

Description can be found in the article "Color-based segmentation of point clouds" by Qingming Zhan, Yubin Liang, Yinghui Xiao

Definition at line 56 of file region_growing_rgb.h.

Constructor & Destructor Documentation

RegionGrowingRGB()

~RegionGrowingRGB()

template<typename PointT , typename NormalT >
pcl::RegionGrowingRGB< PointT, NormalT >::~RegionGrowingRGB

Destructor that frees memory.

Definition at line 70 of file region_growing_rgb.hpp.

Member Function Documentation

applyRegionMergingAlgorithm()

template<typename PointT , typename NormalT >
void pcl::RegionGrowingRGB< PointT, NormalT >::applyRegionMergingAlgorithm
protected

This function implements the merging algorithm described in the article "Color-based segmentation of point clouds" by Qingming Zhan, Yubin Liang, Yinghui Xiao.

Definition at line 368 of file region_growing_rgb.hpp.

References pcl::comparePair().

assembleRegions()

template<typename PointT , typename NormalT >
void pcl::RegionGrowingRGB< PointT, NormalT >::assembleRegions ( std::vector< unsigned int > & num_pts_in_region,
int num_regions
)
protected

This function simply assembles the regions from list of point labels.

Parameters
[in] num_pts_in_region for each final region it stores the corresponding number of points in it
[in] num_regions number of regions to assemble

Definition at line 554 of file region_growing_rgb.hpp.

References pcl::PointIndices::indices.

calculateColorimetricalDifference()

template<typename PointT , typename NormalT >
float pcl::RegionGrowingRGB< PointT, NormalT >::calculateColorimetricalDifference ( std::vector< unsigned int > & first_color,
std::vector< unsigned int > & second_color
) const
protected

This method calculates the colorimetrical difference between two points.

In this case it simply returns the euclidean distance between two colors.

Parameters
[in] first_color the color of the first point
[in] second_color the color of the second point

Definition at line 511 of file region_growing_rgb.hpp.

extract()

template<typename PointT , typename NormalT >
void pcl::RegionGrowingRGB< PointT, NormalT >::extract ( std::vector< pcl::PointIndices > & clusters )
overridevirtual

This method launches the segmentation algorithm and returns the clusters that were obtained during the segmentation.

Parameters
[out] clusters clusters that were obtained. Each cluster is an array of point indices.

Reimplemented from pcl::RegionGrowing< PointT, pcl::Normal >.

Definition at line 164 of file region_growing_rgb.hpp.

References pcl::RegionGrowing< PointT, NormalT >::assembleRegions().

findPointNeighbours()

template<typename PointT , typename NormalT >
void pcl::RegionGrowingRGB< PointT, NormalT >::findPointNeighbours
overrideprotectedvirtual

This method finds KNN for each point and saves them to the array because the algorithm needs to find KNN a few times.

Reimplemented from pcl::RegionGrowing< PointT, pcl::Normal >.

Definition at line 273 of file region_growing_rgb.hpp.

findRegionNeighbours()

template<typename PointT , typename NormalT >
void pcl::RegionGrowingRGB< PointT, NormalT >::findRegionNeighbours ( std::vector< std::vector< std::pair< float, pcl::index_t > > > & neighbours_out,
std::vector< std::vector< int > > & regions_in
)
protected

This method assembles the array containing neighbours of each homogeneous region.

Homogeneous region is the union of some segments. This array is used when the regions with a few points need to be merged with the neighbouring region.

Parameters
[out] neighbours_out vector of lists of neighbours for every homogeneous region
[in] regions_in vector of lists, each list contains indices of segments that belong to the corresponding homogeneous region.

Definition at line 522 of file region_growing_rgb.hpp.

References pcl::comparePair().

findRegionsKNN()

template<typename PointT , typename NormalT >
void pcl::RegionGrowingRGB< PointT, NormalT >::findRegionsKNN ( pcl::index_t index,
pcl::uindex_t nghbr_number,
pcl::Indices & nghbrs,
std::vector< float > & dist
)
protected

This method finds K nearest neighbours of the given segment.

Parameters
[in] index index of the segment for which neighbours will be found
[in] nghbr_number the number of neighbours to find
[out] nghbrs the array of indices of the neighbours that were found
[out] dist the array of distances to the corresponding neighbours

Definition at line 314 of file region_growing_rgb.hpp.

findSegmentNeighbours()

template<typename PointT , typename NormalT >
void pcl::RegionGrowingRGB< PointT, NormalT >::findSegmentNeighbours
protected

This method simply calls the findRegionsKNN for each segment and saves the results for later use.

Definition at line 295 of file region_growing_rgb.hpp.

getDistanceThreshold()

template<typename PointT , typename NormalT >
float pcl::RegionGrowingRGB< PointT, NormalT >::getDistanceThreshold

Returns the distance threshold.

If the distance between two points is less or equal to distance threshold value, then those points assumed to be neighbouring points.

Definition at line 108 of file region_growing_rgb.hpp.

getNormalTestFlag()

template<typename PointT , typename NormalT >
bool pcl::RegionGrowingRGB< PointT, NormalT >::getNormalTestFlag

Returns the flag that signalize if the smoothness test is turned on/off.

Definition at line 136 of file region_growing_rgb.hpp.

getNumberOfRegionNeighbours()

template<typename PointT , typename NormalT >
unsigned int pcl::RegionGrowingRGB< PointT, NormalT >::getNumberOfRegionNeighbours

Returns the number of nearest neighbours used for searching K nearest segments.

Note that here it refers to the segments(not the points).

Definition at line 122 of file region_growing_rgb.hpp.

getPointColorThreshold()

template<typename PointT , typename NormalT >
float pcl::RegionGrowingRGB< PointT, NormalT >::getPointColorThreshold

Returns the color threshold value used for testing if points belong to the same region.

Definition at line 80 of file region_growing_rgb.hpp.

getRegionColorThreshold()

template<typename PointT , typename NormalT >
float pcl::RegionGrowingRGB< PointT, NormalT >::getRegionColorThreshold

Returns the color threshold value used for testing if regions can be merged.

Definition at line 94 of file region_growing_rgb.hpp.

getSegmentFromPoint()

template<typename PointT , typename NormalT >
void pcl::RegionGrowingRGB< PointT, NormalT >::getSegmentFromPoint ( pcl::index_t index,
pcl::PointIndices & cluster
)
overridevirtual

For a given point this function builds a segment to which it belongs and returns this segment.

Parameters
[in] index index of the initial point which will be the seed for growing a segment.
cluster

Reimplemented from pcl::RegionGrowing< PointT, pcl::Normal >.

Definition at line 678 of file region_growing_rgb.hpp.

References pcl::RegionGrowing< PointT, NormalT >::assembleRegions(), and pcl::PointIndices::indices.

prepareForSegmentation()

template<typename PointT , typename NormalT >
bool pcl::RegionGrowingRGB< PointT, NormalT >::prepareForSegmentation
overrideprotectedvirtual

This method simply checks if it is possible to execute the segmentation algorithm with the current settings.

If it is possible then it returns true.

Reimplemented from pcl::RegionGrowing< PointT, pcl::Normal >.

Definition at line 218 of file region_growing_rgb.hpp.

setCurvatureTestFlag()

template<typename PointT , typename NormalT >
void pcl::RegionGrowingRGB< PointT, NormalT >::setCurvatureTestFlag ( bool value )
overridevirtual

Allows to turn on/off the curvature test.

Parameters
[in] value new value for curvature test. If set to true then the test will be turned on

Reimplemented from pcl::RegionGrowing< PointT, pcl::Normal >.

Definition at line 150 of file region_growing_rgb.hpp.

setDistanceThreshold()

template<typename PointT , typename NormalT >
void pcl::RegionGrowingRGB< PointT, NormalT >::setDistanceThreshold ( float thresh )

Allows to set distance threshold.

Parameters
[in] thresh new threshold value for neighbour test

Definition at line 115 of file region_growing_rgb.hpp.

setNormalTestFlag()

template<typename PointT , typename NormalT >
void pcl::RegionGrowingRGB< PointT, NormalT >::setNormalTestFlag ( bool value )

Allows to turn on/off the smoothness test.

Parameters
[in] value new value for normal/smoothness test. If set to true then the test will be turned on

Definition at line 143 of file region_growing_rgb.hpp.

setNumberOfRegionNeighbours()

template<typename PointT , typename NormalT >
void pcl::RegionGrowingRGB< PointT, NormalT >::setNumberOfRegionNeighbours ( unsigned int nghbr_number )

This method allows to set the number of neighbours that is used for finding neighbouring segments.

Neighbouring segments are needed for the merging process.

Parameters
[in] nghbr_number the number of neighbouring segments to find

Definition at line 129 of file region_growing_rgb.hpp.

setPointColorThreshold()

template<typename PointT , typename NormalT >
void pcl::RegionGrowingRGB< PointT, NormalT >::setPointColorThreshold ( float thresh )

This method specifies the threshold value for color test between the points.

This kind of testing is made at the first stage of the algorithm(region growing). If the difference between points color is less than threshold value, then they are considered to be in the same region.

Parameters
[in] thresh new threshold value for color test

Definition at line 87 of file region_growing_rgb.hpp.

setRegionColorThreshold()

template<typename PointT , typename NormalT >
void pcl::RegionGrowingRGB< PointT, NormalT >::setRegionColorThreshold ( float thresh )

This method specifies the threshold value for color test between the regions.

This kind of testing is made at the second stage of the algorithm(region merging). If the difference between segments color is less than threshold value, then they are merged together.

Parameters
[in] thresh new threshold value for color test

Definition at line 101 of file region_growing_rgb.hpp.

setResidualTestFlag()

template<typename PointT , typename NormalT >
void pcl::RegionGrowingRGB< PointT, NormalT >::setResidualTestFlag ( bool value )
overridevirtual

Allows to turn on/off the residual test.

Parameters
[in] value new value for residual test. If set to true then the test will be turned on

Reimplemented from pcl::RegionGrowing< PointT, pcl::Normal >.

Definition at line 157 of file region_growing_rgb.hpp.

validatePoint()

template<typename PointT , typename NormalT >
bool pcl::RegionGrowingRGB< PointT, NormalT >::validatePoint ( pcl::index_t initial_seed,
pcl::index_t point,
pcl::index_t nghbr,
bool & is_a_seed
) const
overrideprotectedvirtual

This function is checking if the point with index 'nghbr' belongs to the segment.

If so, then it returns true. It also checks if this point can serve as the seed.

Parameters
[in] initial_seed index of the initial point that was passed to the growRegion() function
[in] point index of the current seed point
[in] nghbr index of the point that is neighbour of the current seed
[out] is_a_seed this value is set to true if the point with index 'nghbr' can serve as the seed

Reimplemented from pcl::RegionGrowing< PointT, pcl::Normal >.

Definition at line 599 of file region_growing_rgb.hpp.

Member Data Documentation

color_p2p_threshold_

template<typename PointT , typename NormalT = pcl::Normal>
float pcl::RegionGrowingRGB< PointT, NormalT >::color_p2p_threshold_
protected

Thershold used in color test for points.

Definition at line 255 of file region_growing_rgb.h.

color_r2r_threshold_

template<typename PointT , typename NormalT = pcl::Normal>
float pcl::RegionGrowingRGB< PointT, NormalT >::color_r2r_threshold_
protected

Thershold used in color test for regions.

Definition at line 258 of file region_growing_rgb.h.

distance_threshold_

template<typename PointT , typename NormalT = pcl::Normal>
float pcl::RegionGrowingRGB< PointT, NormalT >::distance_threshold_
protected

Threshold that tells which points we need to assume neighbouring.

Definition at line 261 of file region_growing_rgb.h.

point_distances_

template<typename PointT , typename NormalT = pcl::Normal>
std::vector< std::vector<float> > pcl::RegionGrowingRGB< PointT, NormalT >::point_distances_
protected

Stores distances for the point neighbours from point_neighbours_.

Definition at line 267 of file region_growing_rgb.h.

region_neighbour_number_

template<typename PointT , typename NormalT = pcl::Normal>
unsigned int pcl::RegionGrowingRGB< PointT, NormalT >::region_neighbour_number_
protected

Number of neighbouring segments to find.

Definition at line 264 of file region_growing_rgb.h.

segment_distances_

template<typename PointT , typename NormalT = pcl::Normal>
std::vector< std::vector<float> > pcl::RegionGrowingRGB< PointT, NormalT >::segment_distances_
protected

Stores distances for the segment neighbours from segment_neighbours_.

Definition at line 273 of file region_growing_rgb.h.

segment_labels_

template<typename PointT , typename NormalT = pcl::Normal>
std::vector<int> pcl::RegionGrowingRGB< PointT, NormalT >::segment_labels_
protected

Stores new indices for segments that were obtained at the region growing stage.

Definition at line 276 of file region_growing_rgb.h.

segment_neighbours_

template<typename PointT , typename NormalT = pcl::Normal>
std::vector< pcl::Indices > pcl::RegionGrowingRGB< PointT, NormalT >::segment_neighbours_
protected

Stores the neighboures for the corresponding segments.

Definition at line 270 of file region_growing_rgb.h.


The documentation for this class was generated from the following files:

© 2009–2012, Willow Garage, Inc.
© 2012–, Open Perception, Inc.
Licensed under the BSD License.
https://pointclouds.org/documentation/classpcl_1_1_region_growing_r_g_b.html