Point Cloud Library (PCL)  1.7.2
List of all members | Public Types | Public Member Functions
pcl::SampleConsensusModelNormalPlane< PointT, PointNT > Class Template Reference

SampleConsensusModelNormalPlane defines a model for 3D plane segmentation using additional surface normal constraints. More...

#include <pcl/sample_consensus/sac_model_normal_plane.h>

+ Inheritance diagram for pcl::SampleConsensusModelNormalPlane< PointT, PointNT >:

Public Types

typedef SampleConsensusModel
< PointT >::PointCloud 
PointCloud
typedef SampleConsensusModel
< PointT >::PointCloudPtr 
PointCloudPtr
typedef SampleConsensusModel
< PointT >::PointCloudConstPtr 
PointCloudConstPtr
typedef
SampleConsensusModelFromNormals
< PointT, PointNT >
::PointCloudNPtr 
PointCloudNPtr
typedef
SampleConsensusModelFromNormals
< PointT, PointNT >
::PointCloudNConstPtr 
PointCloudNConstPtr
typedef boost::shared_ptr
< SampleConsensusModelNormalPlane
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< PointTPointCloud
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 Types inherited from pcl::SampleConsensusModelFromNormals< PointT, PointNT >
typedef pcl::PointCloud
< PointNT >::ConstPtr 
PointCloudNConstPtr
typedef pcl::PointCloud
< PointNT >::Ptr 
PointCloudNPtr
typedef boost::shared_ptr
< SampleConsensusModelFromNormals
Ptr
typedef boost::shared_ptr
< const
SampleConsensusModelFromNormals
ConstPtr

Public Member Functions

 SampleConsensusModelNormalPlane (const PointCloudConstPtr &cloud, bool random=false)
 Constructor for base SampleConsensusModelNormalPlane.
 SampleConsensusModelNormalPlane (const PointCloudConstPtr &cloud, const std::vector< int > &indices, bool random=false)
 Constructor for base SampleConsensusModelNormalPlane.
virtual ~SampleConsensusModelNormalPlane ()
 Empty destructor.
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.
virtual int countWithinDistance (const Eigen::VectorXf &model_coefficients, const double threshold)
 Count all the points which respect the given model coefficients as inliers.
void getDistancesToModel (const Eigen::VectorXf &model_coefficients, std::vector< double > &distances)
 Compute all distances from the cloud data to a given plane model.
pcl::SacModel getModelType () const
 Return an unique id for this model (SACMODEL_NORMAL_PLANE).
- Public Member Functions inherited from pcl::SampleConsensusModelPlane< PointT >
 SampleConsensusModelPlane (const PointCloudConstPtr &cloud, bool random=false)
 Constructor for base SampleConsensusModelPlane.
 SampleConsensusModelPlane (const PointCloudConstPtr &cloud, const std::vector< int > &indices, bool random=false)
 Constructor for base SampleConsensusModelPlane.
virtual ~SampleConsensusModelPlane ()
 Empty destructor.
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_.
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.
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.
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.
- Public Member Functions inherited from pcl::SampleConsensusModel< PointT >
 SampleConsensusModel (const PointCloudConstPtr &cloud, bool random=false)
 Constructor for base SampleConsensusModel.
 SampleConsensusModel (const PointCloudConstPtr &cloud, const std::vector< int > &indices, bool random=false)
 Constructor for base SampleConsensusModel.
virtual ~SampleConsensusModel ()
 Destructor for base SampleConsensusModel.
virtual void getSamples (int &iterations, std::vector< int > &samples)
 Get a set of random data samples and return them as point indices.
virtual void setInputCloud (const PointCloudConstPtr &cloud)
 Provide a pointer to the input dataset.
PointCloudConstPtr getInputCloud () const
 Get a pointer to the input point cloud dataset.
void setIndices (const boost::shared_ptr< std::vector< int > > &indices)
 Provide a pointer to the vector of indices that represents the input data.
void setIndices (const std::vector< int > &indices)
 Provide the vector of indices that represents the input data.
boost::shared_ptr< std::vector
< int > > 
getIndices () const
 Get a pointer to the vector of indices used.
