声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 8695|回复: 3

[转帖]二代小波harr变换,整数小波变换

[复制链接]
发表于 2006-5-10 16:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
  1. %文件名:liftwavedec2.m
  2. %编 写:郭林庚
  3. %时 间:2005/11/01
  4. %函数功能:二代小波harr变换,整数小波变换
  5. %输入格式举例:imgwave=liftwavedec2(image,256,3)
  6. %参数说明:
  7. % image--输入的图像矩阵,要为方阵
  8. % m --输入的图像矩阵大小
  9. % n --小波变换次数
  10. %测试用例:
  11. % img=imread('lena.jpg');
  12. % [m,m]=size(img);
  13. % imgwave=liftwavedec2(img,m,3);
  14. % imshow(imgwave);

  15. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  16. function imgwave=liftwavedec2(image,m,n)
  17. img=image;
  18. M=m;
  19. for i=1:n
  20. imgwave1=lwavedec2(img,M);
  21. imgwave(1:M,1:M)=imgwave1;
  22. M=M/2;
  23. img=imgwave1(1:M,1:M);
  24. end

  25. %
  26. % 二代小波harr变换,整数小波变换
  27. %
  28. function f_row=lwavedec2(image,N)
  29. f=image;
  30. T=N/2; % 子图像维数


  31. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  32. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  33. %%%% 1.列变换

  34. % A.分裂(奇偶分开)

  35. f1=f([1:2:N-1],:); % 奇数
  36. f2=f([2:2:N],:); % 偶数

  37. % f1(:,T+1)=f1(:,1); % 补列
  38. % f2(T+1,:)=f2(1,:); % 补行

  39. % B.预测

  40. for i_hc=1:T;
  41. high_frequency_column(i_hc,:)=f1(i_hc,:)-f2(i_hc,:);
  42. end;

  43. % high_frequency_column(T+1,:)=high_frequency_column(1,:); % 补行

  44. % C.更新

  45. for i_lc=1:T;
  46. low_frequency_column(i_lc,:)=f2(i_lc,:)+1/2*high_frequency_column(i_lc,:);
  47. end;

  48. % D.合并
  49. f_column([1:1:T],:)=low_frequency_column([1:T],:);
  50. f_column([T+1:1:N],:)=high_frequency_column([1:T],:);

  51. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  52. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  53. %%%% 2.行变换

  54. % A.分裂(奇偶分开)

  55. f1=f_column(:,[1:2:N-1]); % 奇数
  56. f2=f_column(:,[2:2:N]); % 偶数


  57. % f2(:,T+1)=f2(:,1); % 补行

  58. % B.预测

  59. for i_hr=1:T;
  60. high_frequency_row(:,i_hr)=f1(:,i_hr)-f2(:,i_hr);
  61. end;

  62. % high_frequency_row(:,T+1)=high_frequency_row(:,1); % 补行

  63. % C.更新

  64. for i_lr=1:T;
  65. low_frequency_row(:,i_lr)=f2(:,i_lr)+1/2*high_frequency_row(:,i_lr);
  66. end;

  67. % D.合并
  68. f_row(:,[1:1:T])=low_frequency_row(:,[1:T]);
  69. f_row(:,[T+1:1:N])=high_frequency_row(:,[1:T]);
复制代码

[ 本帖最后由 suffer 于 2006-10-9 20:04 编辑 ]
回复
分享到:

使用道具 举报

 楼主| 发表于 2006-5-10 16:40 | 显示全部楼层
  1. function imgwave=liftwaverec2(image,m,n)
  2. M=m/(2^n);
  3. imgwave=image;
  4. for i=n:-1:1
  5. M=M*2;
  6. img=imgwave(1:M,1:M);
  7. imgwave1=lwaverec2(img,M);
  8. imgwave(1:M,1:M)=imgwave1;
  9. end


  10. function f_column=lwaverec2(f_row,N);
  11. T=N/2;
  12. %figure(2);
  13. %subplot(221),imshow(f_row),title('变换后图像');
  14. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  15. %%%%%%%%%%%%%%%%%%%反变换%%%%%%%%%%%%%%%%%%%%%%%%%
  16. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


  17. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  18. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  19. %%%% 1.行变换

  20. % A.提取(低频高频分开)

  21. f1=f_row(:,[T+1:1:N]); % 奇数
  22. f2=f_row(:,[1:1:T]); % 偶数


  23. % f2(:,T+1)=f2(:,1); % 补行

  24. % B.更新

  25. for i_lr=1:T;
  26. low_frequency_row(:,i_lr)=f2(:,i_lr)-1/2*f1(:,i_lr);
  27. end;

  28. % C.预测

  29. for i_hr=1:T;
  30. high_frequency_row(:,i_hr)=f1(:,i_hr)+low_frequency_row(:,i_hr);
  31. end;

  32. % high_frequency_row(:,T+1)=high_frequency_row(:,1); % 补行


  33. % D.合并(奇偶分开合并)
  34. f_row(:,[2:2:N])=low_frequency_row(:,[1:T]);
  35. f_row(:,[1:2:N-1])=high_frequency_row(:,[1:T]);

  36. %subplot(223),imshow(f_row),title('行变换图像');


  37. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  38. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  39. %%%% 2.列变换

  40. % A.提取(低频高频分开)

  41. f1=f_row([T+1:1:N],:); % 奇数
  42. f2=f_row([1:1:T],:); % 偶数

  43. % f1(:,T+1)=f1(:,1); % 补列
  44. % f2(T+1,:)=f2(1,:); % 补行

  45. % B.更新

  46. for i_lc=1:T;
  47. low_frequency_column(i_lc,:)=f2(i_lc,:)-1/2*f1(i_lc,:);
  48. end;

  49. % C.预测

  50. for i_hc=1:T;
  51. high_frequency_column(i_hc,:)=f1(i_hc,:)+low_frequency_column(i_hc,:);
  52. end;

  53. % high_frequency_column(T+1,:)=high_frequency_column(1,:); % 补行

  54. % D.合并(奇偶分开合并)
  55. f_column([2:2:N],:)=low_frequency_column([1:T],:);
  56. f_column([1:2:N-1],:)=high_frequency_column([1:T],:);

  57. %subplot(224),imshow(f_column),title('行变换图像');
复制代码


[ 本帖最后由 suffer 于 2006-10-9 20:05 编辑 ]
发表于 2008-12-5 17:43 | 显示全部楼层
一楼代码有问题吗 ??
发表于 2009-4-29 21:23 | 显示全部楼层
我在厌学论坛上看到过这个代码
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-17 08:27 , Processed in 0.054462 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表