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

MaximumLikelihoodSampleConsensus represents an implementation of the MLESAC (Maximum Likelihood Estimator SAmple Consensus) algorithm, as described in: "MLESAC: A new robust estimator with application to estimating image geometry", P.H.S. More...

#include <pcl/sample_consensus/mlesac.h>

+ Inheritance diagram for pcl::MaximumLikelihoodSampleConsensus< PointT >:

Public Types

typedef boost::shared_ptr
< MaximumLikelihoodSampleConsensus
Ptr
 
typedef boost::shared_ptr
< const
MaximumLikelihoodSampleConsensus
ConstPtr
 
- Public Types inherited from pcl::SampleConsensus< PointT >
typedef boost::shared_ptr
< SampleConsensus
Ptr
 
typedef boost::shared_ptr
< const SampleConsensus
ConstPtr
 

Public Member Functions

 MaximumLikelihoodSampleConsensus (const SampleConsensusModelPtr &model)
 MLESAC (Maximum Likelihood Estimator SAmple Consensus) main constructor. More...
 
 MaximumLikelihoodSampleConsensus (const SampleConsensusModelPtr &model, double threshold)
 MLESAC (Maximum Likelihood Estimator SAmple Consensus) main constructor. More...
 
bool computeModel (int debug_verbosity_level=0)
 Compute the actual model and find the inliers. More...
 
void setEMIterations (int iterations)
 Set the number of EM iterations. More...
 
int getEMIterations () const
 Get the number of EM iterations. More...
 
- Public Member Functions inherited from pcl::SampleConsensus< PointT >
 SampleConsensus (const SampleConsensusModelPtr &model, bool random=false)
 Constructor for base SAC. More...
 
 SampleConsensus (const SampleConsensusModelPtr &model, double threshold, bool random=false)
 Constructor for base SAC. More...
 
void setSampleConsensusModel (const SampleConsensusModelPtr &model)
 Set the Sample Consensus model to use. More...
 
SampleConsensusModelPtr getSampleConsensusModel () const
 Get the Sample Consensus model used. More...
 
virtual ~SampleConsensus ()
 Destructor for base SAC. More...
 
void setDistanceThreshold (double threshold)
 Set the distance to model threshold. More...
 
double getDistanceThreshold ()
 Get the distance to model threshold, as set by the user. More...
 
void setMaxIterations (int max_iterations)
 Set the maximum number of iterations. More...
 
int getMaxIterations ()
 Get the maximum number of iterations, as set by the user. More...
 
void setProbability (double probability)
 Set the desired probability of choosing at least one sample free from outliers. More...
 
double getProbability ()
 Obtain the probability of choosing at least one sample free from outliers, as set by the user. More...
 
virtual bool refineModel (const double sigma=3.0, const unsigned int max_iterations=1000)
 Refine the model found. More...
 
void getRandomSamples (const boost::shared_ptr< std::vector< int > > &indices, size_t nr_samples, std::set< int > &indices_subset)
 Get a set of randomly selected indices. More...
 
void getModel (std::vector< int > &model)
 Return the best model found so far. More...
 
void getInliers (std::vector< int > &inliers)
 Return the best set of inliers found so far for this model. More...
 
void getModelCoefficients (Eigen::VectorXf &model_coefficients)
 Return the model coefficients of the best model found so far. More...
 

Protected Member Functions

double computeMedianAbsoluteDeviation (const PointCloudConstPtr &cloud, const boost::shared_ptr< std::vector< int > > &indices, double sigma)
 Compute the median absolute deviation:

\[ MAD = \sigma * median_i (| Xi - median_j(Xj) |) \]

. More...

 
void getMinMax (const PointCloudConstPtr &cloud, const boost::shared_ptr< std::vector< int > > &indices, Eigen::Vector4f &min_p, Eigen::Vector4f &max_p)
 Determine the minimum and maximum 3D bounding box coordinates for a given set of points. More...
 
void computeMedian (const PointCloudConstPtr &cloud, const boost::shared_ptr< std::vector< int > > &indices, Eigen::Vector4f &median)
 Compute the median value of a 3D point cloud using a given set point indices and return it as a Point32. More...
 
- Protected Member Functions inherited from pcl::SampleConsensus< PointT >
double rnd ()
 Boost-based random number generator. More...
 

Additional Inherited Members

