① 小波去噪的基本原理及其實現方法(Matlab)
小波去噪方法是一種基於小波變換多分辨分析的演算法,其核心思想是利用雜訊和信號在小波分解系數上的不同強度分布特性,對雜訊對應的小波系數進行去除,保留原始信號的小波分解系數,然後進行小波重構,從而得到純凈信號。
相比其他去噪方法,小波變換在低信噪比情況下表現出較好的去噪效果,信號識別率較高。此外,小波去噪方法對時變信號和突變信號的去噪效果尤為顯著。
利用小波分析對監測採集的信號進行去噪處理,可以恢復原始信號。小波去噪主要包括以下三種方法:
1. 強制去噪處理:通過設置小波系數為零來去除雜訊。
2. 默認閾值去噪:使用ddencmp()函數獲得信號的默認閾值,使用wdencmp()函數實現去噪過程。
3. 給定軟閾值去噪:根據經驗給出軟閾值數,對信號進行去噪處理。
以下是一個小波去噪的實例分享:
在馬達負載為1,轉速為1771,內圈的故障信號下,通過小波函數SYM5分解信號到第5層,使用minimaxi閾值選擇對系數進行處理,消除雜訊。
程序運行結果如下:
圖2:去噪前信號
圖3:去噪後信號
② matlab中的小波工具箱怎麼用,希望能詳細介紹
將原始數據文件夾到裝有matlab的電腦
打開matlab軟體,進入軟體主界面
在軟體的左下方找到start按鈕,點擊選擇toolbox,然後選擇wavelet
進入wavemenu界面,選擇一維小波中的wavelet1-D並進入
5.將數據文件(.Mat格式)托到matlab軟體主界面的workspace
6.在wavemenu主界面中選擇file-load signal或者import from workspace—import signal
7.選擇要處理的信號,界面出現loaded信號,這就是沒有去噪前的原
始信號
8.右上角選擇用於小波分析的小波基以及分解層數並點擊analyse開始分析
9.分析後在左邊欄目中出現s,a*,d*,其中s為原信號,a*為近似信號,d*為細節信號
10.然後點擊denoise去噪
11.閾值方法常用的有4種fixed(固定閾值),rigorsure,heusure,minmax根據需要選擇,一般情況下rigorsure方式去噪效果較好
12.oft(軟閾值),hard(硬閾值)一般選擇軟閾值去噪後的信號較為平滑
13.在雜訊結構中選擇unscaled white noise,因為在工程應用中的雜訊一般不僅僅含有白雜訊
14.在雜訊結構下面的數值不要隨意改,這是系統默認的去噪幅度
15.點擊denoise開始正式去噪
16.在此窗口下點擊file-save denoised singal,保存輸出去噪後的信號
17.去噪結束
18.去噪結束後,把去噪後信號(.mat格式)拖至matlab主界面的workspace中,與原信號一起打包,以便以後計算統計量
19.Matlab編程計算相關統計量以及特徵量
20.得出統計量和特徵量後結束
③ 如何用matlab對圖像進行小波去噪,將高頻部分部分設置為0
[c,s]=wavedec2(X,2,'sym4');%用sym4小波對圖像信號進行二層的小波分解
sizec=size(c);
for i=1:sizec(2)
if(c(i)>350)
c(i)=0;
else
c(i)=0.5*c(i);
end
end
我假設的350是高頻啊
④ matlab 小波閾值去噪 求高手賜教!
MATLAB中實現了信號的閾值去噪,主要包括閾值去噪和閾值獲取兩方面。
1.閾值獲取
MATLAB中實現閾值獲取的函數有、thselect、wbmpen和wwdcbm,下面對它們的用法進行簡單的說明。
ddencmp的調用格式有以下三種:
(1)[THR,SORH,KEEPAPP,CRIT]=ddencmp(IN1,IN2,X)
(2)[THR,SORH,KEEPAPP,CRIT]=ddencmp(IN1,'wp',X)
(3)[THR,SORH,KEEPAPP,CRIT]=ddencmp(IN1,'wv',X)
函數ddencmp用於獲取信號在消噪或壓縮過程中的默認閾值。輸入參數X為一維或二維信號;IN1取值為'den'或'cmp','den'表示進行去噪,'cmp'表示進行壓縮;IN2取值為'wv'或'wp',wv表示選擇小波,wp表示選擇小波包。返回值THR是返回的閾值;SORH是軟閾值或硬閾值選擇參數;KEEPAPP表示保存低頻信號;CRIT是熵名(只在選擇小波包時使用)。
函數thselect的調用格式如下:
THR=thselect(X,TPTR);
THR=thselect(X,TPTR)根據字元串TPTR定義的閾值選擇規則來選擇信號X的自適應閾值。
自適應閾值的選擇規則包括以下四種:
*TPTR='rigrsure',自適應閾值選擇使用Stein的無偏風險估計原理。
*TPTR='heursure',使用啟發式閾值選擇。
*TPTR='sqtwolog',閾值等於sqrt(2*log(length(X))).
*TPTR='minimaxi',用極大極小原理選擇閾值。
閾值選擇規則基於模型 y = f(t) + e,e是高斯白雜訊N(0,1)。
函數wbmpen的調用格式如下:
THR=wbmpen(C,L,SIGMA,ALPHA);
THR=wbmpen(C,L,SIGMA,ALPHA)返回去噪的全局閾值THR。THR通過給定的一種小波系數選擇規則計算得到,小波系數選擇規則使用Birge-Massart的處罰演算法。{C,L]是進行去噪的信號或圖像的小波分解結構;SIGMA是零均值的高斯白雜訊的標准偏差;ALPHA是用於處罰的調整參數,它必須是一個大於1的實數,一般取ALPHA=2。
設t*使crit(t)=-sum(c(k)^2,k<=t) + 2 * SIGMA^2 * t*(ALPHA+log(n/t))的最小值,其中c(k)是按絕對值從大到小排列的小波包系數,n是系數的個數,則THR=|c(t*)|。
wbmpen(C,L,SIGMA,ALPHA,ARG)計算閾值並畫出三條曲線。
2 * SIGMA^2 * t*(ALPHA+log(n/t))
sum(c(k)^2, k<=t)
crit(t)
wdcbm的調用格式有以下兩種:
(1)[THR,NKEEP]=wdcbm(C,L,ALPHA);
(2)[THR,NKEEP]=wdcbm(C,L,ALPHA,M);
函數wdcbm是使用Birge-Massart演算法獲取一維小波變換的閾值。返回值THR是與尺度無關的閾值,NKEEP是系數的個數。[C,L]是要進行壓縮或消噪的信號在j=length(L)-2層的分解結構;LAPHA和M必須是大於1的實數;THR是關於j的向量,THR(i)是第i層的閾值;NKEEP也是關於j的向量,NKEEP(i)是第i層的系數個數。一般壓縮時ALPHA取1.5,去噪時ALPHA取3.
2.信號的閾值去噪
MATLAB中實現信號的閾值去噪的函數有wden、wdencmp、wthresh、wthcoef、wpthcoef以及wpdencmp。下面對它們的用法作簡單的介紹。
函數wden的調用格式有以下兩種:
(1)[XD,CXD,LXD]=wden(X,TPTR,SORH,SCAL,N,'wname')
(2)[XD,CXD,LXD]=wden(C,L,TPTR,SORH,SCAL,N,'wname')
函數wden用於一維信號的自動消噪。X為原始信號,[C,L]為信號的小波分解,N為小波分解的層數。
THR為閾值選擇規則:
*TPTR='rigrsure',自適應閾值選擇使用Stein的無偏風險估計原理。
*TPTR='heursure',使用啟發式閾值選擇。
*TPTR='sqtwolog',閾值等於sqrt(2*log(length(X))).
*TPTR='minimaxi',用極大極小原理選擇閾值。
SORH是軟閾值或硬閾值的選擇(分別對應's'和'h')。
SCAL指所使用的閾值是否需要重新調整,包含下面三種:
*SCAL='one' 不調整;
*SCAL='sln' 根據第一層的系數進行雜訊層的估計來調整閾值。
*SCAL='mln' 根據不同的雜訊估計來調整閾值。
XD為消噪後的信號,[CXD,LXD]為消噪後信號的小波分解結構。格式(1)返回對信號X經過N層分解後的小波系數進行閾值處理後的消噪信號XD和信號XD的小波分解結構[CXD,LXD]。格式(2)返回參數與格式(1)相同,但其結構是由直接對信號的小波分解結構[C,L]進行閾值處理得到的。
函數wdencmp的調用格式有以下三種:
(1)[XC,CXC,LXC,PERF0,PERFL2]=wdencmp('gbl',X,'wname',N,THTR,SORH,KEEPAPP);
(2)[XC,CXC,LXC,PERF0,PERFL2]=wdencmp('lvd',X,'wname',N,THTR,SORH);
(3)[XC,CXC,LXC,PERF0,PERFL2]=wdencmp('lvd',C,L,'wname',N,THTR,SORH);
函數wdencmp用於一維或二維信號的消噪或壓縮。wname是所用的小波函數,gbl(global的縮寫)表示每一層都採用同一個閾值進行處理,lvd表示每層採用不同的閾值進行處理,N表示小波分解的層數,THR為閾值向量,對於格式(2)和(3)每層都要求有一個閾值,因此閾值向量THR的長度為N,SORH表示選擇軟閾值或硬閾值(分別取值為's'和'h'),參數KEEPAPP取值為1時,則低頻系數不進行閾值量化,反之,低頻系數要進行閾值量化。XC是要進行消噪或壓縮的信號,[CXC,LXC]是XC的小波分解結構,PERF0和PERFL2是恢復或壓縮L^2的范數百分比。如果[C,L]是X的小波分解結構,則PERFL2=100*(CXC向量的范數/C向量的范數)^2;如果X是一維信號,小波wname是一個正交小波,則PERFL2=100||XC||^2/||X||^2。
函數wthresh的調用格式如下:
Y=wthresh(X,SORH,T)
Y=wthresh(X,SORH,T) 返回輸入向量或矩陣X經過軟閾值(如果SORH='s')或硬閾值(如果SORH='h')處理後的信號。T是閾值。
Y=wthresh(X,'s',T)返回的是Y=SIG(X)*(|X|-T)+,即把信號的絕對值與閾值進行比較,小於或等於閾值的點變為零,大於閾值的點為該點值與閾值的差值。
Y=wthresh(X,'h',T)返回的是Y=X*1(|X|>T),即把信號的絕對值和閾值進行比較,小於或等於閾值的點變為零,大於閾值的點保持不變。一般來說,用硬閾值處理後的信號比用軟閾值處理後的信號更粗糙。
函數wthcoef的調用格式下面四種:
(1)NC=wthcoef('d',C,L,N,P)
(2)NC=wthcoef('d',C,L,N)
(3)NC=wthcoef('a',C,L)
(4)NC=wthcoef('t',C,L,N,T,SORH)
函數wthcoef用於一維信號小波系數的閾值處理。
格式(1)返回小波分解結構[C,L]經向量N和P定義的壓縮率處理後的新的小波分解向量NC,[NC,L]構成一個新的小波分解結構。N包含被壓縮的細節向量,P是把較小系數置0的百分比信息的向量。N和P的長度必須相同,向量N必須滿足1<=N(i)<=length(L)-2。
格式(2)返回小波分解結構[C,L]經過向量N中指定的細節系數置0後的小波分解向量NC。
格式(3)返回小波分解結構[C,L]經過近似系數置0後的小波分解向量NC。
格式(4)返回小波分解結構[C,L]經過將向量N作閾值處理後的小波分解向量NC。如果SORH=』s『,則為軟閾值;如果SORH='h'則為硬閾值。N包含細節的尺度向量,T是N相對應的閾值向量。N和T的長度必須相等。
函數wpdencmp的調用格式有以下兩種:
(1)[XD,TREED,PERF0,PERFL2]=wpdencmp(X,SORH,N,'wname',CRIT,PAR,KEEPAPP)
(2)[XD,TREED,PERF0,PERFL2]=wpdencmp(TREE,SORH,CRIT,PAR,KEEPAPP)
函數wpdencmp用於使用小波包變換進行信號的壓縮或去噪。
格式(1)返回輸入信號X(一維或二維)的去噪或壓縮後的信號XD。輸出參數TREED是XD的最佳小波包分解樹;PERFL2和PERF0是恢復和壓縮L2的能量百分比。PERFL2=100*(X的小波包系數范數/X的小波包系數)^2;如果X是一維信號,小波wname是一個正交小波,則PERFL2=100*||XD||^2/||X||^2。SORH的取值為's'或'h',表示的是軟閾值或硬閾值。
輸入參數N是小波包的分解層數,wname是包含小波名的字元串。函數使用由字元串CRIT定義的熵和閾值參數PAR實現最佳分解。如果KEEPAPP=1,則近似信號的小波系數不進行閾值量化;否則,進行閾值量化。
格式(2)與格式(1)的輸出參數相同,輸入選項也相同,只是它從信號的小波包分解樹TREE進行去噪或壓縮。
⑤ 怎麼用matlab小波包分解
小波圖來像去噪的方法大源概分為3類
1:基於小波變換摸極大值原理
2:基於小波變換系數的相關性
3:基於小波閾值的去噪。
基於小波閾值的去噪方法3個步驟:
1:
計算含雜訊圖像的小波變換。選擇合適的小波基和小波分解層數j,運用matlab
分解演算法將含有雜訊圖像進行j層小波分解,得到相應的小波分解系數。
2:對分解後的高頻系數進行閾值量化,對於從1
到j的每一層,選擇一個適當的閾值和合適的閾值函數,將分解得到的高頻系數進行閾值量化,得到估計小波系數。
3:進行小波逆變化,根據圖像小波分解後的第j層,低頻
系數(尺度系數)和經過閾值量化處理的各層高頻系數(小波系數),運用matlab重構演算法進行小波重構,得到去噪後的圖像。
⑥ 用matlab實現基於邊緣檢測的圖象小波閾值去噪方法
Press the "Start" button to see a demonstration of
denoising tools in the Wavelet Toolbox.
This demo uses Wavelet Toolbox functions.
% Set signal to noise ratio and set rand seed.
sqrt_snr = 3; init = 2055615866;
% Generate original signal and a noisy version adding
% a standard Gaussian white noise.
[xref,x] = wnoise(3,11,sqrt_snr,init);
% Denoise noisy signal using soft heuristic SURE thresholding
% and scaled noise option, on detail coefficients obtained
% from the decomposition of x, at level 5 by sym8 wavelet.
% Generate original signal and a noisy version adding
% a standard Gaussian white noise.
lev = 5;
xd = wden(x,'heursure','s','one',lev,'sym8');
% Denoise noisy signal using soft SURE thresholding.
xd = wden(x,'rigrsure','s','one',lev,'sym8');
% Denoise noisy signal using fixed form threshold with
% a single level estimation of noise standard deviation.
xd = wden(x,'sqtwolog','s','sln',lev,'sym8');
% Denoise noisy signal using fixed minimax threshold with
% a multiple level estimation of noise standard deviation.
xd = wden(x,'minimaxi','s','sln',lev,'sym8');
% If many trials are necessary, it is better to perform
% decomposition one time and threshold it many times :
% decomposition.
[c,l] = wavedec(x,lev,'sym8');
% threshold the decomposition structure [c,l].
xd = wden(c,l,'minimaxi','s','sln',lev,'sym8');
% Load electrical signal and select a part.
load leleccum; indx = 2600:3100;
x = leleccum(indx);
% Use wdencmp for signal de-noising.
% find default values (see ddencmp).
[thr,sorh,keepapp] = ddencmp('den','wv',x);
% denoise signal using global thresholding option.
xd = wdencmp('gbl',x,'db3',2,thr,sorh,keepapp);
% Some trial examples without commands counterpart.
% Rand initialization: init = 2055615866;
% Square root of signal to noise ratio: sqrt_snr = 5;
% [xref,x] = wnoise(1,11,sqrt_snr,init);
% Some trial examples without commands counterpart (more).
% Rand initialization: init = 2055615866;
% Square root of signal to noise ratio: sqrt_snr = 4;
% [xref,x] = wnoise(2,11,sqrt_snr,init);
% Some trial examples without commands counterpart (more).
% Rand initialization: init = 2055615866;
% Square root of signal to noise ratio: sqrt_snr = 3;
% [xref,x] = wnoise(3,11,sqrt_snr,init);
% Some trial examples without commands counterpart (more).
% Rand initialization: init = 2055615866;
% Square root of signal to noise ratio: sqrt_snr = 3;
% [xref,x] = wnoise(3,11,sqrt_snr,init);
% Some trial examples without commands counterpart (more).
% Rand initialization: init = 2055615866;
% Square root of signal to noise ratio: sqrt_snr = 3;
% [xref,x] = wnoise(3,11,sqrt_snr,init);
% Some trial examples without commands counterpart (more).
% Rand initialization: init = 2055615866;
% Square root of signal to noise ratio: sqrt_snr = 3;
% [xref,x] = wnoise(3,11,sqrt_snr,init);