pcl::SampleConsensusModel< PointT > Class Template Referenceabstract
Module sample_consensus

SampleConsensusModel represents the base model class. More...

`#include <pcl/sample_consensus/sac_model.h>`

Inheritance diagram for pcl::SampleConsensusModel< PointT >:

## Public Types

typedef pcl::PointCloud< PointT > | PointCloud
typedef pcl::PointCloud< PointT >::ConstPtr | PointCloudConstPtr
typedef pcl::PointCloud< PointT >::Ptr | PointCloudPtr
typedef pcl::search::Search< PointT >::Ptr | SearchPtr
typedef boost::shared_ptr< SampleConsensusModel > | Ptr
typedef boost::shared_ptr< const SampleConsensusModel > | ConstPtr

## Public Member Functions

| SampleConsensusModel (const PointCloudConstPtr &cloud, bool random=false)
| Constructor for base SampleConsensusModel. More...
| SampleConsensusModel (const PointCloudConstPtr &cloud, const std::vector< int > &indices, bool random=false)
| Constructor for base SampleConsensusModel. More...
virtual | ~SampleConsensusModel ()
| Destructor for base SampleConsensusModel. More...
virtual void | getSamples (int &iterations, std::vector< int > &samples)
| Get a set of random data samples and return them as point indices. More...
virtual bool | computeModelCoefficients (const std::vector< int > &samples, Eigen::VectorXf &model_coefficients)=0
| Check whether the given index samples can form a valid model, compute the model coefficients from these samples and store them in model_coefficients. More...
virtual void | optimizeModelCoefficients (const std::vector< int > &inliers, const Eigen::VectorXf &model_coefficients, Eigen::VectorXf &optimized_coefficients)=0
| Recompute the model coefficients using the given inlier set and return them to the user. More...
virtual void | getDistancesToModel (const Eigen::VectorXf &model_coefficients, std::vector< double > &distances)=0
| Compute all distances from the cloud data to a given model. More...
virtual void | selectWithinDistance (const Eigen::VectorXf &model_coefficients, const double threshold, std::vector< int > &inliers)=0
| Select all the points which respect the given model coefficients as inliers. More...
virtual int | countWithinDistance (const Eigen::VectorXf &model_coefficients, const double threshold)=0
| Count all the points which respect the given model coefficients as inliers. More...
virtual void | projectPoints (const std::vector< int > &inliers, const Eigen::VectorXf &model_coefficients, PointCloud &projected_points, bool copy_data_fields=true)=0
| Create a new point cloud with inliers projected onto the model. More...
virtual bool | doSamplesVerifyModel (const std::set< int > &indices, const Eigen::VectorXf &model_coefficients, const double threshold)=0
| Verify whether a subset of indices verifies a given set of model coefficients. More...
virtual void | setInputCloud (const PointCloudConstPtr &cloud)
| Provide a pointer to the input dataset. More...
PointCloudConstPtr | getInputCloud () const
| Get a pointer to the input point cloud dataset. More...
void | setIndices (const boost::shared_ptr< std::vector< int > > &indices)
| Provide a pointer to the vector of indices that represents the input data. More...
void | setIndices (const std::vector< int > &indices)
| Provide the vector of indices that represents the input data. More...
boost::shared_ptr< std::vector< int > > | getIndices () const
| Get a pointer to the vector of indices used. More...
virtual SacModel | getModelType () const =0
| Return an unique id for each type of model employed. More...
const std::string & | getClassName () const
| Get a string representation of the name of this class. More...
unsigned int | getSampleSize () const
| Return the size of a sample from which the model is computed. More...
unsigned int | getModelSize () const
| Return the number of coefficients in the model. 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...
double | computeVariance (const std::vector< double > &error_sqr_dists)
| Compute the variance of the errors to the model. More...
double | computeVariance ()
| Compute the variance of the errors to the model from the internally estimated vector of distances. More...

## Protected Member Functions

| SampleConsensusModel (bool random=false)
| Empty constructor for base SampleConsensusModel. More...
void | drawIndexSample (std::vector< int > &sample)
| Fills a sample array with random samples from the indices_ vector. More...
void | drawIndexSampleRadius (std::vector< int > &sample)
| Fills a sample array with one random sample from the indices_ vector and other random samples that are closer than samples_radius_. More...
virtual bool | isModelValid (const Eigen::VectorXf &model_coefficients)
| Check whether a model is valid given the user constraints. More...
virtual bool | isSampleGood (const std::vector< int > &samples) const =0
| Check if a sample of indices results in a good sample of points indices. More...
int | rnd ()
| Boost-based random number generator. More...

## Protected Attributes

std::string | model_name_
| The model name. More...
PointCloudConstPtr | input_
| A boost shared pointer to the point cloud data array. More...
boost::shared_ptr< std::vector< int > > | indices_
| A pointer to the vector of point indices to use. 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...
std::vector< int > | shuffled_indices_
| Data containing a shuffled version of the indices. More...
boost::mt19937 | rng_alg_
| Boost-based random number generator algorithm. More...
boost::shared_ptr< boost::uniform_int<> > | rng_dist_
| Boost-based random number generator distribution. More...
boost::shared_ptr< boost::variate_generator< boost::mt19937 &, boost::uniform_int<> > > | rng_gen_
| Boost-based random number generator. More...
std::vector< double > | error_sqr_dists_
| A vector holding the distances to the computed model. More...
unsigned int | sample_size_
| The size of a sample from which the model is computed. More...
unsigned int | model_size_
| The number of coefficients in the model. More...

## Static Protected Attributes

static const unsigned int | max_sample_checks_ = 1000
| The maximum number of samples to try until we get a good one. More...

## Friends

class | ProgressiveSampleConsensus< PointT >

