小波去噪程序c语言,小波变换C语言实现代码.doc

#include

#include

#define height 256

#define width 256

void twoDDWT(double org[][width], double dwt[][width],int NumofBand);

void oneDDWT(int flag, double org[][width], double dwt[][width]);

void twoDIDWT(double dwt[][width], double rec[][width],int NumofBand);

void oneDIDWT(int flag, double dwt[][width], double rec[][width]);

int main()

{

int i, j;

double org[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 < height; i++)

{

for (j = 0; j < width; j++)

{

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

}

}

twoDDWT(org, dwt,4);

for (i = 0; i < height/2; i++)

{

for (j = 0; j < width/2; j++)

{

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

}

}

twoDDWT(org, dwt,7);

for (i = 0; i < height; i++)

{

for (j = 0; j < width; j++)

{

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

}

}

twoDIDWT(dwt, rec,7);

for (i = 0; i < height/2; i++)

{

for (j = 0; j < width/2; j++)

{

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

}

}

twoDIDWT(dwt, rec,4);

for (i = 0; i < height; i++)

{

for (j = 0; j < width; j++)

{

fputc(rec[i][j], lena4);

}

}

return 0;

}

void twoDDWT(double org[][width], double dwt[][width],int NumofBand)

{

if (NumofBand==4)

{

oneDDWT(0, org, dwt);

oneDDWT(1, org, dwt);

}

if (NumofBand==7)

{

oneDDWT(2, org, dwt);

oneDDWT(3, org, dwt);

}

}

void oneDDWT(int flag, double org[][width], double dwt[][width])

{

int i, j;

double temp[height][width], temp1[height][width];

double f_LPF[] = { -0.125, 0.25, 0.75, 0.25, -0.125 };

double f_HPF[] = { -0.5, 1, -0.5 };

if (flag == 0)//vertical direction

{

for (i = 0; i < height; i++)

{

for (j = 0; j < width; 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];

else if (j == 1)

temp[i][j] = f_LPF[0] * org[i][j] + f_LPF[1] * org

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值