#include <MultiScaleDetector.h>
Public Member Functions | |
virtual void | detect (const std::vector< double > &signal, std::vector< std::vector< double > > &signalSmooth, std::vector< std::vector< double > > &signalDiff, std::vector< std::vector< unsigned int > > &indexes) const |
virtual unsigned int | detect (const LaserReading &reading, std::vector< InterestPoint * > &point, std::vector< double > &signal, std::vector< std::vector< double > > &signalSmooth, std::vector< std::vector< double > > &signalDiff, std::vector< std::vector< unsigned int > > &indexes) const |
virtual unsigned int | detect (const LaserReading &reading, std::vector< InterestPoint * > &point) const |
double | getBaseSigma () const |
SmoothingFilterFamily | getFilterType () const |
const PeakFinder * | getPeakFinder () const |
unsigned int | getScaleNumber () const |
const std::vector< double > & | getScales () const |
double | getSigmaStep () const |
bool | getUseMaxRange () |
MultiScaleDetector (const PeakFinder *peak, unsigned int scales=5, double sigma=1.6, double step=1.4, SmoothingFilterFamily filterType=BESSEL) | |
void | setBaseSigma (double sigma) |
void | setFilterType (SmoothingFilterFamily filterType) |
void | setPeakFinder (const PeakFinder *peak) |
void | setScaleNumber (unsigned int scales) |
void | setSigmaStep (double step) |
void | setUseMaxRange (bool use) |
Protected Member Functions | |
virtual void | computeDifferentialBank ()=0 |
virtual void | computeFilterBank () |
virtual unsigned int | computeInterestPoints (const LaserReading &reading, const std::vector< double > &signal, std::vector< InterestPoint * > &point, std::vector< std::vector< unsigned int > > &indexes, std::vector< unsigned int > &maxRangeMapping) const =0 |
virtual void | computeSignal (const LaserReading &reading, std::vector< double > &signal, std::vector< unsigned int > &maxRangeMapping) const =0 |
Protected Attributes | |
double | m_baseSigma |
std::vector< std::vector < double > > | m_differentialBank |
std::vector< std::vector < double > > | m_filterBank |
SmoothingFilterFamily | m_filterType |
const PeakFinder * | m_peakFinder |
unsigned int | m_scaleNumber |
std::vector< double > | m_scales |
double | m_sigmaStep |
bool | m_useMaxRange |
Representation of an abstract multi scale detector for monodimensional signals. The class represents an abstract multi scale detector for monodimensional signals. It provides the interface to set the parameters of the detector and to detect interest points in laser readings.
Definition at line 55 of file MultiScaleDetector.h.
MultiScaleDetector::MultiScaleDetector | ( | const PeakFinder * | peak, | |
unsigned int | scales = 5 , |
|||
double | sigma = 1.6 , |
|||
double | step = 1.4 , |
|||
SmoothingFilterFamily | filterType = BESSEL | |||
) |
Constructor. Constructs and initialize the shared part of a general multi scale detector for monodimensional signals.
peak | The peak finder used to detect maxima in the signal. | |
scales | The number of different scales to consider. | |
sigma | The standard deviation of the smoothing kernel for the initial scale ( in the paper). | |
step | The scale increment at every new scale ( in the paper). The standard deviation of the kernel at scale is | |
filterType | The smoothing kernel used in the detector. |
Definition at line 4 of file MultiScaleDetector.cpp.
virtual void MultiScaleDetector::computeDifferentialBank | ( | ) | [protected, pure virtual] |
Precomputes the bank of differential operators. It defines which family of interest point detector to use (blob, edge, ridge, ...).
Implemented in NormalBlobDetector, NormalDetector, NormalEdgeDetector, and RangeDetector.
void MultiScaleDetector::computeFilterBank | ( | ) | [protected, virtual] |
Precomputes the bank of smoothing operators. It is provided for efficiency issues.
Definition at line 55 of file MultiScaleDetector.cpp.
virtual unsigned int MultiScaleDetector::computeInterestPoints | ( | const LaserReading & | reading, | |
const std::vector< double > & | signal, | |||
std::vector< InterestPoint * > & | point, | |||
std::vector< std::vector< unsigned int > > & | indexes, | |||
std::vector< unsigned int > & | maxRangeMapping | |||
) | const [protected, pure virtual] |
Computes the interst point locations and (when possible) orientation. The points are extracted from the laser reading according to the indexes.
Implemented in NormalDetector, and RangeDetector.
virtual void MultiScaleDetector::computeSignal | ( | const LaserReading & | reading, | |
std::vector< double > & | signal, | |||
std::vector< unsigned int > & | maxRangeMapping | |||
) | const [protected, pure virtual] |
Computes the monodimensional signal from which extracts the features.
Implemented in NormalDetector, and RangeDetector.
void MultiScaleDetector::detect | ( | const std::vector< double > & | signal, | |
std::vector< std::vector< double > > & | signalSmooth, | |||
std::vector< std::vector< double > > & | signalDiff, | |||
std::vector< std::vector< unsigned int > > & | indexes | |||
) | const [virtual] |
Detects the interesting points given the laser reading. It also returns the signals used for the computation.
signal | The signal used for computing the interest points. | |
signalSmooth | The smoothed signal at the different scales. | |
signalDiff | The differential operator applied to the signal at the different scales. | |
indexes | The indexes of the differential operator maxima at the different scales. |
Definition at line 35 of file MultiScaleDetector.cpp.
unsigned int MultiScaleDetector::detect | ( | const LaserReading & | reading, | |
std::vector< InterestPoint * > & | points, | |||
std::vector< double > & | signal, | |||
std::vector< std::vector< double > > & | signalSmooth, | |||
std::vector< std::vector< double > > & | signalDiff, | |||
std::vector< std::vector< unsigned int > > & | indexes | |||
) | const [virtual] |
Detects the interesting points given the laser reading. It also returns the signals used for the computation.
reading | The laser reading. | |
points | The detected interest points. | |
signal | The signal used for computing the interest points. | |
signalSmooth | The smoothed signal at the different scales. | |
signalDiff | The differential operator applied to the signal at the different scales. | |
indexes | The indexes of the differential operator maxima at the different scales. |
Implements Detector.
Definition at line 23 of file MultiScaleDetector.cpp.
unsigned int MultiScaleDetector::detect | ( | const LaserReading & | reading, | |
std::vector< InterestPoint * > & | points | |||
) | const [virtual] |
Detects the interesting points given the laser reading.
reading | The laser reading. | |
points | The detected interest points. |
Implements Detector.
Definition at line 15 of file MultiScaleDetector.cpp.
double MultiScaleDetector::getBaseSigma | ( | ) | const [inline] |
Gets the standard deviation of the initial scale
Definition at line 128 of file MultiScaleDetector.h.
SmoothingFilterFamily MultiScaleDetector::getFilterType | ( | ) | const [inline] |
Gets the type of smoothing kernel
Definition at line 116 of file MultiScaleDetector.h.
const PeakFinder* MultiScaleDetector::getPeakFinder | ( | ) | const [inline] |
Gets the actual peak finder
Definition at line 136 of file MultiScaleDetector.h.
unsigned int MultiScaleDetector::getScaleNumber | ( | ) | const [inline] |
Gets the number of scales
Definition at line 120 of file MultiScaleDetector.h.
const std::vector<double>& MultiScaleDetector::getScales | ( | ) | const [inline] |
Gets the actual scales
Definition at line 124 of file MultiScaleDetector.h.
double MultiScaleDetector::getSigmaStep | ( | ) | const [inline] |
Gets the sigma increment step
Definition at line 132 of file MultiScaleDetector.h.
bool MultiScaleDetector::getUseMaxRange | ( | ) | [inline] |
Gets the "use the max range" flag.
Definition at line 140 of file MultiScaleDetector.h.
void MultiScaleDetector::setBaseSigma | ( | double | sigma | ) | [inline] |
Sets the standard deviation of the initial scale
Definition at line 100 of file MultiScaleDetector.h.
void MultiScaleDetector::setFilterType | ( | SmoothingFilterFamily | filterType | ) | [inline] |
Sets the type of smoothing kernel
Definition at line 92 of file MultiScaleDetector.h.
void MultiScaleDetector::setPeakFinder | ( | const PeakFinder * | peak | ) | [inline] |
Sets the peak finder
Definition at line 108 of file MultiScaleDetector.h.
void MultiScaleDetector::setScaleNumber | ( | unsigned int | scales | ) | [inline] |
Sets the number of scales
Definition at line 96 of file MultiScaleDetector.h.
void MultiScaleDetector::setSigmaStep | ( | double | step | ) | [inline] |
Sets the scale increment at each new scale
Definition at line 104 of file MultiScaleDetector.h.
void MultiScaleDetector::setUseMaxRange | ( | bool | use | ) | [inline] |
Sets the "use max range" flag. The flag enable or disable the use of max range readings.
Definition at line 112 of file MultiScaleDetector.h.
double MultiScaleDetector::m_baseSigma [protected] |
The standard deviation of the smoothing kernel for the initial scale ( in the paper).
Definition at line 159 of file MultiScaleDetector.h.
std::vector< std::vector<double> > MultiScaleDetector::m_differentialBank [protected] |
The precomputed bank of differential operators. It defines which family of interest point detector to use (blob, edge, ridge, ...).
Definition at line 164 of file MultiScaleDetector.h.
std::vector< std::vector<double> > MultiScaleDetector::m_filterBank [protected] |
The precomputed bank of smoothing operators. It is provided for efficiency issues.
Definition at line 163 of file MultiScaleDetector.h.
Definition at line 162 of file MultiScaleDetector.h.
const PeakFinder* MultiScaleDetector::m_peakFinder [protected] |
The peak finder used to detect maxima in the signal.
Definition at line 157 of file MultiScaleDetector.h.
unsigned int MultiScaleDetector::m_scaleNumber [protected] |
The numebr of scales
Definition at line 158 of file MultiScaleDetector.h.
std::vector<double> MultiScaleDetector::m_scales [protected] |
The precomputed scales for the smoothing operators. It is provided for efficiency issues.
Definition at line 165 of file MultiScaleDetector.h.
double MultiScaleDetector::m_sigmaStep [protected] |
The scale increment at every new scale ( in the paper). The standard deviation of the kernel at scale is
Definition at line 160 of file MultiScaleDetector.h.
bool MultiScaleDetector::m_useMaxRange [protected] |
The "use max range" flag. The flag enable or disable the use of max range readings.
Definition at line 161 of file MultiScaleDetector.h.