SigmaTransform
The SigmaTransform unifies various known signal processing transforms, like the STFT and the wavelet transform, differing only by a specific diffeomorphism.
 All Classes Namespaces Files Functions Variables Typedefs Friends Macros
SigmaTransform2D.h
Go to the documentation of this file.
1 #ifndef SIGMATRANSFORM2D_H
2 #define SIGMATRANSFORM2D_H
3 
4 #include <math.h>
5 
6 #include "SigmaTransformN.h"
7 
8 namespace SigmaTransform {
14  point<2> polar(const point<2> &x);
15 
21  point<2> shear(const point<2> &x);
22 
29  point<2> parabolicAction(const point<2> &l ,const point<2> &r);
30 
36  class SigmaTransform2D : public SigmaTransform<2> {
37  public:
39  diffFunc<2> sigma = NULL,
40  winFunc<2> window = NULL,
41  const point<2> &Fs = point<2>(0),
42  const point<2> &size = point<2>(0),
43  const std::vector<point<2>> &steps = std::vector<point<2>>(0),
44  actFunc<2> act = minus<2>
45  );
47  diffFunc<2> sigma = NULL,
48  const point<2> &width = 0,
49  const point<2> &Fs = point<2>(0),
50  const point<2> &size = point<2>(0),
51  const std::vector<point<2>> &steps = std::vector<point<2>>(0),
52  actFunc<2> act = minus<2>
53  );
54  };
55 
62  class STFT2D : public SigmaTransform<2> {
63  public: STFT2D(
64  winFunc<2> window = NULL,
65  const point<2> &Fs = point<2>(0),
66  const point<2> &size = point<2>(0),
67  const std::vector<point<2>> &steps = std::vector<point<2>>(0)
68  );
69  STFT2D(
70  const point<2> &width,
71  const point<2> &Fs = point<2>(0),
72  const point<2> &size = point<2>(0),
73  const std::vector<point<2>> &steps = std::vector<point<2>>(0)
74  );
75  };
76 
83  class WaveletTransform2D : public SigmaTransform<2> {
84 
85  public:
87  winFunc<2> window = NULL,
88  const point<2> &Fs = point<2>(0),
89  const point<2> &size = point<2>(0),
90  const std::vector<point<2>> &steps = std::vector<point<2>>(0)
91  );
93  const point<2> &width,
94  const point<2> &Fs = point<2>(0),
95  const point<2> &size = point<2>(0),
96  const std::vector<point<2>> &steps = std::vector<point<2>>(0)
97  );
98  };
99 
100 
107  class SIM2D : public SigmaTransform<2> {
108 
109  public:
110  SIM2D(
111  winFunc<2> window = NULL,
112  const point<2> &Fs = point<2>(0),
113  const point<2> &size = point<2>(0),
114  const std::vector<point<2>> &steps = std::vector<point<2>>(0)
115  );
116  SIM2D(
117  const point<2> &width,
118  const point<2> &Fs = point<2>(0),
119  const point<2> &size = point<2>(0),
120  const std::vector<point<2>> &steps = std::vector<point<2>>(0)
121  );
122  };
123 
131  class Curvelet2D : public SigmaTransform<2> {
132 
133  public:
134  Curvelet2D(
135  winFunc<2> window = NULL,
136  const point<2> &Fs = point<2>(0),
137  const point<2> &size = point<2>(0),
138  const std::vector<point<2>> &steps = std::vector<point<2>>(0)
139  );
140  Curvelet2D(
141  const point<2> &width,
142  const point<2> &Fs = point<2>(0),
143  const point<2> &size = point<2>(0),
144  const std::vector<point<2>> &steps = std::vector<point<2>>(0)
145  );
146  };
147 
154  class NPShearlet2D : public SigmaTransform<2> {
155 
156  public:
157  NPShearlet2D(
158  winFunc<2> window = NULL,
159  const point<2> &Fs = point<2>(0),
160  const point<2> &size = point<2>(0),
161  const std::vector<point<2>> &steps = std::vector<point<2>>(0)
162  );
163  NPShearlet2D(
164  const point<2> &width,
165  const point<2> &Fs = point<2>(0),
166  const point<2> &size = point<2>(0),
167  const std::vector<point<2>> &steps = std::vector<point<2>>(0)
168  );
169  };
170 
178  class Shearlet2D : public SigmaTransform<2> {
179 
180  public:
181  Shearlet2D(
182  winFunc<2> window = NULL,
183  const point<2> &Fs = point<2>(0),
184  const point<2> &size = point<2>(0),
185  const std::vector<point<2>> &steps = std::vector<point<2>>(0)
186  );
187  Shearlet2D(
188  const point<2> &width,
189  const point<2> &Fs = point<2>(0),
190  const point<2> &size = point<2>(0),
191  const std::vector<point<2>> &steps = std::vector<point<2>>(0)
192  );
193  };
194 } // namespace SigmaTransform
195 
196 #endif //SIGMATRANSFORM1D_H