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

波变换

开发平台:

Matlab

  1. function X = den1_10(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. % 重构至第1层
  14. A1 = wrcoef2('a', C, S, wname, 1);                  
  15. H1 = wrcoef2('h', C, S, wname, 1);
  16. V1 = wrcoef2('v', C, S, wname, 1);
  17. D1 = wrcoef2('d', C, S, wname, 1);
  18. thr_h = Donoho(H1);
  19. thr_v = Donoho(V1);
  20. thr_d = Donoho(D1);
  21. % 对重构图像进行去噪 采用Donoho公式 软阈值方法
  22. H1 = wdencmp('gbl', H1, 'sym4', 2, thr_h, 's', 1);
  23. V1 = wdencmp('gbl', V1, 'sym4', 2, thr_v, 's', 1);
  24. D1 = wdencmp('gbl', D1, 'sym4', 2, thr_d, 's', 1);
  25. % 重构图像
  26. X = A1 + H1 + V1 + D1;