den1_5_1.m
上传用户:lcj80317
上传日期:2007-01-26
资源大小:625k
文件大小:2k
源码类别:

波变换

开发平台:

Matlab

  1. function X = den1_5_1(x, wname, n, thr, thr1)
  2. % 半软阈值函数 改进
  3. % 对一层的重构图像进行均值值滤波
  4. % thr1 = 0.6 * thr;
  5. [C, S] = wavedec2(x, n, wname);                     % 对图像进行小波分解
  6. dcoef = C( prod(S(1, :)) + 1 : end);                % 高频部分系数
  7. ind = find( abs(dcoef) < thr1) + prod(S(1, :));     % 小于thr1的系数
  8. C(ind) = 0;                                         %   直接置零
  9. ind = find( abs(dcoef) >= thr1 & abs(dcoef) < thr )...
  10.      + prod(S(1, :));                               % 大于thr1小于thr的系数
  11. C(ind) = sign(C(ind)) .* ...
  12.     ( (thr / (thr - thr1)) * (abs(C(ind)) - thr1) );
  13. % ind = find( abs(dcoef) >= thr ) + prod(S(1, :));    %大于thr的系数
  14. % C(ind) = sign(C(ind)) .* ( abs(C(ind)) - alpha * thr );
  15. % 重构至第1层
  16. A1 = wrcoef2('a', C, S, wname, 1);                  
  17. H1 = wrcoef2('h', C, S, wname, 1);
  18. V1 = wrcoef2('v', C, S, wname, 1);
  19. D1 = wrcoef2('d', C, S, wname, 1);
  20. % 对三个子图像进行均值滤波
  21. h_fir = [1 1 1 1 1]' / 5;                                               % 水平方向滤波器
  22. v_fir = [1 1 1 1 1] / 5;                                                % 垂直方向滤波器
  23. d_fir = [0 0 1 0 0; 0 0 1 0 0; 1 1 1 1 1; 0 0 1 0 0; 0 0 1 0 0] / 9;    % 对角线方向滤波器
  24. H1 = filter2(h_fir, H1);
  25. V1 = filter2(v_fir, V1);
  26. D1 = filter2(d_fir, D1);
  27. % % 中值--------------------------------------------------------------------
  28. % H1 = medfilt2(H1, [3 3]);
  29. % V1 = medfilt2(V1, [3 3]);
  30. % D1 = medfilt2(D1, [3 3]);
  31. % % -------------------------------------------------------------------------
  32. % 重构图像
  33. X = A1 + H1 + V1 + D1;