39 #ifndef PCL_SUSAN_KEYPOINT_H_
40 #define PCL_SUSAN_KEYPOINT_H_
42 #include <pcl/keypoints/keypoint.h>
43 #include <pcl/common/intensity.h>
56 template <
typename Po
intInT,
typename Po
intOutT,
typename NormalT = pcl::Normal,
typename IntensityT= pcl::common::IntensityFieldAccessor<Po
intInT> >
60 typedef boost::shared_ptr<SUSANKeypoint<PointInT, PointOutT, NormalT, IntensityT> >
Ptr;
61 typedef boost::shared_ptr<const SUSANKeypoint<PointInT, PointOutT, NormalT, Intensity> >
ConstPtr;
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)
100 name_ =
"SUSANKeypoint";
102 geometric_validation_ =
false;
103 tolerance_ = 2 * distance_threshold_;
177 const Eigen::Vector3f& centroid,
178 const Eigen::Vector3f& nc,
179 const PointInT& point)
const;
181 float distance_threshold_;
182 float angular_threshold_;
183 float intensity_threshold_;
186 unsigned int threads_;
187 bool geometric_validation_;
190 IntensityT intensity_;
196 std::vector<pcl::PCLPointField> out_fields_;
201 #include <pcl/keypoints/impl/susan.hpp>
203 #endif // #ifndef PCL_SUSAN_KEYPOINT_H_
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.
void setGeometricValidation(bool validate)
Filetr false positive using geometric criteria.
Keypoint< PointInT, PointOutT >::PointCloudOut PointCloudOut
virtual void setSearchSurface(const PointCloudInConstPtr &cloud)
Provide a pointer to the input dataset that we need to estimate features at every point for...
boost::shared_ptr< const PointCloud< PointT > > ConstPtr
void setIntensityThreshold(float intensity_threshold)
set the intensity_threshold value for detecting corners.
boost::shared_ptr< PointCloud< PointT > > Ptr
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 setNumberOfThreads(unsigned int nr_threads)
Initialize the scheduler and set the number of threads to use.
Keypoint< PointInT, PointOutT >::PointCloudIn PointCloudIn
virtual ~SUSANKeypoint()
Empty destructor.
PointCloudN::Ptr PointCloudNPtr
PointCloudIn::ConstPtr PointCloudInConstPtr
SUSANKeypoint implements a RGB-D extension of the SUSAN detector inluding normal directions variation...
void setAngularThreshold(float angular_threshold)
set the angular_threshold value for detecting corners.
void setNonMaxSupression(bool nonmax)
Apply non maxima suppression to the responses to keep strongest corners.
boost::shared_ptr< const SUSANKeypoint< PointInT, PointOutT, NormalT, Intensity > > ConstPtr
A point structure representing normal coordinates and the surface curvature estimate.
Keypoint< PointInT, PointOutT >::KdTree KdTree
double search_radius_
The nearest neighbors search radius for each point.
Keypoint represents the base class for key points.
void setRadius(float radius)
set the radius for normal estimation and non maxima supression.
boost::shared_ptr< SUSANKeypoint< PointInT, PointOutT, NormalT, IntensityT > > Ptr
std::string name_
The key point detection method's name.
void detectKeypoints(PointCloudOut &output)
Abstract key point detection method.
PointCloudN::ConstPtr PointCloudNConstPtr
void setDistanceThreshold(float distance_threshold)
pcl::PointCloud< NormalT > PointCloudN