📄 f_decode.cpp
字号:
// for(i=0;i<DD1;i++)
// {
// h1[i]=h1[i]/sqrt(2.0);
// g1[i]=g1[i]/sqrt(2.0);
// }
delete p1;
/*************************************
define the WAVELET_COEFFICIENT
**************************************/
float *WAVELET_COEFFICIENT;
if((WAVELET_COEFFICIENT=new float [wide*deep]) == NULL)
{
AfxMessageBox("Memory allocate error!");
ErrorSet = TRUE;
return ;
}
I_Q(WAVELET_COEFFICIENT,Image, Q,Z,C,wide,deep);
delete Image;
v2=(long)wide*deep;
long xlength,ylength,length;
xlength=((wide+1)/2+1)/2;
ylength=((deep+1)/2+1)/2;
length=xlength*ylength;
if((im1=new float [length]) == NULL)
{
AfxMessageBox("Memory allocate error!");
ErrorSet = TRUE;
return ;
}
if((im2=new float [length]) == NULL)
{
AfxMessageBox("Memory allocate error!");
ErrorSet = TRUE;
return ;
}
if((im3=new float [length]) == NULL)
{
AfxMessageBox("Memory allocate error!");
ErrorSet = TRUE;
return ;
}
if((im4=new float [length]) == NULL)
{
AfxMessageBox("Memory allocate error!");
ErrorSet = TRUE;
return ;
}
if((im5=new float [length]) == NULL)
{
AfxMessageBox("Memory allocate error!");
ErrorSet = TRUE;
return ;
}
if((im6=new float [length]) == NULL)
{
AfxMessageBox("Memory allocate error!");
ErrorSet = TRUE;
return ;
}
if((im7=new float [length]) == NULL)
{
AfxMessageBox("Memory allocate error!");
ErrorSet = TRUE;
return ;
}
if((im8=new float [length]) == NULL)
{
AfxMessageBox("Memory allocate error!");
ErrorSet = TRUE;
return ;
}
if((im9=new float [length]) == NULL)
{
AfxMessageBox("Memory allocate error!");
ErrorSet = TRUE;
return ;
}
if((im10=new float [length]) == NULL)
{
AfxMessageBox("Memory allocate error!");
ErrorSet = TRUE;
return ;
}
if((im11=new float [length]) == NULL)
{
AfxMessageBox("Memory allocate error!");
ErrorSet = TRUE;
return ;
}
if((im12=new float [length]) == NULL)
{
AfxMessageBox("Memory allocate error!");
ErrorSet = TRUE;
return ;
}
if((im13=new float [length]) == NULL)
{
AfxMessageBox("Memory allocate error!");
ErrorSet = TRUE;
return ;
}
if((im14=new float [length]) == NULL)
{
AfxMessageBox("Memory allocate error!");
ErrorSet = TRUE;
return ;
}
if((im15=new float [length]) == NULL)
{
AfxMessageBox("Memory allocate error!");
ErrorSet = TRUE;
return ;
}
if((im16=new float [length]) == NULL)
{
AfxMessageBox("Memory allocate error!");
ErrorSet = TRUE;
return ;
}
if((buf1=new float [length]) == NULL)
{
AfxMessageBox("Memory allocate error!");
ErrorSet = TRUE;
return ;
}
if((buf2=new float [length]) == NULL)
{
AfxMessageBox("Memory allocate error!");
ErrorSet = TRUE;
return ;
}
if((buf3=new float [length]) == NULL)
{
AfxMessageBox("Memory allocate error!");
ErrorSet = TRUE;
return ;
}
/****0234*****************/
long xLow,xHigh,yLow,yHigh;
long start;
long n;
xlength=wide;
ylength=deep;
for(i=0;i<4;i++)
{
xlength=(xlength+1)>>1;
ylength=(ylength+1)>>1;
}
xLow=(xlength+1)>>1;
yLow=(ylength+1)>>1;
xHigh=xlength-xLow;
yHigh=ylength-yLow;
start=0;
length=xLow*yLow;
for(i=0;i<length;i++) *(im1+i)=*(WAVELET_COEFFICIENT+i);
start+=length;
length=xHigh*yLow;
for(i=0;i<length;i++) *(im2+i)=*(WAVELET_COEFFICIENT+i+start);
start+=length;
length=xLow*yHigh;
for(i=0;i<length;i++) *(im3+i)=*(WAVELET_COEFFICIENT+i+start);
start+=length;
length=xHigh*yHigh;
for(i=0;i<length;i++) *(im4+i)=*(WAVELET_COEFFICIENT+i+start);
I_CHANGE_DATA(buf1,im1,im2,im3,im4,xlength,ylength);
iwt(xlength,ylength,buf1,h1,g1);
/***(0-3),4------18*****/
long xSubbandLength[17],ySubbandLength[17];
xlength=((wide+1)/2+1)/2;
ylength=((deep+1)/2+1)/2;
CalculateSubbandLength_8(xlength,ylength,xSubbandLength,ySubbandLength);
start+=length;
length=xSubbandLength[2]*ySubbandLength[2];
for(n=0;n<length;n++)
*(im2+n)=*(WAVELET_COEFFICIENT+n+start);
start+=length;
length=xSubbandLength[3]*ySubbandLength[3];
for(n=0;n<length;n++)
*(im3+n)=*(WAVELET_COEFFICIENT+n+start);
start+=length;
length=xSubbandLength[4]*ySubbandLength[4];
for(n=0;n<length;n++)
*(im4+n)=*(WAVELET_COEFFICIENT+n+start);
start+=length;
length=xSubbandLength[6]*ySubbandLength[6];
for(n=0;n<length;n++)
*(im6+n)=*(WAVELET_COEFFICIENT+n+start);
start+=length;
length=xSubbandLength[5]*ySubbandLength[5];
for(n=0;n<length;n++)
*(im5+n)=*(WAVELET_COEFFICIENT+n+start);
start+=length;
length=xSubbandLength[8]*ySubbandLength[8];
for(n=0;n<length;n++)
*(im8+n)=*(WAVELET_COEFFICIENT+n+start);
start+=length;
length=xSubbandLength[7]*ySubbandLength[7];
for(n=0;n<length;n++)
*(im7+n)=*(WAVELET_COEFFICIENT+n+start);
start+=length;
length=xSubbandLength[11]*ySubbandLength[11];
for(n=0;n<length;n++)
*(im11+n)=*(WAVELET_COEFFICIENT+n+start);
start+=length;
length=xSubbandLength[12]*ySubbandLength[12];
for(n=0;n<length;n++)
*(im12+n)=*(WAVELET_COEFFICIENT+n+start);
start+=length;
length=xSubbandLength[9]*ySubbandLength[9];
for(n=0;n<length;n++)
*(im9+n)=*(WAVELET_COEFFICIENT+n+start);
start+=length;
length=xSubbandLength[10]*ySubbandLength[10];
for(n=0;n<length;n++)
*(im10+n)=*(WAVELET_COEFFICIENT+n+start);
start+=length;
length=xSubbandLength[16]*ySubbandLength[16];
for(n=0;n<length;n++)
*(im16+n)=*(WAVELET_COEFFICIENT+n+start);
start+=length;
length=xSubbandLength[15]*ySubbandLength[15];
for(n=0;n<length;n++)
*(im15+n)=*(WAVELET_COEFFICIENT+n+start);
start+=length;
length=xSubbandLength[14]*ySubbandLength[14];
for(n=0;n<length;n++)
*(im14+n)=*(WAVELET_COEFFICIENT+n+start);
start+=length;
length=xSubbandLength[13]*ySubbandLength[13];
for(n=0;n<length;n++)
*(im13+n)=*(WAVELET_COEFFICIENT+n+start);
IW8(buf1,xlength,ylength,buf1,im2,im3,im4,im5,im6,im7,im8,im9,im10,im11,im12,im13,im14,im15,im16,h1,g1);
////19-34
xlength=((wide+1)/2)/2;
ylength=((deep+1)/2+1)/2;
CalculateSubbandLength_8(xlength,ylength,xSubbandLength,ySubbandLength);
start+=length;
length=xSubbandLength[5]*ySubbandLength[5];
for(n=0;n<length;n++)
*(im5+n)=*(WAVELET_COEFFICIENT+n+start);
start+=length;
length=xSubbandLength[6]*ySubbandLength[6];
for(n=0;n<length;n++)
*(im6+n)=*(WAVELET_COEFFICIENT+n+start);
start+=length;
length=xSubbandLength[7]*ySubbandLength[7];
for(n=0;n<length;n++)
*(im7+n)=*(WAVELET_COEFFICIENT+n+start);
start+=length;
length=xSubbandLength[8]*ySubbandLength[8];
for(n=0;n<length;n++)
*(im8+n)=*(WAVELET_COEFFICIENT+n+start);
start+=length;
length=xSubbandLength[2]*ySubbandLength[2];
for(n=0;n<length;n++)
*(im2+n)=*(WAVELET_COEFFICIENT+n+start);
start+=length;
length=xSubbandLength[1]*ySubbandLength[1];
for(n=0;n<length;n++)
*(im1+n)=*(WAVELET_COEFFICIENT+n+start);
start+=length;
length=xSubbandLength[4]*ySubbandLength[4];
for(n=0;n<length;n++)
*(im4+n)=*(WAVELET_COEFFICIENT+n+start);
start+=length;
length=xSubbandLength[3]*ySubbandLength[3];
for(n=0;n<length;n++)
*(im3+n)=*(WAVELET_COEFFICIENT+n+start);
start+=length;
length=xSubbandLength[15]*ySubbandLength[15];
for(n=0;n<length;n++)
*(im15+n)=*(WAVELET_COEFFICIENT+n+start);
start+=length;
length=xSubbandLength[16]*ySubbandLength[16];
for(n=0;n<length;n++)
*(im16+n)=*(WAVELET_COEFFICIENT+n+start);
start+=length;
length=xSubbandLength[13]*ySubbandLength[13];
for(n=0;n<length;n++)
*(im13+n)=*(WAVELET_COEFFICIENT+n+start);
start+=length;
length=xSubbandLength[14]*ySubbandLength[14];
for(n=0;n<length;n++)
*(im14+n)=*(WAVELET_COEFFICIENT+n+start);
start+=length;
length=xSubbandLength[12]*ySubbandLength[12];
for(n=0;n<length;n++)
*(im12+n)=*(WAVELET_COEFFICIENT+n+start);
start+=length;
length=xSubbandLength[11]*ySubbandLength[11];
for(n=0;n<length;n++)
*(im11+n)=*(WAVELET_COEFFICIENT+n+start);
start+=length;
length=xSubbandLength[10]*ySubbandLength[10];
for(n=0;n<length;n++)
*(im10+n)=*(WAVELET_COEFFICIENT+n+start);
start+=length;
length=xSubbandLength[9]*ySubbandLength[9];
for(n=0;n<length;n++)
*(im9+n)=*(WAVELET_COEFFICIENT+n+start);
IW8(buf2,xlength,ylength,im1,im2,im3,im4,im5,im6,im7,im8,im9,im10,im11,im12,im13,im14,im15,im16,h1,g1);
////35--50
xlength=((wide+1)/2+1)/2;
ylength=((deep+1)/2)/2;
CalculateSubbandLength_8(xlength,ylength,xSubbandLength,ySubbandLength);
start+=length;
length=xSubbandLength[9]*ySubbandLength[9];
for(n=0;n<length;n++)
*(im9+n)=*(WAVELET_COEFFICIENT+n+start);
start+=length;
length=xSubbandLength[10]*ySubbandLength[10];
for(n=0;n<length;n++)
*(im10+n)=*(WAVELET_COEFFICIENT+n+start);
start+=length;
length=xSubbandLength[11]*ySubbandLength[11];
for(n=0;n<length;n++)
*(im11+n)=*(WAVELET_COEFFICIENT+n+start);
start+=length;
length=xSubbandLength[12]*ySubbandLength[12];
for(n=0;n<length;n++)
*(im12+n)=*(WAVELET_COEFFICIENT+n+start);
start+=length;
length=xSubbandLength[14]*ySubbandLength[14];
for(n=0;n<length;n++)
*(im14+n)=*(WAVELET_COEFFICIENT+n+start);
start+=length;
length=xSubbandLength[13]*ySubbandLength[13];
for(n=0;n<length;n++)
*(im13+n)=*(WAVELET_COEFFICIENT+n+start);
start+=length;
length=xSubbandLength[16]*ySubbandLength[16];
for(n=0;n<length;n++)
*(im16+n)=*(WAVELET_COEFFICIENT+n+start);
start+=length;
length=xSubbandLength[15]*ySubbandLength[15];
for(n=0;n<length;n++)
*(im15+n)=*(WAVELET_COEFFICIENT+n+start);
start+=length;
length=xSubbandLength[3]*ySubbandLength[3];
for(n=0;n<length;n++)
*(im3+n)=*(WAVELET_COEFFICIENT+n+start);
start+=length;
length=xSubbandLength[4]*ySubbandLength[4];
for(n=0;n<length;n++)
*(im4+n)=*(WAVELET_COEFFICIENT+n+start);
start+=length;
length=xSubbandLength[1]*ySubbandLength[1];
for(n=0;n<length;n++)
*(im1+n)=*(WAVELET_COEFFICIENT+n+start);
start+=length;
length=xSubbandLength[2]*ySubbandLength[2];
for(n=0;n<length;n++)
*(im2+n)=*(WAVELET_COEFFICIENT+n+start);
start+=length;
length=xSubbandLength[8]*ySubbandLength[8];
for(n=0;n<length;n++)
*(im8+n)=*(WAVELET_COEFFICIENT+n+start);
start+=length;
length=xSubbandLength[7]*ySubbandLength[7];
for(n=0;n<length;n++)
*(im7+n)=*(WAVELET_COEFFICIENT+n+start);
start+=length;
length=xSubbandLength[6]*ySubbandLength[6];
for(n=0;n<length;n++)
*(im6+n)=*(WAVELET_COEFFICIENT+n+start);
start+=length;
length=xSubbandLength[5]*ySubbandLength[5];
for(n=0;n<length;n++)
*(im5+n)=*(WAVELET_COEFFICIENT+n+start);
IW8(buf3,xlength,ylength,im1,im2,im3,im4,im5,im6,im7,im8,im9,im10,im11,im12,im13,im14,im15,im16,h1,g1);
/*******(0-50,)51 52-----------63*************/
xlength=wide;
ylength=deep;
CalculateSubbandLength_8(xlength,ylength,xSubbandLength,ySubbandLength);
start+=length;
length=xSubbandLength[4]*ySubbandLength[4];
for(n=0;n<length;n++)
*(im4+n)=*(WAVELET_COEFFICIENT+n+start);
start+=length;
length=xSubbandLength[6]*ySubbandLength[6];
for(n=0;n<length;n++)
*(im6+n)=*(WAVELET_COEFFICIENT+n+start);
start+=length;
length=xSubbandLength[5]*ySubbandLength[5];
for(n=0;n<length;n++)
*(im5+n)=*(WAVELET_COEFFICIENT+n+start);
start+=length;
length=xSubbandLength[8]*ySubbandLength[8];
for(n=0;n<length;n++)
*(im8+n)=*(WAVELET_COEFFICIENT+n+start);
start+=length;
length=xSubbandLength[7]*ySubbandLength[7];
for(n=0;n<length;n++)
*(im7+n)=*(WAVELET_COEFFICIENT+n+start);
start+=length;
length=xSubbandLength[11]*ySubbandLength[11];
for(n=0;n<length;n++)
*(im11+n)=*(WAVELET_COEFFICIENT+n+start);
start+=length;
length=xSubbandLength[12]*ySubbandLength[12];
for(n=0;n<length;n++)
*(im12+n)=*(WAVELET_COEFFICIENT+n+start);
start+=length;
length=xSubbandLength[9]*ySubbandLength[9];
for(n=0;n<length;n++)
*(im9+n)=*(WAVELET_COEFFICIENT+n+start);
start+=length;
length=xSubbandLength[10]*ySubbandLength[10];
for(n=0;n<length;n++)
*(im10+n)=*(WAVELET_COEFFICIENT+n+start);
start+=length;
length=xSubbandLength[16]*ySubbandLength[16];
for(n=0;n<length;n++)
*(im16+n)=*(WAVELET_COEFFICIENT+n+start);
start+=length;
length=xSubbandLength[15]*ySubbandLength[15];
for(n=0;n<length;n++)
*(im15+n)=*(WAVELET_COEFFICIENT+n+start);
start+=length;
length=xSubbandLength[14]*ySubbandLength[14];
for(n=0;n<length;n++)
*(im14+n)=*(WAVELET_COEFFICIENT+n+start);
start+=length;
length=xSubbandLength[13]*ySubbandLength[13];
for(n=0;n<length;n++)
*(im13+n)=*(WAVELET_COEFFICIENT+n+start);
if((buffer=new float [v2]) ==NULL)
{
AfxMessageBox("memory allocate error");
ErrorSet = TRUE;
return;
}
IW8(buffer,wide,deep,buf1,buf2,buf3,im4,im5,im6,im7,im8,im9,im10,im11,im12,im13,im14,im15,im16,h1,g1);
if((pc=new unsigned char [v2])==NULL)
{
AfxMessageBox("Global Lock error");
ErrorSet = TRUE;
return;
}
for(i=0;i<wide*deep;i++)
{
*(buffer+i)=*(buffer+i)*R+M;
if(*(buffer+i)<0) *(buffer+i)=0;
else if(*(buffer+i)>255) *(buffer+i)=255;
else *(buffer+i)+=0.5;
*(pc+i)=(unsigned char)(*(buffer+i));
}
CreateBitmapFile(OutputFileName,pc,wide,deep);
delete im1,im2,im3,im4,im5,im6,im7,im8,im9;
delete im10,im11,im12,im13,im14,im15,im16;
delete pc,buffer,buf1,buf2,buf3,WAVELET_COEFFICIENT;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -