1、小波閾值處理基本理論
所謂閾值去噪簡而言之就是對信號進行分解,然后對分解后的系數(shù)進行閾值處理,最后重構(gòu)得到去噪信號。該算法其主要理論依據(jù)是:小波變換具有很強的去數(shù)據(jù)相關(guān)性,它能夠使信號的能量在小波域集中在一些大的小波系數(shù)中;而噪聲的能量卻分布于整個小波域內(nèi)。因此,經(jīng)小波分解后,信號的小波系數(shù)幅值要大于噪聲的系數(shù)幅值??梢哉J為,幅值比較大的小波系數(shù)一般以信號為主,而幅值比較小的系數(shù)在很大程度上是噪聲。于是,采用閾值的辦法可以把信號系數(shù)保留,而使大部分噪聲系數(shù)減小至零。小波閾值收縮法去噪的具體處理過程為:將含噪信號在各尺度上進行小波分解,設(shè)定一個閾值,幅值低于該閾值的小波系數(shù)置為0,高于該閾值的小波系數(shù)或者完全保留,或者做相應(yīng)的“收縮(shrinkage)”處理。最后將處理后獲得的小波系數(shù)用逆小波變換進行重構(gòu),得到去噪后的信號。
2、閾值函數(shù)的選取
小波分解閾值去噪中,閾值函數(shù)體現(xiàn)了對超過和低于閾值的小波系數(shù)不同處理策略,是閾值去噪中關(guān)鍵的一步。設(shè)w表示小波系數(shù),T為給定閾值,sign(*)為符號函數(shù),常見的閾值函數(shù)有:
硬閾值函數(shù):(小波系數(shù)的絕對值低于閾值的置零,高于的保留不變)
軟閾值函數(shù):(小波系數(shù)的絕對值低于閾值的置零,高于的系數(shù)shrinkage處理)
式(3-8)和式(3-9)用圖像表示即為:
值得注意的是:
1)硬閾值函數(shù)在閾值點是不連續(xù)的,在下圖中已經(jīng)用黑線標出。不連續(xù)會帶來振鈴,偽吉布斯效應(yīng)等。
2)軟閾值函數(shù),原系數(shù)和分解得到的小波系數(shù)總存在著恒定的偏差,這將影響重構(gòu)的精度
同時這兩種函數(shù)不能表達出分解后系數(shù)的能量分布,半閾值函數(shù)是一種簡單而經(jīng)典的改進方案。見下圖:
3、閾值的確定
選取的閾值最好剛好大于噪聲的最大水平,可以證明的是噪聲的最大限度以非常高的概率低于(此閾值是Donoho提出的),其中根號右邊的這個參數(shù)(叫做sigma)就是估計出來的噪聲標準偏差(根據(jù)第一級分解出的小波細節(jié)系數(shù),即整個det1絕對值系數(shù)中間位置的值),本文將用此閾值去處理各尺度上的細節(jié)系數(shù),注意所謂全局閾值就是近似系數(shù)不做任何閾值處理外,其他均閾值處理。
4、閾值策略
5、一維信號的多級分解與重構(gòu)
以下算法如果用簡單的文字描述,可是:先將信號對稱拓延(matlab的默認方式),然后再分別與低通分解濾波器和高通分解濾波器卷積,最后下采樣,最后可以看出最終卷積采樣的長度為floor(n-1)/2+n,如果想繼續(xù)分解下去則繼續(xù)對低頻系數(shù)CA采取同樣的方式進行分解。
6、matlab實現(xiàn)一維小波閾值去噪
1,核心庫函數(shù)說明
1)wnoisest函數(shù)
作用:估計一維小波高頻系數(shù)中的噪聲偏差
這個估計值使用的是絕對值中間位置的值(估計的噪聲偏差值)除以0.6745(MedianAbsoluteDeviation/0.6745),適合0均值的高斯白噪聲
2)wavedec函數(shù)
一維信號的多尺度分解,將返回諸多細節(jié)系數(shù)和每個系數(shù)的長度,在matlab中鍵入“docwavedec”具體功能一目了然
3)waverec函數(shù)
一維信號小波分解系數(shù)的重構(gòu),將返回重構(gòu)后的信號在matlab中鍵入“docwaverec”具體功能一目了然,也可以鍵入“openwaverec”查看matlab具體是怎么做的。
4)wdencmp函數(shù)
這個函數(shù)用于對一維或二維信號的壓縮或者去噪,使用方法:
1[XC,CXC,LXC,PERF0,PERFL2]=wdencmp(‘gbl’,X,‘wname’,N,THR,SORH,KEEPAPP)
2[XC,CXC,LXC,PERF0,PERFL2]=wdencmp(‘lvd’,X,‘wname’,N,THR,SORH)
3[XC,CXC,LXC,PERF0,PERFL2]=wdencmp(‘lvd’,C,L,‘wname’,N,THR,SORH)
wname是所用的小波函數(shù),gbl(global的縮寫)表示每層都采用同一個閾值進行處理,lvd表示每層用不同的閾值進行處理,N表示小波分解的層數(shù),THR為閾值向量,對于格式(2)(3)每層都要求有一個閾值,因此閾值向量THR的長度為N,SORH表示選擇軟閾值還是硬閾值(分別取為’s’和’h’),參數(shù)KEEPAPP取值為1時,則低頻系數(shù)不進行閾值量化處理,反之,則低頻系數(shù)進行閾值量化。XC是消噪或壓縮后的信號,[CXC,LXC]是XC的小波分解結(jié)構(gòu),PERF0和PERFL2是恢復(fù)和壓縮L^2的范數(shù)百分比,是用百分制表明降噪或壓縮所保留的能量成分。
3.代碼實現(xiàn)
clear;
%獲取噪聲信號
loadleleccum;
indx=1:3450;
noisez=leleccum(indx);
%信號的分解
wname=‘db3’;
lev=3;
[c,l]=wavedec(noisez,lev,wname);
%求取閾值
sigma=wnoisest(c,l,1);%使用庫函數(shù)wnoisest提取第一層的細節(jié)系數(shù)來估算噪聲的標準偏差
N=numel(noisez);%整個信號的長度
thr=sigma*sqrt(2*log(N));%最終閾值
%全局閾值處理
keepapp=1;%近似系數(shù)不作處理
denoisexs=wdencmp(‘gbl’,c,l,wname,lev,thr,‘s’,keepapp);
denoisexh=wdencmp(‘gbl’,c,l,wname,lev,thr,‘h’,keepapp);
%作圖
subplot(311),
plot(noisez),title(‘原始噪聲信號’);
subplot(312),
plot(denoisexs),title(‘matlab軟閾值去噪信號’);
subplot(313),
plot(denoisexh),title(‘matlab硬閾值去噪信號’);
評論