小波阈值去噪原理及实现
小波閾值去噪原理及實(shí)現(xiàn)
- 1.小波閾值去噪的基本原理
- 2.小波閾值去噪需要考慮的問題
- 3.小波閾值的實(shí)現(xiàn)
1.小波閾值去噪的基本原理
將信號通過小波變換(采用Mallat算法)后,信號產(chǎn)生的小波系數(shù)含有信號的重要信息,將信號經(jīng)小波分解后小波系數(shù)較大,噪聲的小波系數(shù)較小,并且噪聲的小波系數(shù)要小于信號的小波系數(shù),通過選取一個合適的閥值,大于閥值的小波系數(shù)被認(rèn)為是有信號產(chǎn)生的,應(yīng)予以保留,小于閥值的則認(rèn)為是噪聲產(chǎn)生的,置為零從而達(dá)到去噪的目的。
其實(shí)質(zhì)為抑制信號中無用的部分、增強(qiáng)有用部分。
其基本步驟為:
(1)分解:選定一種層數(shù)為N的小波對信號進(jìn)行小波分解;
(2)閥值處理過程:分解后通過選取一合適的閥值,用閥值函數(shù)對各層系數(shù)進(jìn)行量化;
(3)重構(gòu):用處理后的系數(shù)重構(gòu)信號。
小波分解:X->ca3,cd3,cd2,cd1;小波重構(gòu):ca3,cd3,cd2,cd1->X。其中ca為低頻信息、近似分量,cd為高頻、細(xì)節(jié)分量。
2.小波閾值去噪需要考慮的問題
小波閥值去噪的基本問題包括三個方面:小波基的選擇,閥值的選擇,閥值函數(shù)的選擇。
(1)小波基的選擇:通常我們希望所選取的小波滿足以下條件:正交性、高消失矩、緊支性、對稱性或反對稱性。但事實(shí)上具有上述性質(zhì)的小波是不可能存在的,因?yàn)樾〔ㄊ菍ΨQ或反對稱的只有Haar小波,并且高消失矩與緊支性是一對矛盾,所以在應(yīng)用的時候一般選取具有緊支的小波以及根據(jù)信號的特征來選取較為合適的小波。
(2)閥值的選擇:直接影響去噪效果的一個重要因素就是閥值的選取,不同的閥值選取將有不同的去噪效果。目前主要有通用閥值(VisuShrink)、SureShrink閥值、Minimax閥值、BayesShrink閥值等。
(3)閥值函數(shù)的選擇:閥值函數(shù)是修正小波系數(shù)的規(guī)則,不同的反之函數(shù)體現(xiàn)了不同的處理小波系數(shù)的策略。最常用的閥值函數(shù)有兩種:一種是硬閥值函數(shù),另一種是軟閥值函數(shù)。還有一種介于軟、硬閥值函數(shù)之間的Garrote函數(shù)。
另外,對于去噪效果好壞的評價,常用信號的信噪比(SNR)與估計信號同原始信號的均方根誤差(RMSE)來判斷。
3.小波閾值的實(shí)現(xiàn)
clear clc t1=clock;%% 載入噪聲信號數(shù)據(jù),數(shù)據(jù)為.mat格式,并且和程序放置在同一個文件夾下 load('lng.mat');%matrix YSJ= lng;%% 數(shù)據(jù)預(yù)處理,數(shù)據(jù)可能是存儲在矩陣或者是EXCEL中的二維數(shù)據(jù),銜接為一維的,如果數(shù)據(jù)是一維數(shù)據(jù),此步驟也不會影響數(shù)據(jù) [c,l]=size(YSJ); Y=[]; for i=1:cY=[Y,YSJ(i,:)]; end [c1,l1]=size(Y); X=[1:l1];%% 繪制噪聲信號圖像 figure(1); plot(X,Y); xlabel('橫坐標(biāo)'); ylabel('縱坐標(biāo)'); title('原始信號');%% 硬閾值處理 lev=3; xd=wden(Y,'heursure','h','one',lev,'db4');%硬閾值去噪處理后的信號序列 figure(2) plot(X,xd) xlabel('橫坐標(biāo)'); ylabel('縱坐標(biāo)'); title('硬閾值去噪處理') set(gcf,'Color',[1 1 1])%% 軟閾值處理 lev=3; xs=wden(Y,'heursure','s','one',lev,'db4');%軟閾值去噪處理后的信號序列 figure(3) plot(X,xs) xlabel('橫坐標(biāo)'); ylabel('縱坐標(biāo)'); title('軟閾值去噪處理') set(gcf,'Color',[1 1 1]) %% 固定閾值后的去噪處理 lev=3; xz=wden(Y,'sqtwolog','s','sln',lev,'db4');%固定閾值去噪處理后的信號序列 figure(4) plot(X,xz); xlabel('橫坐標(biāo)'); ylabel('縱坐標(biāo)'); title('固定閾值后的去噪處理') set(gcf,'Color',[1 1 1]) %% 計算信噪比SNR Psig=sum(Y*Y')/l1; Pnoi1=sum((Y-xd)*(Y-xd)')/l1; Pnoi2=sum((Y-xs)*(Y-xs)')/l1; Pnoi3=sum((Y-xz)*(Y-xz)')/l1; SNR1=10*log10(Psig/Pnoi1); SNR2=10*log10(Psig/Pnoi2); SNR3=10*log10(Psig/Pnoi3); %% 計算均方根誤差RMSE RMSE1=sqrt(Pnoi1); RMSE2=sqrt(Pnoi2); RMSE3=sqrt(Pnoi3); %% 輸出結(jié)果 disp('-------------三種閾值設(shè)定方式的降噪處理結(jié)果---------------'); disp(['硬閾值去噪處理的SNR=',num2str(SNR1),',RMSE=',num2str(RMSE1)]); disp(['軟閾值去噪處理的SNR=',num2str(SNR2),',RMSE=',num2str(RMSE2)]); disp(['固定閾值后的去噪處理SNR=',num2str(SNR3),',RMSE=',num2str(RMSE3)]); t2=clock; tim=etime(t2,t1); disp(['------------------運(yùn)行耗時',num2str(tim),'秒-------------------'])運(yùn)行結(jié)果展示:
-------------三種閾值設(shè)定方式的降噪處理結(jié)果--------------- 硬閾值去噪處理的SNR=99.4101,RMSE=0.0012581 軟閾值去噪處理的SNR=99.4101,RMSE=0.0012581 固定閾值后的去噪處理SNR=102.9891,RMSE=0.00083323 ------------------運(yùn)行耗時1.806秒------------------- >>參考:
https://blog.csdn.net/u011776903/article/details/72900438
https://blog.csdn.net/JK198310/article/details/85204396
https://zhuanlan.zhihu.com/p/92345422
https://blog.csdn.net/weixin_45317919/article/details/109295551
https://blog.csdn.net/qq_45955094/article/details/104844614
總結(jié)
以上是生活随笔為你收集整理的小波阈值去噪原理及实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 遗传突变 | 正常与突变蛋白三维结构模型
- 下一篇: c中嵌入Python,提供灵活性