- Protected Attributes inherited from pcl::SampleConsensus< PointT >
SampleConsensusModelPtr sac_model_
 The underlying data model used (i.e. More...
 
std::vector< int > model_
 The model found after the last computeModel () as point cloud indices. More...
 
std::vector< int > inliers_
 The indices of the points that were chosen as inliers after the last computeModel () call. More...
 
Eigen::VectorXf model_coefficients_
 The coefficients of our model computed directly from the model found. More...
 
double probability_
 Desired probability of choosing at least one sample free from outliers. More...
 
int iterations_
 Total number of internal loop iterations that we've done so far. More...
 
double threshold_
 Distance to model threshold. More...
 
int max_iterations_
 Maximum number of iterations before giving up. More...
 
boost::mt19937 rng_alg_
 Boost-based random number generator algorithm. More...
 
boost::shared_ptr
< boost::uniform_01
< boost::mt19937 > > 
rng_
 Boost-based random number generator distribution. More...
 

Detailed Description

template<typename PointT>
class pcl::MaximumLikelihoodSampleConsensus< PointT >

MaximumLikelihoodSampleConsensus represents an implementation of the MLESAC (Maximum Likelihood Estimator SAmple Consensus) algorithm, as described in: "MLESAC: A new robust estimator with application to estimating image geometry", P.H.S.

Torr and A. Zisserman, Computer Vision and Image Understanding, vol 78, 2000.

Note
MLESAC is useful in situations where most of the data samples belong to the model, and a fast outlier rejection algorithm is needed.
Author
Radu B. Rusu

Definition at line 57 of file mlesac.h.

Member Typedef Documentation

template<typename PointT >
typedef boost::shared_ptr<const MaximumLikelihoodSampleConsensus> pcl::MaximumLikelihoodSampleConsensus< PointT >::ConstPtr

Definition at line 64 of file mlesac.h.

template<typename PointT >
typedef boost::shared_ptr<MaximumLikelihoodSampleConsensus> pcl::MaximumLikelihoodSampleConsensus< PointT >::Ptr

Definition at line 63 of file mlesac.h.

Constructor & Destructor Documentation

template<typename PointT >
pcl::MaximumLikelihoodSampleConsensus< PointT >::MaximumLikelihoodSampleConsensus ( const SampleConsensusModelPtr &  model)
inline

MLESAC (Maximum Likelihood Estimator SAmple Consensus) main constructor.

Parameters
[in]modela Sample Consensus model

Definition at line 78 of file mlesac.h.

References pcl::SampleConsensus< PointT >::max_iterations_.

template<typename PointT >
pcl::MaximumLikelihoodSampleConsensus< PointT >::MaximumLikelihoodSampleConsensus ( const SampleConsensusModelPtr &  model,
double  threshold 
)
inline

MLESAC (Maximum Likelihood Estimator SAmple Consensus) main constructor.

Parameters
[in]modela Sample Consensus model
[in]thresholddistance to model threshold

Definition at line 90 of file mlesac.h.

References pcl::SampleConsensus< PointT >::max_iterations_.

Member Function Documentation

template<typename PointT >
void pcl::MaximumLikelihoodSampleConsensus< PointT >::computeMedian ( const PointCloudConstPtr &  cloud,
const boost::shared_ptr< std::vector< int > > &  indices,
Eigen::Vector4f &  median 
)
protected

Compute the median value of a 3D point cloud using a given set point indices and return it as a Point32.

Parameters
[in]cloudthe point cloud data message
[in]indicesthe point indices
[out]medianthe resultant median value

Definition at line 264 of file mlesac.hpp.

template<typename PointT >
double pcl::MaximumLikelihoodSampleConsensus< PointT >::computeMedianAbsoluteDeviation ( const PointCloudConstPtr &  cloud,
const boost::shared_ptr< std::vector< int > > &  indices,
double  sigma 
)
protected

Compute the median absolute deviation:

\[ MAD = \sigma * median_i (| Xi - median_j(Xj) |) \]

.

Note
Sigma needs to be chosen carefully (a good starting sigma value is 1.4826)
Parameters
[in]cloudthe point cloud data message
[in]indicesthe set of point indices to use
[in]sigmathe sigma value

Definition at line 207 of file mlesac.hpp.

template<typename PointT >
bool pcl::MaximumLikelihoodSampleConsensus< PointT >::computeModel ( int  debug_verbosity_level = 0)
virtual

Compute the actual model and find the inliers.

Parameters
[in]debug_verbosity_levelenable/disable on-screen debug information and set the verbosity level

Implements pcl::SampleConsensus< PointT >.

Definition at line 49 of file mlesac.hpp.

References pcl::getMinMax().

template<typename PointT >
int pcl::MaximumLikelihoodSampleConsensus< PointT >::getEMIterations ( ) const
inline

Get the number of EM iterations.

Definition at line 112 of file mlesac.h.

template<typename PointT >
void pcl::MaximumLikelihoodSampleConsensus< PointT >::getMinMax ( const PointCloudConstPtr &  cloud,
const boost::shared_ptr< std::vector< int > > &  indices,
Eigen::Vector4f &  min_p,
Eigen::Vector4f &  max_p 
)
protected

Determine the minimum and maximum 3D bounding box coordinates for a given set of points.

Parameters
[in]cloudthe point cloud message
[in]indicesthe set of point indices to use
[out]min_pthe resultant minimum bounding box coordinates
[out]max_pthe resultant maximum bounding box coordinates

Definition at line 240 of file mlesac.hpp.

template<typename PointT >
void pcl::MaximumLikelihoodSampleConsensus< PointT >::setEMIterations ( int  iterations)
inline

Set the number of EM iterations.

Parameters
[in]iterationsthe number of EM iterations

Definition at line 108 of file mlesac.h.


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