## Detailed Description

### template<typename PointT>
class pcl::SampleConsensusModel< PointT >

SampleConsensusModel represents the base model class.

All sample consensus models must inherit from this class.

Author
  Radu B. Rusu

Definition at line 66 of file sac_model.h.

## Member Typedef Documentation

## ConstPtr

template<typename PointT>

typedef boost::shared_ptr<const SampleConsensusModel> pcl::SampleConsensusModel< PointT >::ConstPtr

Definition at line 75 of file sac_model.h.

## PointCloud

template<typename PointT>

typedef pcl::PointCloud<PointT> pcl::SampleConsensusModel< PointT >::PointCloud

Definition at line 69 of file sac_model.h.

## PointCloudConstPtr

template<typename PointT>

typedef pcl::PointCloud<PointT>::ConstPtr pcl::SampleConsensusModel< PointT >::PointCloudConstPtr

Definition at line 70 of file sac_model.h.

## PointCloudPtr

template<typename PointT>

typedef pcl::PointCloud<PointT>::Ptr pcl::SampleConsensusModel< PointT >::PointCloudPtr

Definition at line 71 of file sac_model.h.

## Ptr

template<typename PointT>

typedef boost::shared_ptr<SampleConsensusModel> pcl::SampleConsensusModel< PointT >::Ptr

Definition at line 74 of file sac_model.h.

## SearchPtr

template<typename PointT>

typedef pcl::search::Search<PointT>::Ptr pcl::SampleConsensusModel< PointT >::SearchPtr

Definition at line 72 of file sac_model.h.

## Constructor & Destructor Documentation

## SampleConsensusModel() [1/3]

template<typename PointT>

pcl::SampleConsensusModel< PointT >::SampleConsensusModel | ( | bool | random = `false` | ) |

inline protected

Empty constructor for base SampleConsensusModel.

Parameters

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

Definition at line 81 of file sac_model.h.

## SampleConsensusModel() [2/3]

template<typename PointT>

pcl::SampleConsensusModel< PointT >::SampleConsensusModel | ( | const PointCloudConstPtr & | cloud,
|  | bool | random = `false`
| ) |  |

inline

Constructor for base SampleConsensusModel.

Parameters

  [in] | cloud | the input point cloud dataset
  [in] | random | if true set the random seed to the current time, else set to 12345 (default: false)

Definition at line 108 of file sac_model.h.

## SampleConsensusModel() [3/3]

template<typename PointT>

pcl::SampleConsensusModel< PointT >::SampleConsensusModel | ( | const PointCloudConstPtr & | cloud,
|  | const std::vector< int > & | indices,
|  | bool | random = `false`
| ) |  |

inline

Constructor for base SampleConsensusModel.

Parameters

  [in] | cloud | the input point cloud dataset
  [in] | indices | a vector of point indices to be used from cloud
  [in] | random | if true set the random seed to the current time, else set to 12345 (default: false)

Definition at line 138 of file sac_model.h.

## ~SampleConsensusModel()

template<typename PointT>

virtual pcl::SampleConsensusModel< PointT >::~SampleConsensusModel | ( |  | ) |

inline virtual

Destructor for base SampleConsensusModel.

Definition at line 170 of file sac_model.h.

## Member Function Documentation

## computeModelCoefficients()

template<typename PointT>

virtual bool pcl::SampleConsensusModel< PointT >::computeModelCoefficients | ( | const std::vector< int > & | samples,
|  | Eigen::VectorXf & | model_coefficients
| ) |  |

pure virtual

Check whether the given index samples can form a valid model, compute the model coefficients from these samples and store them in model_coefficients.

Pure virtual.

Parameters

  [in] | samples | the point indices found as possible good candidates for creating a valid model
  [out] | model_coefficients | the computed model coefficients

Implemented in pcl::SampleConsensusModelCone< PointT, PointNT >, pcl::SampleConsensusModelCone< pcl::PointXYZRGB, PointNT >, pcl::SampleConsensusModelPlane< PointT >, pcl::SampleConsensusModelCylinder< PointT, PointNT >, pcl::SampleConsensusModelCylinder< pcl::PointXYZRGB, PointNT >, pcl::SampleConsensusModelRegistration< PointT >, pcl::SampleConsensusModelCircle3D< PointT >, pcl::SampleConsensusModelSphere< PointT >, pcl::SampleConsensusModelCircle3D< pcl::PointXYZRGB >, pcl::SampleConsensusModelSphere< pcl::PointXYZRGB >, pcl::SampleConsensusModelCircle2D< PointT >, pcl::SampleConsensusModelCircle2D< pcl::PointXYZRGB >, pcl::SampleConsensusModelStick< PointT >, and pcl::SampleConsensusModelLine< PointT >.

Referenced by pcl::SampleConsensusModel< WeightSACPointType >::getSamples().

## computeVariance() [1/2]

template<typename PointT>

double pcl::SampleConsensusModel< PointT >::computeVariance | ( | const std::vector< double > & | error_sqr_dists | ) |

inline

Compute the variance of the errors to the model.

Parameters

  [in] | error_sqr_dists | a vector holding the distances

Definition at line 425 of file sac_model.h.

## computeVariance() [2/2]

template<typename PointT>

double pcl::SampleConsensusModel< PointT >::computeVariance | ( |  | ) |

inline

Compute the variance of the errors to the model from the internally estimated vector of distances.

The model must be computed first (or at least selectWithinDistance must be called).

Definition at line 439 of file sac_model.h.

Referenced by pcl::SampleConsensusModel< WeightSACPointType >::computeVariance().

## countWithinDistance()

template<typename PointT>

virtual int pcl::SampleConsensusModel< PointT >::countWithinDistance | ( | const Eigen::VectorXf & | model_coefficients,
|  | const double | threshold
| ) |  |

