00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef NORMALDETECTOR_H_
00024 #define NORMALDETECTOR_H_
00025
00026 #include <feature/InterestPoint.h>
00027 #include <feature/Detector.h>
00028 #include <feature/MultiScaleDetector.h>
00029 #include <utils/Convolution.h>
00030 #include <utils/PeakFinder.h>
00031 #include <utils/Regression.h>
00032
00033 #include <vector>
00034
00043 class NormalDetector: public MultiScaleDetector {
00044 public:
00055 NormalDetector(const PeakFinder* peak, unsigned int scales = 5, double sigma = 1.6, double step = 1.4, unsigned int window = 3, SmoothingFilterFamily filterType = BESSEL);
00056
00058 inline void setWindowSize(unsigned int size)
00059 {m_windowSize = size;}
00060
00062 inline unsigned int getWindowSize() const
00063 {return m_windowSize;}
00064
00065 protected:
00066 virtual void computeDifferentialBank() = 0;
00067 virtual void computeSignal(const LaserReading& reading, std::vector<double>& signal, std::vector<unsigned int>& maxRangeMapping) const;
00068 virtual unsigned int computeInterestPoints(const LaserReading& reading, const std::vector<double>& signal, std::vector<InterestPoint*>& point,
00069 std::vector< std::vector<unsigned int> >& indexes, std::vector<unsigned int>& maxRangeMapping) const;
00070
00071 unsigned int m_windowSize;
00072 };
00073
00074 #endif