40 #ifndef PCL_SEGMENTATION_EUCLIDEAN_CLUSTER_COMPARATOR_H_
41 #define PCL_SEGMENTATION_EUCLIDEAN_CLUSTER_COMPARATOR_H_
43 #include <pcl/segmentation/boost.h>
44 #include <pcl/segmentation/comparator.h>
53 template<
typename Po
intT,
typename Po
intNT,
typename Po
intLT>
68 typedef boost::shared_ptr<EuclideanClusterComparator<PointT, PointNT, PointLT> >
Ptr;
69 typedef boost::shared_ptr<const EuclideanClusterComparator<PointT, PointNT, PointLT> >
ConstPtr;
93 Eigen::Matrix3f rot =
input_->sensor_orientation_.toRotationMatrix ();
161 exclude_labels_ = boost::make_shared<std::vector<bool> >(exclude_labels);
172 int label1 =
labels_->points[idx1].label;
173 int label2 =
labels_->points[idx2].label;
175 if (label1 == -1 || label2 == -1)
184 Eigen::Vector3f vec =
input_->points[idx1].getVector3fMap ();
186 dist_threshold *= z * z;
189 float dx =
input_->points[idx1].x -
input_->points[idx2].x;
190 float dy =
input_->points[idx1].y -
input_->points[idx2].y;
191 float dz =
input_->points[idx1].z -
input_->points[idx2].z;
192 float dist = sqrtf (dx*dx + dy*dy + dz*dz);
194 return (dist < dist_threshold);
209 #endif // PCL_SEGMENTATION_PLANE_COEFFICIENT_COMPARATOR_H_
PointCloudConstPtr input_
PointCloudN::Ptr PointCloudNPtr
float distance_threshold_
Comparator< PointT >::PointCloudConstPtr PointCloudConstPtr
virtual void setAngularThreshold(float angular_threshold)
Set the tolerance in radians for difference in normal direction between neighboring points...
float getDistanceThreshold() const
Get the distance threshold in meters (d component of plane equation) between neighboring points...
boost::shared_ptr< const PointCloud< PointT > > ConstPtr
Comparator< PointT >::PointCloud PointCloud
virtual bool compare(int idx1, int idx2) const
Compare points at two indices by their plane equations.
void setInputNormals(const PointCloudNConstPtr &normals)
Provide a pointer to the input normals.
boost::shared_ptr< PointCloud< PointT > > Ptr
boost::shared_ptr< const EuclideanClusterComparator< PointT, PointNT, PointLT > > ConstPtr
PointCloudNConstPtr normals_
virtual void setInputCloud(const PointCloudConstPtr &cloud)
Set the input cloud for the comparator.
EuclideanClusterComparator()
Empty constructor for EuclideanClusterComparator.
EuclideanClusterComparator is a comparator used for finding clusters supported by planar surfaces...
void setDistanceThreshold(float distance_threshold, bool depth_dependent)
Set the tolerance in meters for difference in perpendicular distance (d component of plane equation) ...
void setExcludeLabels(std::vector< bool > &exclude_labels)
Set labels in the label cloud to exclude.
Comparator is the base class for comparators that compare two points given some function.
PointCloudL::ConstPtr PointCloudLConstPtr
float getAngularThreshold() const
Get the angular threshold in radians for difference in normal direction between neighboring points...
void setLabels(PointCloudLPtr &labels)
Set label cloud.
boost::shared_ptr< std::vector< bool > > exclude_labels_
PointCloudNConstPtr getInputNormals() const
Get the input normals.
PointCloudL::Ptr PointCloudLPtr
boost::shared_ptr< EuclideanClusterComparator< PointT, PointNT, PointLT > > Ptr
pcl::PointCloud< PointLT > PointCloudL
PointCloud::ConstPtr PointCloudConstPtr
pcl::PointCloud< PointNT > PointCloudN
PointCloudN::ConstPtr PointCloudNConstPtr
virtual ~EuclideanClusterComparator()
Destructor for EuclideanClusterComparator.