Point Cloud Library (PCL)  1.11.1-dev
List of all members | Public Types | Public Member Functions | Protected Member Functions | Protected Attributes
pcl::SACSegmentation< PointT > Class Template Reference

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

#include <pcl/segmentation/sac_segmentation.h>

+ Inheritance diagram for pcl::SACSegmentation< PointT >:

Public Types

using PointCloud = pcl::PointCloud< PointT >
 
using PointCloudPtr = typename PointCloud::Ptr
 
using PointCloudConstPtr = typename PointCloud::ConstPtr
 
using SearchPtr = typename pcl::search::Search< PointT >::Ptr
 
using SampleConsensusPtr = typename SampleConsensus< PointT >::Ptr
 
using SampleConsensusModelPtr = typename SampleConsensusModel< PointT >::Ptr
 
- 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
 

Public Member Functions

 SACSegmentation (bool random=false)
 Empty constructor. More...
 
 ~SACSegmentation ()
 Empty destructor. More...
 
void setModelType (int model)
 The type of model to use (user given parameter). More...
 
int getModelType () const
 Get the type of SAC model used. More...
 
SampleConsensusPtr getMethod () const
 Get a pointer to the SAC method used. More...
 
SampleConsensusModelPtr getModel () const
 Get a pointer to the SAC model used. More...
 
void setMethodType (int method)
 The type of sample consensus method to use (user given parameter). More...
 
int getMethodType () const
 Get the type of sample consensus method used. More...
 
void setDistanceThreshold (double threshold)
 Distance to the model threshold (user given parameter). More...
 
double getDistanceThreshold () const
 Get the distance to the model threshold. More...
 
void setMaxIterations (int max_iterations)
 Set the maximum number of iterations before giving up. More...
 
int getMaxIterations () const
 Get maximum number of iterations before giving up. More...
 
void setProbability (double probability)
 Set the probability of choosing at least one sample free from outliers. More...
 
double getProbability () const
 Get the probability of choosing at least one sample free from outliers. More...
 
void setNumberOfThreads (const int nr_threads=-1)
 Set the number of threads to use or turn off parallelization. More...
 
void setOptimizeCoefficients (bool optimize)
 Set to true if a coefficient refinement is required. More...
 
bool getOptimizeCoefficients () const
 Get the coefficient refinement internal flag. More...
 
void setRadiusLimits (const double &min_radius, const double &max_radius)
 Set the minimum and maximum allowable radius limits for the model (applicable to models that estimate a radius) More...
 
void getRadiusLimits (double &min_radius, double &max_radius)
 Get the minimum and maximum allowable radius limits for the model as set by the user. More...
 
void setSamplesMaxDist (const double &radius, SearchPtr search)
 Set the maximum distance allowed when drawing random samples. More...
 
void getSamplesMaxDist (double &radius)
 Get maximum distance allowed when drawing random samples. More...
 
void setAxis (const Eigen::Vector3f &ax)
 Set the axis along which we need to search for a model perpendicular to. More...
 
Eigen::Vector3f getAxis () const
 Get the axis along which we need to search for a model perpendicular to. More...
 
void setEpsAngle (double ea)
 Set the angle epsilon (delta) threshold. More...
 
double getEpsAngle () const
 Get the epsilon (delta) model angle threshold in radians. More...
 
virtual void segment (PointIndices &inliers, ModelCoefficients &model_coefficients)
 Base method for segmentation of a model in a PointCloud given by <setInputCloud (), setIndices ()> 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 PointToperator[] (std::size_t pos) const
 Override PointCloud operator[] to shorten code. More...
 

Protected Member Functions

virtual bool initSACModel (const int model_type)
 Initialize the Sample Consensus model and set its parameters. More...
 
virtual void initSAC (const int method_type)
 Initialize the Sample Consensus method and set its parameters. More...
 
virtual std::string getClassName () const
 Class get name method. 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

SampleConsensusModelPtr model_
 The model that needs to be segmented. More...
 
SampleConsensusPtr sac_
 The sample consensus segmentation method. More...
 
int model_type_
 The type of model to use (user given parameter). More...
 
int method_type_
 The type of sample consensus method to use (user given parameter). More...
 
double threshold_
 Distance to the model threshold (user given parameter). More...
 
bool optimize_coefficients_
 Set to true if a coefficient refinement is required. More...
 
double radius_min_
 The minimum and maximum radius limits for the model. More...
 
double radius_max_
 
