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_
boost::shared_ptr< PlaneCoefficientComparator< PointT, PointNT > > Ptr
boost::shared_ptr< const PointCloud< PointT > > ConstPtr
float deg2rad(float alpha)
Convert an angle from degrees to radians.
pcl::PlaneCoefficientComparator< PointT, PointNT > PlaneComparator
boost::shared_ptr< const PlaneCoefficientComparator< PointT, PointNT > > ConstPtr
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.
boost::shared_ptr< const PlaneRefinementComparator< PointT, PointNT, PointLT > > ConstPtr
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.
virtual ~OrganizedMultiPlaneSegmentation()
Destructor for OrganizedMultiPlaneSegmentation.
boost::shared_ptr< PointCloud< PointT > > Ptr
PointCloudN::ConstPtr PointCloudNConstPtr
unsigned getMinInliers() const
Get the minimum number of inliers required per plane.
PlaneRefinementComparator::ConstPtr PlaneRefinementComparatorConstPtr
PointCloud::ConstPtr PointCloudConstPtr
PlaneComparatorPtr compare_
A comparator for comparing neighboring pixels' plane equations.
OrganizedMultiPlaneSegmentation()
Constructor for OrganizedMultiPlaneSegmentation.
boost::shared_ptr< PlaneRefinementComparator< PointT, PointNT, PointLT > > Ptr
double getMaximumCurvature() const
Get the maximum curvature allowed for a planar region.
pcl::PointCloud< PointNT > PointCloudN
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...
pcl::PointCloud< PointLT > PointCloudL
PointCloudL::ConstPtr PointCloudLConstPtr
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...
PointCloudL::Ptr PointCloudLPtr
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.
double maximum_curvature_
The tolerance for maximum curvature after fitting a plane.
PointCloudNConstPtr getInputNormals() const
Get the input normals.
PlaneRefinementComparator::Ptr PlaneRefinementComparatorPtr
PlaneRefinementComparator is a Comparator that operates on plane coefficients, for use in planar segm...
PlaneComparator::ConstPtr PlaneComparatorConstPtr
virtual std::string getClassName() const
Class getName method.
pcl::PointCloud< PointT > PointCloud
PointCloud::Ptr PointCloudPtr
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.
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 ...
PlanarRegion represents a set of points that lie in a plane.
PointCloudN::Ptr PointCloudNPtr
PlaneComparator::Ptr PlaneComparatorPtr
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...
pcl::PlaneRefinementComparator< PointT, PointNT, PointLT > PlaneRefinementComparator
double getDistanceThreshold() const
Get the distance threshold in meters (d component of plane equation) between neighboring points...