#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] *...