pure virtual

Count all the points which respect the given model coefficients as inliers.

Pure virtual.

Parameters

  [in] | model_coefficients | the coefficients of a model that we need to compute distances to
  [in] | threshold | a maximum admissible distance threshold for determining the inliers from the outliers

Returns
  the resultant number of inliers

Implemented in pcl::SampleConsensusModelCone< PointT, PointNT >, pcl::SampleConsensusModelCone< pcl::PointXYZRGB, PointNT >, pcl::SampleConsensusModelPlane< PointT >, pcl::SampleConsensusModelCylinder< PointT, PointNT >, pcl::SampleConsensusModelCylinder< pcl::PointXYZRGB, PointNT >, pcl::SampleConsensusModelRegistration< PointT >, pcl::SampleConsensusModelCircle3D< PointT >, pcl::SampleConsensusModelSphere< PointT >, pcl::SampleConsensusModelCircle3D< pcl::PointXYZRGB >, pcl::SampleConsensusModelSphere< pcl::PointXYZRGB >, pcl::SampleConsensusModelCircle2D< PointT >, pcl::SampleConsensusModelCircle2D< pcl::PointXYZRGB >, pcl::SampleConsensusModelPerpendicularPlane< PointT >, pcl::SampleConsensusModelParallelPlane< PointT >, pcl::SampleConsensusModelParallelLine< PointT >, pcl::SampleConsensusModelStick< PointT >, pcl::SampleConsensusModelNormalPlane< PointT, PointNT >, pcl::SampleConsensusModelLine< PointT >, pcl::SampleConsensusModelNormalSphere< PointT, PointNT >, and pcl::SampleConsensusModelRegistration2D< PointT >.

Referenced by pcl::SampleConsensusModel< WeightSACPointType >::getSamples().

## doSamplesVerifyModel()

template<typename PointT>

virtual bool pcl::SampleConsensusModel< PointT >::doSamplesVerifyModel | ( | const std::set< int > & | indices,
|  | const Eigen::VectorXf & | model_coefficients,
|  | const double | threshold
| ) |  |

pure virtual

Verify whether a subset of indices verifies a given set of model coefficients.

Pure virtual.

Parameters

  [in] | indices | the data indices that need to be tested against the model
  [in] | model_coefficients | the set of model coefficients
  [in] | threshold | a maximum admissible distance threshold for determining the inliers from the outliers

Implemented in pcl::SampleConsensusModelCone< PointT, PointNT >, pcl::SampleConsensusModelCone< pcl::PointXYZRGB, PointNT >, pcl::SampleConsensusModelPlane< PointT >, pcl::SampleConsensusModelCylinder< PointT, PointNT >, pcl::SampleConsensusModelCylinder< pcl::PointXYZRGB, PointNT >, pcl::SampleConsensusModelRegistration< PointT >, pcl::SampleConsensusModelSphere< PointT >, pcl::SampleConsensusModelSphere< pcl::PointXYZRGB >, pcl::SampleConsensusModelCircle3D< PointT >, pcl::SampleConsensusModelCircle3D< pcl::PointXYZRGB >, pcl::SampleConsensusModelCircle2D< PointT >, pcl::SampleConsensusModelCircle2D< pcl::PointXYZRGB >, pcl::SampleConsensusModelStick< PointT >, and pcl::SampleConsensusModelLine< PointT >.

Referenced by pcl::SampleConsensusModel< WeightSACPointType >::getSamples().

## drawIndexSample()

template<typename PointT>

void pcl::SampleConsensusModel< PointT >::drawIndexSample | ( | std::vector< int > & | sample | ) |

inline protected

Fills a sample array with random samples from the indices_ vector.

Parameters

  [out] | sample | the set of indices of target_ to analyze

Definition at line 455 of file sac_model.h.

Referenced by pcl::SampleConsensusModel< WeightSACPointType >::getSamples().

## drawIndexSampleRadius()

template<typename PointT>

void pcl::SampleConsensusModel< PointT >::drawIndexSampleRadius | ( | std::vector< int > & | sample | ) |

inline protected

Fills a sample array with one random sample from the indices_ vector and other random samples that are closer than samples_radius_.

Parameters

  [out] | sample | the set of indices of target_ to analyze

Definition at line 472 of file sac_model.h.

Referenced by pcl::SampleConsensusModel< WeightSACPointType >::getSamples().

## getClassName()

template<typename PointT>

const std::string& pcl::SampleConsensusModel< PointT >::getClassName | ( |  | ) | const

inline

Get a string representation of the name of this class.

Definition at line 353 of file sac_model.h.

Referenced by pcl::SampleConsensusModel< WeightSACPointType >::isModelValid().

## getDistancesToModel()

template<typename PointT>

virtual void pcl::SampleConsensusModel< PointT >::getDistancesToModel | ( | const Eigen::VectorXf & | model_coefficients,
|  | std::vector< double > & | distances
| ) |  |

pure virtual

Compute all distances from the cloud data to a given model.

Pure virtual.

Parameters

  [in] | model_coefficients | the coefficients of a model that we need to compute distances to
  [out] | distances | the resultant estimated distances

