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;
90 float distance_threshold = 0.001f,
91 float angular_threshold = 0.0001f,
92 float intensity_threshold = 7.0f)
93 : distance_threshold_ (distance_threshold)
94 , angular_threshold_ (angular_threshold)
95 , intensity_threshold_ (intensity_threshold)
101 name_ =
"SUSANKeypoint";
103 geometric_validation_ =
false;
104 tolerance_ = 2 * distance_threshold_;
137 setNormals (
const PointCloudNConstPtr &normals);
178 const Eigen::Vector3f& centroid,
179 const Eigen::Vector3f& nc,
180 const PointInT& point)
const;
182 float distance_threshold_;
183 float angular_threshold_;
184 float intensity_threshold_;
186 PointCloudNConstPtr normals_;
187 unsigned int threads_;
188 bool geometric_validation_;
191 IntensityT intensity_;
197 std::vector<pcl::PCLPointField> out_fields_;
202 #include <pcl/keypoints/impl/susan.hpp> 204 #endif // #ifndef PCL_SUSAN_KEYPOINT_H_ void setNormals(const PointCloudNConstPtr &normals)
set normals if precalculated normals are available.
A point structure representing normal coordinates and the surface curvature estimate.
void setRadius(float radius)
set the radius for normal estimation and non maxima supression.
virtual void setSearchSurface(const PointCloudInConstPtr &cloud)
PointCloudIn::ConstPtr PointCloudInConstPtr
SUSANKeypoint(float radius=0.01f, float distance_threshold=0.001f, float angular_threshold=0.0001f, float intensity_threshold=7.0f)
Constructor.
void setNumberOfThreads(unsigned int nr_threads)
Initialize the scheduler and set the number of threads to use.
std::string name_
The key point detection method's name.
void setDistanceThreshold(float distance_threshold)
double search_radius_
The nearest neighbors search radius for each point.
pcl::PointCloud< NormalT > PointCloudN
boost::shared_ptr< PointCloud< NormalT > > Ptr
Keypoint represents the base class for key points.
void setGeometricValidation(bool validate)
Filetr false positive using geometric criteria.
Keypoint< PointInT, PointOutT >::KdTree KdTree
PointCloudN::Ptr PointCloudNPtr
void setAngularThreshold(float angular_threshold)
set the angular_threshold value for detecting corners.
boost::shared_ptr< const PointCloud< PointInT > > ConstPtr
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 detectKeypoints(PointCloudOut &output)
Abstract key point detection method.
virtual ~SUSANKeypoint()
Empty destructor.
boost::shared_ptr< const SUSANKeypoint< PointInT, PointOutT, NormalT, Intensity > > ConstPtr
void setNonMaxSupression(bool nonmax)
Apply non maxima suppression to the responses to keep strongest corners.
SUSANKeypoint implements a RGB-D extension of the SUSAN detector inluding normal directions variation...
Keypoint< PointInT, PointOutT >::PointCloudOut PointCloudOut
Keypoint< PointInT, PointOutT >::PointCloudIn PointCloudIn
PointCloudN::ConstPtr PointCloudNConstPtr
boost::shared_ptr< SUSANKeypoint< PointInT, PointOutT, NormalT, IntensityT > > Ptr
void setIntensityThreshold(float intensity_threshold)
set the intensity_threshold value for detecting corners.