Public Types | Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes
pcl::SIFTKeypoint< PointInT, PointOutT > Class Template Reference

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>

Inheritance diagram for pcl::SIFTKeypoint< PointInT, PointOutT >:
Inheritance graph
[legend]

List of all members.

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::PCLPointFieldout_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.

Detailed Description

template<typename PointInT, typename PointOutT>
class pcl::SIFTKeypoint< PointInT, PointOutT >

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.

Author:
Michael Dixon

Definition at line 94 of file sift_keypoint.h.


Member Typedef Documentation

template<typename PointInT, typename PointOutT>
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.

template<typename PointInT, typename PointOutT>
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.

template<typename PointInT, typename PointOutT>
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.

template<typename PointInT, typename PointOutT>
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.

template<typename PointInT, typename PointOutT>
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.


Constructor & Destructor Documentation

template<typename PointInT, typename PointOutT>
pcl::SIFTKeypoint< PointInT, PointOutT >::SIFTKeypoint ( ) [inline]

Empty constructor.

Definition at line 112 of file sift_keypoint.h.


Member Function Documentation

template<typename PointInT , typename PointOutT >
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.

Parameters:
inputthe point cloud for which the DoG scale space will be computed
treea k-D tree of the points in input
scalesa vector containing the scales over which to compute the DoG scale space
diff_of_gaussthe resultant DoG scale space (in a number-of-points by number-of-scales matrix)

Definition at line 207 of file sift_keypoint.hpp.

template<typename PointInT , typename PointOutT >
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 ().

Parameters:
outputthe resultant cloud of keypoints

Implements pcl::Keypoint< PointInT, PointOutT >.

Definition at line 98 of file sift_keypoint.hpp.

template<typename PointInT , typename PointOutT >
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.

Parameters:
inputthe point cloud to detect keypoints in
treea k-D tree of the points in input
base_scalethe first (smallest) scale in the octave
nr_scales_per_octavethe number of scales to to compute
outputthe resultant point cloud containing the SIFT keypoints

Definition at line 152 of file sift_keypoint.hpp.

template<typename PointInT , typename PointOutT >
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.

Parameters:
inputthe input point cloud
treea k-D tree of the points in input
diff_of_gaussthe DoG scale space (in a number-of-points by number-of-scales matrix)
extrema_indicesthe resultant vector containing the point indices of each keypoint
extrema_scalesthe resultant vector containing the scale indices of each keypoint

Definition at line 258 of file sift_keypoint.hpp.

template<typename PointInT , typename PointOutT >
bool pcl::SIFTKeypoint< PointInT, PointOutT >::initCompute ( ) [protected, virtual]

This method should get called before starting the actual computation.

Internally, initCompute() does the following:

  • checks if an input dataset is given, and returns false otherwise
  • checks whether a set of input indices has been given. Returns true if yes.
  • if no input indices have been given, a fake set is created, which will be used until:
    • either a new set is given via setIndices(), or
    • a new cloud is given that has a different set of points. This will trigger an update on the set of fake indices

Reimplemented from pcl::Keypoint< PointInT, PointOutT >.

Definition at line 64 of file sift_keypoint.hpp.

template<typename PointInT , typename PointOutT >
void pcl::SIFTKeypoint< PointInT, PointOutT >::setMinimumContrast ( float  min_contrast)

Provide a threshold to limit detection of keypoints without sufficient contrast.

Parameters:
min_contrastthe minimum contrast required for detection

Definition at line 57 of file sift_keypoint.hpp.

template<typename PointInT , typename PointOutT >
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.

Parameters:
min_scalethe standard deviation of the smallest scale in the scale space
nr_octavesthe number of octaves (i.e. doublings of scale) to compute
nr_scales_per_octavethe number of scales to compute within each octave

Definition at line 47 of file sift_keypoint.hpp.


Member Data Documentation

template<typename PointInT, typename PointOutT>
SIFTKeypointFieldSelector<PointInT> pcl::SIFTKeypoint< PointInT, PointOutT >::getFieldValue_ [private]

Definition at line 200 of file sift_keypoint.h.

template<typename PointInT, typename PointOutT>
float pcl::SIFTKeypoint< PointInT, PointOutT >::min_contrast_ [private]

The minimum contrast required for detection.

Definition at line 191 of file sift_keypoint.h.

template<typename PointInT, typename PointOutT>
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.

template<typename PointInT, typename PointOutT>
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.

template<typename PointInT, typename PointOutT>
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.

template<typename PointInT, typename PointOutT>
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.

template<typename PointInT, typename PointOutT>
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.


The documentation for this class was generated from the following files:


pcl
Author(s): Open Perception
autogenerated on Wed Aug 26 2015 15:43:35