unsigned int getSampleSize () const
 Return the size of a sample from which a model is computed.
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)
void getRadiusLimits (double &min_radius, double &max_radius)
 Get the minimum and maximum allowable radius limits for the model as set by the user.
void setSamplesMaxDist (const double &radius, SearchPtr search)
 Set the maximum distance allowed when drawing random samples.
void getSamplesMaxDist (double &radius)
 Get maximum distance allowed when drawing random samples.
double computeVariance (const std::vector< double > &error_sqr_dists)
 Compute the variance of the errors to the model.
double computeVariance ()
 Compute the variance of the errors to the model from the internally estimated vector of distances.
- Public Member Functions inherited from pcl::SampleConsensusModelFromNormals< PointT, PointNT >
 SampleConsensusModelFromNormals ()
 Empty constructor for base SampleConsensusModelFromNormals.
virtual ~SampleConsensusModelFromNormals ()
 Destructor.
void setNormalDistanceWeight (const double w)
 Set the normal angular distance weight.
double getNormalDistanceWeight ()
 Get the normal angular distance weight.
void setInputNormals (const PointCloudNConstPtr &normals)
 Provide a pointer to the input dataset that contains the point normals of the XYZ dataset.
PointCloudNConstPtr getInputNormals ()
 Get a pointer to the normals of the input XYZ point cloud dataset.

Additional Inherited Members

- Protected Member Functions inherited from pcl::SampleConsensusModelPlane< PointT >
bool isModelValid (const Eigen::VectorXf &model_coefficients)
 Check whether a model is valid given the user constraints.
- Protected Attributes inherited from pcl::SampleConsensusModel< PointT >
PointCloudConstPtr input_
 A boost shared pointer to the point cloud data array.
boost::shared_ptr< std::vector
< int > > 
indices_
 A pointer to the vector of point indices to use.
double radius_min_
 The minimum and maximum radius limits for the model.
double radius_max_
double samples_radius_
 The maximum distance of subsequent samples from the first (radius search)
SearchPtr samples_radius_search_
 The search object for picking subsequent samples using radius search.
std::vector< int > shuffled_indices_
 Data containing a shuffled version of the indices.
boost::mt19937 rng_alg_
 Boost-based random number generator algorithm.
boost::shared_ptr
< boost::uniform_int<> > 
rng_dist_
 Boost-based random number generator distribution.
boost::shared_ptr
< boost::variate_generator
< boost::mt19937
&, boost::uniform_int<> > > 
rng_gen_
 Boost-based random number generator.
std::vector< double > error_sqr_dists_
 A vector holding the distances to the computed model.
- Protected Attributes inherited from pcl::SampleConsensusModelFromNormals< PointT, PointNT >
double normal_distance_weight_
 The relative weight (between 0 and 1) to give to the angular distance (0 to pi/2) between point normals and the plane normal.
PointCloudNConstPtr normals_
 A pointer to the input dataset that contains the point normals of the XYZ dataset.
- 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.

Detailed Description

template<typename PointT, typename PointNT>
class pcl::SampleConsensusModelNormalPlane< PointT, PointNT >

SampleConsensusModelNormalPlane defines a model for 3D plane segmentation using additional surface normal constraints.

Basically this means that checking for inliers will not only involve a "distance to model" criterion, but also an additional "maximum angular deviation" between the plane's normal and the inlier points normals.

The model coefficients are defined as:

To set the influence of the surface normals in the inlier estimation process, set the normal weight (0.0-1.0), e.g.:

SampleConsensusModelNormalPlane<pcl::PointXYZ, pcl::Normal> sac_model;
...
sac_model.setNormalDistanceWeight (0.1);
...
Author
Radu B. Rusu and Jared Glover

Definition at line 76 of file sac_model_normal_plane.h.

Member Typedef Documentation

template<typename PointT, typename PointNT>
typedef SampleConsensusModel<PointT>::PointCloud pcl::SampleConsensusModelNormalPlane< PointT, PointNT >::PointCloud

Definition at line 86 of file sac_model_normal_plane.h.

template<typename PointT, typename PointNT>
typedef SampleConsensusModel<PointT>::PointCloudConstPtr pcl::SampleConsensusModelNormalPlane< PointT, PointNT >::PointCloudConstPtr

