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

其他

开发平台:

Matlab

  1. function y = dt_BayesShrink(x)
  2. % Local Adaptive Image Denoising Algorithm
  3. % Usage :%        y = dt_BayesShrink(x)
  4. % INPUT :%        x - a noisy image
  5. % OUTPUT :%        y - the corresponding denoised image
  6. % Set the windowsize and the corresponding filter
  7. windowsize  = 7;
  8. windowfilt = ones(1,windowsize)/windowsize;
  9. % Number of Stages
  10. J = 6;
  11. I=sqrt(-1);
  12. % symmetric extension
  13. L = length(x); % length of the original image.
  14. N = L+2^J;     % length after extension.
  15. x = symextend(x,2^(J-1));
  16. %-------------------
  17. %load nor_dualtree    % run normaliz_coefcalc_dual_tree to generate this mat file.
  18. % Forward dual-tree DWT
  19. % Either FSfarras or AntonB function can be used to compute the stage 1 filters  
  20. [Faf, Fsf] = FSfarras;
  21. %[Faf, Fsf] = AntonB;
  22. [af, sf] = dualfilt1;
  23. W = cplxdual2D(x, J, Faf, af);
  24. %W = normcoef(W,J,nor);%-------------------------
  25. % Noise variance estimation using robust median estimator..
  26. tmp = W{1}{1}{1}{1};
  27. Nsig = median(abs(tmp(:)))/0.6745;
  28. for scale = 1:J-1
  29.     for dir = 1:2
  30.         for dir1 = 1:3            
  31.             % Noisy complex coefficients
  32.             %Real part
  33.             Y_coef_real = W{scale}{1}{dir}{dir1};
  34.             % imaginary part
  35.             Y_coef_imag = W{scale}{2}{dir}{dir1};
  36.             % The corresponding noisy parent coefficients
  37.             %Real part
  38.             Y_parent_real = W{scale+1}{1}{dir}{dir1};
  39.             % imaginary part
  40.             Y_parent_imag = W{scale+1}{2}{dir}{dir1};
  41.             % Extend noisy parent matrix to make the matrix size the same as the coefficient matrix.
  42.             Y_parent_real  = expand(Y_parent_real);
  43.             Y_parent_imag   = expand(Y_parent_imag);            
  44.             % Signal variance estimation
  45.             Wsig = conv2(windowfilt,windowfilt,(Y_coef_real).^2,'same');%---用Gauss分布的ML估计系数方差----
  46.             Ssig = sqrt(max(Wsig-Nsig.^2,eps));          
  47.             % Threshold value estimation---Bayes
  48.             T = Nsig^2./Ssig;            
  49.             % Bivariate Shrinkage
  50.             Y_coef = Y_coef_real+I*Y_coef_imag;
  51.             Y_parent = Y_parent_real + I*Y_parent_imag;
  52.             
  53.             Y_coef = BayesShrink(Y_coef,T);
  54.             
  55.             W{scale}{1}{dir}{dir1} = real(Y_coef);
  56.             W{scale}{2}{dir}{dir1} = imag(Y_coef);
  57.             
  58.         end
  59.     end
  60. end
  61. % Inverse Transform
  62. %W = unnormcoef(W,J,nor);------------------
  63. y = icplxdual2D(W, J, Fsf, sf);
  64. % Extract the image
  65. ind = 2^(J-1)+1:2^(J-1)+L;
  66. y = y(ind,ind);