imdwt1.m
上传用户:sxdygs
上传日期:2013-03-18
资源大小:154k
文件大小:1k
源码类别:

2D图形编程

开发平台:

Matlab

  1. %对一幅图像I进行M尺度的小波变换
  2. I=imread('Fig7.01.jpg');
  3. M=3;% M----小波变换的尺度
  4. I1=double(I);
  5. [m,n]=size(I);
  6. Iout=zeros(size(I));
  7. W1=zeros(size(I));
  8. %=============Haar wavelete transform==================
  9. W1=I1;
  10. for k=1:M
  11. for i=1:n
  12.     W1(:,i)=selfdwt(W1(:,i),1);%对列进行变换
  13. end
  14. for i=1:m
  15.     W1(i,:)=selfdwt(W1(i,:),1);%对行进行变换
  16. end
  17. for i=1:m
  18.     for j=1:n
  19.         Iout(i,j)=W1(i,j);
  20.     end
  21. end
  22. m=m/2;
  23. n=n/2;
  24. W1=zeros(m,n);
  25. for i=1:m
  26.     for j=1:m
  27.         W1(i,j)=Iout(i,j);
  28.     end
  29. end
  30. end
  31. %======================================================
  32. %========================scaling=======================
  33. [m,n]=size(I);
  34. min=0;
  35. for i=1:m
  36.     for j=1:n
  37.         if(Iout(i,j)<min)
  38.            min=Iout(i,j);
  39.        end
  40.    end
  41. end
  42. Iout1=(Iout+abs(min))*.5;
  43. max=255;
  44. for i=1:m
  45.     for j=1:n
  46.         if(Iout1(i,j)>max)
  47.             max=Iout1(i,j);
  48.         end
  49.     end
  50. end
  51. if(max>255)
  52.     Iout1=(Iout1*(255/max)).*2;
  53. end
  54. %======================================================
  55. Iout1(:,256)=255;
  56. Iout1(256,:)=255;
  57. Iout1(1:256,128)=255;
  58. Iout1(128,1:256)=255;
  59. Iout1(1:128,64)=255;
  60. Iout1(64,1:128)=255;
  61. figure
  62. imshow(uint8(Iout.*28))
  63. title('uncaling')
  64. figure
  65. imshow(uint8(Iout1))
  66. title('after scaling')
  67. Iout2=imidwt2(Iout,M);