小波变换C语言实现代码Word文档下载推荐.docx
《小波变换C语言实现代码Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《小波变换C语言实现代码Word文档下载推荐.docx(24页珍藏版)》请在冰豆网上搜索。
FILE*lena3;
FILE*lena4;
lena=fopen("
c:
\\"
"
rb"
);
lena3=fopen("
wb"
);
lena4=fopen("
for(i=0;
i<
height;
i++)
for(j=0;
j<
width;
j++)
org[i][j]=fgetc(lena);
}
twoDDWT(org,dwt,4);
height/2;
width/2;
org[i][j]=dwt[i][j];
twoDDWT(org,dwt,7);
fputc(dwt[i][j],lena3);
twoDIDWT(dwt,rec,7);
dwt[i][j]=rec[i][j];
twoDIDWT(dwt,rec,4);
fputc(rec[i][j],lena4);
}return0;
voidtwoDDWT(doubleorg[][width],doubledwt[][width],intNumofBand)
if(NumofBand==4)
oneDDWT(0,org,dwt);
oneDDWT(1,org,dwt);
if(NumofBand==7)
oneDDWT(2,org,dwt);
oneDDWT(3,org,dwt);
voidoneDDWT(intflag,doubleorg[][width],doubledwt[][width])
doubletemp[height][width],temp1[height][width];
doublef_LPF[]={,,,,};
doublef_HPF[]={,1,};
if(flag==0)//verticaldirection
{if(j==0)
temp[i][j]=f_LPF[0]*org[i][j+2]+f_LPF[1]*org[i][j+1]+f_LPF[2]*org[i][j]+f_LPF[3]
*org[i][j+1]+f_LPF[4]*org[i][j+2];
elseif(j==1)
temp[i][j]=f_LPF[0]*org[i][j]+f_LPF[1]*org[i][j-1]+f_LPF[2]*org[i][j]+f_LPF[3]*org[i][j+1]+f_LPF[4]*org[i][j+2];
elseif(j>
1&
&
height-2)
temp[i][j]=f_LPF[0]*org[i][j-2]+f_LPF[1]*org[i][j-1]+f_LPF[2]*org[i][j]+f_LPF[3]*org[i][j+1]+f_LPF[4]*org[i][j+2];
elseif(j==height-2)
temp[i][j]=f_LPF[0]*org[i][j-2]+f_LPF[1]*org[i][j-1]+f_LPF[2]*org[i][j]+f_LPF[3]*org[i][j+1]+f_LPF[4]*org[i][j];
elseif(j==height-1)
temp[i][j]=f_LPF[0]*org[i][j-2]+f_LPF[1]*org[i][j-1]+f_LPF[2]*org[i][j]+f_LPF[3]*org[i][j-1]+f_LPF[4]*org[i][j-2];
dwt[i][j]=temp[i][j*2+1];
{if(j==0)temp[i][j]=f_HPF[0]*org[i][j+1]+f_HPF[1]*org[i][j]+f_HPF[2]*org[i][j+1];
0&
height-1)
temp[i][j]=f_HPF[0]*org[i][j-1]+f_HPF[1]*org[i][j]+f_HPF[2]*org[i][j+1];
elseif(j==height-1)temp[i][j]=f_HPF[0]*org[i][j-1]+f_HPF[1]*org[i][j]+f_HPF[2]*org[i][j-1];
dwt[i][j+width/2]=temp[i][j*2];
if(flag==1)//horizontaldirection
if(i==0)temp[i][j]=f_LPF[0]*dwt[i+2][j]+f_LPF[1]*dwt[i+1][j]+f_LPF[2]*dwt[i][j]+f_LPF[3]*dwt[i+1][j]+f_LPF[4]*dwt[i+2][j];
elseif(i==1)temp[i][j]=f_LPF[0]*dwt[i][j]+f_LPF[1]*dwt[i-1][j]+f_LPF[2]*dwt[i][j]+f_LPF[3]*dwt[i+1][j]+f_LPF[4]*dwt[i+2][j];
elseif(i>
width-2)temp[i][j]=f_LPF[0]*dwt[i-2][j]+f_LPF[1]*dwt[i-1][j]+f_LPF[2]*dwt[i][j]+f_LPF[3]
*dwt[i+1][j]+f_LPF[4]*dwt[i+2][j];
elseif(i==width-2)temp[i][j]=f_LPF[0]*dwt[i-2][j]+f_LPF[1]*dwt[i-1][j]+f_LPF[2]*dwt[i][j]+f_LPF[3]*dwt[i+1][j]+f_LPF[4]*dwt[i][j];
elseif(i==width-1)temp[i][j]=f_LPF[0]*dwt[i-2][j]+f_LPF[1]*dwt[i-1][j]+f_LPF[2]*dwt[i][j]+f_LPF[3]*dwt[i-1][j]+f_LPF[4]*dwt[i-2][j];
{for(j=0;
j++){
temp1[i][j]=temp[i*2+1][j];
if(i==0)temp[i][j]=f_HPF[0]*dwt[i+1][j]+f_HPF[1]*dwt[i][j]+f_HPF[2]*dwt[i+1][j];
width-1)temp[i][j]=f_HPF[0]*dwt[i-1][j]+f_HPF[1]*dwt[i][j]+f_HPF[2]*dwt[i+1][j];
elseif(i==width-1)temp[i][j]=f_HPF[0]*dwt[i-1][j]+f_HPF[1]*dwt[i][j]+f_HPF[2]*dwt[i-1][j];
temp1[i][j+width/2]=temp[i*2][j];
for(j=width/2;
{if(i==0)temp[i][j]=f_LPF[0]*dwt[i+2][j]+f_LPF[1]*dwt[i+1][j]+f_LPF[2]*dwt[i][j]+f_LPF[3]*dwt[i+1][j]+f_LPF[4]*dwt[i+2][j];
elseif(i==1)
temp[i][j]=f_LPF[0]*dwt[i][j]+f_LPF[1]*dwt[i-1][j]+f_LPF[2]*dwt[i][j]+f_LPF[3]*dwt[i+1][j]+f_LPF[4]*dwt[i+2][j];
height-2)temp[i][j]=f_LPF[0]*dwt[i-2][j]+f_LPF[1]*dwt[i-1][j]+f_LPF[2]*dwt[i][j]+f_LPF[3]*dwt[i+1][j]+f_LPF[4]*dwt[i+2][j];
elseif(i==height-2)temp[i][j]=f_LPF[0]*dwt[i-2][j]+f_LPF[1]*dwt[i-1][j]+f_LPF[2]*dwt[i][j]+f_LPF[3]
*dwt[i+1][j]+f_LPF[4]*dwt[i][j];
elseif(i==height-1)temp[i][j]=f_LPF[0]*dwt[i-2][j]+f_LPF[1]*dwt[i-1][j]+f_LPF[2]*dwt[i][j]+f_LPF[3]
*dwt[i-1][j]+f_LPF[4]*dwt[i-2][j];
{temp1[i+height/2][j-width/2]=temp[i*2+1][j];
{if(i==0)temp[i][j]=f_HPF[0]*dwt[i+1][j]+f_HPF[1]*dwt[i][j]+f_HPF[2]*dwt[i+1][j];
elseif(i>
height-1)temp[i][j]=f_HPF[0]*dwt[i-1][j]+f_HPF[1]*dwt[i][j]+f_HPF[2]*dwt[i+1][j];
elseif(i==height-1)
temp[i][j]=f_HPF[0]*dwt[i-1][j]+f_HPF[1]*dwt[i][j]+f_HPF[2]*dwt[i-1][j];
temp1[i+height/2][j]=temp[i*2][j];
dwt[i][j]=temp1[i][j];
if(flag==2)//verticaldirection
temp[i][j]=f_LPF[0]*org[i][j+2]+f_LPF[1]*org[i][j+1]+f_LPF[2]*org[i][j]+f_LPF[3]*org[i][j+1]+f_LPF[4]*org[i][j+2];
height/2-2)
elseif(j==height/2-2)
elseif(j==height/2-1)
width/4;
{dwt[i][j]=temp[i][j*2+1];
temp[i][j]=f_HPF[0]*org[i][j+1]+f_HPF[1]*org[i][j]+f_HPF[2]*org[i][j+1];
elseif(j>
elseif(j==height-1)
temp[i][j]=f_HPF[0]*org[i][j-1]+f_HPF[1]*org[i][j]+f_HPF[2]*org[i][j-1];
dwt[i][j+width/4]=temp[i][j*2];
if(flag==3)//horizontaldirection
{if(i==0)
temp[i][j]=f_LPF[0]*dwt[i+2][j]+f_LPF[1]*dwt[i+1][j]+f_LPF[2]*dwt[i][j]+
f_LPF[3]*dwt[i+1][j]+f_LPF[4]*dwt[i+2][j];
elseif(i==1)
temp[i][j]=f_LPF[0]*dwt[i-2][j]+f_LPF[1]*dwt[i-1][j]+f_LPF[2]*dwt[i][j]+f_LPF[3]
elseif(i==height/2-2)
temp[i][j]=f_LPF[0]*dwt[i-2][j]+f_LPF[1]*dwt[i-1][j]+f_LPF[2]*dwt[i][j]+f_LPF[3]*dwt[i+1][j]+f_LPF[4]*dwt[i][j];
elseif(i==height/2-1)
temp[i][j]=f_LPF[0]*dwt[i-2][j]+f_LPF[1]*dwt[i-1][j]+f_LPF[2]*dwt[i][j]+f_LPF[3]*dwt[i-1][j]+f_LPF[4]*dwt[i-2][j];
height/4;
{temp1[i][j]=temp[i*2+1][j];
height/2-1)
temp[i][j]=f_HPF[0]*dwt[i-1][j]+f_HPF[1]*dwt[i][j]+f_HPF[2]*dwt[i+1][j];
elseif(i==height/2-1)
}
{temp1[i+height/4][j]=temp[i*2][j];
for(j=width/4;
temp[i][j]=f_LPF[0]*dwt[i-2][j]+f_LP