Implemented in pcl::SampleConsensusModelCone< PointT, PointNT >, pcl::SampleConsensusModelCone< pcl::PointXYZRGB, PointNT >, pcl::SampleConsensusModelPlane< PointT >, pcl::SampleConsensusModelCylinder< PointT, PointNT >, pcl::SampleConsensusModelCylinder< pcl::PointXYZRGB, PointNT >, pcl::SampleConsensusModelRegistration< PointT >, pcl::SampleConsensusModelPerpendicularPlane< PointT >, pcl::SampleConsensusModelParallelPlane< PointT >, pcl::SampleConsensusModelParallelLine< PointT >, pcl::SampleConsensusModelNormalPlane< PointT, PointNT >, pcl::SampleConsensusModelNormalSphere< PointT, PointNT >, pcl::SampleConsensusModelCircle3D< PointT >, pcl::SampleConsensusModelSphere< PointT >, pcl::SampleConsensusModelCircle3D< pcl::PointXYZRGB >, pcl::SampleConsensusModelSphere< pcl::PointXYZRGB >, pcl::SampleConsensusModelCircle2D< PointT >, pcl::SampleConsensusModelCircle2D< pcl::PointXYZRGB >, pcl::SampleConsensusModelStick< PointT >, pcl::SampleConsensusModelLine< PointT >, and pcl::SampleConsensusModelRegistration2D< PointT >.

Referenced by pcl::SampleConsensusModel< WeightSACPointType >::getSamples().

## getIndices()

template<typename PointT>

boost::shared_ptr<std::vector<int> > pcl::SampleConsensusModel< PointT >::getIndices | ( |  | ) | const

inline

Get a pointer to the vector of indices used.

Definition at line 345 of file sac_model.h.

## getInputCloud()

template<typename PointT>

PointCloudConstPtr pcl::SampleConsensusModel< PointT >::getInputCloud | ( |  | ) | const

inline

Get a pointer to the input point cloud dataset.

Definition at line 321 of file sac_model.h.

## getModelSize()

template<typename PointT>

unsigned int pcl::SampleConsensusModel< PointT >::getModelSize | ( |  | ) | const

inline

Return the number of coefficients in the model.

Definition at line 367 of file sac_model.h.

## getModelType()

template<typename PointT>

virtual SacModel pcl::SampleConsensusModel< PointT >::getModelType | ( |  | ) | const

pure virtual

Return an unique id for each type of model employed.

Implemented in pcl::SampleConsensusModelCone< PointT, PointNT >, pcl::SampleConsensusModelCone< pcl::PointXYZRGB, PointNT >, pcl::SampleConsensusModelPlane< PointT >, pcl::SampleConsensusModelCylinder< PointT, PointNT >, pcl::SampleConsensusModelCylinder< pcl::PointXYZRGB, PointNT >, pcl::SampleConsensusModelRegistration< PointT >, pcl::SampleConsensusModelCircle3D< PointT >, pcl::SampleConsensusModelSphere< PointT >, pcl::SampleConsensusModelCircle3D< pcl::PointXYZRGB >, pcl::SampleConsensusModelSphere< pcl::PointXYZRGB >, pcl::SampleConsensusModelCircle2D< PointT >, pcl::SampleConsensusModelCircle2D< pcl::PointXYZRGB >, pcl::SampleConsensusModelNormalParallelPlane< PointT, PointNT >, pcl::SampleConsensusModelStick< PointT >, pcl::SampleConsensusModelLine< PointT >, pcl::SampleConsensusModelPerpendicularPlane< PointT >, pcl::SampleConsensusModelParallelPlane< PointT >, pcl::SampleConsensusModelParallelLine< PointT >, pcl::SampleConsensusModelNormalPlane< PointT, PointNT >, and pcl::SampleConsensusModelNormalSphere< PointT, PointNT >.

Referenced by pcl::SampleConsensusModel< WeightSACPointType >::getIndices().

## getRadiusLimits()

template<typename PointT>

void pcl::SampleConsensusModel< 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_radius | the resultant minimum radius model
  [out] | max_radius | the resultant maximum radius model

Definition at line 392 of file sac_model.h.

Referenced by pcl::SACSegmentation< PointT >::initSACModel(), and pcl::SACSegmentationFromNormals< PointT, PointNT >::initSACModel().

## getSamples()

template<typename PointT>

virtual void pcl::SampleConsensusModel< PointT >::getSamples | ( | int & | iterations,
|  | std::vector< int > & | samples
| ) |  |

inline virtual

Get a set of random data samples and return them as point indices.

Parameters

  [out] | iterations | the internal number of iterations used by SAC methods
  [out] | samples | the resultant model samples

Definition at line 178 of file sac_model.h.

## getSampleSize()

template<typename PointT>

unsigned int pcl::SampleConsensusModel< PointT >::getSampleSize | ( |  | ) | const

inline

Return the size of a sample from which the model is computed.

Definition at line 360 of file sac_model.h.

Referenced by pcl::SampleConsensusModel< WeightSACPointType >::getSamples().

## getSamplesMaxDist()

template<typename PointT>

void pcl::SampleConsensusModel< PointT >::getSamplesMaxDist | ( | double & | radius | ) |

inline

Get maximum distance allowed when drawing random samples.

Parameters

  [out] | radius | the maximum distance (L2 norm)

Definition at line 414 of file sac_model.h.

## isModelValid()

template<typename PointT>

virtual bool pcl::SampleConsensusModel< PointT >::isModelValid | ( | const Eigen::VectorXf & | model_coefficients | ) |

inline protected virtual

Check whether a model is valid given the user constraints.

Default implementation verifies that the number of coefficients in the supplied model is as expected for this SAC model type. Specific SAC models should extend this function by checking the user constraints (if any).

Parameters

  [in] | model_coefficients | the set of model coefficients

