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);
void setDistanceMap(const float *distance_map)
Set a distance map to use.
typename PointCloudN::Ptr PointCloudNPtr
shared_ptr< PointCloud< PointNT > > Ptr
float curvature_threshold_
void setCurvatureThreshold(float curvature_threshold)
Set the curvature threshold for creating a new segment.
typename PointCloud::ConstPtr PointCloudConstPtr
EdgeAwarePlaneComparator(const float *distance_map)
Empty constructor for PlaneCoefficientComparator.
float getEuclideanDistanceThreshold() const
Get the euclidean distance threshold.
const float * getDistanceMap() const
Return the distance map used.
float getDistanceMapThreshold() const
Get the distance map threshold (in pixels).
bool compare(int idx1, int idx2) const override
Compare two neighboring points, by using normal information, curvature, and euclidean distance inform...
~EdgeAwarePlaneComparator() override=default
Destructor for PlaneCoefficientComparator.
shared_ptr< const Comparator< PointT > > ConstPtr
EdgeAwarePlaneComparator()
Empty constructor for PlaneCoefficientComparator.
PlaneCoefficientComparator is a Comparator that operates on plane coefficients, for use in planar seg...
const float * distance_map_
PointCloud represents the base class in PCL for storing collections of 3D points. ...
float distance_threshold_
shared_ptr< std::vector< float > > plane_coeff_d_
PointCloudNConstPtr normals_
int distance_map_threshold_
EdgeAwarePlaneComparator is a Comparator that operates on plane coefficients, for use in planar segme...
shared_ptr< const PointCloud< PointNT > > ConstPtr
typename PointCloudN::ConstPtr PointCloudNConstPtr
shared_ptr< Comparator< PointT > > Ptr
float getCurvatureThreshold() const
Get the curvature threshold.
void setDistanceMapThreshold(float distance_map_threshold)
Set the distance map threshold – the number of pixel away from a border / nan.
void setEuclideanDistanceThreshold(float euclidean_distance_threshold)
Set the euclidean distance threshold.
float euclidean_distance_threshold_