Point Cloud Library (PCL)  1.8.1-dev
List of all members | Public Types | Public Member Functions | Protected Member Functions
pcl::SampleConsensusModelNormalSphere< PointT, PointNT > Class Template Reference

SampleConsensusModelNormalSphere defines a model for 3D sphere segmentation using additional surface normal constraints. More...

#include <pcl/sample_consensus/sac_model_normal_sphere.h>

+ Inheritance diagram for pcl::SampleConsensusModelNormalSphere< 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
< SampleConsensusModelNormalSphere
Ptr
 
- Public Types inherited from pcl::SampleConsensusModelSphere< PointT >
typedef SampleConsensusModel
< PointT >::PointCloud 
PointCloud
 
typedef SampleConsensusModel
< PointT >::PointCloudPtr 
PointCloudPtr
 
typedef SampleConsensusModel
< PointT >::PointCloudConstPtr 
PointCloudConstPtr
 
typedef boost::shared_ptr
< SampleConsensusModelSphere
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

 SampleConsensusModelNormalSphere (const PointCloudConstPtr &cloud, bool random=false)
 Constructor for base SampleConsensusModelNormalSphere. More...
 
 SampleConsensusModelNormalSphere (const PointCloudConstPtr &cloud, const std::vector< int > &indices, bool random=false)
 Constructor for base SampleConsensusModelNormalSphere. More...
 
virtual ~SampleConsensusModelNormalSphere ()
 Empty destructor. 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 sphere model. More...
 
pcl::SacModel getModelType () const
 Return an unique id for this model (SACMODEL_NORMAL_SPHERE). More...
 
- Public Member Functions inherited from pcl::SampleConsensusModelSphere< PointT >
 SampleConsensusModelSphere (const PointCloudConstPtr &cloud, bool random=false)
 Constructor for base SampleConsensusModelSphere. More...
 
 SampleConsensusModelSphere (const PointCloudConstPtr &cloud, const std::vector< int > &indices, bool random=false)
 Constructor for base SampleConsensusModelSphere. More...
 
virtual ~SampleConsensusModelSphere ()
 Empty destructor. More...
 
 SampleConsensusModelSphere (const SampleConsensusModelSphere &source)
 Copy constructor. More...
 
SampleConsensusModelSphereoperator= (const SampleConsensusModelSphere &source)
 Copy constructor. More...
 
bool computeModelCoefficients (const std::vector< int > &samples, Eigen::VectorXf &model_coefficients)
 Check whether the given index samples can form a valid sphere 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 sphere 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 sphere 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 sphere 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 sphere model coefficients. More...
 
pcl::SacModel getModelType () const
 Return an unique id for this model (SACMODEL_SPHERE). 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...
 
- Public Member Functions inherited from pcl::SampleConsensusModelFromNormals< PointT, PointNT >
 SampleConsensusModelFromNormals ()
 Empty constructor for base SampleConsensusModelFromNormals. More...
 
virtual ~SampleConsensusModelFromNormals ()
 Destructor. More...
 
void setNormalDistanceWeight (const double w)
 Set the normal angular distance weight. More...
 
double getNormalDistanceWeight ()
 Get the normal angular distance weight. More...
 
void setInputNormals (const PointCloudNConstPtr &normals)
 Provide a pointer to the input dataset that contains the point normals of the XYZ dataset. More...
 
PointCloudNConstPtr getInputNormals ()
 Get a pointer to the normals of the input XYZ point cloud dataset. 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::SampleConsensusModelSphere< PointT >
bool isSampleGood (const std::vector< int > &samples) const
 Check if a sample of indices results in a good sample of points indices. 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...
 

Additional Inherited Members

- 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...
 
- 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. More...
 
PointCloudNConstPtr normals_
 A pointer to the input dataset that contains the point normals of the XYZ dataset. More...
 
- 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, typename PointNT>
class pcl::SampleConsensusModelNormalSphere< PointT, PointNT >

SampleConsensusModelNormalSphere defines a model for 3D sphere 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 sphere's normal and the inlier points normals.

The model coefficients are defined as:

Author
Stefan Schrandt

Definition at line 69 of file sac_model_normal_sphere.h.

Member Typedef Documentation

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

Definition at line 81 of file sac_model_normal_sphere.h.

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

Definition at line 83 of file sac_model_normal_sphere.h.

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

Definition at line 86 of file sac_model_normal_sphere.h.

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

Definition at line 85 of file sac_model_normal_sphere.h.

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

Definition at line 82 of file sac_model_normal_sphere.h.

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

Definition at line 88 of file sac_model_normal_sphere.h.

Constructor & Destructor Documentation

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

Constructor for base SampleConsensusModelNormalSphere.

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 94 of file sac_model_normal_sphere.h.

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

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

Constructor for base SampleConsensusModelNormalSphere.

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 109 of file sac_model_normal_sphere.h.

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

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

Empty destructor.

Definition at line 121 of file sac_model_normal_sphere.h.

Member Function Documentation

template<typename PointT , typename PointNT >
int pcl::SampleConsensusModelNormalSphere< 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::SampleConsensusModelSphere< PointT >.

Definition at line 110 of file sac_model_normal_sphere.hpp.

References pcl::getAngle3D().

template<typename PointT , typename PointNT >
void pcl::SampleConsensusModelNormalSphere< PointT, PointNT >::getDistancesToModel ( const Eigen::VectorXf &  model_coefficients,
std::vector< double > &  distances 
)
virtual

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

Parameters
[in]model_coefficientsthe coefficients of a sphere model that we need to compute distances to
[out]distancesthe resultant estimated distances

Implements pcl::SampleConsensusModel< PointT >.

Definition at line 160 of file sac_model_normal_sphere.hpp.

References pcl::getAngle3D().

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

Return an unique id for this model (SACMODEL_NORMAL_SPHERE).

Implements pcl::SampleConsensusModel< PointT >.

Definition at line 152 of file sac_model_normal_sphere.h.

References pcl::SACMODEL_NORMAL_SPHERE.

template<typename PointT , typename PointNT >
bool pcl::SampleConsensusModelNormalSphere< PointT, PointNT >::isModelValid ( const Eigen::VectorXf &  model_coefficients)
protectedvirtual

Check whether a model is valid given the user constraints.

Parameters
[in]model_coefficientsthe set of model coefficients

Reimplemented from pcl::SampleConsensusModelSphere< PointT >.

Definition at line 210 of file sac_model_normal_sphere.hpp.

template<typename PointT , typename PointNT >
void pcl::SampleConsensusModelNormalSphere< 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 sphere 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

Implements pcl::SampleConsensusModel< PointT >.

Definition at line 48 of file sac_model_normal_sphere.hpp.

References pcl::getAngle3D().


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