19 const double g1,
const double g2,
int np1,
int np2)
29 bool sign = (g1<0 || g2<0) ?
true :
false;
30 bool skip = (g1>=100 && g2>=100) ?
true :
false;
64 for(i=Lwt; i>=0; i--) {
66 if(Lbt>0 && i==0)
break;
74 p = (Lwt>0) ? &wl : ∈
86 for(i=(1<<Lbt)-1; i>=0; i--) {
94 if (skip || sign || ((Lwt==0) && (Lbt==0))) {
133 int N = nsw+z.
size();
136 out = (
int *) malloc(N*
sizeof(
int));
137 if (!out) cout <<
"Memory allocation error\n";
143 out[0] = (
'W'<<24) + (
'Z'<<16) + (
'2'<<8) + (
'0');
146 out[3] = (Lwt & 0xFF) << 24;
147 out[3] |= (Lbt & 0xFF) << 16;
148 out[3] |= (np1 & 0xFF) << 8;
149 out[3] |= (np2 & 0xFF) << 1;
150 out[3] |= (sign) ? 1 : 0;
152 for (i=nsw; i<
N ; i++) {
153 out[
i] = z.
data[i-nsw];
184 char *pswp=(
char *) &swp;
197 aid = short(in[0] >> 16);
198 aiv = short(in[0] & 0xFFFF);
203 cout <<
" unCompress: error, unknown input data format.\n";
207 cout <<
" unCompress: error, unsupported version of input data format.\n";
213 if (n32<4)
return -1;
216 int Lwt = (in[3]>>24) & 0xFF;
217 int Lbt = (in[3]>>16) & 0xFF;
218 int np1 = (in[3]>>8) & 0xFF;
219 int np2 = (in[3]>>1) & 0x7F;
220 bool sign = in[3] & 1;
223 if (n32<=0)
return -1;
227 if (Lwt >= 0) nl1 = Lbt>0 ? Lwt : Lwt+1;
228 if (Lbt > 0) nl2 = 1<<Lbt;
232 z.
nLayer = (1<<Lbt) + Lwt;
234 for (
int j=0;
j<n32 ;
j++) {
238 if (sign || (Lwt==0 && Lbt==0)) {
259 for(i=nL; i>0; i--) {
271 for(i=Lwt; i>=0; i--) {
272 if(Lbt==0 || i>0) n=z.
unCompress(*pwl,Lwt-i+1);
279 if(out.
size() != (size_t)n16) out.
resize(n16);
282 for (i=0; i<n16; i++) out.
data[i] = (
float)W2.
data[
i];
284 for (i=0; i<n16; i++) out.
data[i] = (
float)W1.
data[
i];
290 double g1,
double g2,
int np1,
int np2)
293 for (
int i=0;
i<nn;
i++) wa.
data[
i]=in[
i];
294 return Compress(wa, out, Lwt, Lbt, g1, g2, np1, np2);
298 double g1,
double g2,
int np1,
int np2)
301 for (
int i=0;
i<nn;
i++) wa.
data[
i]=in[
i];
302 return Compress(wa, out, Lwt, Lbt, g1, g2, np1, np2);
306 double g1,
double g2,
int np1,
int np2)
309 for (
int i=0;
i<nn;
i++) wa.
data[
i]=in[
i];
310 return Compress(wa, out, Lwt, Lbt, g1, g2, np1, np2);
321 out = (
short *) malloc(nn*
sizeof(
short));
324 for(
int i=0;
i<nn;
i++) {
326 out[
i]=short(d>0.? d+0.5: d-0.5);
338 out = (
float *) malloc(nn*
sizeof(
float));
339 for (
int i=0;
i<nn;
i++) out[
i] = wa.
data[
i];
virtual void resize(unsigned int)
virtual size_t size() const
wavearray< double > a(hp.size())
double getStatistics(double &mean, double &rms) const
virtual void setLevel(int level)
int unCompress(int *in, wavearray< float > &out)
void getSign(const waveDouble &, waveShort &)
int getLayer(wavearray< DataType_t > &w, double n)
param: n - layer number
double fabs(const Complex &x)
void Forward(int n=-1)
param: wavelet - n is number of steps (-1 means full decomposition)
int unCompress(waveFloat &, int level=1)
WaveDWT< DataType_t > * pWavelet
int Compress(const waveShort &)
virtual void resize(unsigned int)
void Inverse(int n=-1)
param: n - number of steps (-1 means full reconstruction)
void putLayer(wavearray< DataType_t > &, double n)
param: n - layer number
int Compress(wavearray< double > &in, int *&out, int Lwt, int Lbt, const double g1, const double g2, int np1, int np2)