- 小波去噪實(shí)現(xiàn)步驟
(1) 二維信號(hào)的小波分解。 選擇一個(gè)小波和小波分解的層次N肩豁,然后計(jì)算信號(hào)s到第N層的分解脊串。
(2)對(duì)高頻系數(shù)進(jìn)行閾值量化辫呻。對(duì)于從1~N的每一層,選擇一個(gè)閾值琼锋,并對(duì)這一層的高頻系數(shù)進(jìn)行軟閾值量化處理放闺。
(3)二維小波重構(gòu)。 根據(jù)小波分解的第N層的低頻系數(shù)和經(jīng)過修改的從第一層到第N層的各層高頻系數(shù)缕坎,計(jì)算二維信號(hào)的小波重構(gòu)怖侦。 - MATLAB函數(shù)介紹
(1) wavedec2函數(shù)
該函數(shù)用于對(duì)多尺度二維小波進(jìn)行分解,其常用調(diào)用格式為:
[C,S] = wavedec2(X,N,'wname')
用小波函數(shù)wname對(duì)信號(hào)X在尺度N上的二維分解谜叹,N是嚴(yán)格的正整數(shù)匾寝。
(2) wrcoef2函數(shù)
該函數(shù)用于對(duì)二維小波系數(shù)進(jìn)行單支重構(gòu),其調(diào)用格式為:
X = wrcoef2('type',C,S,'wname',N)
用指定的小波函數(shù)wname進(jìn)行N尺度重構(gòu)荷腊,當(dāng)type = 'a'時(shí)艳悔,僅對(duì)信號(hào)的低頻部分進(jìn)行重構(gòu),此時(shí)N可以為0停局;當(dāng)type = 'h'(或'v'/'d')時(shí)很钓,對(duì)信號(hào)(水平,垂直董栽,對(duì)角)的高頻進(jìn)行重構(gòu)码倦,N為嚴(yán)格正整數(shù)。
(3) wthcoef2函數(shù)
該函數(shù)用于對(duì)二維信號(hào)的小波系數(shù)閾值進(jìn)行處理锭碳,常用調(diào)用格式:
NC = wthcoef2('type',C,S,N,T,SORH)
返回經(jīng)過小波分解結(jié)構(gòu)[C,S]進(jìn)行處理后的新的小波分解向量NC袁稽,[NC,S]即構(gòu)成一個(gè)新的小波分解結(jié)構(gòu)。
N是一個(gè)包含高頻尺度的向量擒抛,T是相應(yīng)的閾值推汽,且N和T長(zhǎng)度須相等。返回'type'(水平歧沪、垂直歹撒、對(duì)角線)方向的小波分解向量NC。參數(shù)SORH用來對(duì)閾值方式進(jìn)行選擇诊胞,當(dāng)SORH='s'時(shí)暖夭,為軟閾值,當(dāng)SORH='h'時(shí)撵孤,為硬閾值迈着。 - 小波去噪MATLAB實(shí)現(xiàn)
%% 實(shí)例1
clear all;
load facets;
subplot(2,2,1);
image(X);
colormap(map);
xlabel('(a)原始圖像')
axis square
% 產(chǎn)生含噪聲圖像
init = 2055615866;
randn('seed',init);
x = X + 50*randn(size(X));
subplot(2,2,2);
image(x);
colormap(map);
xlabel('(b)含噪聲圖像')
axis square
% 下面進(jìn)行圖像的去噪處理
% 用小波函數(shù)coif3對(duì)x進(jìn)行2層小波分解
[c,s] = wavedec2(x,2,'coif3');
% 提取小波分解的第一層的低頻圖像,即實(shí)現(xiàn)了低通濾波去噪
% 設(shè)置尺度向量
n = [1,2];
% 設(shè)置閾值向量p
p = [10.12, 23.28];
% 對(duì)三個(gè)方向高頻系數(shù)進(jìn)行閾值處理
nc = wthcoef2('h',c,s,n,p,'s');
nc = wthcoef2('v',nc,s,n,p,'s');
nc = wthcoef2('d',nc,s,n,p,'s');
% 對(duì)新的小波分解結(jié)構(gòu)[c,s]進(jìn)行重構(gòu)
x1 = waverec2(nc,s,'coif3');
subplot(2,2,3);
image(x1);
colormap(map);
xlabel('(c)第一次去噪圖像')
axis square
% 對(duì)nc再次進(jìn)行濾波去噪
xx = wthcoef2('v',nc,s,n,p,'s');
x2 = waverec2(xx,s,'coif3');
subplot(2,2,4)
image(x2);
colormap(map);
xlabel('(d)第二次去噪圖像');
axis square
1.jpg
%% 實(shí)例2
load leleccum;
indx = 1:1024;
x = leleccum(indx);
% 產(chǎn)生含噪信號(hào)
init = 2055615886;
randn('seed',init);
nx = x + 18*randn(size(x));
% 使用小波函數(shù)‘db6’對(duì)信號(hào)進(jìn)行3層分解
[c,l] = wavedec(nx,3,'db6');
% 估計(jì)尺度1的噪聲標(biāo)準(zhǔn)差
sigma = wnoisest(c,l,1);
alpha = 2;
% 獲取消噪過程中的閾值
thr = wbmpen(c,l,sigma,alpha);
keepapp = 1;
% 對(duì)信號(hào)進(jìn)行消噪
xd = wdencmp('gbl',c,l,'db6',3,thr,'s',keepapp);
figure(2)
subplot(221);
plot(x);
title('原始信號(hào)')
subplot(222);
plot(nx);
title('含噪信號(hào)')
subplot(223)
plot(xd);
title('消噪后的信號(hào)')
2.jpg
%% 實(shí)例3
% 在本例中邪码,對(duì)小波分析系數(shù)使用函數(shù)wthcoef進(jìn)行閾值處理裕菠, 然后利用閾值處理后的小波系數(shù)進(jìn)行重構(gòu)達(dá)到去噪目的
load leleccum;
indx = 1:1024;
x = leleccum(indx);
% 產(chǎn)生含噪信號(hào)
init = 2055615886;
randn('seed',init);
nx = x + 18*randn(size(x));
% 使用小波函數(shù)‘db5’對(duì)信號(hào)進(jìn)行3層分解
[c,l] = wavedec(nx,3,'db5');
% 設(shè)置尺度向量
n = [1,2,3];
% 設(shè)置閾值向量
p = [100, 90, 80];
% 對(duì)高頻系數(shù)進(jìn)行閾值處理
nc = wthcoef('d',c,l,n,p);
% 對(duì)修正后的小波分解結(jié)構(gòu)進(jìn)行重構(gòu)
rx = waverec(nc, l, 'db5');
figure
subplot(221);
plot(x);
title('原始信號(hào)')
subplot(222)
plot(nx)
title('含噪信號(hào)')
subplot(223)
plot(rx);
title('消噪后的信號(hào)');
3.jpg
%% 實(shí)例4
% 本例中,使用一維信號(hào)的自動(dòng)消噪函數(shù)wden對(duì)信號(hào)進(jìn)行消噪
load leleccum;
indx = 1:1024;
x = leleccum(indx);
% 產(chǎn)生含噪信號(hào)
init = 2055615866;
randn('seed',init);
nx = x + 18*randn(size(x));
% 將信號(hào)nx使用小波函數(shù)‘sym5’分解到第5層
% 使用minimaxi閾值選擇系數(shù)進(jìn)行處理闭专,消除噪聲信號(hào)
lev = 5;
xd = wden(nx,'minimaxi','s','mln',lev,'sym5');
figure
subplot(221);
plot(x);
title('原始信號(hào)')
subplot(222)
plot(nx)
title('含噪信號(hào)')
subplot(223)
plot(xd);
title('消噪后的信號(hào)');
4.jpg