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>
225 segment (std::vector<ModelCoefficients>& model_coefficients,
226 std::vector<PointIndices>& inlier_indices,
227 std::vector<Eigen::Vector4f, Eigen::aligned_allocator<Eigen::Vector4f> >& centroids,
228 std::vector <Eigen::Matrix3f, Eigen::aligned_allocator<Eigen::Matrix3f> >& covariances,
230 std::vector<pcl::PointIndices>& label_indices);
237 segment (std::vector<ModelCoefficients>& model_coefficients,
238 std::vector<PointIndices>& inlier_indices);
263 std::vector<ModelCoefficients>& model_coefficients,
264 std::vector<PointIndices>& inlier_indices,
266 std::vector<pcl::PointIndices>& label_indices,
267 std::vector<pcl::PointIndices>& boundary_indices);
276 refine (std::vector<ModelCoefficients>& model_coefficients,
277 std::vector<PointIndices>& inlier_indices,
279 std::vector<pcl::PointIndices>& label_indices);
289 PCL_DEPRECATED(1, 12,
"centroids and covariances parameters are not used; they are deprecated and will be removed in future releases")
294 std::vector <
Eigen::Matrix3f,
Eigen::aligned_allocator<
Eigen::Matrix3f> >& covariances,
300 refine(model_coefficients, inlier_indices, labels, label_indices);
333 return (
"OrganizedMultiPlaneSegmentation");
339 #ifdef PCL_NO_PRECOMPILE
340 #include <pcl/segmentation/impl/organized_multi_plane_segmentation.hpp>
typename PlaneComparator::ConstPtr PlaneComparatorConstPtr
void ignore(const T &)
Utility function to eliminate unused variable warnings.
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
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.
OrganizedMultiPlaneSegmentation()
Constructor for OrganizedMultiPlaneSegmentation.
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.
~OrganizedMultiPlaneSegmentation()
Destructor for OrganizedMultiPlaneSegmentation.
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...