Reimplemented in pcl::SampleConsensusModelCone< PointT, PointNT >, pcl::SampleConsensusModelCylinder< PointT, PointNT >, pcl::SampleConsensusModelCone< pcl::PointXYZRGB, PointNT >, pcl::SampleConsensusModelCylinder< pcl::PointXYZRGB, PointNT >, pcl::SampleConsensusModelCircle3D< PointT >, pcl::SampleConsensusModelSphere< PointT >, pcl::SampleConsensusModelCircle3D< pcl::PointXYZRGB >, pcl::SampleConsensusModelSphere< pcl::PointXYZRGB >, pcl::SampleConsensusModelCircle2D< PointT >, pcl::SampleConsensusModelCircle2D< pcl::PointXYZRGB >, pcl::SampleConsensusModelNormalParallelPlane< PointT, PointNT >, pcl::SampleConsensusModelPerpendicularPlane< PointT >, pcl::SampleConsensusModelParallelPlane< PointT >, pcl::SampleConsensusModelParallelLine< PointT >, and pcl::SampleConsensusModelNormalSphere< PointT, PointNT >.

Definition at line 516 of file sac_model.h.

## isSampleGood()

template<typename PointT>

virtual bool pcl::SampleConsensusModel< PointT >::isSampleGood | ( | const std::vector< int > & | samples | ) | const

protected pure virtual

Check if a sample of indices results in a good sample of points indices.

Pure virtual.

Parameters

  [in] | samples | the resultant index samples

Implemented in pcl::SampleConsensusModelCone< PointT, PointNT >, pcl::SampleConsensusModelCylinder< PointT, PointNT >, pcl::SampleConsensusModelCone< pcl::PointXYZRGB, PointNT >, pcl::SampleConsensusModelCylinder< pcl::PointXYZRGB, PointNT >, pcl::SampleConsensusModelRegistration< PointT >, pcl::SampleConsensusModelSphere< PointT >, pcl::SampleConsensusModelSphere< pcl::PointXYZRGB >, pcl::SampleConsensusModelCircle3D< PointT >, pcl::SampleConsensusModelCircle3D< pcl::PointXYZRGB >, pcl::SampleConsensusModelCircle2D< PointT >, pcl::SampleConsensusModelCircle2D< pcl::PointXYZRGB >, pcl::SampleConsensusModelStick< PointT >, pcl::SampleConsensusModelLine< PointT >, and pcl::SampleConsensusModelRegistration2D< PointT >.

Referenced by pcl::SampleConsensusModel< WeightSACPointType >::getSamples(), and pcl::SampleConsensusModel< WeightSACPointType >::isModelValid().

## optimizeModelCoefficients()

template<typename PointT>

virtual void pcl::SampleConsensusModel< PointT >::optimizeModelCoefficients | ( | const std::vector< int > & | inliers,
|  | const Eigen::VectorXf & | model_coefficients,
|  | Eigen::VectorXf & | optimized_coefficients
| ) |  |

pure virtual

Recompute the model coefficients using the given inlier set and return them to the user.

Pure virtual.

Note
  : these are the coefficients of the model after refinement (e.g., after a least-squares optimization)

Parameters

  [in] | inliers | the data inliers supporting the model
  [in] | model_coefficients | the initial guess for the model coefficients
  [out] | optimized_coefficients | the resultant recomputed coefficients after non-linear optimization

Implemented in pcl::SampleConsensusModelCone< PointT, PointNT >, pcl::SampleConsensusModelCone< pcl::PointXYZRGB, PointNT >, pcl::SampleConsensusModelPlane< PointT >, pcl::SampleConsensusModelCylinder< PointT, PointNT >, pcl::SampleConsensusModelCylinder< pcl::PointXYZRGB, PointNT >, pcl::SampleConsensusModelRegistration< PointT >, pcl::SampleConsensusModelCircle3D< PointT >, pcl::SampleConsensusModelSphere< PointT >, pcl::SampleConsensusModelCircle3D< pcl::PointXYZRGB >, pcl::SampleConsensusModelSphere< pcl::PointXYZRGB >, pcl::SampleConsensusModelCircle2D< PointT >, pcl::SampleConsensusModelCircle2D< pcl::PointXYZRGB >, pcl::SampleConsensusModelStick< PointT >, and pcl::SampleConsensusModelLine< PointT >.

Referenced by pcl::SampleConsensusModel< WeightSACPointType >::getSamples().

## projectPoints()

template<typename PointT>

virtual void pcl::SampleConsensusModel< PointT >::projectPoints | ( | const std::vector< int > & | inliers,
|  | const Eigen::VectorXf & | model_coefficients,
|  | PointCloud & | projected_points,
|  | bool | copy_data_fields = `true`
| ) |  |

pure virtual

Create a new point cloud with inliers projected onto the model.

Pure virtual.

Parameters

  [in] | inliers | the data inliers that we want to project on the model
  [in] | model_coefficients | the coefficients of a model
  [out] | projected_points | the resultant projected points
  [in] | copy_data_fields | set to true (default) if we want the projected_points cloud to be an exact copy of the input dataset minus the point projections on the plane model

Implemented in pcl::SampleConsensusModelCone< PointT, PointNT >, pcl::SampleConsensusModelCone< pcl::PointXYZRGB, PointNT >, pcl::SampleConsensusModelPlane< PointT >, pcl::SampleConsensusModelCylinder< PointT, PointNT >, pcl::SampleConsensusModelCylinder< pcl::PointXYZRGB, PointNT >, pcl::SampleConsensusModelRegistration< PointT >, pcl::SampleConsensusModelSphere< PointT >, pcl::SampleConsensusModelSphere< pcl::PointXYZRGB >, pcl::SampleConsensusModelCircle3D< PointT >, pcl::SampleConsensusModelCircle3D< pcl::PointXYZRGB >, pcl::SampleConsensusModelCircle2D< PointT >, pcl::SampleConsensusModelCircle2D< pcl::PointXYZRGB >, pcl::SampleConsensusModelStick< PointT >, and pcl::SampleConsensusModelLine< PointT >.

Referenced by pcl::SampleConsensusModel< WeightSACPointType >::getSamples().

