pcl::SampleConsensusModelParallelPlane< PointT > Class Template Reference
Module sample_consensus

SampleConsensusModelParallelPlane defines a model for 3D plane segmentation using additional angular constraints. More...

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

Inheritance diagram for pcl::SampleConsensusModelParallelPlane< PointT >:

## Public Types

typedef SampleConsensusModelPlane< PointT >::PointCloud | PointCloud
typedef SampleConsensusModelPlane< PointT >::PointCloudPtr | PointCloudPtr
typedef SampleConsensusModelPlane< PointT >::PointCloudConstPtr | PointCloudConstPtr
typedef boost::shared_ptr< SampleConsensusModelParallelPlane > | Ptr
Public Types inherited from pcl::SampleConsensusModelPlane< PointT >
typedef SampleConsensusModel< PointT >::PointCloud | PointCloud
typedef SampleConsensusModel< PointT >::PointCloudPtr | PointCloudPtr
typedef SampleConsensusModel< PointT >::PointCloudConstPtr | PointCloudConstPtr
typedef boost::shared_ptr< SampleConsensusModelPlane > | Ptr
Public Types inherited from pcl::SampleConsensusModel< PointT >
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

| SampleConsensusModelParallelPlane (const PointCloudConstPtr &cloud, bool random=false)
| Constructor for base SampleConsensusModelParallelPlane. More...
| SampleConsensusModelParallelPlane (const PointCloudConstPtr &cloud, const std::vector< int > &indices, bool random=false)
| Constructor for base SampleConsensusModelParallelPlane. More...
virtual | ~SampleConsensusModelParallelPlane ()
| Empty destructor. More...
void | setAxis (const Eigen::Vector3f &ax)
| Set the axis along which we need to search for a plane perpendicular to. More...
Eigen::Vector3f | getAxis ()
| Get the axis along which we need to search for a plane perpendicular to. More...
void | setEpsAngle (const double ea)
| Set the angle epsilon (delta) threshold. More...
double | getEpsAngle ()
| Get the angle epsilon (delta) threshold. More...
void | selectWithinDistance (const Eigen::VectorXf &model_coefficients, const double threshold, std::vector< int > &inliers)
| Select all the points which respect the given model coefficients as inliers. More...
virtual int | countWithinDistance (const Eigen::VectorXf &model_coefficients, const double threshold)
| Count all the points which respect the given model coefficients as inliers. More...
void | getDistancesToModel (const Eigen::VectorXf &model_coefficients, std::vector< double > &distances)
| Compute all distances from the cloud data to a given plane model. More...
pcl::SacModel | getModelType () const
| Return an unique id for this model (SACMODEL_PARALLEL_PLANE). More...
Public Member Functions inherited from pcl::SampleConsensusModelPlane< PointT >
| SampleConsensusModelPlane (const PointCloudConstPtr &cloud, bool random=false)
| Constructor for base SampleConsensusModelPlane. More...
| SampleConsensusModelPlane (const PointCloudConstPtr &cloud, const std::vector< int > &indices, bool random=false)
| Constructor for base SampleConsensusModelPlane. More...
virtual | ~SampleConsensusModelPlane ()
| Empty destructor. More...
bool | computeModelCoefficients (const std::vector< int > &samples, Eigen::VectorXf &model_coefficients)
| Check whether the given index samples can form a valid plane model, compute the model coefficients from these samples and store them internally in model_coefficients_. More...
void | getDistancesToModel (const Eigen::VectorXf &model_coefficients, std::vector< double > &distances)
| Compute all distances from the cloud data to a given plane model. More...
void | selectWithinDistance (const Eigen::VectorXf &model_coefficients, const double threshold, std::vector< int > &inliers)
| Select all the points which respect the given model coefficients as inliers. More...
void | optimizeModelCoefficients (const std::vector< int > &inliers, const Eigen::VectorXf &model_coefficients, Eigen::VectorXf &optimized_coefficients)
| Recompute the plane coefficients using the given inlier set and return them to the user. More...
void | projectPoints (const std::vector< int > &inliers, const Eigen::VectorXf &model_coefficients, PointCloud &projected_points, bool copy_data_fields=true)
| Create a new point cloud with inliers projected onto the plane model. More...
bool | doSamplesVerifyModel (const std::set< int > &indices, const Eigen::VectorXf &model_coefficients, const double threshold)
| Verify whether a subset of indices verifies the given plane model coefficients. More...
pcl::SacModel | getModelType () const
| Return an unique id for this model (SACMODEL_PLANE). More...
Public Member Functions inherited from pcl::SampleConsensusModel< PointT >
| 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 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...
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