double samples_radius_
 The maximum distance of subsequent samples from the first (radius search) More...
 
SearchPtr samples_radius_search_
 The search object for picking subsequent samples using radius search. More...
 
double eps_angle_
 The maximum allowed difference between the model normal and the given axis. More...
 
Eigen::Vector3f axis_
 The axis along which we need to search for a model perpendicular to. More...
 
int max_iterations_
 Maximum number of iterations before giving up (user given parameter). More...
 
int threads_
 The number of threads the scheduler should use, or a negative number if no parallelization is wanted. More...
 
double probability_
 Desired probability of choosing at least one sample free from outliers (user given parameter). More...
 
bool random_
 Set to true if we need a random seed. 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...
 

Detailed Description

template<typename PointT>
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.

Author
Radu Bogdan Rusu

Definition at line 64 of file sac_segmentation.h.

Member Typedef Documentation

◆ PointCloud

template<typename PointT >
using pcl::SACSegmentation< PointT >::PointCloud = pcl::PointCloud<PointT>

Definition at line 73 of file sac_segmentation.h.

◆ PointCloudConstPtr

template<typename PointT >
using pcl::SACSegmentation< PointT >::PointCloudConstPtr = typename PointCloud::ConstPtr

Definition at line 75 of file sac_segmentation.h.

◆ PointCloudPtr

template<typename PointT >
using pcl::SACSegmentation< PointT >::PointCloudPtr = typename PointCloud::Ptr

Definition at line 74 of file sac_segmentation.h.

◆ SampleConsensusModelPtr

template<typename PointT >
using pcl::SACSegmentation< PointT >::SampleConsensusModelPtr = typename SampleConsensusModel<PointT>::Ptr

Definition at line 79 of file sac_segmentation.h.

◆ SampleConsensusPtr

template<typename PointT >
using pcl::SACSegmentation< PointT >::SampleConsensusPtr = typename SampleConsensus<PointT>::Ptr

Definition at line 78 of file sac_segmentation.h.

◆ SearchPtr

template<typename PointT >
using pcl::SACSegmentation< PointT >::SearchPtr = typename pcl::search::Search<PointT>::Ptr

Definition at line 76 of file sac_segmentation.h.

Constructor & Destructor Documentation

◆ SACSegmentation()

template<typename PointT >
pcl::SACSegmentation< PointT >::SACSegmentation ( bool  random = false)
inline

Empty constructor.

Parameters
[in]randomif true set the random seed to the current time, else set to 12345 (default: false)

Definition at line 84 of file sac_segmentation.h.

◆ ~SACSegmentation()

template<typename PointT >
pcl::SACSegmentation< PointT >::~SACSegmentation ( )
inline

Empty destructor.

Definition at line 105 of file sac_segmentation.h.

Member Function Documentation

◆ getAxis()

template<typename PointT >
Eigen::Vector3f pcl::SACSegmentation< PointT >::getAxis ( ) const
inline

Get the axis along which we need to search for a model perpendicular to.

Definition at line 234 of file sac_segmentation.h.

References pcl::SACSegmentation< PointT >::axis_.

◆ getClassName()

template<typename PointT >
virtual std::string pcl::SACSegmentation< PointT >::getClassName ( ) const
inlineprotectedvirtual

Class get name method.

Reimplemented in pcl::SACSegmentationFromNormals< PointT, PointNT >.

Definition at line 313 of file sac_segmentation.h.

◆ getDistanceThreshold()

template<typename PointT >
double pcl::SACSegmentation< PointT >::getDistanceThreshold ( ) const
inline

Get the distance to the model threshold.

Definition at line 143 of file sac_segmentation.h.

References pcl::SACSegmentation< PointT >::threshold_.

◆ getEpsAngle()

template<typename PointT >
double pcl::SACSegmentation< PointT >::getEpsAngle ( ) const
inline

Get the epsilon (delta) model angle threshold in radians.

Definition at line 244 of file sac_segmentation.h.

References pcl::SACSegmentation< PointT >::eps_angle_.

◆ getMaxIterations()

template<typename PointT >
int pcl::SACSegmentation< PointT >::getMaxIterations ( ) const
inline

Get maximum number of iterations before giving up.

Definition at line 153 of file sac_segmentation.h.

References pcl::SACSegmentation< PointT >::max_iterations_.

◆ getMethod()

template<typename PointT >
SampleConsensusPtr pcl::SACSegmentation< PointT >::getMethod ( ) const
inline

Get a pointer to the SAC method used.

