VAPoR  0.1
MatWaveDwt.h
Go to the documentation of this file.
1 
2 #ifndef _MatWaveDwt_h_
3 #define _MatWaveDwt_h_
4 
5 #include "MatWaveBase.h"
6 
7 namespace VAPoR {
8 
9 //
22 class MatWaveDwt : public MatWaveBase {
23 
24 public:
25 
33  MatWaveDwt(const string &wname, const string &mode);
34  MatWaveDwt(const string &wname);
35  virtual ~MatWaveDwt();
36 
58  //
59  int dwt(const double *sigIn, size_t sigInLength, double *C, size_t L[3]);
60  int dwt(const float *sigIn, size_t sigInLength, float *C, size_t L[3]);
61  int dwt(const double *sigIn, size_t sigInLength, double *cA, double *cD, size_t L[3]);
62  int dwt(const float *sigIn, size_t sigInLength, float *cA, float *cD, size_t L[3]);
63 
82  //
83  int idwt(const double *C, const size_t L[3], double *sigOut);
84  int idwt(const float *C, const size_t L[3], float *sigOut);
85  int idwt(const double *cA, const double *cD, const size_t L[3], double *sigOut);
86  int idwt(const float *cA, const float *cD, const size_t L[3], float *sigOut);
87 
119  //
120  int dwt2d(
121  const double *sigIn, size_t sigInX, size_t sigInY, double *C, size_t L[10]
122  );
123  int dwt2d(
124  const float *sigIn, size_t sigInX, size_t sigInY, float *C, size_t L[10]
125  );
126  int dwt2d(
127  const double *sigIn, size_t sigInX, size_t sigInY,
128  double *cA, double *cDh, double *cDv, double *cDd, size_t L[10]
129  );
130  int dwt2d(
131  const float *sigIn, size_t sigInX, size_t sigInY,
132  float *cA, float *cDh, float *cDv, float *cDd, size_t L[10]
133  );
134 
158  //
159  int idwt2d(const double *C, const size_t L[10], double *sigOut);
160  int idwt2d(const float *C, const size_t L[10], float *sigOut);
161  int idwt2d(
162  const double *cA, const double *cDh, const double *cDv, const double *cDd,
163  const size_t L[10], double *sigOut
164  );
165  int idwt2d(
166  const float *cA, const float *cDh, const float *cDv, const float *cDd,
167  const size_t L[10], float *sigOut
168  );
169 
175  int dwt3d(
176  const double *sigIn, size_t sigInX, size_t sigInY, size_t sigInZ,
177  double *C, size_t L[27]
178  );
179  int dwt3d(
180  const float *sigIn, size_t sigInX, size_t sigInY, size_t sigInZ,
181  float *C, size_t L[27]
182  );
183 
185  //
186  int idwt3d(const double *C, const size_t L[27], double *sigOut);
187  int idwt3d(const float *C, const size_t L[27], float *sigOut);
188  int idwt3d(
189  const double *cLLL, const double *cLLH, const double *cLHL,
190  const double *cLHH,
191  const double *cHLL, const double *cHLH, const double *cHHL,
192  const double *cHHH,
193  const size_t L[27], double *sigOut
194  );
195  int idwt3d(
196  const float *cLLL, const float *cLLH, const float *cLHL, const float *cLHH,
197  const float *cHLL, const float *cHLH, const float *cHHL, const float *cHHH,
198  const size_t L[27], float *sigOut
199  );
200 
201 private:
202 
203  // 1D buffers
204  size_t _dwt1dBufSize;
205  double *_dwt1dBuf;
206 
207  // 2D buffers
208  size_t _dwt2dBufSize;
209  double *_dwt2dBuf;
210 
211  // 3D buffers
212  size_t _dwt3dBuf1Size;
213  double *_dwt3dBuf1;
214  size_t _dwt3dBuf2Size;
215  double *_dwt3dBuf2;
216 
217 };
218 
219 }
220 
221 #endif
222 
223 
int idwt3d(const double *C, const size_t L[27], double *sigOut)
Single-level inverse discrete 3D wavelet transform.
int dwt2d(const double *sigIn, size_t sigInX, size_t sigInY, double *C, size_t L[10])
Implements a single level wavelet filter.
Definition: MatWaveDwt.h:22
int idwt2d(const double *C, const size_t L[10], double *sigOut)
A base class for a Matlab-like wavelet bank.
Definition: MatWaveBase.h:23
int idwt(const double *C, const size_t L[3], double *sigOut)
int dwt(const double *sigIn, size_t sigInLength, double *C, size_t L[3])
int dwt3d(const double *sigIn, size_t sigInX, size_t sigInY, size_t sigInZ, double *C, size_t L[27])
virtual ~MatWaveDwt()
MatWaveDwt(const string &wname, const string &mode)