## rnd()

template<typename PointT>

int pcl::SampleConsensusModel< PointT >::rnd | ( |  | ) |

inline protected

Boost-based random number generator.

Definition at line 579 of file sac_model.h.

Referenced by pcl::SampleConsensusModel< WeightSACPointType >::drawIndexSample(), and pcl::SampleConsensusModel< WeightSACPointType >::drawIndexSampleRadius().

## selectWithinDistance()

template<typename PointT>

virtual void pcl::SampleConsensusModel< PointT >::selectWithinDistance | ( | const Eigen::VectorXf & | model_coefficients,
|  | const double | threshold,
|  | std::vector< int > & | inliers
| ) |  |

pure virtual

Select all the points which respect the given model coefficients as inliers.

Pure virtual.

Parameters

  [in] | model_coefficients | the coefficients of a model that we need to compute distances to
  [in] | threshold | a maximum admissible distance threshold for determining the inliers from the outliers
  [out] | inliers | the resultant model inliers

Implemented in pcl::SampleConsensusModelCone< PointT, PointNT >, pcl::SampleConsensusModelCone< pcl::PointXYZRGB, PointNT >, pcl::SampleConsensusModelPlane< PointT >, pcl::SampleConsensusModelCylinder< PointT, PointNT >, pcl::SampleConsensusModelCylinder< pcl::PointXYZRGB, PointNT >, pcl::SampleConsensusModelRegistration< PointT >, pcl::SampleConsensusModelCircle3D< PointT >, pcl::SampleConsensusModelSphere< PointT >, pcl::SampleConsensusModelCircle3D< pcl::PointXYZRGB >, pcl::SampleConsensusModelSphere< pcl::PointXYZRGB >, pcl::SampleConsensusModelCircle2D< PointT >, pcl::SampleConsensusModelCircle2D< pcl::PointXYZRGB >, pcl::SampleConsensusModelPerpendicularPlane< PointT >, pcl::SampleConsensusModelParallelPlane< PointT >, pcl::SampleConsensusModelParallelLine< PointT >, pcl::SampleConsensusModelStick< PointT >, pcl::SampleConsensusModelNormalPlane< PointT, PointNT >, pcl::SampleConsensusModelLine< PointT >, pcl::SampleConsensusModelNormalSphere< PointT, PointNT >, and pcl::SampleConsensusModelRegistration2D< PointT >.

Referenced by pcl::SampleConsensusModel< WeightSACPointType >::getSamples().

## setIndices() [1/2]

template<typename PointT>

void pcl::SampleConsensusModel< PointT >::setIndices | ( | const boost::shared_ptr< std::vector< int > > & | indices | ) |

inline

Provide a pointer to the vector of indices that represents the input data.

Parameters

  [in] | indices | a pointer to the vector of indices that represents the input data.

Definition at line 327 of file sac_model.h.

Referenced by pcl::registration::FPCSInitialAlignment< PointSource, PointTarget, NormalT, Scalar >::selectBase().

## setIndices() [2/2]

template<typename PointT>

void pcl::SampleConsensusModel< PointT >::setIndices | ( | const std::vector< int > & | indices | ) |

inline

Provide the vector of indices that represents the input data.

Parameters

  [out] | indices | the vector of indices that represents the input data.

Definition at line 337 of file sac_model.h.

## setInputCloud()

template<typename PointT>

virtual void pcl::SampleConsensusModel< PointT >::setInputCloud | ( | const PointCloudConstPtr & | cloud | ) |

inline virtual

Provide a pointer to the input dataset.

Parameters

  [in] | cloud | the const boost shared pointer to a PointCloud message

Reimplemented in pcl::SampleConsensusModelRegistration< PointT >.

Definition at line 304 of file sac_model.h.

Referenced by pcl::SampleConsensusModel< WeightSACPointType >::SampleConsensusModel(), and pcl::SampleConsensusModelRegistration< PointT >::setInputCloud().

## setRadiusLimits()

template<typename PointT>

void pcl::SampleConsensusModel< 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_radius | the minimum radius model
  [in] | max_radius | the maximum radius model

Definition at line 379 of file sac_model.h.

Referenced by pcl::SACSegmentation< PointT >::initSACModel(), and pcl::SACSegmentationFromNormals< PointT, PointNT >::initSACModel().

## setSamplesMaxDist()

template<typename PointT>

void pcl::SampleConsensusModel< PointT >::setSamplesMaxDist | ( | const double & | radius,
|  | SearchPtr | search
| ) |  |

inline

Set the maximum distance allowed when drawing random samples.

Parameters

  [in] | radius | the maximum distance (L2 norm)
  | search |

Definition at line 403 of file sac_model.h.

## Friends And Related Function Documentation

## ProgressiveSampleConsensus< PointT >

template<typename PointT>

friend class ProgressiveSampleConsensus< PointT >

friend

Definition at line 419 of file sac_model.h.

## Member Data Documentation

## error_sqr_dists_

template<typename PointT>

std::vector<double> pcl::SampleConsensusModel< PointT >::error_sqr_dists_

protected

A vector holding the distances to the computed model.

Used internally.

Definition at line 569 of file sac_model.h.

Referenced by pcl::SampleConsensusModel< WeightSACPointType >::computeVariance().

## indices_

template<typename PointT>

boost::shared_ptr<std::vector<int> > pcl::SampleConsensusModel< PointT >::indices_

protected

A pointer to the vector of point indices to use.

Definition at line 540 of file sac_model.h.

Referenced by pcl::SampleConsensusModelRegistration< PointT >::computeOriginalIndexMapping(), pcl::SampleConsensusModel< WeightSACPointType >::getIndices(), pcl::SampleConsensusModel< WeightSACPointType >::getSamples(), pcl::SampleConsensusModel< WeightSACPointType >::SampleConsensusModel(), pcl::SampleConsensusModel< WeightSACPointType >::setIndices(), and pcl::SampleConsensusModel< WeightSACPointType >::setInputCloud().