virtual bool | isModelValid (const Eigen::VectorXf &model_coefficients)
| Check whether a model is valid given the user constraints. More...
Protected Member Functions inherited from pcl::SampleConsensusModel< PointT >
| 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...
int | rnd ()
| Boost-based random number generator. More...

## Protected Attributes

Eigen::Vector3f | axis_
| The axis along which we need to search for a plane perpendicular to. More...
double | eps_angle_
| The maximum allowed difference between the plane and the given axis. More...
double | sin_angle_
| The sine of the angle. More...
Protected Attributes inherited from pcl::SampleConsensusModel< PointT >
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...

## Additional Inherited Members

Static Protected Attributes inherited from pcl::SampleConsensusModel< PointT >
static const unsigned int | max_sample_checks_ = 1000
| The maximum number of samples to try until we get a good one. More...

## Detailed Description

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

SampleConsensusModelParallelPlane defines a model for 3D plane segmentation using additional angular constraints.

The plane must be parallel to a user-specified axis (setAxis) within an user-specified angle threshold (setEpsAngle).

Code example for a plane model, parallel (within a 15 degrees tolerance) with the Z axis:

SampleConsensusModelParallelPlane<pcl::PointXYZ> model (cloud);
model.setAxis (Eigen::Vector3f (0.0, 0.0, 1.0));
model.setEpsAngle (pcl::deg2rad (15));

Note
  Please remember that you need to specify an angle > 0 in order to activate the axis-angle constraint!

Author
  Radu B. Rusu, Nico Blodow

Definition at line 66 of file sac_model_parallel_plane.h.

## Member Typedef Documentation

## PointCloud

template<typename PointT>

typedef SampleConsensusModelPlane<PointT>::PointCloud pcl::SampleConsensusModelParallelPlane< PointT >::PointCloud

Definition at line 71 of file sac_model_parallel_plane.h.

## PointCloudConstPtr

template<typename PointT>

typedef SampleConsensusModelPlane<PointT>::PointCloudConstPtr pcl::SampleConsensusModelParallelPlane< PointT >::PointCloudConstPtr

Definition at line 73 of file sac_model_parallel_plane.h.

## PointCloudPtr

template<typename PointT>

typedef SampleConsensusModelPlane<PointT>::PointCloudPtr pcl::SampleConsensusModelParallelPlane< PointT >::PointCloudPtr

Definition at line 72 of file sac_model_parallel_plane.h.

## Ptr

template<typename PointT>

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

Definition at line 75 of file sac_model_parallel_plane.h.

## Constructor & Destructor Documentation

## SampleConsensusModelParallelPlane() [1/2]

template<typename PointT>

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

inline

Constructor for base SampleConsensusModelParallelPlane.

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 81 of file sac_model_parallel_plane.h.

References pcl::SampleConsensusModel< PointT >::model_name_, pcl::SampleConsensusModel< PointT >::model_size_, and pcl::SampleConsensusModel< PointT >::sample_size_.

## SampleConsensusModelParallelPlane() [2/2]

template<typename PointT>

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

inline

Constructor for base SampleConsensusModelParallelPlane.

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 98 of file sac_model_parallel_plane.h.

References pcl::SampleConsensusModel< PointT >::model_name_, pcl::SampleConsensusModel< PointT >::model_size_, and pcl::SampleConsensusModel< PointT >::sample_size_.

## ~SampleConsensusModelParallelPlane()

template<typename PointT>

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

inline virtual

Empty destructor.

Definition at line 112 of file sac_model_parallel_plane.h.

## Member Function Documentation

## countWithinDistance()

template<typename PointT >

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

virtual

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

Parameters

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

Returns
  the resultant number of inliers

Reimplemented from pcl::SampleConsensusModelPlane< PointT >.

Definition at line 63 of file sac_model_parallel_plane.hpp.

Referenced by pcl::SampleConsensusModelParallelPlane< PointT >::getEpsAngle().

## getAxis()

template<typename PointT>

Eigen::Vector3f pcl::SampleConsensusModelParallelPlane< PointT >::getAxis | ( |  | ) |

inline

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