Definition at line 88 of file sac_model_normal_plane.h.

template<typename PointT, typename PointNT>
typedef SampleConsensusModelFromNormals<PointT, PointNT>::PointCloudNConstPtr pcl::SampleConsensusModelNormalPlane< PointT, PointNT >::PointCloudNConstPtr

Definition at line 91 of file sac_model_normal_plane.h.

template<typename PointT, typename PointNT>
typedef SampleConsensusModelFromNormals<PointT, PointNT>::PointCloudNPtr pcl::SampleConsensusModelNormalPlane< PointT, PointNT >::PointCloudNPtr

Definition at line 90 of file sac_model_normal_plane.h.

template<typename PointT, typename PointNT>
typedef SampleConsensusModel<PointT>::PointCloudPtr pcl::SampleConsensusModelNormalPlane< PointT, PointNT >::PointCloudPtr

Definition at line 87 of file sac_model_normal_plane.h.

template<typename PointT, typename PointNT>
typedef boost::shared_ptr<SampleConsensusModelNormalPlane> pcl::SampleConsensusModelNormalPlane< PointT, PointNT >::Ptr

Definition at line 93 of file sac_model_normal_plane.h.

Constructor & Destructor Documentation

template<typename PointT, typename PointNT>
pcl::SampleConsensusModelNormalPlane< PointT, PointNT >::SampleConsensusModelNormalPlane ( const PointCloudConstPtr cloud,
bool  random = false 
)
inline

Constructor for base SampleConsensusModelNormalPlane.

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

Definition at line 99 of file sac_model_normal_plane.h.

template<typename PointT, typename PointNT>
pcl::SampleConsensusModelNormalPlane< PointT, PointNT >::SampleConsensusModelNormalPlane ( const PointCloudConstPtr cloud,
const std::vector< int > &  indices,
bool  random = false 
)
inline

Constructor for base SampleConsensusModelNormalPlane.

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

Definition at line 111 of file sac_model_normal_plane.h.

template<typename PointT, typename PointNT>
virtual pcl::SampleConsensusModelNormalPlane< PointT, PointNT >::~SampleConsensusModelNormalPlane ( )
inlinevirtual

Empty destructor.

Definition at line 120 of file sac_model_normal_plane.h.

Member Function Documentation

template<typename PointT , typename PointNT >
int pcl::SampleConsensusModelNormalPlane< PointT, PointNT >::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_coefficientsthe coefficients of a model that we need to compute distances to
[in]thresholdmaximum admissible distance threshold for determining the inliers from the outliers
Returns
the resultant number of inliers

Reimplemented from pcl::SampleConsensusModelPlane< PointT >.

Definition at line 106 of file sac_model_normal_plane.hpp.

References pcl::getAngle3D().

template<typename PointT , typename PointNT >
void pcl::SampleConsensusModelNormalPlane< PointT, PointNT >::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_coefficientsthe coefficients of a plane model that we need to compute distances to
[out]distancesthe resultant estimated distances

Reimplemented from pcl::SampleConsensusModelPlane< PointT >.

Definition at line 151 of file sac_model_normal_plane.hpp.

References pcl::getAngle3D().

template<typename PointT, typename PointNT>
pcl::SacModel pcl::SampleConsensusModelNormalPlane< PointT, PointNT >::getModelType ( ) const
inlinevirtual

Return an unique id for this model (SACMODEL_NORMAL_PLANE).

Reimplemented from pcl::SampleConsensusModelPlane< PointT >.

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

Definition at line 152 of file sac_model_normal_plane.h.

References pcl::SACMODEL_NORMAL_PLANE.

template<typename PointT , typename PointNT >
void pcl::SampleConsensusModelNormalPlane< PointT, PointNT >::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_coefficientsthe coefficients of a plane model that we need to compute distances to
[in]thresholda maximum admissible distance threshold for determining the inliers from the outliers
[out]inliersthe resultant model inliers

Reimplemented from pcl::SampleConsensusModelPlane< PointT >.

Definition at line 48 of file sac_model_normal_plane.hpp.

References pcl::getAngle3D().


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