📄 wv97wky.h
字号:
#define precision 2
#define K 1.230174
#define KK (K*K)
#define KK1 KK
#define KK2 (KK*KK)
#define KK3 (KK*KK*KK)
#define KK4 (KK*KK*KK*KK)
//short *d1,*s1,*s,*d,*d0,*s0;
short *d1p,*s1p,*sp,*dp;
#define iwt1d97f(x, n)\
{\
dp=dd+2;\
d1p=d1+1;\
sp=s+1;\
s1p=s1+1;\
for(m=0;m<(n)>>1;m++)\
{\
sp[m]=x[m];\
dp[m]=x[m+((n)>>1)];\
}\
sp[-1]=sp[1];\
sp[(n)>>1]=sp[((n)-2)>>1];\
sp[((n)>>1)+1]=sp[((n)>>1)-2];\
dp[-1]=dp[0];\
dp[-2]=dp[1];\
dp[((n)+1)>>1]=dp[((n)-3)>>1];\
dp[((n)+3)>>1]=dp[((n)-5)>>1];\
for(m=-1;m<((n)+4)>>1;m++)\
{\
s1p[m]=sp[m]-((1817*(dp[m]+dp[m-1])+2048)>>12);\
}\
for(m=-1;m<((n)+3)>>1;m++)\
{\
d1p[m]=dp[m]-((113*(s1p[m+1]+s1p[m])+64)>>7);\
}\
for(m=0;m<((n)+2)>>1;m++)\
{\
s0[m] =s1p[m] - ((-217*(d1p[m]+d1p[m-1])+2048)>>12);\
}\
for(m=0;m<((n)+1)>>1;m++)\
{\
d0[m]=d1p[m]-((-203*(s0[m+1]+s0[m])+64)>>7);\
}\
for(m=0;m<(n)>>1;m++)\
{\
x[m<<1] = s0[m];\
x[(m<<1)+1]=d0[m];\
}\
}
//
//void iwt1d97f(short *x, int n)\
//{
//int m;
//short temp1,temp2;
//
// dp=d+2;
// d1p=d1+1;
// sp=s+1;
// s1p=s1+1;
// for(m=0;m<(n)>>1;m++)
// {
// sp[m]=x[m];
// dp[m]=x[m+((n)>>1)];
// }
// sp[-1]=sp[1];
// sp[(n)>>1]=sp[((n)-2)>>1];
// sp[((n)>>1)+1]=sp[((n)>>1)-2];
// dp[-1]=dp[0];
// dp[-2]=dp[1];
// dp[((n)+1)>>1]=dp[((n)-3)>>1];
// dp[((n)+3)>>1]=dp[((n)-5)>>1];
// for(m=-1;m<((n)+4)>>1;m++)
// {
//
//
// temp1 = (1817*(dp[m]+dp[m-1])+2048)>>12;
// temp2 = sp[m]-temp1;
// *(s1p+m)=temp2;
// }
// for(m=-1;m<((n)+3)>>1;m++)
// {
// d1p[m]=dp[m]-((113*(s1p[m+1]+s1p[m])+64)>>7);
// }
// for(m=0;m<((n)+2)>>1;m++)
// {
// s0[m] =s1p[m] - ((-217*(d1p[m]+d1p[m-1])+2048)>>12);
// }
// for(m=0;m<((n)+1)>>1;m++)
// {
// d0[m]=d1p[m]-((-203*(s0[m+1]+s0[m])+64)>>7);
// }
// for(m=0;m<(n)>>1;m++)
// {
// x[m<<1] = s0[m];
// x[(m<<1)+1]=d0[m];
// }
// }
void iwt(short *coef)
{
int i, j, m;
short ss[4096] = {0};
//scalling
//LL3
for (i=0; i<(WV_IMG_HEIGHT>>4); i++)
{
for (j=0; j<(WV_IMG_WIDTH>>4); j++)
{
coef[i*WV_IMG_WIDTH+j]=(coef[i*WV_IMG_WIDTH+j]*195)>>10;
}
}
//LH3
for (i=(WV_IMG_HEIGHT>>4); i<(WV_IMG_HEIGHT>>3); i++)
{
for (j=0; j<(WV_IMG_WIDTH>>4); j++)
{
coef[i*WV_IMG_WIDTH+j]=(coef[i*WV_IMG_WIDTH+j]*295)>>10;
}
}
//HL3
for (i=0; i<(WV_IMG_HEIGHT>>4); i++)
{
for (j=(WV_IMG_WIDTH>>4); j<(WV_IMG_WIDTH>>3); j++)
{
coef[i*WV_IMG_WIDTH+j]=(coef[i*WV_IMG_WIDTH+j]*295)>>10;
}
}
//HH3
for (i=(WV_IMG_HEIGHT>>4); i<(WV_IMG_HEIGHT>>3); i++)
{
for (j=(WV_IMG_WIDTH>>4); j<(WV_IMG_WIDTH>>3); j++)
{
coef[i*WV_IMG_WIDTH+j]=(coef[i*WV_IMG_WIDTH+j]*447)>>10;
}
}
//LH2
for (i=(WV_IMG_HEIGHT>>3); i<(WV_IMG_HEIGHT>>2); i++)
{
for (j=0; j<(WV_IMG_WIDTH>>3); j++)
{
coef[i*WV_IMG_WIDTH+j]=(coef[i*WV_IMG_WIDTH+j]*447)>>10;
}
}
//HL2
for (i=0; i<(WV_IMG_HEIGHT>>3); i++)
{
for (j=(WV_IMG_WIDTH>>3); j<(WV_IMG_WIDTH>>2); j++)
{
coef[i*WV_IMG_WIDTH+j]=(coef[i*WV_IMG_WIDTH+j]*447)>>10;
}
}
//HH2
for (i=(WV_IMG_HEIGHT>>3); i<(WV_IMG_HEIGHT>>2); i++)
{
for (j=(WV_IMG_WIDTH>>3); j<(WV_IMG_WIDTH>>2); j++)
{
coef[i*WV_IMG_WIDTH+j]=(coef[i*WV_IMG_WIDTH+j]*677)>>10;
}
}
//LH1
for (i=(WV_IMG_HEIGHT>>2); i<(WV_IMG_HEIGHT>>1); i++)
{
for (j=0; j<(WV_IMG_WIDTH>>2); j++)
{
coef[i*WV_IMG_WIDTH+j]=(coef[i*WV_IMG_WIDTH+j]*677)>>10;
}
}
//HL1
for (i=0; i<(WV_IMG_HEIGHT>>2); i++)
{
for (j=(WV_IMG_WIDTH>>2); j<(WV_IMG_WIDTH>>1); j++)
{
coef[i*WV_IMG_WIDTH+j]=(coef[i*WV_IMG_WIDTH+j]*677)>>10;
}
}
//HH0
for (i=(WV_IMG_HEIGHT>>1); i<WV_IMG_HEIGHT; i++)
{
for (j=(WV_IMG_WIDTH>>1); j<WV_IMG_WIDTH; j++)
{
coef[i*WV_IMG_WIDTH+j]=(coef[i*WV_IMG_WIDTH+j]*1550)>>10;
}
}
//--------------------------------------------------------------------------------------------
//wv_level 4
for(j=0;j<(WV_IMG_WIDTH>>3);j++)
{
for(i=0;i<(WV_IMG_HEIGHT>>3);i++)
{
ss[i]=coef[i*WV_IMG_WIDTH+j]/*coef[i*WV_IMG_WIDTH+j]*/;
}
iwt1d97f(ss, WV_IMG_HEIGHT>>3);
for(i=0;i<(WV_IMG_HEIGHT>>3);i++)
{
/*coef[i*WV_IMG_WIDTH+j]*/coef[i*WV_IMG_WIDTH+j]=ss[i];
}
}
for(i=0;i<(WV_IMG_HEIGHT>>3);i++)
{
// for(j=0; j<(WV_IMG_WIDTH>>3); j++)
// ss[j]=coef[i][j]/*coef[i*WV_IMG_WIDTH+j]*/;
// memcpy(ss, coef+i*WV_IMG_WIDTH*sizeof(short), (WV_IMG_WIDTH>>3)*sizeof(short));
iwt1d97f((coef+i*WV_IMG_WIDTH), WV_IMG_WIDTH>>3);
// iwt1d97f(ss, WV_IMG_WIDTH>>3);
// memcpy(coef+i*WV_IMG_WIDTH*sizeof(short), ss, (WV_IMG_WIDTH>>3)*sizeof(short));
// for(j=0;j<(WV_IMG_WIDTH>>3);j++)
// {
// /*coef[i*WV_IMG_WIDTH+j]*/coef[i][j]=ss[j];
// }
}
//--------------------------------------------------------------------------------------------
//wv_level 3
for(j=0;j<(WV_IMG_WIDTH>>2);j++)
{
for(i=0;i<(WV_IMG_HEIGHT>>2);i++)
{
ss[i]=coef[i*WV_IMG_WIDTH+j]/*coef[i*WV_IMG_WIDTH+j]*/;
}
iwt1d97f(ss, WV_IMG_HEIGHT>>2);
for(i=0;i<(WV_IMG_HEIGHT>>2);i++)
{
/*coef[i*WV_IMG_WIDTH+j]*/coef[i*WV_IMG_WIDTH+j]=ss[i];
}
}
for(i=0;i<(WV_IMG_HEIGHT>>2);i++)
{
// for(j=0; j<(WV_IMG_WIDTH>>2); j++)
// ss[j]=coef[i][j]/*coef[i*WV_IMG_WIDTH+j]*/;
// memcpy(ss, coef+i*WV_IMG_WIDTH*sizeof(short), (WV_IMG_WIDTH>>2)*sizeof(short));
iwt1d97f((coef+i*WV_IMG_WIDTH), WV_IMG_WIDTH>>2);
// iwt1d97f(ss,WV_IMG_WIDTH>>2);
// memcpy(coef+i*WV_IMG_WIDTH*sizeof(short), ss, (WV_IMG_WIDTH>>2)*sizeof(short));
// for(j=0;j<(WV_IMG_WIDTH>>2);j++)
// {
// /*coef[i*WV_IMG_WIDTH+j]*/coef[i][j]=ss[j];
// }
}
//--------------------------------------------------------------------------------------------
//wv_level 2
for(j=0;j<(WV_IMG_WIDTH>>1);j++)
{
for(i=0;i<(WV_IMG_HEIGHT>>1);i++)
{
ss[i]=coef[i*WV_IMG_WIDTH+j]/*coef[i*WV_IMG_WIDTH+j]*/;
}
iwt1d97f(ss, WV_IMG_HEIGHT>>1);
for(i=0;i<(WV_IMG_HEIGHT>>1);i++)
{
/*coef[i*WV_IMG_WIDTH+j]*/coef[i*WV_IMG_WIDTH+j]=ss[i];
}
}
for(i=0;i<(WV_IMG_HEIGHT>>1);i++)
{
// for(j=0; j<(WV_IMG_WIDTH>>1); j++)
// ss[j]=coef[i][j]/*coef[i*WV_IMG_WIDTH+j]*/;
// memcpy(ss, coef+i*WV_IMG_WIDTH*sizeof(short), (WV_IMG_WIDTH>>1)*sizeof(short));
iwt1d97f((coef+i*WV_IMG_WIDTH), WV_IMG_WIDTH>>1);
// iwt1d97f(ss,WV_IMG_WIDTH>>1);
// memcpy(coef+i*WV_IMG_WIDTH*sizeof(short), ss, (WV_IMG_WIDTH>>1)*sizeof(short));
// for(j=0;j<(WV_IMG_WIDTH>>1);j++)
// {
// /*coef[i*WV_IMG_WIDTH+j]*/coef[i][j]=ss[j];
// }
}
//--------------------------------------------------------------------------------------------
//wv_level 1
for(j=0;j<WV_IMG_WIDTH;j++)
{
for(i=0;i<WV_IMG_HEIGHT;i++)
{
ss[i]=coef[i*WV_IMG_WIDTH+j]/*coef[i*WV_IMG_WIDTH+j]*/;
}
iwt1d97f(ss, WV_IMG_HEIGHT);
for(i=0;i<WV_IMG_HEIGHT;i++)
{
/*coef[i*WV_IMG_WIDTH+j]*/coef[i*WV_IMG_WIDTH+j]=ss[i];
}
}
for(i=0;i<WV_IMG_HEIGHT;i++)
{
// for(j=0; j<WV_IMG_WIDTH; j++)
// ss[j]=coef[i][j]/*coef[i*WV_IMG_WIDTH+j]*/;
// memcpy(ss, coef+i*WV_IMG_WIDTH, (WV_IMG_WIDTH)*sizeof(short));
// iwt1d97f(ss, WV_IMG_WIDTH);
iwt1d97f((coef+i*WV_IMG_WIDTH), WV_IMG_WIDTH);
// memcpy(coef+i*WV_IMG_WIDTH, ss, (WV_IMG_WIDTH)*sizeof(short));
// for(j=0;j<WV_IMG_WIDTH;j++)
// {
// /*coef[i*WV_IMG_WIDTH+j]*/coef[i][j]=ss[j];
// }
}
// free(d1);free(s1);
// free(d);free(s);
// free(d0);free(s0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -