37 const double g1,
const double g2,
int np1,
int np2)
47 bool sign = (g1<0 || g2<0) ?
true :
false;
48 bool skip = (g1>=100 && g2>=100) ?
true :
false;
82 for(i=Lwt; i>=0; i--) {
84 if(Lbt>0 && i==0)
break;
92 p = (Lwt>0) ? &wl : ∈
104 for(i=(1<<Lbt)-1; i>=0; i--) {
112 if (skip || sign || ((Lwt==0) && (Lbt==0))) {
151 int N = nsw+z.
size();
154 out = (
int *) malloc(N*
sizeof(
int));
155 if (!out) cout <<
"Memory allocation error\n";
161 out[0] = (
'W'<<24) + (
'Z'<<16) + (
'2'<<8) + (
'0');
164 out[3] = (Lwt & 0xFF) << 24;
165 out[3] |= (Lbt & 0xFF) << 16;
166 out[3] |= (np1 & 0xFF) << 8;
167 out[3] |= (np2 & 0xFF) << 1;
168 out[3] |= (sign) ? 1 : 0;
170 for (i=nsw; i<
N ; i++) {
171 out[
i] = z.
data[i-nsw];
202 char *pswp=(
char *) &swp;
215 aid = short(in[0] >> 16);
216 aiv = short(in[0] & 0xFFFF);
221 cout <<
" unCompress: error, unknown input data format.\n";
225 cout <<
" unCompress: error, unsupported version of input data format.\n";
231 if (n32<4)
return -1;
234 int Lwt = (in[3]>>24) & 0
xFF;
235 int Lbt = (in[3]>>16) & 0
xFF;
236 int np1 = (in[3]>>8) & 0
xFF;
237 int np2 = (in[3]>>1) & 0x7F;
238 bool sign = in[3] & 1;
241 if (n32<=0)
return -1;
245 if (Lwt >= 0) nl1 = Lbt>0 ? Lwt : Lwt+1;
246 if (Lbt > 0) nl2 = 1<<Lbt;
250 z.
nLayer = (1<<Lbt) + Lwt;
252 for (
int j=0;
j<n32 ;
j++) {
256 if (sign || (Lwt==0 && Lbt==0)) {
277 for(i=nL; i>0; i--) {
289 for(i=Lwt; i>=0; i--) {
290 if(Lbt==0 || i>0) n=z.
unCompress(*pwl,Lwt-i+1);
297 if(out.
size() != (size_t)n16) out.
resize(n16);
300 for (i=0; i<n16; i++) out.
data[i] = (
float)W2.
data[
i];
302 for (i=0; i<n16; i++) out.
data[i] = (
float)W1.
data[
i];
308 double g1,
double g2,
int np1,
int np2)
311 for (
int i=0;
i<nn;
i++) wa.
data[
i]=in[
i];
312 return Compress(wa, out, Lwt, Lbt, g1, g2, np1, np2);
316 double g1,
double g2,
int np1,
int np2)
319 for (
int i=0;
i<nn;
i++) wa.
data[
i]=in[
i];
320 return Compress(wa, out, Lwt, Lbt, g1, g2, np1, np2);
324 double g1,
double g2,
int np1,
int np2)
327 for (
int i=0;
i<nn;
i++) wa.
data[
i]=in[
i];
328 return Compress(wa, out, Lwt, Lbt, g1, g2, np1, np2);
339 out = (
short *) malloc(nn*
sizeof(
short));
342 for(
int i=0;
i<nn;
i++) {
344 out[
i]=short(d>0.? d+0.5: d-0.5);
356 out = (
float *) malloc(nn*
sizeof(
float));
357 for (
int i=0;
i<nn;
i++) out[
i] = wa.
data[
i];
virtual void resize(unsigned int)
wavearray< double > a(hp.size())
virtual void setLevel(int level)
int unCompress(int *in, wavearray< float > &out)
void getSign(const waveDouble &, waveShort &)
std::vector< double > xFF
virtual size_t size() const
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)
double getStatistics(double &mean, double &rms) const
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)