Definition at line 119 of file sac_segmentation.h.

References pcl::SACSegmentation< PointT >::sac_.

◆ getMethodType()

template<typename PointT >
int pcl::SACSegmentation< PointT >::getMethodType ( ) const
inline

Get the type of sample consensus method used.

Definition at line 133 of file sac_segmentation.h.

References pcl::SACSegmentation< PointT >::method_type_.

◆ getModel()

template<typename PointT >
SampleConsensusModelPtr pcl::SACSegmentation< PointT >::getModel ( ) const
inline

Get a pointer to the SAC model used.

Definition at line 123 of file sac_segmentation.h.

References pcl::SACSegmentation< PointT >::model_.

◆ getModelType()

template<typename PointT >
int pcl::SACSegmentation< PointT >::getModelType ( ) const
inline

Get the type of SAC model used.

Definition at line 115 of file sac_segmentation.h.

References pcl::SACSegmentation< PointT >::model_type_.

◆ getOptimizeCoefficients()

template<typename PointT >
bool pcl::SACSegmentation< PointT >::getOptimizeCoefficients ( ) const
inline

Get the coefficient refinement internal flag.

Definition at line 180 of file sac_segmentation.h.

References pcl::SACSegmentation< PointT >::optimize_coefficients_.

◆ getProbability()

template<typename PointT >
double pcl::SACSegmentation< PointT >::getProbability ( ) const
inline

Get the probability of choosing at least one sample free from outliers.

Definition at line 163 of file sac_segmentation.h.

References pcl::SACSegmentation< PointT >::probability_.

◆ getRadiusLimits()

template<typename PointT >
void pcl::SACSegmentation< PointT >::getRadiusLimits ( double &  min_radius,
double &  max_radius 
)
inline

Get the minimum and maximum allowable radius limits for the model as set by the user.

Parameters
[out]min_radiusthe resultant minimum radius model
[out]max_radiusthe resultant maximum radius model

Definition at line 199 of file sac_segmentation.h.

References pcl::SACSegmentation< PointT >::radius_max_, and pcl::SACSegmentation< PointT >::radius_min_.

◆ getSamplesMaxDist()

template<typename PointT >
void pcl::SACSegmentation< PointT >::getSamplesMaxDist ( double &  radius)
inline

Get maximum distance allowed when drawing random samples.

Parameters
[out]radiusthe maximum distance (L2 norm)

Definition at line 221 of file sac_segmentation.h.

References pcl::SACSegmentation< PointT >::samples_radius_.

◆ initSAC()

template<typename PointT >
void pcl::SACSegmentation< PointT >::initSAC ( const int  method_type)
protectedvirtual

Initialize the Sample Consensus method and set its parameters.

Parameters
[in]method_typethe type of SAC method to be used

Definition at line 272 of file sac_segmentation.hpp.

◆ initSACModel()

template<typename PointT >
bool pcl::SACSegmentation< PointT >::initSACModel ( const int  model_type)
protectedvirtual

◆ segment()

template<typename PointT >
void pcl::SACSegmentation< PointT >::segment ( PointIndices inliers,
ModelCoefficients model_coefficients 
)
virtual

Base method for segmentation of a model in a PointCloud given by <setInputCloud (), setIndices ()>

Parameters
[out]inliersthe resultant point indices that support the model found (inliers)
[out]model_coefficientsthe resultant model coefficients

Definition at line 77 of file sac_segmentation.hpp.

References pcl::ModelCoefficients::header, pcl::PointIndices::header, pcl::PointIndices::indices, and pcl::ModelCoefficients::values.

◆ setAxis()

template<typename PointT >
void pcl::SACSegmentation< PointT >::setAxis ( const Eigen::Vector3f &  ax)
inline

Set the axis along which we need to search for a model perpendicular to.

Parameters
[in]axthe axis along which we need to search for a model perpendicular to

Definition at line 230 of file sac_segmentation.h.

References pcl::SACSegmentation< PointT >::axis_.

◆ setDistanceThreshold()

template<typename PointT >
void pcl::SACSegmentation< PointT >::setDistanceThreshold ( double  threshold)
inline

Distance to the model threshold (user given parameter).

Parameters
[in]thresholdthe distance threshold to use

Definition at line 139 of file sac_segmentation.h.

References pcl::SACSegmentation< PointT >::threshold_.

◆ setEpsAngle()

template<typename PointT >
void pcl::SACSegmentation< PointT >::setEpsAngle ( double  ea)
inline

