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

波变换

开发平台:

Matlab

  1. function suggthr = wbmpen(c,l,sigma,alpha,arg)
  2. %WBMPEN Penalized threshold for wavelet 1-D or 2-D de-noising.
  3. %   THR = WBMPEN(C,L,SIGMA,ALPHA) returns global 
  4. %   threshold THR for denoising. THR is obtained by a wavelet 
  5. %   coefficients selection rule using a penalization 
  6. %   method provided by Birge-Massart.
  7. %
  8. %   [C,L] is the wavelet decomposition structure of the signal
  9. %   or image to be de-noised.
  10. %
  11. %   SIGMA is the standard deviation of the zero mean Gaussian 
  12. %   white noise in the de-noising model (see WNOISEST for more
  13. %   information).
  14. %
  15. %   ALPHA is a tuning parameter for the penalty term and it 
  16. %   must be a real number greater than 1. The sparsity of the
  17. %   wavelet representation of the de-noised signal or image 
  18. %   grows with ALPHA. Typically ALPHA = 2.
  19. %
  20. %   THR minimizes the penalized criterion given by:
  21. %   let t* be the minimizer of
  22. %   crit(t) = -sum(c(k)^2,k<=t) + 2*SIGMA^2*t*(ALPHA + log(n/t))
  23. %   where c(k) are the wavelet coefficients sorted in  
  24. %   decreasing order of their absolute value and n is the number   
  25. %   of coefficients; then THR = |c(t*)|.
  26. %
  27. %   WBMPEN(C,L,SIGMA,ALPHA,ARG) computes the global threshold
  28. %   and, in addition, plots three curves:  
  29. %   2*SIGMA^2*t*(ALPHA + log(n/t)), sum(c(k)^2,k<=t) and crit(t).
  30. %   
  31. %   See also WDEN, WDENCMP, WPBMPEN, WPDENCMP.
  32. %   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 26-Oct-98.
  33. %   Last Revision: 14-May-2003.
  34. %   Copyright 1995-2004 The MathWorks, Inc.
  35. %   $Revision: 1.6.4.2 $  $Date: 2004/03/15 22:42:26 $
  36. % Check arguments and set problem dimension.
  37. nbIn = nargin;
  38. if nbIn < 4
  39.   error('Not enough input arguments.');
  40. elseif nbIn > 5
  41.   error('Too many input arguments.');
  42. end
  43. dim = 1; if min(size(l))~=1, dim = 2; end
  44. if dim==1 , last = l(1); else , last = prod(l(1,:)); end
  45. nbcfs  = prod(size(c));
  46. c      = c(last+1:end);
  47. thresh = sort(abs(c));
  48. thresh = thresh(end:-1:1);
  49. rl2scr = cumsum(thresh.^2);
  50. xpen   = [1:length(thresh)];
  51. pen    = 2*sigma^2*xpen.*(alpha + log(nbcfs./xpen));
  52. [dummy,indmin] = min(pen-rl2scr);
  53. suggthr = thresh(indmin);
  54. if nargin==5
  55.     h = figure;
  56.     subplot(311),plot(xpen,pen),xlabel('pen')
  57.     subplot(312),plot(xpen,rl2scr),xlabel('rl2scr')
  58.     subplot(313),plot(xpen,pen-rl2scr),xlabel('crit')
  59. end