SIFT
algorithms.hpp
Go to the documentation of this file.
1 #ifndef ALGORITHMS_HPP
2 #define ALGORITHMS_HPP
3 
4 #include <vigra/multi_array.hxx>
5 #include <vigra/matrix.hxx>
6 
7 #include "point.hpp"
8 #include "types.hpp"
9 
10 namespace sift {
11  namespace alg {
18  const vigra::MultiArray<2, f32_t> convolveWithGauss(const vigra::MultiArray<2, f32_t>&,
19  f32_t);
20 
26  const vigra::MultiArray<2, f32_t> reduceToNextLevel(const vigra::MultiArray<2, f32_t>&,
27  f32_t);
28 
34  const vigra::MultiArray<2, f32_t> increaseToNextLevel(const vigra::MultiArray<2, f32_t>&,
35  f32_t);
36 
44  const vigra::MultiArray<2, f32_t> dog(const vigra::MultiArray<2, f32_t>&,
45  const vigra::MultiArray<2, f32_t>&);
46 
53  const vigra::Matrix<f32_t> foDerivative(const std::array<vigra::MultiArray<2, f32_t>, 3>&, const Point<u16_t, u16_t>&);
54 
64  const vigra::Matrix<f32_t> soDerivative(const std::array<vigra::MultiArray<2, f32_t>, 3>&, const Point<u16_t, u16_t>&);
65 
72  f32_t gradientMagnitude(const vigra::MultiArray<2, f32_t>&, const Point<u16_t, u16_t>&);
73 
80  f32_t gradientOrientation(const vigra::MultiArray<2, f32_t>&, const Point<u16_t, u16_t>&);
81 
92  const std::array<f32_t, 36> orientationHistogram36(const vigra::MultiArray<2, f32_t>&,
93  const vigra::MultiArray<2, f32_t>& , const vigra::MultiArray<2, f32_t>&);
94 
105  const std::vector<f32_t> orientationHistogram8(const vigra::MultiArray<2, f32_t>&,
106  const vigra::MultiArray<2, f32_t>&, const vigra::MultiArray<2, f32_t>&);
107 
115  f32_t vertexParabola(const Point<u16_t, f32_t>&, const Point<u16_t, f32_t>&,
116  const Point<u16_t, f32_t>&);
117 
127  std::array<Point<f32_t, f32_t>, 4> rotateShape(const Point<u16_t, u16_t>&, f32_t, const u16_t, const u16_t);
128 
133  void normalizeVector(std::vector<f32_t>&);
134  }
135 }
136 #endif //ALGORITHMS_HPP
float f32_t
Definition: types.hpp:13
unsigned short int u16_t
Definition: types.hpp:6
const vigra::MultiArray< 2, f32_t > increaseToNextLevel(const vigra::MultiArray< 2, f32_t > &img, f32_t sigma)
Definition: algorithms.cpp:38
const vigra::Matrix< f32_t > soDerivative(const std::array< vigra::MultiArray< 2, f32_t >, 3 > &img, const Point< u16_t, u16_t > &p)
Definition: algorithms.cpp:79
const std::array< f32_t, 36 > orientationHistogram36(const vigra::MultiArray< 2, f32_t > &orientations, const vigra::MultiArray< 2, f32_t > &magnitudes, const vigra::MultiArray< 2, f32_t > &current_gauss)
Definition: algorithms.cpp:118
void normalizeVector(std::vector< f32_t > &vec)
Definition: algorithms.cpp:210
const std::vector< f32_t > orientationHistogram8(const vigra::MultiArray< 2, f32_t > &orientations, const vigra::MultiArray< 2, f32_t > &magnitudes, const vigra::MultiArray< 2, f32_t > &current_gauss)
Definition: algorithms.cpp:135
const vigra::Matrix< f32_t > foDerivative(const std::array< vigra::MultiArray< 2, f32_t >, 3 > &img, const Point< u16_t, u16_t > &p)
Definition: algorithms.cpp:66
const vigra::MultiArray< 2, f32_t > convolveWithGauss(const vigra::MultiArray< 2, f32_t > &img, f32_t sigma)
Definition: algorithms.cpp:10
const vigra::MultiArray< 2, f32_t > dog(const vigra::MultiArray< 2, f32_t > &lower, const vigra::MultiArray< 2, f32_t > &higher)
Definition: algorithms.cpp:52
Definition: algorithms.cpp:8
f32_t vertexParabola(const Point< u16_t, f32_t > &ln, const Point< u16_t, f32_t > &peak, const Point< u16_t, f32_t > &rn)
Definition: algorithms.cpp:153
f32_t gradientOrientation(const vigra::MultiArray< 2, f32_t > &img, const Point< u16_t, u16_t > &p)
Definition: algorithms.cpp:113
std::array< Point< f32_t, f32_t >, 4 > rotateShape(const Point< u16_t, u16_t > &center, f32_t angle, const u16_t width, const u16_t height)
Definition: algorithms.cpp:180
const vigra::MultiArray< 2, f32_t > reduceToNextLevel(const vigra::MultiArray< 2, f32_t > &img, f32_t sigma)
Definition: algorithms.cpp:24
f32_t gradientMagnitude(const vigra::MultiArray< 2, f32_t > &img, const Point< u16_t, u16_t > &p)
Definition: algorithms.cpp:108