Set the angle epsilon (delta) threshold.

Parameters
[in]eathe maximum allowed difference between the model normal and the given axis in radians.

Definition at line 240 of file sac_segmentation.h.

References pcl::SACSegmentation< PointT >::eps_angle_.

◆ setMaxIterations()

template<typename PointT >
void pcl::SACSegmentation< PointT >::setMaxIterations ( int  max_iterations)
inline

Set the maximum number of iterations before giving up.

Parameters
[in]max_iterationsthe maximum number of iterations the sample consensus method will run

Definition at line 149 of file sac_segmentation.h.

References pcl::SACSegmentation< PointT >::max_iterations_.

◆ setMethodType()

template<typename PointT >
void pcl::SACSegmentation< PointT >::setMethodType ( int  method)
inline

The type of sample consensus method to use (user given parameter).

Parameters
[in]methodthe method type (check method_types.h)

Definition at line 129 of file sac_segmentation.h.

References pcl::SACSegmentation< PointT >::method_type_.

◆ setModelType()

template<typename PointT >
void pcl::SACSegmentation< PointT >::setModelType ( int  model)
inline

The type of model to use (user given parameter).

Parameters
[in]modelthe model type (check model_types.h)

Definition at line 111 of file sac_segmentation.h.

References pcl::SACSegmentation< PointT >::model_type_.

◆ setNumberOfThreads()

template<typename PointT >
void pcl::SACSegmentation< PointT >::setNumberOfThreads ( const int  nr_threads = -1)
inline

Set the number of threads to use or turn off parallelization.

Parameters
[in]nr_threadsthe number of hardware threads to use (0 sets the value automatically, a negative number turns parallelization off)
Note
Not all SAC methods have a parallel implementation. Some will ignore this setting.

Definition at line 170 of file sac_segmentation.h.

References pcl::SACSegmentation< PointT >::threads_.

◆ setOptimizeCoefficients()

template<typename PointT >
void pcl::SACSegmentation< PointT >::setOptimizeCoefficients ( bool  optimize)
inline

Set to true if a coefficient refinement is required.

Parameters
[in]optimizetrue for enabling model coefficient refinement, false otherwise

Definition at line 176 of file sac_segmentation.h.

References pcl::SACSegmentation< PointT >::optimize_coefficients_.

◆ setProbability()

template<typename PointT >
void pcl::SACSegmentation< PointT >::setProbability ( double  probability)
inline

Set the probability of choosing at least one sample free from outliers.

Parameters
[in]probabilitythe model fitting probability

Definition at line 159 of file sac_segmentation.h.

References pcl::SACSegmentation< PointT >::probability_.

◆ setRadiusLimits()

template<typename PointT >
void pcl::SACSegmentation< PointT >::setRadiusLimits ( const double &  min_radius,
const double &  max_radius 
)
inline

Set the minimum and maximum allowable radius limits for the model (applicable to models that estimate a radius)

Parameters
[in]min_radiusthe minimum radius model
[in]max_radiusthe maximum radius model

Definition at line 188 of file sac_segmentation.h.

References pcl::SACSegmentation< PointT >::radius_max_, and pcl::SACSegmentation< PointT >::radius_min_.

◆ setSamplesMaxDist()

template<typename PointT >
void pcl::SACSegmentation< PointT >::setSamplesMaxDist ( const double &  radius,
SearchPtr  search 
)
inline

Set the maximum distance allowed when drawing random samples.

Parameters
[in]radiusthe maximum distance (L2 norm)
search

Definition at line 210 of file sac_segmentation.h.

References pcl::SACSegmentation< PointT >::samples_radius_, and pcl::SACSegmentation< PointT >::samples_radius_search_.

Member Data Documentation

◆ axis_

template<typename PointT >
Eigen::Vector3f pcl::SACSegmentation< PointT >::axis_
protected

The axis along which we need to search for a model perpendicular to.

Definition at line 297 of file sac_segmentation.h.

Referenced by pcl::SACSegmentation< PointT >::getAxis(), and pcl::SACSegmentation< PointT >::setAxis().

◆ eps_angle_

template<typename PointT >
double pcl::SACSegmentation< PointT >::eps_angle_
protected

The maximum allowed difference between the model normal and the given axis.

Definition at line 294 of file sac_segmentation.h.

Referenced by pcl::SACSegmentation< PointT >::getEpsAngle(), and pcl::SACSegmentation< PointT >::setEpsAngle().

