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