Point Cloud Library (PCL)
1.14.1-dev
|
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>
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 () override=default | |
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... | |
PointCloudConstPtr const | 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... | |
IndicesConstPtr const | 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 | |
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_ {nullptr} |
The model that needs to be segmented. More... | |
SampleConsensusPtr | sac_ {nullptr} |
The sample consensus segmentation method. More... | |
int | model_type_ {-1} |
The type of model to use (user given parameter). More... | |
int | method_type_ {0} |
The type of sample consensus method to use (user given parameter). More... | |
double | threshold_ {0.0} |
Distance to the model threshold (user given parameter). More... | |
bool | optimize_coefficients_ {true} |
Set to true if a coefficient refinement is required. More... | |
double | radius_min_ {-std::numeric_limits<double>::max()} |
The minimum and maximum radius limits for the model. More... | |
double | radius_max_ {std::numeric_limits<double>::max()} |
double | samples_radius_ {0.0} |
The maximum distance of subsequent samples from the first (radius search) More... | |
SearchPtr | samples_radius_search_ {nullptr} |
The search object for picking subsequent samples using radius search. More... | |
double | eps_angle_ {0.0} |
The maximum allowed difference between the model normal and the given axis. More... | |
Eigen::Vector3f | axis_ {Eigen::Vector3f::Zero()} |
The axis along which we need to search for a model perpendicular to. More... | |
int | max_iterations_ {50} |
Maximum number of iterations before giving up (user given parameter). More... | |
int | threads_ {-1} |
The number of threads the scheduler should use, or a negative number if no parallelization is wanted. More... | |
double | probability_ {0.99} |
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... | |
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.
Definition at line 64 of file sac_segmentation.h.
using pcl::SACSegmentation< PointT >::PointCloud = pcl::PointCloud<PointT> |
Definition at line 73 of file sac_segmentation.h.
using pcl::SACSegmentation< PointT >::PointCloudConstPtr = typename PointCloud::ConstPtr |
Definition at line 75 of file sac_segmentation.h.
using pcl::SACSegmentation< PointT >::PointCloudPtr = typename PointCloud::Ptr |
Definition at line 74 of file sac_segmentation.h.
using pcl::SACSegmentation< PointT >::SampleConsensusModelPtr = typename SampleConsensusModel<PointT>::Ptr |
Definition at line 79 of file sac_segmentation.h.
using pcl::SACSegmentation< PointT >::SampleConsensusPtr = typename SampleConsensus<PointT>::Ptr |
Definition at line 78 of file sac_segmentation.h.
using pcl::SACSegmentation< PointT >::SearchPtr = typename pcl::search::Search<PointT>::Ptr |
Definition at line 76 of file sac_segmentation.h.
|
inline |
Empty constructor.
[in] | random | if true set the random seed to the current time, else set to 12345 (default: false) |
Definition at line 84 of file sac_segmentation.h.
|
overridedefault |
Empty destructor.
|
inline |
Get the axis along which we need to search for a model perpendicular to.
Definition at line 218 of file sac_segmentation.h.
References pcl::SACSegmentation< PointT >::axis_.
|
inlineprotectedvirtual |
Class get name method.
Reimplemented in pcl::SACSegmentationFromNormals< PointT, PointNT >.
Definition at line 297 of file sac_segmentation.h.
|
inline |
Get the distance to the model threshold.
Definition at line 127 of file sac_segmentation.h.
References pcl::SACSegmentation< PointT >::threshold_.
|
inline |
Get the epsilon (delta) model angle threshold in radians.
Definition at line 228 of file sac_segmentation.h.
References pcl::SACSegmentation< PointT >::eps_angle_.
|
inline |
Get maximum number of iterations before giving up.
Definition at line 137 of file sac_segmentation.h.
References pcl::SACSegmentation< PointT >::max_iterations_.
|
inline |
Get a pointer to the SAC method used.
Definition at line 103 of file sac_segmentation.h.
References pcl::SACSegmentation< PointT >::sac_.
|
inline |
Get the type of sample consensus method used.
Definition at line 117 of file sac_segmentation.h.
References pcl::SACSegmentation< PointT >::method_type_.
|
inline |
Get a pointer to the SAC model used.
Definition at line 107 of file sac_segmentation.h.
References pcl::SACSegmentation< PointT >::model_.
|
inline |
Get the type of SAC model used.
Definition at line 99 of file sac_segmentation.h.
References pcl::SACSegmentation< PointT >::model_type_.
|
inline |
Get the coefficient refinement internal flag.
Definition at line 164 of file sac_segmentation.h.
References pcl::SACSegmentation< PointT >::optimize_coefficients_.
|
inline |
Get the probability of choosing at least one sample free from outliers.
Definition at line 147 of file sac_segmentation.h.
References pcl::SACSegmentation< PointT >::probability_.
|
inline |
Get the minimum and maximum allowable radius limits for the model as set by the user.
[out] | min_radius | the resultant minimum radius model |
[out] | max_radius | the resultant maximum radius model |
Definition at line 183 of file sac_segmentation.h.
References pcl::SACSegmentation< PointT >::radius_max_, and pcl::SACSegmentation< PointT >::radius_min_.
|
inline |
Get maximum distance allowed when drawing random samples.
[out] | radius | the maximum distance (L2 norm) |
Definition at line 205 of file sac_segmentation.h.
References pcl::SACSegmentation< PointT >::samples_radius_.
|
protectedvirtual |
Initialize the Sample Consensus method and set its parameters.
[in] | method_type | the type of SAC method to be used |
Definition at line 298 of file sac_segmentation.hpp.
References pcl::SAC_LMEDS, pcl::SAC_MLESAC, pcl::SAC_MSAC, pcl::SAC_PROSAC, pcl::SAC_RANSAC, pcl::SAC_RMSAC, and pcl::SAC_RRANSAC.
|
protectedvirtual |
Initialize the Sample Consensus model and set its parameters.
[in] | model_type | the type of SAC model that is to be used |
Reimplemented in pcl::SACSegmentationFromNormals< PointT, PointNT >.
Definition at line 138 of file sac_segmentation.hpp.
References pcl::SampleConsensusModelParallelLine< PointT >::getAxis(), pcl::SampleConsensusModelParallelPlane< PointT >::getAxis(), pcl::SampleConsensusModelPerpendicularPlane< PointT >::getAxis(), pcl::SampleConsensusModelParallelLine< PointT >::getEpsAngle(), pcl::SampleConsensusModelParallelPlane< PointT >::getEpsAngle(), pcl::SampleConsensusModelPerpendicularPlane< PointT >::getEpsAngle(), pcl::SampleConsensusModel< PointT >::getRadiusLimits(), M_PI, pcl::SACMODEL_CIRCLE2D, pcl::SACMODEL_CIRCLE3D, pcl::SACMODEL_CONE, pcl::SACMODEL_CYLINDER, pcl::SACMODEL_ELLIPSE3D, pcl::SACMODEL_LINE, pcl::SACMODEL_NORMAL_PARALLEL_PLANE, pcl::SACMODEL_NORMAL_PLANE, pcl::SACMODEL_NORMAL_SPHERE, pcl::SACMODEL_PARALLEL_LINE, pcl::SACMODEL_PARALLEL_PLANE, pcl::SACMODEL_PERPENDICULAR_PLANE, pcl::SACMODEL_PLANE, pcl::SACMODEL_SPHERE, pcl::SACMODEL_STICK, pcl::SampleConsensusModelParallelLine< PointT >::setAxis(), pcl::SampleConsensusModelParallelPlane< PointT >::setAxis(), pcl::SampleConsensusModelPerpendicularPlane< PointT >::setAxis(), pcl::SampleConsensusModelParallelLine< PointT >::setEpsAngle(), pcl::SampleConsensusModelParallelPlane< PointT >::setEpsAngle(), pcl::SampleConsensusModelPerpendicularPlane< PointT >::setEpsAngle(), and pcl::SampleConsensusModel< PointT >::setRadiusLimits().
|
virtual |
Base method for segmentation of a model in a PointCloud given by <setInputCloud (), setIndices ()>
[out] | inliers | the resultant point indices that support the model found (inliers) |
[out] | model_coefficients | the resultant model coefficients |
Definition at line 80 of file sac_segmentation.hpp.
References pcl::ModelCoefficients::header, pcl::PointIndices::header, pcl::PointIndices::indices, and pcl::ModelCoefficients::values.
|
inline |
Set the axis along which we need to search for a model perpendicular to.
[in] | ax | the axis along which we need to search for a model perpendicular to |
Definition at line 214 of file sac_segmentation.h.
References pcl::SACSegmentation< PointT >::axis_.
|
inline |
Distance to the model threshold (user given parameter).
[in] | threshold | the distance threshold to use |
Definition at line 123 of file sac_segmentation.h.
References pcl::SACSegmentation< PointT >::threshold_.
|
inline |
Set the angle epsilon (delta) threshold.
[in] | ea | the maximum allowed difference between the model normal and the given axis in radians. |
Definition at line 224 of file sac_segmentation.h.
References pcl::SACSegmentation< PointT >::eps_angle_.
|
inline |
Set the maximum number of iterations before giving up.
[in] | max_iterations | the maximum number of iterations the sample consensus method will run |
Definition at line 133 of file sac_segmentation.h.
References pcl::SACSegmentation< PointT >::max_iterations_.
|
inline |
The type of sample consensus method to use (user given parameter).
[in] | method | the method type (check method_types.h) |
Definition at line 113 of file sac_segmentation.h.
References pcl::SACSegmentation< PointT >::method_type_.
|
inline |
The type of model to use (user given parameter).
[in] | model | the model type (check model_types.h) |
Definition at line 95 of file sac_segmentation.h.
References pcl::SACSegmentation< PointT >::model_type_.
|
inline |
Set the number of threads to use or turn off parallelization.
[in] | nr_threads | the number of hardware threads to use (0 sets the value automatically, a negative number turns parallelization off) |
Definition at line 154 of file sac_segmentation.h.
References pcl::SACSegmentation< PointT >::threads_.
|
inline |
Set to true if a coefficient refinement is required.
[in] | optimize | true for enabling model coefficient refinement, false otherwise |
Definition at line 160 of file sac_segmentation.h.
References pcl::SACSegmentation< PointT >::optimize_coefficients_.
|
inline |
Set the probability of choosing at least one sample free from outliers.
[in] | probability | the model fitting probability |
Definition at line 143 of file sac_segmentation.h.
References pcl::SACSegmentation< PointT >::probability_.
|
inline |
Set the minimum and maximum allowable radius limits for the model (applicable to models that estimate a radius)
[in] | min_radius | the minimum radius model |
[in] | max_radius | the maximum radius model |
Definition at line 172 of file sac_segmentation.h.
References pcl::SACSegmentation< PointT >::radius_max_, and pcl::SACSegmentation< PointT >::radius_min_.
|
inline |
Set the maximum distance allowed when drawing random samples.
[in] | radius | the maximum distance (L2 norm) |
search |
Definition at line 194 of file sac_segmentation.h.
References pcl::SACSegmentation< PointT >::samples_radius_, and pcl::SACSegmentation< PointT >::samples_radius_search_.
|
protected |
The axis along which we need to search for a model perpendicular to.
Definition at line 281 of file sac_segmentation.h.
Referenced by pcl::SACSegmentation< PointT >::getAxis(), and pcl::SACSegmentation< PointT >::setAxis().
|
protected |
The maximum allowed difference between the model normal and the given axis.
Definition at line 278 of file sac_segmentation.h.
Referenced by pcl::SACSegmentation< PointT >::getEpsAngle(), and pcl::SACSegmentation< PointT >::setEpsAngle().
|
protected |
Maximum number of iterations before giving up (user given parameter).
Definition at line 284 of file sac_segmentation.h.
Referenced by pcl::SACSegmentation< PointT >::getMaxIterations(), and pcl::SACSegmentation< PointT >::setMaxIterations().
|
protected |
The type of sample consensus method to use (user given parameter).
Definition at line 260 of file sac_segmentation.h.
Referenced by pcl::SACSegmentation< PointT >::getMethodType(), and pcl::SACSegmentation< PointT >::setMethodType().
|
protected |
The model that needs to be segmented.
Definition at line 251 of file sac_segmentation.h.
Referenced by pcl::SACSegmentation< PointT >::getModel().
|
protected |
The type of model to use (user given parameter).
Definition at line 257 of file sac_segmentation.h.
Referenced by pcl::SACSegmentation< PointT >::getModelType(), and pcl::SACSegmentation< PointT >::setModelType().
|
protected |
Set to true if a coefficient refinement is required.
Definition at line 266 of file sac_segmentation.h.
Referenced by pcl::SACSegmentation< PointT >::getOptimizeCoefficients(), and pcl::SACSegmentation< PointT >::setOptimizeCoefficients().
|
protected |
Desired probability of choosing at least one sample free from outliers (user given parameter).
Definition at line 290 of file sac_segmentation.h.
Referenced by pcl::SACSegmentation< PointT >::getProbability(), and pcl::SACSegmentation< PointT >::setProbability().
|
protected |
Definition at line 269 of file sac_segmentation.h.
Referenced by pcl::SACSegmentation< PointT >::getRadiusLimits(), and pcl::SACSegmentation< PointT >::setRadiusLimits().
|
protected |
The minimum and maximum radius limits for the model.
Applicable to all models that estimate a radius.
Definition at line 269 of file sac_segmentation.h.
Referenced by pcl::SACSegmentation< PointT >::getRadiusLimits(), and pcl::SACSegmentation< PointT >::setRadiusLimits().
|
protected |
Set to true if we need a random seed.
Definition at line 293 of file sac_segmentation.h.
|
protected |
The sample consensus segmentation method.
Definition at line 254 of file sac_segmentation.h.
Referenced by pcl::SACSegmentation< PointT >::getMethod().
|
protected |
The maximum distance of subsequent samples from the first (radius search)
Definition at line 272 of file sac_segmentation.h.
Referenced by pcl::SACSegmentation< PointT >::getSamplesMaxDist(), and pcl::SACSegmentation< PointT >::setSamplesMaxDist().
|
protected |
The search object for picking subsequent samples using radius search.
Definition at line 275 of file sac_segmentation.h.
Referenced by pcl::SACSegmentation< PointT >::setSamplesMaxDist().
|
protected |
The number of threads the scheduler should use, or a negative number if no parallelization is wanted.
Definition at line 287 of file sac_segmentation.h.
Referenced by pcl::SACSegmentation< PointT >::setNumberOfThreads().
|
protected |
Distance to the model threshold (user given parameter).
Definition at line 263 of file sac_segmentation.h.
Referenced by pcl::SACSegmentation< PointT >::getDistanceThreshold(), and pcl::SACSegmentation< PointT >::setDistanceThreshold().