◆ max_iterations_

template<typename PointT >
int pcl::SACSegmentation< PointT >::max_iterations_
protected

Maximum number of iterations before giving up (user given parameter).

Definition at line 300 of file sac_segmentation.h.

Referenced by pcl::SACSegmentation< PointT >::getMaxIterations(), and pcl::SACSegmentation< PointT >::setMaxIterations().

◆ method_type_

template<typename PointT >
int pcl::SACSegmentation< PointT >::method_type_
protected

The type of sample consensus method to use (user given parameter).

Definition at line 276 of file sac_segmentation.h.

Referenced by pcl::SACSegmentation< PointT >::getMethodType(), and pcl::SACSegmentation< PointT >::setMethodType().

◆ model_

template<typename PointT >
SampleConsensusModelPtr pcl::SACSegmentation< PointT >::model_
protected

The model that needs to be segmented.

Definition at line 267 of file sac_segmentation.h.

Referenced by pcl::SACSegmentation< PointT >::getModel().

◆ model_type_

template<typename PointT >
int pcl::SACSegmentation< PointT >::model_type_
protected

The type of model to use (user given parameter).

Definition at line 273 of file sac_segmentation.h.

Referenced by pcl::SACSegmentation< PointT >::getModelType(), and pcl::SACSegmentation< PointT >::setModelType().

◆ optimize_coefficients_

template<typename PointT >
bool pcl::SACSegmentation< PointT >::optimize_coefficients_
protected

Set to true if a coefficient refinement is required.

Definition at line 282 of file sac_segmentation.h.

Referenced by pcl::SACSegmentation< PointT >::getOptimizeCoefficients(), and pcl::SACSegmentation< PointT >::setOptimizeCoefficients().

◆ probability_

template<typename PointT >
double pcl::SACSegmentation< PointT >::probability_
protected

Desired probability of choosing at least one sample free from outliers (user given parameter).

Definition at line 306 of file sac_segmentation.h.

Referenced by pcl::SACSegmentation< PointT >::getProbability(), and pcl::SACSegmentation< PointT >::setProbability().

◆ radius_max_

template<typename PointT >
double pcl::SACSegmentation< PointT >::radius_max_
protected

◆ radius_min_

template<typename PointT >
double pcl::SACSegmentation< PointT >::radius_min_
protected

The minimum and maximum radius limits for the model.

Applicable to all models that estimate a radius.

Definition at line 285 of file sac_segmentation.h.

Referenced by pcl::SACSegmentation< PointT >::getRadiusLimits(), and pcl::SACSegmentation< PointT >::setRadiusLimits().

◆ random_

template<typename PointT >
bool pcl::SACSegmentation< PointT >::random_
protected

Set to true if we need a random seed.

Definition at line 309 of file sac_segmentation.h.

◆ sac_

template<typename PointT >
SampleConsensusPtr pcl::SACSegmentation< PointT >::sac_
protected

The sample consensus segmentation method.

Definition at line 270 of file sac_segmentation.h.

Referenced by pcl::SACSegmentation< PointT >::getMethod().

◆ samples_radius_

template<typename PointT >
double pcl::SACSegmentation< PointT >::samples_radius_
protected

The maximum distance of subsequent samples from the first (radius search)

Definition at line 288 of file sac_segmentation.h.

Referenced by pcl::SACSegmentation< PointT >::getSamplesMaxDist(), and pcl::SACSegmentation< PointT >::setSamplesMaxDist().

◆ samples_radius_search_

template<typename PointT >
SearchPtr pcl::SACSegmentation< PointT >::samples_radius_search_
protected

The search object for picking subsequent samples using radius search.

Definition at line 291 of file sac_segmentation.h.

Referenced by pcl::SACSegmentation< PointT >::setSamplesMaxDist().

◆ threads_

template<typename PointT >
int pcl::SACSegmentation< PointT >::threads_
protected

The number of threads the scheduler should use, or a negative number if no parallelization is wanted.

Definition at line 303 of file sac_segmentation.h.

Referenced by pcl::SACSegmentation< PointT >::setNumberOfThreads().

◆ threshold_

template<typename PointT >
double pcl::SACSegmentation< PointT >::threshold_
protected

Distance to the model threshold (user given parameter).

Definition at line 279 of file sac_segmentation.h.

Referenced by pcl::SACSegmentation< PointT >::getDistanceThreshold(), and pcl::SACSegmentation< PointT >::setDistanceThreshold().


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