Orfeo Toolbox  3.16
otbImageToSURFKeyPointSetFilter.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: ORFEO Toolbox
4  Language: C++
5  Date: $Date$
6  Version: $Revision$
7 
8 
9  Copyright (c) Centre National d'Etudes Spatiales. All rights reserved.
10  See OTBCopyright.txt for details.
11 
12  Copyright (c) CS Systemes d'information. All rights reserved.
13  See CSCopyright.txt for details.
14 
15  This software is distributed WITHOUT ANY WARRANTY; without even
16  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
17  PURPOSE. See the above copyright notices for more information.
18 
19 =========================================================================*/
20 #ifndef __otbImageToSURFKeyPointSetFilter_h
21 #define __otbImageToSURFKeyPointSetFilter_h
22 
23 #include "itkProcessObject.h"
26 #include "itkPointSet.h"
28 #include <otbImageList.h>
29 #include "itkResampleImageFilter.h"
31 #include "itkVector.h"
32 
33 #include "otbMath.h"
34 #include <iostream>
35 namespace otb
36 {
37 
61 template <class TInputImage, class TOutputPointSet>
63  : public ImageToPointSetFilter<TInputImage, TOutputPointSet>
64 {
65 
66 public:
67 
73 
75  itkNewMacro(Self);
76 
79 
81  typedef TInputImage InputImageType;
82  typedef typename InputImageType::Pointer InputImagePointerType;
83  typedef typename InputImageType::IndexType PixelIndex;
84  typedef typename InputImageType::IndexType IndexType;
85  typedef typename InputImageType::PixelType PixelValue;
86  typedef typename InputImageType::SpacingType SpacingType;
87  typedef typename InputImageType::SizeType SizeType;
88  typedef typename InputImageType::PointType PointImageType;
89 
90  typedef TOutputPointSet OutputPointSetType;
91  typedef typename TOutputPointSet::Pointer OutputPointSetPointerType;
92  typedef typename TOutputPointSet::PixelType OutputPixelType;
93  typedef typename TOutputPointSet::PointType OutputPointType;
94  typedef typename TOutputPointSet::PointIdentifier OutputPointIdentifierType;
95 
97  itkSetMacro(OctavesNumber, int);
98  itkGetMacro(OctavesNumber, int);
99 
101  itkSetMacro(ScalesNumber, int);
102  itkGetMacro(ScalesNumber, int);
103 
105  itkGetMacro(NumberOfPoints, int);
106 
111 
114 
118 
122 
124  typedef std::vector<double> VectorType;
126 
127 protected:
128 
136  virtual ~ImageToSURFKeyPointSetFilter();
140  virtual void PrintSelf(std::ostream& os, itk::Indent indent) const;
144  virtual void GenerateData();
145 
152  virtual bool IsLocalExtremum(const NeighborhoodType& neigh);
153 
161  virtual bool IsLocalExtremumAround(const NeighborhoodType& neigh,
162  double CenterValue);
163 
176  bool RefineLocationKeyPoint(const NeighborhoodIteratorType& currentScale,
177  const NeighborhoodIteratorType& previousScale,
178  const NeighborhoodIteratorType& nextScale,
179  VectorPointType& solution);
180 
188  virtual double AssignOrientation(const NeighborhoodType& neigh,
189  double S);
190 
199  virtual VectorType ComputeDescriptor(const NeighborhoodType& neigh,
200  double O,
201  double S);
205  virtual int GetMin(int a, int b, int c);
206 
207 private:
208 
209  ImageToSURFKeyPointSetFilter(const Self &); //purposely not implemented
210  void operator =(const Self&); //purposely not implemented
211 
214 
217 
220 
223 
229 
232 
233  /*Resample Filter*/
235 
238 
241 
243  OffsetType m_Offsets[8];
244 };
245 }
246 #ifndef OTB_MANUAL_INSTANTIATION
248 #endif
249 
250 #endif

Generated at Sun May 19 2013 00:32:01 for Orfeo Toolbox with doxygen 1.8.3.1