denoising_BayesShrink.m
上传用户:sla11nk8
上传日期:2013-03-09
资源大小:21k
文件大小:1k
源码类别:

其他

开发平台:

Matlab

  1. function y = denoising_BayesShrink(x)
  2. % Local Adaptive Image Denoising Algorithm
  3. % Usage :
  4. %        y = denoising_BayesShrink(x)
  5. % INPUT :
  6. %        x - a noisy image
  7. % OUTPUT :
  8. %        y - the corresponding denoised image
  9. % Adjust windowsize and the corresponding filter
  10. windowsize  = 7;
  11. windowfilt = ones(1,windowsize)/windowsize;
  12. % Number of Stages
  13. L = 6;
  14. % symmetric extension
  15. N = length(x);
  16. N = N+2^L;
  17. x = symextend(x,2^(L-1));
  18. % forward transform
  19. [af, sf] = farras;
  20. W = dwt2D(x,L,af); 
  21. % Noise variance estimation using robust median estimator..
  22. tmp = W{1}{3};
  23. Nsig = median(abs(tmp(:)))/0.6745;
  24. for scale = 1:L-1
  25.     for dir = 1:3
  26.         
  27.         % noisy coefficients 
  28.         Y_coefficient = W{scale}{dir};
  29.         
  30.         % noisy parent        
  31.         Y_parent = W{scale+1}{dir};
  32.         
  33.         % extent Y_parent to make the matrix size be equal to Y_coefficient         
  34.         Y_parent = expand(Y_parent);
  35.         
  36.         % Signal variance estimation
  37.         
  38.         Wsig = conv2(windowfilt,windowfilt,(Y_coefficient).^2,'same');%---用Gauss分布的ML估计系数方差----
  39.         Ssig = sqrt(max(Wsig-Nsig.^2,eps));
  40.        
  41.         % Threshold value estimation 
  42.         T = Nsig^2./Ssig;
  43.         
  44.         % Bayes Shrinkage
  45.         W{scale}{dir} = BayesShrink(Y_coefficient,T);        
  46.     end
  47. end
  48. % Inverse Transform
  49. y = idwt2D(W,L,sf);
  50. % Extract the image
  51. y = y(2^(L-1)+1:2^(L-1)+512,2^(L-1)+1:2^(L-1)+512);