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> >;
181 Eigen::Vector3f vec = (*input_)[idx1].getVector3fMap ();
183 dist_threshold *= z * z;
184 euclidean_dist_threshold *= z * z;
187 float dx = (*input_)[idx1].x - (*input_)[idx2].x;
188 float dy = (*input_)[idx1].y - (*input_)[idx2].y;
189 float dz = (*input_)[idx1].z - (*input_)[idx2].z;
190 float dist = std::sqrt (dx*dx + dy*dy + dz*dz);
192 bool normal_ok = ((*normals_)[idx1].getNormalVector3fMap ().dot ((*
normals_)[idx2].getNormalVector3fMap () ) >
angular_threshold_ );
193 bool dist_ok = (dist < euclidean_dist_threshold);
199 curvature_ok =
false;
201 return (dist_ok && normal_ok && curvature_ok && plane_d_ok);
PointCloudConstPtr input_
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.
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
~EdgeAwarePlaneComparator()
Destructor for PlaneCoefficientComparator.
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.
const float * getDistanceMap() const
Return the distance map used.
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
A point structure representing Euclidean xyz coordinates, and the RGB color.