|
Point Cloud Library (PCL)
1.6.0
|
SampleConsensusModelNormalParallelPlane defines a model for 3D plane segmentation using additional surface normal constraints. More...
#include <pcl/sample_consensus/sac_model_normal_parallel_plane.h>


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 < SampleConsensusModelNormalParallelPlane > | Ptr |
| typedef pcl::search::Search < PointT >::Ptr | SearchPtr |
| typedef boost::shared_ptr < const SampleConsensusModel > | ConstPtr |
| typedef boost::shared_ptr < const SampleConsensusModelFromNormals > | ConstPtr |
Public Member Functions | |
| SampleConsensusModelNormalParallelPlane (const PointCloudConstPtr &cloud) | |
| Constructor for base SampleConsensusModelNormalParallelPlane. | |
| SampleConsensusModelNormalParallelPlane (const PointCloudConstPtr &cloud, const std::vector< int > &indices) | |
| Constructor for base SampleConsensusModelNormalParallelPlane. | |
| 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 | setDistanceFromOrigin (const double d) |
| Set the distance we expect the plane to be from the origin. | |
| double | getDistanceFromOrigin () |
| Get the distance of the plane from the origin. | |
| void | setEpsDist (const double delta) |
| Set the distance epsilon (delta) threshold. | |
| double | getEpsDist () |
| Get the distance 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_NORMAL_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. | |
| 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. | |
| 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. | |
Friends | |
| class | ProgressiveSampleConsensus< PointT > |
SampleConsensusModelNormalParallelPlane 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. In addition, the plane normal must lie parallel to an user-specified axis.
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); ...
In addition, the user can specify more constraints, such as:
Definition at line 85 of file sac_model_normal_parallel_plane.h.
typedef boost::shared_ptr<const SampleConsensusModel> pcl::SampleConsensusModel< PointT >::ConstPtr [inherited] |
Definition at line 74 of file sac_model.h.
typedef boost::shared_ptr<const SampleConsensusModelFromNormals> pcl::SampleConsensusModelFromNormals< PointT, PointNT >::ConstPtr [inherited] |
Definition at line 510 of file sac_model.h.
| typedef SampleConsensusModel<PointT>::PointCloud pcl::SampleConsensusModelNormalParallelPlane< PointT, PointNT >::PointCloud |
Reimplemented from pcl::SampleConsensusModelPlane< PointT >.
Definition at line 94 of file sac_model_normal_parallel_plane.h.
| typedef SampleConsensusModel<PointT>::PointCloudConstPtr pcl::SampleConsensusModelNormalParallelPlane< PointT, PointNT >::PointCloudConstPtr |
Reimplemented from pcl::SampleConsensusModelPlane< PointT >.
Definition at line 96 of file sac_model_normal_parallel_plane.h.
| typedef SampleConsensusModelFromNormals<PointT, PointNT>::PointCloudNConstPtr pcl::SampleConsensusModelNormalParallelPlane< PointT, PointNT >::PointCloudNConstPtr |
Reimplemented from pcl::SampleConsensusModelFromNormals< PointT, PointNT >.
Definition at line 99 of file sac_model_normal_parallel_plane.h.
| typedef SampleConsensusModelFromNormals<PointT, PointNT>::PointCloudNPtr pcl::SampleConsensusModelNormalParallelPlane< PointT, PointNT >::PointCloudNPtr |
Reimplemented from pcl::SampleConsensusModelFromNormals< PointT, PointNT >.
Definition at line 98 of file sac_model_normal_parallel_plane.h.
| typedef SampleConsensusModel<PointT>::PointCloudPtr pcl::SampleConsensusModelNormalParallelPlane< PointT, PointNT >::PointCloudPtr |
Reimplemented from pcl::SampleConsensusModelPlane< PointT >.
Definition at line 95 of file sac_model_normal_parallel_plane.h.
| typedef boost::shared_ptr<SampleConsensusModelNormalParallelPlane> pcl::SampleConsensusModelNormalParallelPlane< PointT, PointNT >::Ptr |
Reimplemented from pcl::SampleConsensusModelFromNormals< PointT, PointNT >.
Definition at line 101 of file sac_model_normal_parallel_plane.h.
typedef pcl::search::Search<PointT>::Ptr pcl::SampleConsensusModel< PointT >::SearchPtr [inherited] |
Definition at line 71 of file sac_model.h.
| pcl::SampleConsensusModelNormalParallelPlane< PointT, PointNT >::SampleConsensusModelNormalParallelPlane | ( | const PointCloudConstPtr & | cloud | ) | [inline] |
Constructor for base SampleConsensusModelNormalParallelPlane.
| [in] | cloud | the input point cloud dataset |
Definition at line 106 of file sac_model_normal_parallel_plane.h.
| pcl::SampleConsensusModelNormalParallelPlane< PointT, PointNT >::SampleConsensusModelNormalParallelPlane | ( | const PointCloudConstPtr & | cloud, |
| const std::vector< int > & | indices | ||
| ) | [inline] |
Constructor for base SampleConsensusModelNormalParallelPlane.
| [in] | cloud | the input point cloud dataset |
| [in] | indices | a vector of point indices to be used from cloud |
Definition at line 118 of file sac_model_normal_parallel_plane.h.
| bool pcl::SampleConsensusModelPlane< PointT >::computeModelCoefficients | ( | const std::vector< int > & | samples, |
| Eigen::VectorXf & | model_coefficients | ||
| ) | [virtual, 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)
| [in] | samples | the point indices found as possible good candidates for creating a valid model |
| [out] | model_coefficients | the resultant model coefficients |
Implements pcl::SampleConsensusModel< PointT >.
Definition at line 65 of file sac_model_plane.hpp.
| int pcl::SampleConsensusModelNormalParallelPlane< PointT, PointNT >::countWithinDistance | ( | const Eigen::VectorXf & | model_coefficients, |
| const double | threshold | ||
| ) | [virtual] |
Count all the points which respect the given model coefficients as inliers.
| [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 |
Reimplemented from pcl::SampleConsensusModelPlane< PointT >.
Definition at line 91 of file sac_model_normal_parallel_plane.hpp.
| bool pcl::SampleConsensusModelPlane< PointT >::doSamplesVerifyModel | ( | const std::set< int > & | indices, |
| const Eigen::VectorXf & | model_coefficients, | ||
| const double | threshold | ||
| ) | [virtual, inherited] |
Verify whether a subset of indices verifies the given plane model coefficients.
| [in] | indices | the data indices that need to be tested against the plane model |
| [in] | model_coefficients | the plane model coefficients |
| [in] | threshold | a maximum admissible distance threshold for determining the inliers from the outliers |
Implements pcl::SampleConsensusModel< PointT >.
Definition at line 329 of file sac_model_plane.hpp.
| Eigen::Vector3f pcl::SampleConsensusModelNormalParallelPlane< PointT, PointNT >::getAxis | ( | ) | [inline] |
Get the axis along which we need to search for a plane perpendicular to.
Definition at line 134 of file sac_model_normal_parallel_plane.h.
| double pcl::SampleConsensusModelNormalParallelPlane< PointT, PointNT >::getDistanceFromOrigin | ( | ) | [inline] |
Get the distance of the plane from the origin.
Definition at line 155 of file sac_model_normal_parallel_plane.h.
| void pcl::SampleConsensusModelNormalParallelPlane< 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.
| [in] | model_coefficients | the coefficients of a plane model that we need to compute distances to |
| [out] | distances | the resultant estimated distances |
Reimplemented from pcl::SampleConsensusModelPlane< PointT >.
Definition at line 131 of file sac_model_normal_parallel_plane.hpp.
| double pcl::SampleConsensusModelNormalParallelPlane< PointT, PointNT >::getEpsAngle | ( | ) | [inline] |
Get the angle epsilon (delta) threshold.
Definition at line 145 of file sac_model_normal_parallel_plane.h.
| double pcl::SampleConsensusModelNormalParallelPlane< PointT, PointNT >::getEpsDist | ( | ) | [inline] |
Get the distance epsilon (delta) threshold.
Definition at line 165 of file sac_model_normal_parallel_plane.h.
| boost::shared_ptr<std::vector<int> > pcl::SampleConsensusModel< PointT >::getIndices | ( | ) | const [inline, inherited] |
Get a pointer to the vector of indices used.
Definition at line 327 of file sac_model.h.
| PointCloudConstPtr pcl::SampleConsensusModel< PointT >::getInputCloud | ( | ) | const [inline, inherited] |
Get a pointer to the input point cloud dataset.
Definition at line 303 of file sac_model.h.
| PointCloudNConstPtr pcl::SampleConsensusModelFromNormals< PointT, PointNT >::getInputNormals | ( | ) | [inline, inherited] |
Get a pointer to the normals of the input XYZ point cloud dataset.
Definition at line 546 of file sac_model.h.
| pcl::SacModel pcl::SampleConsensusModelNormalParallelPlane< PointT, PointNT >::getModelType | ( | ) | const [inline, virtual] |
Return an unique id for this model (SACMODEL_NORMAL_PARALLEL_PLANE).
Reimplemented from pcl::SampleConsensusModelPlane< PointT >.
Definition at line 197 of file sac_model_normal_parallel_plane.h.
| double pcl::SampleConsensusModelFromNormals< PointT, PointNT >::getNormalDistanceWeight | ( | ) | [inline, inherited] |
Get the normal angular distance weight.
Definition at line 531 of file sac_model.h.
| void pcl::SampleConsensusModel< PointT >::getRadiusLimits | ( | double & | min_radius, |
| double & | max_radius | ||
| ) | [inline, inherited] |
Get the minimum and maximum allowable radius limits for the model as set by the user.
| [out] | min_radius | the resultant minimum radius model |
| [out] | max_radius | the resultant maximum radius model |
Definition at line 363 of file sac_model.h.
| void pcl::SampleConsensusModel< PointT >::getSamples | ( | int & | iterations, |
| std::vector< int > & | samples | ||
| ) | [inline, inherited] |
Get a set of random data samples and return them as point indices.
Pure virtual.
| [out] | iterations | the internal number of iterations used by SAC methods |
| [out] | samples | the resultant model samples |
Definition at line 163 of file sac_model.h.
| unsigned int pcl::SampleConsensusModel< PointT >::getSampleSize | ( | ) | const [inline, inherited] |
Return the size of a sample from which a model is computed.
Definition at line 335 of file sac_model.h.
| void pcl::SampleConsensusModel< PointT >::getSamplesMaxDist | ( | double & | radius | ) | [inline, inherited] |
Get maximum distance allowed when drawing random samples.
| [out] | radius | the maximum distance (L2 norm) |
Definition at line 384 of file sac_model.h.
| void pcl::SampleConsensusModelPlane< PointT >::optimizeModelCoefficients | ( | const std::vector< int > & | inliers, |
| const Eigen::VectorXf & | model_coefficients, | ||
| Eigen::VectorXf & | optimized_coefficients | ||
| ) | [virtual, inherited] |
Recompute the plane coefficients using the given inlier set and return them to the user.
| [in] | inliers | the data inliers found as supporting the model |
| [in] | model_coefficients | the initial guess for the model coefficients |
| [out] | optimized_coefficients | the resultant recomputed coefficients after non-linear optimization |
Implements pcl::SampleConsensusModel< PointT >.
Definition at line 202 of file sac_model_plane.hpp.
| void pcl::SampleConsensusModelPlane< PointT >::projectPoints | ( | const std::vector< int > & | inliers, |
| const Eigen::VectorXf & | model_coefficients, | ||
| PointCloud & | projected_points, | ||
| bool | copy_data_fields = true |
||
| ) | [virtual, inherited] |
Create a new point cloud with inliers projected onto the plane model.
| [in] | inliers | the data inliers that we want to project on the plane model |
| [in] | model_coefficients | the *normalized* coefficients of a plane model |
| [out] | projected_points | the resultant projected points |
| [in] | copy_data_fields | set to true if we need to copy the other data fields |
Implements pcl::SampleConsensusModel< PointT >.
Definition at line 245 of file sac_model_plane.hpp.
| void pcl::SampleConsensusModelNormalParallelPlane< 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.
| [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 |
Reimplemented from pcl::SampleConsensusModelPlane< PointT >.
Definition at line 45 of file sac_model_normal_parallel_plane.hpp.
| void pcl::SampleConsensusModelNormalParallelPlane< PointT, PointNT >::setAxis | ( | const Eigen::Vector3f & | ax | ) | [inline] |
Set the axis along which we need to search for a plane perpendicular to.
| [in] | ax | the axis along which we need to search for a plane perpendicular to |
Definition at line 130 of file sac_model_normal_parallel_plane.h.
| void pcl::SampleConsensusModelNormalParallelPlane< PointT, PointNT >::setDistanceFromOrigin | ( | const double | d | ) | [inline] |
Set the distance we expect the plane to be from the origin.
| [in] | d | distance from the template plane to the origin |
Definition at line 151 of file sac_model_normal_parallel_plane.h.
| void pcl::SampleConsensusModelNormalParallelPlane< PointT, PointNT >::setEpsAngle | ( | const double | ea | ) | [inline] |
Set the angle epsilon (delta) threshold.
| [in] | ea | the maximum allowed deviation from 90 degrees between the plane normal and the given axis. |
Definition at line 141 of file sac_model_normal_parallel_plane.h.
| void pcl::SampleConsensusModelNormalParallelPlane< PointT, PointNT >::setEpsDist | ( | const double | delta | ) | [inline] |
Set the distance epsilon (delta) threshold.
| [in] | delta | the maximum allowed deviation from the template distance from the origin |
Definition at line 161 of file sac_model_normal_parallel_plane.h.
| void pcl::SampleConsensusModel< PointT >::setIndices | ( | const boost::shared_ptr< std::vector< int > > & | indices | ) | [inline, inherited] |
Provide a pointer to the vector of indices that represents the input data.
| [in] | indices | a pointer to the vector of indices that represents the input data. |
Definition at line 309 of file sac_model.h.
| void pcl::SampleConsensusModel< PointT >::setIndices | ( | const std::vector< int > & | indices | ) | [inline, inherited] |
Provide the vector of indices that represents the input data.
| [out] | indices | the vector of indices that represents the input data. |
Definition at line 319 of file sac_model.h.
| virtual void pcl::SampleConsensusModel< PointT >::setInputCloud | ( | const PointCloudConstPtr & | cloud | ) | [inline, virtual, inherited] |
Provide a pointer to the input dataset.
| [in] | cloud | the const boost shared pointer to a PointCloud message |
Reimplemented in pcl::SampleConsensusModelRegistration< PointT >.
Definition at line 286 of file sac_model.h.
| void pcl::SampleConsensusModelFromNormals< PointT, PointNT >::setInputNormals | ( | const PointCloudNConstPtr & | normals | ) | [inline, inherited] |
Provide a pointer to the input dataset that contains the point normals of the XYZ dataset.
| [in] | normals | the const boost shared pointer to a PointCloud message |
Definition at line 539 of file sac_model.h.
| void pcl::SampleConsensusModelFromNormals< PointT, PointNT >::setNormalDistanceWeight | ( | const double | w | ) | [inline, inherited] |
Set the normal angular distance weight.
| [in] | w | the relative weight (between 0 and 1) to give to the angular distance (0 to pi/2) between point normals and the plane normal. (The Euclidean distance will have weight 1-w.) |
Definition at line 524 of file sac_model.h.
| void pcl::SampleConsensusModel< PointT >::setRadiusLimits | ( | const double & | min_radius, |
| const double & | max_radius | ||
| ) | [inline, inherited] |
Set the minimum and maximum allowable radius limits for the model (applicable to models that estimate a radius)
| [in] | min_radius | the minimum radius model |
| [in] | max_radius | the maximum radius model |
Definition at line 350 of file sac_model.h.
| void pcl::SampleConsensusModel< PointT >::setSamplesMaxDist | ( | const double & | radius, |
| SearchPtr | search | ||
| ) | [inline, inherited] |
Set the maximum distance allowed when drawing random samples.
| [in] | radius | the maximum distance (L2 norm) |
Definition at line 373 of file sac_model.h.
friend class ProgressiveSampleConsensus< PointT > [friend, inherited] |
Definition at line 389 of file sac_model.h.
1.7.6.1