1 | #ifndef ATROUS_H |
---|
2 | #define ATROUS_H |
---|
3 | |
---|
4 | #ifndef PARAM_H |
---|
5 | #include <param.hh> |
---|
6 | #endif |
---|
7 | |
---|
8 | #include <vector> |
---|
9 | using std::vector; |
---|
10 | #include <string> |
---|
11 | using std::string; |
---|
12 | |
---|
13 | class Filter |
---|
14 | { |
---|
15 | public: |
---|
16 | Filter(); |
---|
17 | ~Filter(){}; |
---|
18 | void define(int code); |
---|
19 | int getNumScales(long length); |
---|
20 | int getMaxSize(int scale); |
---|
21 | string getName(){return name;}; |
---|
22 | double coeff(int i){return filter1D[i];}; |
---|
23 | void setCoeff(int i, double val){filter1D[i] = val;}; |
---|
24 | int width(){return filter1D.size();}; |
---|
25 | int maxFactor(int dim){return maxNumScales[dim-1];}; |
---|
26 | void setMaxFactor(int dim, int val){maxNumScales[dim-1] = val;}; |
---|
27 | double sigmaFactor(int dim, int scale){return (*sigmaFactors[dim-1])[scale];}; |
---|
28 | void setSigmaFactor(int dim, int scale, double val){(*sigmaFactors[dim])[scale] = val;}; |
---|
29 | |
---|
30 | private: |
---|
31 | string name; // what is the filter called? |
---|
32 | vector <double> filter1D; // filter coefficients. |
---|
33 | vector <int> maxNumScales; // max number of scales for the sigmaFactor arrays, for each dim. |
---|
34 | vector < vector <double>* > sigmaFactors; // arrays of sigmaFactors, one for each dim. |
---|
35 | |
---|
36 | void loadSpline(); // set up parameters for using the B3 Spline filter. |
---|
37 | void loadTriangle(); // set up parameters for using the Triangle function. |
---|
38 | void loadHaar(); // set up parameters for using the Haar wavelet. |
---|
39 | |
---|
40 | }; |
---|
41 | |
---|
42 | |
---|
43 | // The tolerance in the reconstruction. |
---|
44 | const float reconTolerance = 0.005; |
---|
45 | |
---|
46 | ////////////////////////////////////////////////////////////////////////////////////// |
---|
47 | |
---|
48 | void atrous1DReconstruct(long &size, float *&input, float *&output, Param &par); |
---|
49 | void atrous2DReconstruct(long &xdim, long &ydim, float *&input,float *&output, Param &par); |
---|
50 | void atrous3DReconstruct(long &xdim, long &ydim, long &zdim, float *&input,float *&output, Param &par); |
---|
51 | void atrous2DReconstructOLD(long &xdim, long &ydim, float *input,float *output, Param &par); |
---|
52 | void atrous3DReconstructOLD(long &xdim, long &ydim, long &zdim, float *&input,float *&output, Param &par); |
---|
53 | |
---|
54 | void atrousTransform(long &length, int &numScales, float *spectrum, double *coeffs, double *wavelet); |
---|
55 | void atrousTransform(long &length, float *spectrum, float *coeffs, float *wavelet); |
---|
56 | void atrousTransform2D(long &xdim, long &ydim, int &numScales, float *input, double *coeffs, double *wavelet, Param &par); |
---|
57 | void atrousTransform2D(long &xdim, long &ydim, int &numScales, float *input, double *coeffs, double *wavelet); |
---|
58 | void atrousTransform3D(long &xdim, long &ydim, long &zdim, int &numScales, float *&input, float *&coeffs, float *&wavelet, Param &par); |
---|
59 | void atrousTransform3D(long &xdim, long &ydim, long &zdim, int &numScales, float *input, float *coeffs, float *wavelet); |
---|
60 | |
---|
61 | void baselineSubtract(long numSpec, long specLength, float *originalCube, float *baseline, Param &par); |
---|
62 | void getBaseline(long size, float *input, float *baseline, Param &par); |
---|
63 | void getBaseline(long size, float *input, float *baseline); |
---|
64 | |
---|
65 | #endif |
---|