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

波变换

开发平台:

Matlab

  1. function X = den3(x, wname, n, thr, m)
  2. % 广义小波收缩消噪阈值选择及应用研究
  3. % 用m来控制大于阈值的小波系数收缩的程度
  4. % m=0时 为软阈值函数
  5. % m=∞时 为硬阈值函数
  6. % m取其他数时 介于软硬阈值之间
  7. % w_jk < λ, w_jk' = 0
  8. % w_jk >=λ1, w_jk' = sign(w_jk) * ( |w_jk| - λ^m/|w_jk|^(m-1) )
  9. [C, S] = wavedec2(x, n, wname);                     %对图像进行小波分解
  10. dcoef = C( prod(S(1, :)) + 1 : end);                %高频部分系数
  11. ind = find( abs(dcoef) < thr) + prod(S(1, :));      %小于阈值thr的系数
  12. C(ind) = 0;                                         %   直接置零
  13. ind = find( abs(dcoef) >= thr ) + prod(S(1, :));    %大于阈值的系数
  14. C(ind) = sign(C(ind)) .*...                         % x = sign(x) *
  15.     (abs(C(ind)) - thr^m ./ abs(C(ind)).^(m-1));    %     ( |x| - λ^m/|x|^(m-1) )
  16. X = waverec2(C, S, wname);                          %重构图像