小波变换C语言实现代码.docx

上传人:b****3 文档编号:4698052 上传时间:2022-12-07 格式:DOCX 页数:28 大小:17.90KB
下载 相关 举报
小波变换C语言实现代码.docx_第1页
第1页 / 共28页
小波变换C语言实现代码.docx_第2页
第2页 / 共28页
小波变换C语言实现代码.docx_第3页
第3页 / 共28页
小波变换C语言实现代码.docx_第4页
第4页 / 共28页
小波变换C语言实现代码.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

小波变换C语言实现代码.docx

《小波变换C语言实现代码.docx》由会员分享,可在线阅读,更多相关《小波变换C语言实现代码.docx(28页珍藏版)》请在冰豆网上搜索。

小波变换C语言实现代码.docx

小波变换C语言实现代码

#include

#include

#defineheight256

#definewidth256

voidtwoDDWT(doubleorg[][width],doubledwt[][width],intNumofBand);

voidoneDDWT(intflag,doubleorg[][width],doubledwt[][width]);

voidtwoDIDWT(doubledwt[][width],doublerec[][width],intNumofBand);

voidoneDIDWT(intflag,doubledwt[][width],doublerec[][width]);

intmain()

{

inti,j;

doubleorg[height][width],dwt[height][width],rec[height][width];

FILE*lena;

FILE*lena3;

FILE*lena4;

lena=fopen("c:

\\lena.raw","rb");

lena3=fopen("c:

\\lena3.raw","wb");

lena4=fopen("c:

\\lena4.raw","wb");

for(i=0;i

{

for(j=0;j

{

org[i][j]=fgetc(lena);

}

}

twoDDWT(org,dwt,4);

for(i=0;i

{

for(j=0;j

{

org[i][j]=dwt[i][j];

}

}

twoDDWT(org,dwt,7);

for(i=0;i

{

for(j=0;j

{

fputc(dwt[i][j],lena3);

}

}

twoDIDWT(dwt,rec,7);

for(i=0;i

{

for(j=0;j

{

dwt[i][j]=rec[i][j];

}

}

twoDIDWT(dwt,rec,4);

for(i=0;i

{

for(j=0;j

{

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])

{

inti,j;

doubletemp[height][width],temp1[height][width];

doublef_LPF[]={-0.125,0.25,0.75,0.25,-0.125};

doublef_HPF[]={-0.5,1,-0.5};

if(flag==0)//verticaldirection

{

for(i=0;i

{

for(j=0;j

{

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&&j

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];

}

}

for(i=0;i

{

for(j=0;j

{

dwt[i][j]=temp[i][j*2+1];

}

}

for(i=0;i

{

for(j=0;j

{

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];

elseif(j>0&&j

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];

}

}

for(i=0;i

{

for(j=0;j

{

dwt[i][j+width/2]=temp[i][j*2];

}

}

}

if(flag==1)//horizontaldirection

{

for(i=0;i

{

for(j=0;j

{

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>1&&i

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(i=0;i

{

for(j=0;j

{

temp1[i][j]=temp[i*2+1][j];

}

}

for(i=0;i

{

for(j=0;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>0&&i

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];

}

}

for(i=0;i

{

for(j=0;j

{

temp1[i][j+width/2]=temp[i*2][j];

}

}

for(i=0;i

{

for(j=width/2;j

{

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>1&&i

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];

}

}

for(i=0;i

{

for(j=width/2;j

{

temp1[i+height/2][j-width/2]=temp[i*2+1][j];

}

}

for(i=0;i

{

for(j=width/2;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>0&&i

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];

}

}

for(i=0;i

{

for(j=width/2;j

{

temp1[i+height/2][j]=temp[i*2][j];

}

}

for(i=0;i

{

for(j=0;j

{

dwt[i][j]=temp1[i][j];

}

}

}

if(flag==2)//verticaldirection

{

for(i=0;i

{

for(j=0;j

{

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&&j

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-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/2-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];

}

}

for(i=0;i

{

for(j=0;j

{

dwt[i][j]=temp[i][j*2+1];

}

}

for(i=0;i

{

for(j=0;j

{

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];

elseif(j>0&&j

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];

}

}

for(i=0;i

{

for(j=0;j

{

dwt[i][j+width/4]=temp[i][j*2];

}

}

}

if(flag==3)//horizontaldirection

{

for(i=0;i

{

for(j=0;j

{

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>1&&i

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-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];

}

}

for(i=0;i

{

for(j=0;j

{

temp1[i][j]=temp[i*2+1][j];

}

}

for(i=0;i

{

for(j=0;j

{

if(i==0)

temp[i][j]=f_HPF[0]*dwt[i+1][j

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1