Definition at line 122 of file sac_model_parallel_plane.h.

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

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

## getDistancesToModel()

template<typename PointT >

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

virtual

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

Parameters

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

Implements pcl::SampleConsensusModel< PointT >.

Definition at line 75 of file sac_model_parallel_plane.hpp.

Referenced by pcl::SampleConsensusModelParallelPlane< PointT >::getEpsAngle().

## getEpsAngle()

template<typename PointT>

double pcl::SampleConsensusModelParallelPlane< PointT >::getEpsAngle | ( |  | ) |

inline

Get the angle epsilon (delta) threshold.

Definition at line 133 of file sac_model_parallel_plane.h.

References pcl::SampleConsensusModelParallelPlane< PointT >::countWithinDistance(), pcl::SampleConsensusModelParallelPlane< PointT >::eps_angle_, pcl::SampleConsensusModelParallelPlane< PointT >::getDistancesToModel(), and pcl::SampleConsensusModelParallelPlane< PointT >::selectWithinDistance().

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

## getModelType()

template<typename PointT>

pcl::SacModel pcl::SampleConsensusModelParallelPlane< PointT >::getModelType | ( |  | ) | const

inline virtual

Return an unique id for this model (SACMODEL_PARALLEL_PLANE).

Implements pcl::SampleConsensusModel< PointT >.

Definition at line 165 of file sac_model_parallel_plane.h.

References pcl::SampleConsensusModelParallelPlane< PointT >::isModelValid(), and pcl::SACMODEL_PARALLEL_PLANE.

## isModelValid()

template<typename PointT >

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

protected virtual

Check whether a model is valid given the user constraints.

Parameters

  [in] | model_coefficients | the set of model coefficients

Reimplemented from pcl::SampleConsensusModel< PointT >.

Definition at line 90 of file sac_model_parallel_plane.hpp.

Referenced by pcl::SampleConsensusModelParallelPlane< PointT >::getModelType().

## selectWithinDistance()

template<typename PointT >

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

virtual

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

Parameters

  [in] | model_coefficients | the coefficients of a plane 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

Implements pcl::SampleConsensusModel< PointT >.

Definition at line 48 of file sac_model_parallel_plane.hpp.

Referenced by pcl::SampleConsensusModelParallelPlane< PointT >::getEpsAngle().

## setAxis()

template<typename PointT>

void pcl::SampleConsensusModelParallelPlane< PointT >::setAxis | ( | const Eigen::Vector3f & | ax | ) |

inline

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

Parameters

  [in] | ax | the axis along which we need to search for a plane perpendicular to

Definition at line 118 of file sac_model_parallel_plane.h.

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

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

## setEpsAngle()

template<typename PointT>

void pcl::SampleConsensusModelParallelPlane< PointT >::setEpsAngle | ( | const double | ea | ) |

inline

Set the angle epsilon (delta) threshold.

Parameters

  [in] | ea | the maximum allowed difference between the plane normal and the given axis.

Note
  You need to specify an angle > 0 in order to activate the axis-angle constraint!

Definition at line 129 of file sac_model_parallel_plane.h.

References pcl::SampleConsensusModelParallelPlane< PointT >::eps_angle_, and pcl::SampleConsensusModelParallelPlane< PointT >::sin_angle_.

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

## Member Data Documentation

## axis_

template<typename PointT>

Eigen::Vector3f pcl::SampleConsensusModelParallelPlane< PointT >::axis_

protected

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

Definition at line 178 of file sac_model_parallel_plane.h.

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

## eps_angle_

template<typename PointT>

double pcl::SampleConsensusModelParallelPlane< PointT >::eps_angle_

protected

The maximum allowed difference between the plane and the given axis.

Definition at line 181 of file sac_model_parallel_plane.h.

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

## sin_angle_

template<typename PointT>

double pcl::SampleConsensusModelParallelPlane< PointT >::sin_angle_

protected

The sine of the angle.

Definition at line 184 of file sac_model_parallel_plane.h.

Referenced by pcl::SampleConsensusModelParallelPlane< PointT >::setEpsAngle().

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

- /build/pcl-qv3n_B/pcl-1.8.1+dfsg1/sample_consensus/include/pcl/sample_consensus/sac_model_parallel_plane.h
- /build/pcl-qv3n_B/pcl-1.8.1+dfsg1/sample_consensus/include/pcl/sample_consensus/impl/sac_model_parallel_plane.hpp