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_
PlaneCoefficientComparator is a Comparator that operates on plane coefficients, for use in planar seg...
PointCloudL::ConstPtr PointCloudLConstPtr
PointCloudN::ConstPtr PointCloudNConstPtr
pcl::PointCloud< PointNT > PointCloudN
void setMinInliers(unsigned min_inliers)
Set the minimum number of inliers required for a plane.
pcl::PlaneRefinementComparator< PointT, PointNT, PointLT > PlaneRefinementComparator
void setDistanceThreshold(double distance_threshold)
Set the tolerance in meters for difference in perpendicular distance (d component of plane equation) ...
void setInputNormals(const PointCloudNConstPtr &normals)
Provide a pointer to the input normals.
PlaneComparator::Ptr PlaneComparatorPtr
void setMaximumCurvature(double maximum_curvature)
Set the maximum curvature allowed for a planar region.
boost::shared_ptr< PlaneRefinementComparator< PointT, PointNT, PointLT > > Ptr
void segmentAndRefine(std::vector< PlanarRegion< PointT >, Eigen::aligned_allocator< PlanarRegion< PointT > > > ®ions)
Perform a segmentation, as well as an additional refinement step.
void setComparator(const PlaneComparatorPtr &compare)
Provide a pointer to the comparator to be used for segmentation.
double maximum_curvature_
The tolerance for maximum curvature after fitting a plane.
double distance_threshold_
The tolerance in meters for difference in perpendicular distance (d component of plane equation) to t...
boost::shared_ptr< const PlaneCoefficientComparator< PointT, PointNT > > ConstPtr
pcl::PointCloud< PointLT > PointCloudL
PlaneRefinementComparatorPtr refinement_compare_
A comparator for use on the refinement step.
float deg2rad(float alpha)
Convert an angle from degrees to radians.
PlaneComparator::ConstPtr PlaneComparatorConstPtr
void setProjectPoints(bool project_points)
Set whether or not to project boundary points to the plane, or leave them in the original 3D space...
unsigned min_inliers_
The minimum number of inliers required for each plane.
boost::shared_ptr< PlaneCoefficientComparator< PointT, PointNT > > Ptr
PointCloudNConstPtr getInputNormals() const
Get the input normals.
PlanarRegion represents a set of points that lie in a plane.
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 ...
PointCloud::Ptr PointCloudPtr
boost::shared_ptr< PointCloud< PointT > > Ptr
PointCloudL::Ptr PointCloudLPtr
boost::shared_ptr< const PlaneRefinementComparator< PointT, PointNT, PointLT > > ConstPtr
PlaneRefinementComparator::Ptr PlaneRefinementComparatorPtr
PlaneRefinementComparator is a Comparator that operates on plane coefficients, for use in planar segm...
double getAngularThreshold() const
Get the angular threshold in radians for difference in normal direction between neighboring points...
OrganizedMultiPlaneSegmentation()
Constructor for OrganizedMultiPlaneSegmentation.
virtual ~OrganizedMultiPlaneSegmentation()
Destructor for OrganizedMultiPlaneSegmentation.
OrganizedMultiPlaneSegmentation finds all planes present in the input cloud, and outputs a vector of ...
boost::shared_ptr< const PointCloud< PointT > > ConstPtr
void setRefinementComparator(const PlaneRefinementComparatorPtr &compare)
Provide a pointer to the comparator to be used for refinement.
bool project_points_
Whether or not points should be projected to the plane, or left in the original 3D space...
pcl::PlaneCoefficientComparator< PointT, PointNT > PlaneComparator
double angular_threshold_
The tolerance in radians for difference in normal direction between neighboring points, to be considered part of the same plane.
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() ...
PointCloud::ConstPtr PointCloudConstPtr
pcl::PointCloud< PointT > PointCloud
virtual std::string getClassName() const
Class getName method.
void setAngularThreshold(double angular_threshold)
Set the tolerance 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...
PointCloudN::Ptr PointCloudNPtr
unsigned getMinInliers() const
Get the minimum number of inliers required per plane.
PointCloudNConstPtr normals_
A pointer to the input normals.
double getMaximumCurvature() const
Get the maximum curvature allowed for a planar region.
PlaneComparatorPtr compare_
A comparator for comparing neighboring pixels' plane equations.