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

波变换

开发平台:

Matlab

  1. function [thr,nkeep] = wdcbm2(c,s,alpha,m)
  2. %WDCBM2 Thresholds for wavelet 2-D using Birge-Massart strategy.
  3. %   [THR,NKEEP] = WDCBM2(C,S,ALPHA,M) returns level-dependent 
  4. %   thresholds THR and numbers of coefficients to be kept NKEEP,
  5. %   for de-noising or compression. THR is obtained using a wavelet 
  6. %   coefficients selection rule based on Birge-Massart strategy.
  7. %
  8. %   [C,S] is the wavelet decomposition structure of the image
  9. %   to be denoised or compressed, at level j = size(S,1)-2.
  10. %   ALPHA and M must be real numbers greater than 1.  
  11. %
  12. %   THR is a matrix 3 by j, THR(:,i) contains the level
  13. %   dependent thresholds in the three orientations
  14. %   horizontal, diagonal and vertical, for level i.
  15. %   NKEEP is a vector of length j, NKEEP(i) 
  16. %   contains the number of coefficients to be kept at level i. 
  17. %
  18. %   j, M and ALPHA define the strategy:
  19. %   - at level j+1 (and coarser levels), everything is kept.
  20. %   - for level i from 1 to j, the n_i largest coefficients
  21. %   are kept with n_i = M/(j+2-i)^ALPHA. 
  22. %
  23. %   Typically ALPHA = 1.5 for compression and ALPHA = 3 for de-noising.
  24. %   A default value for M is M = prod(S(1,:)) the number of 
  25. %   the coarsest approximation coefficients, since the previous 
  26. %   formula leads for i = j+1, to n_(j+1) = M = prod(S(1,:)).
  27. %   Recommended values for M are from prod(S(1,:)) to 6*prod(S(1,:)).
  28. %
  29. %   WDCBM2(C,S,ALPHA) is equivalent to WDCBM2(C,S,ALPHA,PROD(S(1,:))). 
  30. %
  31. %   See also WDENCMP, WPDENCMP.
  32. %   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 25-Apr-98.
  33. %   Last Revision: 14-May-2003.
  34. %   Copyright 1995-2004 The MathWorks, Inc.
  35. %   $Revision: 1.7.4.2 $  $Date: 2004/03/15 22:42:35 $
  36. % Check arguments.
  37. nbIn = nargin;
  38. if nbIn < 3
  39.   error('Not enough input arguments.');
  40. end
  41. if errargt(mfilename,alpha-1,'rep'), error('*'), end
  42. if nbIn==4     
  43.     if errargt(mfilename,m-1,'rep'), error('*'), end
  44. else            
  45.     m = prod(s(1,:));    
  46. end
  47. m = max(m,1);
  48. J = size(s,1)-2;   % low frequency cutoff. 
  49. thr = zeros(3,J);  
  50. nkeep = zeros(1,J);  
  51. % Wavelet coefficients selection.
  52. for j=1:J
  53.     % number of coefs to be kept.
  54.     n = m/(J+2-j)^alpha;   
  55.     n = min(round(n),prod(s(J-j+2,:)));
  56.     % thresholds.
  57.     if n == prod(s(J-j+2,:))
  58.         thr(:,j) = zeros(3,1);
  59.     else
  60.         d = detcoef2('compact',c,s,j);
  61.         d = sort(abs(d));
  62.         thr(:,j) = ones(3,1)*d(end-n);
  63.     end
  64.     nkeep(j) = n;
  65. end