Point Cloud Library (PCL)  1.3.1
Public Types | Public Member Functions
pcl::SampleConsensusModelParallelPlane Class Reference

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:
Inheritance graph
[legend]
Collaboration diagram for pcl::SampleConsensusModelParallelPlane:
Collaboration graph
[legend]

List of all members.

Public Types

typedef
SampleConsensusModelPlane
< PointT >::PointCloud 
PointCloud
typedef
SampleConsensusModelPlane
< PointT >::PointCloudPtr 
PointCloudPtr
typedef
SampleConsensusModelPlane
< PointT >::PointCloudConstPtr 
PointCloudConstPtr
typedef boost::shared_ptr
< SampleConsensusModelParallelPlane
Ptr

Public Member Functions

 SampleConsensusModelParallelPlane (const PointCloudConstPtr &cloud)
 Constructor for base SampleConsensusModelParallelPlane.
 SampleConsensusModelParallelPlane (const PointCloudConstPtr &cloud, const std::vector< int > &indices)
 Constructor for base SampleConsensusModelParallelPlane.
void setAxis (const Eigen::Vector3f &ax)
 Set the axis along which we need to search for a plane perpendicular to.
Eigen::Vector3f getAxis ()
 Get the axis along which we need to search for a plane perpendicular to.
void setEpsAngle (const double ea)
 Set the angle epsilon (delta) threshold.
double getEpsAngle ()
 Get the angle epsilon (delta) threshold.
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_PARALLEL_PLANE).
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.

Detailed Description

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 Bogdan Rusu, Nico Blodow

Member Typedef Documentation

Reimplemented from pcl::SampleConsensusModelPlane< PointT >.

Definition at line 68 of file sac_model_parallel_plane.h.

Reimplemented from pcl::SampleConsensusModelPlane< PointT >.

Definition at line 70 of file sac_model_parallel_plane.h.

Reimplemented from pcl::SampleConsensusModelPlane< PointT >.

Definition at line 69 of file sac_model_parallel_plane.h.

Reimplemented from pcl::SampleConsensusModelPlane< PointT >.

Definition at line 72 of file sac_model_parallel_plane.h.


Constructor & Destructor Documentation

pcl::SampleConsensusModelParallelPlane::SampleConsensusModelParallelPlane ( const PointCloudConstPtr cloud) [inline]

Constructor for base SampleConsensusModelParallelPlane.

Parameters:
[in]cloudthe input point cloud dataset

Definition at line 77 of file sac_model_parallel_plane.h.

pcl::SampleConsensusModelParallelPlane::SampleConsensusModelParallelPlane ( const PointCloudConstPtr cloud,
const std::vector< int > &  indices 
) [inline]

Constructor for base SampleConsensusModelParallelPlane.

Parameters:
[in]cloudthe input point cloud dataset
[in]indicesa vector of point indices to be used from cloud

Definition at line 87 of file sac_model_parallel_plane.h.


Member Function Documentation

bool pcl::SampleConsensusModelPlane::computeModelCoefficients ( const std::vector< int > &  samples,
Eigen::VectorXf &  model_coefficients 
) [inherited]

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_.

The plane coefficients are: a, b, c, d (ax+by+cz+d=0)

Parameters:
[in]samplesthe point indices found as possible good candidates for creating a valid model
[out]model_coefficientsthe resultant model coefficients
int pcl::SampleConsensusModelParallelPlane::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 60 of file sac_model_parallel_plane.hpp.

bool pcl::SampleConsensusModelPlane::doSamplesVerifyModel ( const std::set< int > &  indices,
const Eigen::VectorXf &  model_coefficients,
const double  threshold 
) [inherited]

Verify whether a subset of indices verifies the given plane model coefficients.

Parameters:
[in]indicesthe data indices that need to be tested against the plane model
[in]model_coefficientsthe plane model coefficients
[in]thresholda maximum admissible distance threshold for determining the inliers from the outliers
Eigen::Vector3f pcl::SampleConsensusModelParallelPlane::getAxis ( ) [inline]

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

Definition at line 101 of file sac_model_parallel_plane.h.

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

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 72 of file sac_model_parallel_plane.hpp.

double pcl::SampleConsensusModelParallelPlane::getEpsAngle ( ) [inline]

Get the angle epsilon (delta) threshold.

Definition at line 112 of file sac_model_parallel_plane.h.

pcl::SacModel pcl::SampleConsensusModelParallelPlane::getModelType ( ) const [inline]

Return an unique id for this model (SACMODEL_PARALLEL_PLANE).

Reimplemented from pcl::SampleConsensusModelPlane< PointT >.

Definition at line 144 of file sac_model_parallel_plane.h.

void pcl::SampleConsensusModelPlane::optimizeModelCoefficients ( const std::vector< int > &  inliers,
const Eigen::VectorXf &  model_coefficients,
Eigen::VectorXf &  optimized_coefficients 
) [inherited]

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

Note:
: these are the coefficients of the plane model after refinement (eg. after SVD)
Parameters:
[in]inliersthe data inliers found as supporting the model
[in]model_coefficientsthe initial guess for the model coefficients
[out]optimized_coefficientsthe resultant recomputed coefficients after non-linear optimization
void pcl::SampleConsensusModelPlane::projectPoints ( const std::vector< int > &  inliers,
const Eigen::VectorXf &  model_coefficients,
PointCloud projected_points,
bool  copy_data_fields = true 
) [inherited]

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

Parameters:
[in]inliersthe data inliers that we want to project on the plane model
[in]model_coefficientsthe *normalized* coefficients of a plane model
[out]projected_pointsthe resultant projected points
[in]copy_data_fieldsset to true if we need to copy the other data fields
void pcl::SampleConsensusModelParallelPlane::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.

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 45 of file sac_model_parallel_plane.hpp.

void pcl::SampleConsensusModelParallelPlane::setAxis ( const Eigen::Vector3f &  ax) [inline]

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

Parameters:
[in]axthe axis along which we need to search for a plane perpendicular to

Definition at line 97 of file sac_model_parallel_plane.h.

void pcl::SampleConsensusModelParallelPlane::setEpsAngle ( const double  ea) [inline]

Set the angle epsilon (delta) threshold.

Parameters:
[in]eathe 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 108 of file sac_model_parallel_plane.h.


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines