40 #ifndef PCL_SEGMENTATION_ORGANIZED_MULTI_PLANE_SEGMENTATION_H_
41 #define PCL_SEGMENTATION_ORGANIZED_MULTI_PLANE_SEGMENTATION_H_
43 #include <pcl/segmentation/planar_region.h>
44 #include <pcl/pcl_base.h>
45 #include <pcl/common/angles.h>
46 #include <pcl/PointIndices.h>
47 #include <pcl/ModelCoefficients.h>
48 #include <pcl/segmentation/plane_coefficient_comparator.h>
49 #include <pcl/segmentation/plane_refinement_comparator.h>
61 template<
typename Po
intT,
typename Po
intNT,
typename Po
intLT>
224 segment (std::vector<ModelCoefficients>& model_coefficients,
225 std::vector<PointIndices>& inlier_indices,
226 std::vector<Eigen::Vector4f, Eigen::aligned_allocator<Eigen::Vector4f> >& centroids,
227 std::vector <Eigen::Matrix3f, Eigen::aligned_allocator<Eigen::Matrix3f> >& covariances,
229 std::vector<pcl::PointIndices>& label_indices);
236 segment (std::vector<ModelCoefficients>& model_coefficients,
237 std::vector<PointIndices>& inlier_indices);
262 std::vector<ModelCoefficients>& model_coefficients,
263 std::vector<PointIndices>& inlier_indices,
265 std::vector<pcl::PointIndices>& label_indices,
266 std::vector<pcl::PointIndices>& boundary_indices);
277 refine (std::vector<ModelCoefficients>& model_coefficients,
278 std::vector<PointIndices>& inlier_indices,
279 std::vector<Eigen::Vector4f, Eigen::aligned_allocator<Eigen::Vector4f> >& centroids,
280 std::vector <Eigen::Matrix3f, Eigen::aligned_allocator<Eigen::Matrix3f> >& covariances,
282 std::vector<pcl::PointIndices>& label_indices);
314 return (
"OrganizedMultiPlaneSegmentation");
320 #ifdef PCL_NO_PRECOMPILE
321 #include <pcl/segmentation/impl/organized_multi_plane_segmentation.hpp>
324 #endif //#ifndef PCL_SEGMENTATION_ORGANIZED_MULTI_PLANE_SEGMENTATION_H_
OrganizedMultiPlaneSegmentation()
Constructor for OrganizedMultiPlaneSegmentation.
double getMaximumCurvature() const
Get the maximum curvature allowed for a planar region.
pcl::PointCloud< PointNT > PointCloudN
void refine(std::vector< ModelCoefficients > &model_coefficients, std::vector< PointIndices > &inlier_indices, std::vector< Eigen::Vector4f, Eigen::aligned_allocator< Eigen::Vector4f > > ¢roids, std::vector< Eigen::Matrix3f, Eigen::aligned_allocator< Eigen::Matrix3f > > &covariances, PointCloudLPtr &labels, std::vector< pcl::PointIndices > &label_indices)
Perform a refinement of an initial segmentation, by comparing points to adjacent regions detected by ...
double getAngularThreshold() const
Get the angular threshold in radians for difference in normal direction between neighboring points...
PlaneRefinementComparator::ConstPtr PlaneRefinementComparatorConstPtr
double getDistanceThreshold() const
Get the distance threshold in meters (d component of plane equation) between neighboring points...
pcl::PlaneCoefficientComparator< PointT, PointNT > PlaneComparator
PlaneComparator::ConstPtr PlaneComparatorConstPtr
bool project_points_
Whether or not points should be projected to the plane, or left in the original 3D space...
void setProjectPoints(bool project_points)
Set whether or not to project boundary points to the plane, or leave them in the original 3D space...
boost::shared_ptr< const PointCloud< PointT > > ConstPtr
OrganizedMultiPlaneSegmentation finds all planes present in the input cloud, and outputs a vector of ...
PlaneComparatorPtr compare_
A comparator for comparing neighboring pixels' plane equations.
PlaneRefinementComparatorPtr refinement_compare_
A comparator for use on the refinement step.
void segment(std::vector< ModelCoefficients > &model_coefficients, std::vector< PointIndices > &inlier_indices, std::vector< Eigen::Vector4f, Eigen::aligned_allocator< Eigen::Vector4f > > ¢roids, std::vector< Eigen::Matrix3f, Eigen::aligned_allocator< Eigen::Matrix3f > > &covariances, pcl::PointCloud< PointLT > &labels, std::vector< pcl::PointIndices > &label_indices)
Segmentation of all planes in a point cloud given by setInputCloud(), setIndices() ...
void setMinInliers(unsigned min_inliers)
Set the minimum number of inliers required for a plane.
PointCloudN::Ptr PointCloudNPtr
boost::shared_ptr< PointCloud< PointT > > Ptr
PointCloud::Ptr PointCloudPtr
unsigned min_inliers_
The minimum number of inliers required for each plane.
PlaneRefinementComparator::Ptr PlaneRefinementComparatorPtr
double angular_threshold_
The tolerance in radians for difference in normal direction between neighboring points, to be considered part of the same plane.
unsigned getMinInliers() const
Get the minimum number of inliers required per plane.
void segmentAndRefine(std::vector< PlanarRegion< PointT >, Eigen::aligned_allocator< PlanarRegion< PointT > > > ®ions)
Perform a segmentation, as well as an additional refinement step.
void setInputNormals(const PointCloudNConstPtr &normals)
Provide a pointer to the input normals.
PlanarRegion represents a set of points that lie in a plane.
double distance_threshold_
The tolerance in meters for difference in perpendicular distance (d component of plane equation) to t...
void setMaximumCurvature(double maximum_curvature)
Set the maximum curvature allowed for a planar region.
PointCloudL::Ptr PointCloudLPtr
pcl::PlaneRefinementComparator< PointT, PointNT, PointLT > PlaneRefinementComparator
double maximum_curvature_
The tolerance for maximum curvature after fitting a plane.
void setAngularThreshold(double angular_threshold)
Set the tolerance in radians for difference in normal direction between neighboring points...
PlaneComparator::Ptr PlaneComparatorPtr
PointCloudL::ConstPtr PointCloudLConstPtr
boost::shared_ptr< const PlaneCoefficientComparator< PointT, PointNT > > ConstPtr
boost::shared_ptr< PlaneCoefficientComparator< PointT, PointNT > > Ptr
void setDistanceThreshold(double distance_threshold)
Set the tolerance in meters for difference in perpendicular distance (d component of plane equation) ...
PointCloudN::ConstPtr PointCloudNConstPtr
PointCloud::ConstPtr PointCloudConstPtr
void setRefinementComparator(const PlaneRefinementComparatorPtr &compare)
Provide a pointer to the comparator to be used for refinement.
float deg2rad(float alpha)
Convert an angle from degrees to radians.
pcl::PointCloud< PointLT > PointCloudL
void setComparator(const PlaneComparatorPtr &compare)
Provide a pointer to the comparator to be used for segmentation.
boost::shared_ptr< PlaneRefinementComparator< PointT, PointNT, PointLT > > Ptr
PlaneCoefficientComparator is a Comparator that operates on plane coefficients, for use in planar seg...
virtual std::string getClassName() const
Class getName method.
PointCloudNConstPtr normals_
A pointer to the input normals.
PointCloudNConstPtr getInputNormals() const
Get the input normals.
virtual ~OrganizedMultiPlaneSegmentation()
Destructor for OrganizedMultiPlaneSegmentation.
PlaneRefinementComparator is a Comparator that operates on plane coefficients, for use in planar segm...
pcl::PointCloud< PointT > PointCloud
boost::shared_ptr< const PlaneRefinementComparator< PointT, PointNT, PointLT > > ConstPtr