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

波变换

开发平台:

Matlab

  1. function OUT = lwtcoef2(type,xDEC,LS,level,levEXT)
  2. %LWTCOEF2 Extract or reconstruct 2-D LWT wavelet coefficients.
  3. %   Y = LWTCOEF2(TYPE,XDEC,LS,LEVEL,LEVEXT) returns the coefficients
  4. %   or the reconstructed coefficients of level LEVEXT, extracted from
  5. %   XDEC, the LWT decomposition at level LEVEL obtained with the 
  6. %   lifting scheme LS.
  7. %   The valid values for TYPE are:
  8. %      - 'a' for approximations
  9. %      - 'h', 'v', 'd'  for horizontal, vertical and diagonal details
  10. %         respectively.
  11. %      - 'ca' for  coefficients of approximations
  12. %      - 'ch', 'cv', 'cd'  for  coefficients of horizontal, vertical
  13. %        and diagonal details respectively.
  14. %
  15. %   Y = LWTCOEF2(TYPE,XDEC,W,LEVEL,LEVEXT) returns the same output 
  16. %   using W which is the name of a "lifted wavelet".
  17. %
  18. %   See also ILWT2, LWT2.
  19. %   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 06-Feb-2000.
  20. %   Last Revision: 10-Jul-2003.
  21. %   Copyright 1995-2004 The MathWorks, Inc.
  22. %   $Revision: 1.1.6.3 $  $Date: 2004/04/13 00:40:00 $
  23. firstIdxAPP = 1;
  24. firstIdxDET = 1+mod(firstIdxAPP,2);
  25. DELTA = firstIdxAPP-1;
  26. [R,C]  = size(xDEC);
  27. indCFS_ROW = [1:R];
  28. indCFS_COL = [1:C];
  29. indROW = (1-DELTA)*ones(1,levEXT);
  30. indCOL = (1-DELTA)*ones(1,levEXT);
  31. switch type
  32.   case {'a','ca'}
  33.   case {'h','ch'} , indROW(levEXT) = DELTA;
  34.   case {'v','cv'} , indCOL(levEXT) = DELTA;
  35.   case {'d','cd'} , indCOL(levEXT) = DELTA; indROW(levEXT) = DELTA;
  36. end
  37. % Extract coefficients.
  38. for k=1:levEXT
  39.     firstROW = 2-indROW(k);
  40.     firstCOL = 2-indCOL(k);
  41.     indCFS_ROW = indCFS_ROW(firstROW:2:end);
  42.     indCFS_COL = indCFS_COL(firstCOL:2:end);
  43. end
  44. OUT = xDEC(indCFS_ROW,indCFS_COL);
  45. if isequal(type,'ca') & (level>levEXT)
  46.     OUT = ilwt2(OUT,LS,level-levEXT);
  47. end
  48. switch type
  49.   case {'a','h','v','d'}
  50.     xTMP = zeros(R,C);
  51.     xTMP(indCFS_ROW,indCFS_COL) = OUT;
  52.     OUT = ilwt2(xTMP,LS,level);
  53. end