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_
PointCloudNConstPtr getInputNormals() const
Get the input normals.
pcl::PointCloud< PointNT > PointCloudN
PointCloudN::ConstPtr PointCloudNConstPtr
PointCloudConstPtr input_
Comparator< PointT >::PointCloud PointCloud
void setExcludeLabels(std::vector< bool > &exclude_labels)
Set labels in the label cloud to exclude.
PointCloudNConstPtr normals_
float distance_threshold_
virtual void setAngularThreshold(float angular_threshold)
Set the tolerance in radians for difference in normal direction between neighboring points...
PointCloud::ConstPtr PointCloudConstPtr
boost::shared_ptr< EuclideanClusterComparator< PointT, PointNT, PointLT > > Ptr
EuclideanClusterComparator is a comparator used for finding clusters supported by planar surfaces...
PointCloudL::Ptr PointCloudLPtr
void setInputNormals(const PointCloudNConstPtr &normals)
Provide a pointer to the input normals.
boost::shared_ptr< std::vector< bool > > exclude_labels_
Comparator< PointT >::PointCloudConstPtr PointCloudConstPtr
void setDistanceThreshold(float distance_threshold, bool depth_dependent)
Set the tolerance in meters for difference in perpendicular distance (d component of plane equation) ...
boost::shared_ptr< const EuclideanClusterComparator< PointT, PointNT, PointLT > > ConstPtr
PointCloudL::ConstPtr PointCloudLConstPtr
EuclideanClusterComparator()
Empty constructor for EuclideanClusterComparator.
boost::shared_ptr< PointCloud< PointT > > Ptr
virtual bool compare(int idx1, int idx2) const
Compare points at two indices by their plane equations.
Comparator is the base class for comparators that compare two points given some function.
float getAngularThreshold() const
Get the angular threshold in radians for difference in normal direction between neighboring points...
boost::shared_ptr< const PointCloud< PointT > > ConstPtr
void setLabels(PointCloudLPtr &labels)
Set label cloud.
float getDistanceThreshold() const
Get the distance threshold in meters (d component of plane equation) between neighboring points...
virtual void setInputCloud(const PointCloudConstPtr &cloud)
Set the input cloud for the comparator.
virtual ~EuclideanClusterComparator()
Destructor for EuclideanClusterComparator.
pcl::PointCloud< PointLT > PointCloudL
PointCloudN::Ptr PointCloudNPtr