ihlwt2.m
上传用户:haiyisale
上传日期:2013-01-09
资源大小:3246k
文件大小:1k
源码类别:

波变换

开发平台:

Matlab

  1. function x = ihlwt2(a,h,v,d,integerFlag)
  2. %IHLWT2 Haar (Integer) Wavelet reconstruction 2-D using lifting.
  3. %
  4. %     x = ihlwt2(a,h,v,d) ou
  5. %     x = ihlwt2(a,h,v,d,integerFlag)
  6. %     Dans le cas 2, on a une transformation en entiers
  7. %     modulo la normalisation.
  8. %   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 28-Jan-2000.
  9. %   Last Revision 16-Jun-2003.
  10. %   Copyright 1995-2004 The MathWorks, Inc.
  11. %   $Revision: 1.1.6.3 $ $Date: 2004/04/13 00:39:41 $ 
  12. % Test si transformation en entiers.
  13. notInteger = nargin<5;
  14. % Reverse Lifting.
  15. if notInteger
  16.     % Normalization.
  17.     d = 4*d;
  18.     v = 2*v;
  19.     h = 2*h;
  20.     v = (v-d/2);      % Reverse primal lifting.
  21. else
  22.     v = (v-fix(d/2)); % Reverse primal lifting.
  23. end
  24. d = v+d;   % Reverse dual lifting.
  25. % Merging.
  26. nbR = size(d,1)+size(v,1);
  27. nbC = size(d,2);
  28. H = zeros(nbR,nbC);
  29. H(2:2:end,:) = v;
  30. H(1:2:end,:) = d;
  31. % Reverse Lifting.
  32. if notInteger
  33.     a = (a-h/2);      % Reverse primal lifting.
  34. else
  35.     a = (a-fix(h/2)); % Reverse primal lifting.
  36. end
  37. h = a+h;   % Reverse dual lifting.
  38. % Merging.
  39. L = zeros(nbR,nbC);
  40. L(2:2:end,:) = a;
  41. L(1:2:end,:) = h;
  42. % Reverse Lifting.
  43. if notInteger
  44.     L = (L-H/2);      % Reverse primal lifting.
  45. else
  46.     L = (L-fix(H/2)); % Reverse primal lifting.
  47. end
  48. H = L+H;   % Reverse dual lifting.
  49. % Merging.
  50. nbC = size(L,2)+size(H,2);
  51. nbR = size(L,1);
  52. x = zeros(nbR,nbC);
  53. x(:,2:2:end,:) = L;
  54. x(:,1:2:end,:) = H;