42 #include <pcl/segmentation/plane_coefficient_comparator.h>
52 template<
typename Po
intT,
typename Po
intNT>
63 using Ptr = shared_ptr<EdgeAwarePlaneComparator<PointT, PointNT> >;
64 using ConstPtr = shared_ptr<const EdgeAwarePlaneComparator<PointT, PointNT> >;
180 Eigen::Vector3f vec = (*input_)[idx1].getVector3fMap ();
182 dist_threshold *= z * z;
183 euclidean_dist_threshold *= z * z;
186 float dx = (*input_)[idx1].x - (*input_)[idx2].x;
187 float dy = (*input_)[idx1].y - (*input_)[idx2].y;
188 float dz = (*input_)[idx1].z - (*input_)[idx2].z;
189 float dist = std::sqrt (dx*dx + dy*dy + dz*dz);
191 bool normal_ok = ((*normals_)[idx1].getNormalVector3fMap ().dot ((*
normals_)[idx2].getNormalVector3fMap () ) >
angular_threshold_ );
192 bool dist_ok = (dist < euclidean_dist_threshold);
198 curvature_ok =
false;
200 return (dist_ok && normal_ok && curvature_ok && plane_d_ok);
shared_ptr< Comparator< PointT > > Ptr
typename PointCloud::ConstPtr PointCloudConstPtr
shared_ptr< const Comparator< PointT > > ConstPtr
EdgeAwarePlaneComparator is a Comparator that operates on plane coefficients, for use in planar segme...
float euclidean_distance_threshold_
float getEuclideanDistanceThreshold() const
Get the euclidean distance threshold.
~EdgeAwarePlaneComparator() override=default
Destructor for PlaneCoefficientComparator.
const float * getDistanceMap() const
Return the distance map used.
bool compare(int idx1, int idx2) const override
Compare two neighboring points, by using normal information, curvature, and euclidean distance inform...
void setDistanceMapThreshold(float distance_map_threshold)
Set the distance map threshold – the number of pixel away from a border / nan.
float getCurvatureThreshold() const
Get the curvature threshold.
void setCurvatureThreshold(float curvature_threshold)
Set the curvature threshold for creating a new segment.
void setDistanceMap(const float *distance_map)
Set a distance map to use.
float curvature_threshold_
typename PointCloudN::ConstPtr PointCloudNConstPtr
void setEuclideanDistanceThreshold(float euclidean_distance_threshold)
Set the euclidean distance threshold.
typename PointCloudN::Ptr PointCloudNPtr
EdgeAwarePlaneComparator()
Empty constructor for PlaneCoefficientComparator.
EdgeAwarePlaneComparator(const float *distance_map)
Empty constructor for PlaneCoefficientComparator.
int distance_map_threshold_
const float * distance_map_
float getDistanceMapThreshold() const
Get the distance map threshold (in pixels).
PlaneCoefficientComparator is a Comparator that operates on plane coefficients, for use in planar seg...
float distance_threshold_
shared_ptr< std::vector< float > > plane_coeff_d_
PointCloudNConstPtr normals_
PointCloud represents the base class in PCL for storing collections of 3D points.
shared_ptr< PointCloud< PointNT > > Ptr
shared_ptr< const PointCloud< PointNT > > ConstPtr