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> >
99 name_ =
"SUSANKeypoint";
101 geometric_validation_ =
false;
102 tolerance_ = 2 * distance_threshold_;
176 const Eigen::Vector3f& centroid,
177 const Eigen::Vector3f&
nc,
180 float distance_threshold_;
181 float angular_threshold_;
182 float intensity_threshold_;
185 unsigned int threads_;
186 bool geometric_validation_;
195 std::vector<pcl::PCLPointField> out_fields_;
200#include <pcl/keypoints/impl/susan.hpp>
Iterator class for point clouds with or without given indices.
Keypoint represents the base class for key points.
int k_
The number of K nearest neighbors to use for each point.
std::string name_
The key point detection method's name.
double search_parameter_
The actual search parameter (casted from either search_radius_ or k_).
pcl::PointIndicesPtr keypoints_indices_
Indices of the keypoints in the input cloud.
KdTreePtr tree_
A pointer to the spatial search object.
PointCloudInConstPtr surface_
An input point cloud describing the surface that is to be used for nearest neighbors estimation.
double search_radius_
The nearest neighbors search radius for each point.
PointCloudConstPtr input_
The input point cloud dataset.
IndicesPtr indices_
A pointer to the vector of point indices to use.
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...
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.
typename PointCloudN::Ptr PointCloudNPtr
typename PointCloudIn::ConstPtr PointCloudInConstPtr
~SUSANKeypoint()
Empty destructor.
void detectKeypoints(PointCloudOut &output) override
void setDistanceThreshold(float distance_threshold)
void setSearchSurface(const PointCloudInConstPtr &cloud) override
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.