den1_5_1.m
上传用户:lcj80317
上传日期:2007-01-26
资源大小:625k
文件大小:2k
- function X = den1_5_1(x, wname, n, thr, thr1)
- % 半软阈值函数 改进
- % 对一层的重构图像进行均值值滤波
- % thr1 = 0.6 * thr;
- [C, S] = wavedec2(x, n, wname); % 对图像进行小波分解
- dcoef = C( prod(S(1, :)) + 1 : end); % 高频部分系数
- ind = find( abs(dcoef) < thr1) + prod(S(1, :)); % 小于thr1的系数
- C(ind) = 0; % 直接置零
- ind = find( abs(dcoef) >= thr1 & abs(dcoef) < thr )...
- + prod(S(1, :)); % 大于thr1小于thr的系数
- C(ind) = sign(C(ind)) .* ...
- ( (thr / (thr - thr1)) * (abs(C(ind)) - thr1) );
- % ind = find( abs(dcoef) >= thr ) + prod(S(1, :)); %大于thr的系数
- % C(ind) = sign(C(ind)) .* ( abs(C(ind)) - alpha * thr );
- % 重构至第1层
- A1 = wrcoef2('a', C, S, wname, 1);
- H1 = wrcoef2('h', C, S, wname, 1);
- V1 = wrcoef2('v', C, S, wname, 1);
- D1 = wrcoef2('d', C, S, wname, 1);
- % 对三个子图像进行均值滤波
- h_fir = [1 1 1 1 1]' / 5; % 水平方向滤波器
- v_fir = [1 1 1 1 1] / 5; % 垂直方向滤波器
- 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; % 对角线方向滤波器
- H1 = filter2(h_fir, H1);
- V1 = filter2(v_fir, V1);
- D1 = filter2(d_fir, D1);
- % % 中值--------------------------------------------------------------------
- % H1 = medfilt2(H1, [3 3]);
- % V1 = medfilt2(V1, [3 3]);
- % D1 = medfilt2(D1, [3 3]);
- % % -------------------------------------------------------------------------
- % 重构图像
- X = A1 + H1 + V1 + D1;