SIFTKeypoint detects the Scale Invariant Feature Transform keypoints for a given point cloud dataset containing points and intensity. This implementation adapts the original algorithm from images to point clouds. More...
#include <sift_keypoint.h>

| Public Types | |
| typedef boost::shared_ptr < const SIFTKeypoint< PointInT, PointOutT > > | ConstPtr | 
| typedef Keypoint< PointInT, PointOutT >::KdTree | KdTree | 
| typedef Keypoint< PointInT, PointOutT >::PointCloudIn | PointCloudIn | 
| typedef Keypoint< PointInT, PointOutT >::PointCloudOut | PointCloudOut | 
| typedef boost::shared_ptr < SIFTKeypoint< PointInT, PointOutT > > | Ptr | 
| Public Member Functions | |
| void | setMinimumContrast (float min_contrast) | 
| Provide a threshold to limit detection of keypoints without sufficient contrast. | |
| void | setScales (float min_scale, int nr_octaves, int nr_scales_per_octave) | 
| Specify the range of scales over which to search for keypoints. | |
| SIFTKeypoint () | |
| Empty constructor. | |
| Protected Member Functions | |
| void | detectKeypoints (PointCloudOut &output) | 
| Detect the SIFT keypoints for a set of points given in setInputCloud () using the spatial locator in setSearchMethod (). | |
| bool | initCompute () | 
| This method should get called before starting the actual computation. | |
| Private Member Functions | |
| void | computeScaleSpace (const PointCloudIn &input, KdTree &tree, const std::vector< float > &scales, Eigen::MatrixXf &diff_of_gauss) | 
| Compute the difference-of-Gaussian (DoG) scale space for the given input and scales. | |
| void | detectKeypointsForOctave (const PointCloudIn &input, KdTree &tree, float base_scale, int nr_scales_per_octave, PointCloudOut &output) | 
| Detect the SIFT keypoints for a given point cloud for a single octave. | |
| void | findScaleSpaceExtrema (const PointCloudIn &input, KdTree &tree, const Eigen::MatrixXf &diff_of_gauss, std::vector< int > &extrema_indices, std::vector< int > &extrema_scales) | 
| Find the local minima and maxima in the provided difference-of-Gaussian (DoG) scale space. | |
| Private Attributes | |
| SIFTKeypointFieldSelector < PointInT > | getFieldValue_ | 
| float | min_contrast_ | 
| The minimum contrast required for detection. | |
| float | min_scale_ | 
| The standard deviation of the smallest scale in the scale space. | |
| int | nr_octaves_ | 
| The number of octaves (i.e. doublings of scale) over which to search for keypoints. | |
| int | nr_scales_per_octave_ | 
| The number of scales to be computed for each octave. | |
| std::vector< pcl::PCLPointField > | out_fields_ | 
| The list of fields present in the output point cloud data. | |
| int | scale_idx_ | 
| Set to a value different than -1 if the output cloud has a "scale" field and we have to save the keypoints scales. | |
SIFTKeypoint detects the Scale Invariant Feature Transform keypoints for a given point cloud dataset containing points and intensity. This implementation adapts the original algorithm from images to point clouds.
For more information about the image-based SIFT interest operator, see:
David G. Lowe, "Distinctive image features from scale-invariant keypoints," International Journal of Computer Vision, 60, 2 (2004), pp. 91-110.
Definition at line 94 of file sift_keypoint.h.
| typedef boost::shared_ptr<const SIFTKeypoint<PointInT, PointOutT> > pcl::SIFTKeypoint< PointInT, PointOutT >::ConstPtr | 
Reimplemented from pcl::Keypoint< PointInT, PointOutT >.
Definition at line 98 of file sift_keypoint.h.
| typedef Keypoint<PointInT, PointOutT>::KdTree pcl::SIFTKeypoint< PointInT, PointOutT >::KdTree | 
Reimplemented from pcl::Keypoint< PointInT, PointOutT >.
Definition at line 102 of file sift_keypoint.h.
| typedef Keypoint<PointInT, PointOutT>::PointCloudIn pcl::SIFTKeypoint< PointInT, PointOutT >::PointCloudIn | 
Reimplemented from pcl::Keypoint< PointInT, PointOutT >.
Definition at line 100 of file sift_keypoint.h.
| typedef Keypoint<PointInT, PointOutT>::PointCloudOut pcl::SIFTKeypoint< PointInT, PointOutT >::PointCloudOut | 
Reimplemented from pcl::Keypoint< PointInT, PointOutT >.
Definition at line 101 of file sift_keypoint.h.
| typedef boost::shared_ptr<SIFTKeypoint<PointInT, PointOutT> > pcl::SIFTKeypoint< PointInT, PointOutT >::Ptr | 
Reimplemented from pcl::Keypoint< PointInT, PointOutT >.
Definition at line 97 of file sift_keypoint.h.
| pcl::SIFTKeypoint< PointInT, PointOutT >::SIFTKeypoint | ( | ) |  [inline] | 
Empty constructor.
Definition at line 112 of file sift_keypoint.h.
| void pcl::SIFTKeypoint< PointInT, PointOutT >::computeScaleSpace | ( | const PointCloudIn & | input, | 
| KdTree & | tree, | ||
| const std::vector< float > & | scales, | ||
| Eigen::MatrixXf & | diff_of_gauss | ||
| ) |  [private] | 
Compute the difference-of-Gaussian (DoG) scale space for the given input and scales.
| input | the point cloud for which the DoG scale space will be computed | 
| tree | a k-D tree of the points in input | 
| scales | a vector containing the scales over which to compute the DoG scale space | 
| diff_of_gauss | the resultant DoG scale space (in a number-of-points by number-of-scales matrix) | 
Definition at line 207 of file sift_keypoint.hpp.
| void pcl::SIFTKeypoint< PointInT, PointOutT >::detectKeypoints | ( | PointCloudOut & | output | ) |  [protected, virtual] | 
Detect the SIFT keypoints for a set of points given in setInputCloud () using the spatial locator in setSearchMethod ().
| output | the resultant cloud of keypoints | 
Implements pcl::Keypoint< PointInT, PointOutT >.
Definition at line 98 of file sift_keypoint.hpp.
| void pcl::SIFTKeypoint< PointInT, PointOutT >::detectKeypointsForOctave | ( | const PointCloudIn & | input, | 
| KdTree & | tree, | ||
| float | base_scale, | ||
| int | nr_scales_per_octave, | ||
| PointCloudOut & | output | ||
| ) |  [private] | 
Detect the SIFT keypoints for a given point cloud for a single octave.
| input | the point cloud to detect keypoints in | 
| tree | a k-D tree of the points in input | 
| base_scale | the first (smallest) scale in the octave | 
| nr_scales_per_octave | the number of scales to to compute | 
| output | the resultant point cloud containing the SIFT keypoints | 
Definition at line 152 of file sift_keypoint.hpp.
| void pcl::SIFTKeypoint< PointInT, PointOutT >::findScaleSpaceExtrema | ( | const PointCloudIn & | input, | 
| KdTree & | tree, | ||
| const Eigen::MatrixXf & | diff_of_gauss, | ||
| std::vector< int > & | extrema_indices, | ||
| std::vector< int > & | extrema_scales | ||
| ) |  [private] | 
Find the local minima and maxima in the provided difference-of-Gaussian (DoG) scale space.
| input | the input point cloud | 
| tree | a k-D tree of the points in input | 
| diff_of_gauss | the DoG scale space (in a number-of-points by number-of-scales matrix) | 
| extrema_indices | the resultant vector containing the point indices of each keypoint | 
| extrema_scales | the resultant vector containing the scale indices of each keypoint | 
Definition at line 258 of file sift_keypoint.hpp.
| bool pcl::SIFTKeypoint< PointInT, PointOutT >::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 64 of file sift_keypoint.hpp.
| void pcl::SIFTKeypoint< PointInT, PointOutT >::setMinimumContrast | ( | float | min_contrast | ) | 
Provide a threshold to limit detection of keypoints without sufficient contrast.
| min_contrast | the minimum contrast required for detection | 
Definition at line 57 of file sift_keypoint.hpp.
| void pcl::SIFTKeypoint< PointInT, PointOutT >::setScales | ( | float | min_scale, | 
| int | nr_octaves, | ||
| int | nr_scales_per_octave | ||
| ) | 
Specify the range of scales over which to search for keypoints.
| min_scale | the standard deviation of the smallest scale in the scale space | 
| nr_octaves | the number of octaves (i.e. doublings of scale) to compute | 
| nr_scales_per_octave | the number of scales to compute within each octave | 
Definition at line 47 of file sift_keypoint.hpp.
| SIFTKeypointFieldSelector<PointInT> pcl::SIFTKeypoint< PointInT, PointOutT >::getFieldValue_  [private] | 
Definition at line 200 of file sift_keypoint.h.
| float pcl::SIFTKeypoint< PointInT, PointOutT >::min_contrast_  [private] | 
The minimum contrast required for detection.
Definition at line 191 of file sift_keypoint.h.
| float pcl::SIFTKeypoint< PointInT, PointOutT >::min_scale_  [private] | 
The standard deviation of the smallest scale in the scale space.
Definition at line 182 of file sift_keypoint.h.
| int pcl::SIFTKeypoint< PointInT, PointOutT >::nr_octaves_  [private] | 
The number of octaves (i.e. doublings of scale) over which to search for keypoints.
Definition at line 185 of file sift_keypoint.h.
| int pcl::SIFTKeypoint< PointInT, PointOutT >::nr_scales_per_octave_  [private] | 
The number of scales to be computed for each octave.
Definition at line 188 of file sift_keypoint.h.
| std::vector<pcl::PCLPointField> pcl::SIFTKeypoint< PointInT, PointOutT >::out_fields_  [private] | 
The list of fields present in the output point cloud data.
Definition at line 198 of file sift_keypoint.h.
| int pcl::SIFTKeypoint< PointInT, PointOutT >::scale_idx_  [private] | 
Set to a value different than -1 if the output cloud has a "scale" field and we have to save the keypoints scales.
Definition at line 195 of file sift_keypoint.h.