41 #include <pcl/keypoints/keypoint.h>
42 #include <pcl/common/intensity.h>
55 template <
typename Po
intInT,
typename Po
intOutT,
typename NormalT = pcl::Normal,
typename IntensityT= pcl::common::IntensityFieldAccessor<Po
intInT> >
59 using Ptr = shared_ptr<SUSANKeypoint<PointInT, PointOutT, NormalT, IntensityT> >;
60 using ConstPtr = shared_ptr<const SUSANKeypoint<PointInT, PointOutT, NormalT, Intensity> >;
89 float distance_threshold = 0.001f,
90 float angular_threshold = 0.0001f,
91 float intensity_threshold = 7.0f)
92 : distance_threshold_ (distance_threshold)
93 , angular_threshold_ (angular_threshold)
94 , intensity_threshold_ (intensity_threshold)
97 name_ =
"SUSANKeypoint";
99 geometric_validation_ =
false;
100 tolerance_ = 2 * distance_threshold_;
174 const Eigen::Vector3f& centroid,
175 const Eigen::Vector3f& nc,
176 const PointInT& point)
const;
178 float distance_threshold_;
179 float angular_threshold_;
180 float intensity_threshold_;
183 unsigned int threads_{0};
184 bool geometric_validation_;
187 IntensityT intensity_;
193 std::vector<pcl::PCLPointField> out_fields_;
198 #include <pcl/keypoints/impl/susan.hpp>
Keypoint represents the base class for key points.
std::string name_
The key point detection method's name.
double search_radius_
The nearest neighbors search radius for each point.
shared_ptr< PointCloud< NormalT > > Ptr
shared_ptr< const PointCloud< NormalT > > ConstPtr
SUSANKeypoint implements a RGB-D extension of the SUSAN detector including normal directions variatio...
shared_ptr< const SUSANKeypoint< PointInT, PointOutT, NormalT, Intensity > > ConstPtr
void setIntensityThreshold(float intensity_threshold)
set the intensity_threshold value for detecting corners.
void setGeometricValidation(bool validate)
Filetr false positive using geometric criteria.
bool isWithinNucleusCentroid(const Eigen::Vector3f &nucleus, const Eigen::Vector3f ¢roid, const Eigen::Vector3f &nc, const PointInT &point) const
return true if a point lies within the line between the nucleus and the centroid
void setRadius(float radius)
set the radius for normal estimation and non maxima supression.
typename Keypoint< PointInT, PointOutT >::KdTree KdTree
void setNonMaxSupression(bool nonmax)
Apply non maxima suppression to the responses to keep strongest corners.
~SUSANKeypoint() override=default
Empty destructor.
typename PointCloudN::Ptr PointCloudNPtr
typename PointCloudIn::ConstPtr PointCloudInConstPtr
void detectKeypoints(PointCloudOut &output) override
void setDistanceThreshold(float distance_threshold)
void setSearchSurface(const PointCloudInConstPtr &cloud) override
shared_ptr< SUSANKeypoint< PointInT, PointOutT, NormalT, IntensityT > > Ptr
bool initCompute() override
typename PointCloudN::ConstPtr PointCloudNConstPtr
typename Keypoint< PointInT, PointOutT >::PointCloudOut PointCloudOut
void setNumberOfThreads(unsigned int nr_threads)
Initialize the scheduler and set the number of threads to use.
typename Keypoint< PointInT, PointOutT >::PointCloudIn PointCloudIn
void setAngularThreshold(float angular_threshold)
set the angular_threshold value for detecting corners.
void setNormals(const PointCloudNConstPtr &normals)
set normals if precalculated normals are available.
SUSANKeypoint(float radius=0.01f, float distance_threshold=0.001f, float angular_threshold=0.0001f, float intensity_threshold=7.0f)
Constructor.
A point structure representing normal coordinates and the surface curvature estimate.