## input_

template<typename PointT>

PointCloudConstPtr pcl::SampleConsensusModel< PointT >::input_

protected

A boost shared pointer to the point cloud data array.

Definition at line 537 of file sac_model.h.

Referenced by pcl::SampleConsensusModel< WeightSACPointType >::drawIndexSampleRadius(), pcl::SampleConsensusModel< WeightSACPointType >::getInputCloud(), pcl::SampleConsensusModel< WeightSACPointType >::SampleConsensusModel(), and pcl::SampleConsensusModel< WeightSACPointType >::setInputCloud().

## max_sample_checks_

template<typename PointT>

const unsigned int pcl::SampleConsensusModel< PointT >::max_sample_checks_ = 1000

static protected

The maximum number of samples to try until we get a good one.

Definition at line 543 of file sac_model.h.

Referenced by pcl::SampleConsensusModel< WeightSACPointType >::getSamples().

## model_name_

template<typename PointT>

std::string pcl::SampleConsensusModel< PointT >::model_name_

protected

The model name.

Definition at line 534 of file sac_model.h.

Referenced by pcl::SampleConsensusModel< WeightSACPointType >::getClassName(), pcl::SampleConsensusModelCylinder< pcl::PointXYZRGB, PointNT >::getName(), pcl::SampleConsensusModelCone< pcl::PointXYZRGB, PointNT >::getName(), pcl::SampleConsensusModelCircle2D< pcl::PointXYZRGB >::SampleConsensusModelCircle2D(), pcl::SampleConsensusModelCircle3D< pcl::PointXYZRGB >::SampleConsensusModelCircle3D(), pcl::SampleConsensusModelCone< pcl::PointXYZRGB, PointNT >::SampleConsensusModelCone(), pcl::SampleConsensusModelCylinder< pcl::PointXYZRGB, PointNT >::SampleConsensusModelCylinder(), pcl::SampleConsensusModelLine< PointT >::SampleConsensusModelLine(), pcl::SampleConsensusModelNormalParallelPlane< PointT, PointNT >::SampleConsensusModelNormalParallelPlane(), pcl::SampleConsensusModelNormalPlane< PointT, PointNT >::SampleConsensusModelNormalPlane(), pcl::SampleConsensusModelNormalSphere< PointT, PointNT >::SampleConsensusModelNormalSphere(), pcl::SampleConsensusModelParallelLine< PointT >::SampleConsensusModelParallelLine(), pcl::SampleConsensusModelParallelPlane< PointT >::SampleConsensusModelParallelPlane(), pcl::SampleConsensusModelPerpendicularPlane< PointT >::SampleConsensusModelPerpendicularPlane(), pcl::SampleConsensusModelPlane< PointT >::SampleConsensusModelPlane(), pcl::SampleConsensusModelRegistration< PointT >::SampleConsensusModelRegistration(), pcl::SampleConsensusModelRegistration2D< PointT >::SampleConsensusModelRegistration2D(), pcl::SampleConsensusModelSphere< pcl::PointXYZRGB >::SampleConsensusModelSphere(), and pcl::SampleConsensusModelStick< PointT >::SampleConsensusModelStick().

## model_size_

template<typename PointT>

unsigned int pcl::SampleConsensusModel< PointT >::model_size_

protected

The number of coefficients in the model.

Every subclass should initialize this appropriately.

Definition at line 575 of file sac_model.h.

Referenced by pcl::SampleConsensusModel< WeightSACPointType >::getModelSize(), pcl::SampleConsensusModel< WeightSACPointType >::isModelValid(), pcl::SampleConsensusModelCircle2D< pcl::PointXYZRGB >::SampleConsensusModelCircle2D(), pcl::SampleConsensusModelCircle3D< pcl::PointXYZRGB >::SampleConsensusModelCircle3D(), pcl::SampleConsensusModelCone< pcl::PointXYZRGB, PointNT >::SampleConsensusModelCone(), pcl::SampleConsensusModelCylinder< pcl::PointXYZRGB, PointNT >::SampleConsensusModelCylinder(), pcl::SampleConsensusModelLine< PointT >::SampleConsensusModelLine(), pcl::SampleConsensusModelNormalParallelPlane< PointT, PointNT >::SampleConsensusModelNormalParallelPlane(), pcl::SampleConsensusModelNormalPlane< PointT, PointNT >::SampleConsensusModelNormalPlane(), pcl::SampleConsensusModelNormalSphere< PointT, PointNT >::SampleConsensusModelNormalSphere(), pcl::SampleConsensusModelParallelLine< PointT >::SampleConsensusModelParallelLine(), pcl::SampleConsensusModelParallelPlane< PointT >::SampleConsensusModelParallelPlane(), pcl::SampleConsensusModelPerpendicularPlane< PointT >::SampleConsensusModelPerpendicularPlane(), pcl::SampleConsensusModelPlane< PointT >::SampleConsensusModelPlane(), pcl::SampleConsensusModelRegistration< PointT >::SampleConsensusModelRegistration(), pcl::SampleConsensusModelRegistration2D< PointT >::SampleConsensusModelRegistration2D(), pcl::SampleConsensusModelSphere< pcl::PointXYZRGB >::SampleConsensusModelSphere(), and pcl::SampleConsensusModelStick< PointT >::SampleConsensusModelStick().

## radius_max_

template<typename PointT>

double pcl::SampleConsensusModel< PointT >::radius_max_

protected

Definition at line 548 of file sac_model.h.

