Point Cloud Library (PCL)
1.7.0
|
SUSANKeypoint implements a RGB-D extension of the SUSAN detector inluding normal directions variation in top of intensity variation. More...
#include <pcl/keypoints/susan.h>
Public Types | |
typedef boost::shared_ptr < SUSANKeypoint< PointInT, PointOutT, NormalT, IntensityT > > | Ptr |
typedef boost::shared_ptr < const SUSANKeypoint < PointInT, PointOutT, NormalT, Intensity > > | ConstPtr |
typedef Keypoint< PointInT, PointOutT >::PointCloudIn | PointCloudIn |
typedef Keypoint< PointInT, PointOutT >::PointCloudOut | PointCloudOut |
typedef Keypoint< PointInT, PointOutT >::KdTree | KdTree |
typedef PointCloudIn::ConstPtr | PointCloudInConstPtr |
typedef pcl::PointCloud< NormalT > | PointCloudN |
typedef PointCloudN::Ptr | PointCloudNPtr |
typedef PointCloudN::ConstPtr | PointCloudNConstPtr |
Public Member Functions | |
SUSANKeypoint (float radius=0.01f, float distance_threshold=0.001f, float angular_threshold=0.0001f, float intensity_threshold=7.0f) | |
Constructor. | |
virtual | ~SUSANKeypoint () |
Empty destructor. | |
void | setRadius (float radius) |
set the radius for normal estimation and non maxima supression. | |
void | setDistanceThreshold (float distance_threshold) |
void | setAngularThreshold (float angular_threshold) |
set the angular_threshold value for detecting corners. | |
void | setIntensityThreshold (float intensity_threshold) |
set the intensity_threshold value for detecting corners. | |
void | setNormals (const PointCloudNConstPtr &normals) |
set normals if precalculated normals are available. | |
virtual void | setSearchSurface (const PointCloudInConstPtr &cloud) |
void | setNumberOfThreads (unsigned int nr_threads) |
Initialize the scheduler and set the number of threads to use. | |
void | setNonMaxSupression (bool nonmax) |
Apply non maxima suppression to the responses to keep strongest corners. | |
void | setGeometricValidation (bool validate) |
Filetr false positive using geometric criteria. | |
Protected Member Functions | |
bool | initCompute () |
This method should get called before starting the actual computation. | |
void | detectKeypoints (PointCloudOut &output) |
Abstract key point detection method. | |
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 |
SUSANKeypoint implements a RGB-D extension of the SUSAN detector inluding normal directions variation in top of intensity variation.
It is different from Harris in that it exploits normals directly so it is faster. Original paper "SUSAN — A New Approach to Low Level Image Processing", Smith, Stephen M. and Brady, J. Michael
typedef boost::shared_ptr<const SUSANKeypoint<PointInT, PointOutT, NormalT, Intensity> > pcl::SUSANKeypoint< PointInT, PointOutT, NormalT, IntensityT >::ConstPtr |
Reimplemented from pcl::Keypoint< PointInT, PointOutT >.
typedef Keypoint<PointInT, PointOutT>::KdTree pcl::SUSANKeypoint< PointInT, PointOutT, NormalT, IntensityT >::KdTree |
Reimplemented from pcl::Keypoint< PointInT, PointOutT >.
typedef Keypoint<PointInT, PointOutT>::PointCloudIn pcl::SUSANKeypoint< PointInT, PointOutT, NormalT, IntensityT >::PointCloudIn |
Reimplemented from pcl::Keypoint< PointInT, PointOutT >.
typedef PointCloudIn::ConstPtr pcl::SUSANKeypoint< PointInT, PointOutT, NormalT, IntensityT >::PointCloudInConstPtr |
Reimplemented from pcl::Keypoint< PointInT, PointOutT >.
typedef pcl::PointCloud<NormalT> pcl::SUSANKeypoint< PointInT, PointOutT, NormalT, IntensityT >::PointCloudN |
typedef PointCloudN::ConstPtr pcl::SUSANKeypoint< PointInT, PointOutT, NormalT, IntensityT >::PointCloudNConstPtr |
typedef PointCloudN::Ptr pcl::SUSANKeypoint< PointInT, PointOutT, NormalT, IntensityT >::PointCloudNPtr |
typedef Keypoint<PointInT, PointOutT>::PointCloudOut pcl::SUSANKeypoint< PointInT, PointOutT, NormalT, IntensityT >::PointCloudOut |
Reimplemented from pcl::Keypoint< PointInT, PointOutT >.
typedef boost::shared_ptr<SUSANKeypoint<PointInT, PointOutT, NormalT, IntensityT> > pcl::SUSANKeypoint< PointInT, PointOutT, NormalT, IntensityT >::Ptr |
Reimplemented from pcl::Keypoint< PointInT, PointOutT >.
pcl::SUSANKeypoint< PointInT, PointOutT, NormalT, IntensityT >::SUSANKeypoint | ( | float | radius = 0.01f , |
float | distance_threshold = 0.001f , |
||
float | angular_threshold = 0.0001f , |
||
float | intensity_threshold = 7.0f |
||
) | [inline] |
Constructor.
[in] | radius | the radius for normal estimation as well as for non maxima suppression |
[in] | distance_threshold | to test if the nucleus is far enough from the centroid |
[in] | angular_threshold | to test if normals are parallel |
[in] | intensity_threshold | to test if points are of same color |
Definition at line 88 of file susan.h.
References pcl::Keypoint< PointInT, PointOutT >::name_, and pcl::Keypoint< PointInT, PointOutT >::search_radius_.
virtual pcl::SUSANKeypoint< PointInT, PointOutT, NormalT, IntensityT >::~SUSANKeypoint | ( | ) | [inline, virtual] |
void pcl::SUSANKeypoint< PointInT, PointOutT, NormalT, IntensityT >::detectKeypoints | ( | PointCloudOut & | output | ) | [protected, virtual] |
Abstract key point detection method.
Implements pcl::Keypoint< PointInT, PointOutT >.
Definition at line 302 of file susan.hpp.
References pcl::isFinite().
bool pcl::SUSANKeypoint< PointInT, PointOutT, NormalT, IntensityT >::initCompute | ( | ) | [protected, virtual] |
This method should get called before starting the actual computation.
Internally, initCompute() does the following:
Reimplemented from pcl::Keypoint< PointInT, PointOutT >.
Definition at line 215 of file susan.hpp.
References pcl::Feature< PointInT, PointOutT >::compute(), pcl::IntegralImageNormalEstimation< PointInT, PointOutT >::setInputCloud(), pcl::NormalEstimation< PointInT, PointOutT >::setInputCloud(), pcl::IntegralImageNormalEstimation< PointInT, PointOutT >::setNormalEstimationMethod(), pcl::IntegralImageNormalEstimation< PointInT, PointOutT >::setNormalSmoothingSize(), and pcl::Feature< PointInT, PointOutT >::setRadiusSearch().
bool pcl::SUSANKeypoint< PointInT, PointOutT, NormalT, IntensityT >::isWithinNucleusCentroid | ( | const Eigen::Vector3f & | nucleus, |
const Eigen::Vector3f & | centroid, | ||
const Eigen::Vector3f & | nc, | ||
const PointInT & | point | ||
) | const [protected] |
return true if a point lies within the line between the nucleus and the centroid
[in] | nucleus | coordinate of the nucleus |
[in] | centroid | of the USAN [in] nucleus to centroid vector (used to speed up since it is constant for a given neighborhood) |
[in] | point | the query point to test against |
void pcl::SUSANKeypoint< PointInT, PointOutT, NormalT, IntensityT >::setAngularThreshold | ( | float | angular_threshold | ) |
void pcl::SUSANKeypoint< PointInT, PointOutT, NormalT, IntensityT >::setDistanceThreshold | ( | float | distance_threshold | ) |
void pcl::SUSANKeypoint< PointInT, PointOutT, NormalT, IntensityT >::setGeometricValidation | ( | bool | validate | ) |
void pcl::SUSANKeypoint< PointInT, PointOutT, NormalT, IntensityT >::setIntensityThreshold | ( | float | intensity_threshold | ) |
void pcl::SUSANKeypoint< PointInT, PointOutT, NormalT, IntensityT >::setNonMaxSupression | ( | bool | nonmax | ) |
void pcl::SUSANKeypoint< PointInT, PointOutT, NormalT, IntensityT >::setNormals | ( | const PointCloudNConstPtr & | normals | ) |
void pcl::SUSANKeypoint< PointInT, PointOutT, NormalT, IntensityT >::setNumberOfThreads | ( | unsigned int | nr_threads | ) |
void pcl::SUSANKeypoint< PointInT, PointOutT, NormalT, IntensityT >::setRadius | ( | float | radius | ) |
void pcl::SUSANKeypoint< PointInT, PointOutT, NormalT, IntensityT >::setSearchSurface | ( | const PointCloudInConstPtr & | cloud | ) | [virtual] |