Referenced by pcl::SampleConsensusModel< WeightSACPointType >::getRadiusLimits(), pcl::SampleConsensusModelSphere< pcl::PointXYZRGB >::isModelValid(), and pcl::SampleConsensusModel< WeightSACPointType >::setRadiusLimits().

## radius_min_

template<typename PointT>

double pcl::SampleConsensusModel< PointT >::radius_min_

protected

The minimum and maximum radius limits for the model.

Applicable to all models that estimate a radius.

Definition at line 548 of file sac_model.h.

Referenced by pcl::SampleConsensusModel< WeightSACPointType >::getRadiusLimits(), pcl::SampleConsensusModelSphere< pcl::PointXYZRGB >::isModelValid(), and pcl::SampleConsensusModel< WeightSACPointType >::setRadiusLimits().

## rng_alg_

template<typename PointT>

boost::mt19937 pcl::SampleConsensusModel< PointT >::rng_alg_

protected

Boost-based random number generator algorithm.

Definition at line 560 of file sac_model.h.

Referenced by pcl::SampleConsensusModel< WeightSACPointType >::SampleConsensusModel().

## rng_dist_

template<typename PointT>

boost::shared_ptr<boost::uniform_int<> > pcl::SampleConsensusModel< PointT >::rng_dist_

protected

Boost-based random number generator distribution.

Definition at line 563 of file sac_model.h.

Referenced by pcl::SampleConsensusModel< WeightSACPointType >::SampleConsensusModel().

## rng_gen_

template<typename PointT>

boost::shared_ptr<boost::variate_generator< boost::mt19937&, boost::uniform_int<> > > pcl::SampleConsensusModel< PointT >::rng_gen_

protected

Boost-based random number generator.

Definition at line 566 of file sac_model.h.

Referenced by pcl::SampleConsensusModel< WeightSACPointType >::SampleConsensusModel().

## sample_size_

template<typename PointT>

unsigned int pcl::SampleConsensusModel< PointT >::sample_size_

protected

The size of a sample from which the model is computed.

Every subclass should initialize this appropriately.

Definition at line 572 of file sac_model.h.

Referenced by pcl::SampleConsensusModel< WeightSACPointType >::getSampleSize(), pcl::SampleConsensusModelCircle2D< pcl::PointXYZRGB >::SampleConsensusModelCircle2D(), pcl::SampleConsensusModelCircle3D< pcl::PointXYZRGB >::SampleConsensusModelCircle3D(), pcl::SampleConsensusModelCone< pcl::PointXYZRGB, PointNT >::SampleConsensusModelCone(), pcl::SampleConsensusModelCylinder< pcl::PointXYZRGB, PointNT >::SampleConsensusModelCylinder(), pcl::SampleConsensusModelLine< PointT >::SampleConsensusModelLine(), pcl::SampleConsensusModelNormalParallelPlane< PointT, PointNT >::SampleConsensusModelNormalParallelPlane(), pcl::SampleConsensusModelNormalPlane< PointT, PointNT >::SampleConsensusModelNormalPlane(), pcl::SampleConsensusModelNormalSphere< PointT, PointNT >::SampleConsensusModelNormalSphere(), pcl::SampleConsensusModelParallelLine< PointT >::SampleConsensusModelParallelLine(), pcl::SampleConsensusModelParallelPlane< PointT >::SampleConsensusModelParallelPlane(), pcl::SampleConsensusModelPerpendicularPlane< PointT >::SampleConsensusModelPerpendicularPlane(), pcl::SampleConsensusModelPlane< PointT >::SampleConsensusModelPlane(), pcl::SampleConsensusModelRegistration< PointT >::SampleConsensusModelRegistration(), pcl::SampleConsensusModelRegistration2D< PointT >::SampleConsensusModelRegistration2D(), pcl::SampleConsensusModelSphere< pcl::PointXYZRGB >::SampleConsensusModelSphere(), and pcl::SampleConsensusModelStick< PointT >::SampleConsensusModelStick().

## samples_radius_

template<typename PointT>

double pcl::SampleConsensusModel< PointT >::samples_radius_

protected

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

Definition at line 551 of file sac_model.h.

Referenced by pcl::SampleConsensusModel< WeightSACPointType >::drawIndexSampleRadius(), pcl::SampleConsensusModel< WeightSACPointType >::getSamples(), pcl::SampleConsensusModel< WeightSACPointType >::getSamplesMaxDist(), and pcl::SampleConsensusModel< WeightSACPointType >::setSamplesMaxDist().

## samples_radius_search_

template<typename PointT>

SearchPtr pcl::SampleConsensusModel< PointT >::samples_radius_search_

protected

The search object for picking subsequent samples using radius search.

Definition at line 554 of file sac_model.h.

Referenced by pcl::SampleConsensusModel< WeightSACPointType >::drawIndexSampleRadius(), and pcl::SampleConsensusModel< WeightSACPointType >::setSamplesMaxDist().

## shuffled_indices_

template<typename PointT>

std::vector<int> pcl::SampleConsensusModel< PointT >::shuffled_indices_

protected

Data containing a shuffled version of the indices.

This is used and modified when drawing samples.

Definition at line 557 of file sac_model.h.

Referenced by pcl::SampleConsensusModel< WeightSACPointType >::drawIndexSample(), pcl::SampleConsensusModel< WeightSACPointType >::drawIndexSampleRadius(), pcl::SampleConsensusModel< WeightSACPointType >::SampleConsensusModel(), pcl::SampleConsensusModel< WeightSACPointType >::setIndices(), and pcl::SampleConsensusModel< WeightSACPointType >::setInputCloud().

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

- /build/pcl-OilVEB/pcl-1.8.1+dfsg1/sample_consensus/include/pcl/sample_consensus/sac_model.h