天天看點

【DWT筆記】基于小波變換的降噪技術

【DWT筆記】基于小波變換的降噪技術

一、前言

     在現實生活和工作中,噪聲無處不在,在許多領域中,如天文、醫學圖像和計算機視覺方面收集到的資料常常是含有噪聲的。噪聲可能來自擷取資料的過程,也可能來自環境影響。由于種種原因,總會存在噪聲,噪聲的存在往往會掩蓋信号本身所要表現的資訊,是以在實際的信号進行中,常常需要對信号進行預處理,而預處理最主要的一個步驟就是降噪。

     小波分析是近年來發展起來的一種新的信号處理工具,這種方法源于傅立葉分析,小波(wavelet),即小區域的波,僅僅在非常有限的一段區間有非零值,而不是像正弦波和餘弦波那樣無始無終。小波可以沿時間軸前後平移,也可按比例伸展和壓縮以擷取低頻和高頻小波,構造好的小波函數可以用于濾波或壓縮信号,進而可以提取出已含噪聲信号中的有用信号。

二、小波去噪的原理

     從信号學的角度看 ,小波去噪是一個信号濾波的問題。盡管在很大程度上小波去噪可以看成是低通濾波 ,但由于在去噪後 ,還能成功地保留信号特征 ,是以在這一點上又優于傳統的低通濾波器。由此可見 ,小波去噪實際上是特征提取和低通濾波的綜合 ,其流程圖如下所示:

【DWT筆記】基于小波變換的降噪技術

      一個含噪的模型可以表示如下:

【DWT筆記】基于小波變換的降噪技術

     其中 ,f( k)為有用信号,s(k)為含噪聲信号,e(k)為噪聲,ε為噪聲系數的标準偏差。

     假設,e(k)為高斯白噪聲,通常情況下有用信号表現為低頻部分或是一些比較平穩的信号,而噪聲信号則表現為高頻的信号,我們對 s(k)信号進行小波分解的時候,則噪聲部分通常包含在HL、LH、HH中,如下圖所示,隻要對HL、LH、HH作相應的小波系數處理,然後對信号進行重構即可以達到消噪的目的。

【DWT筆記】基于小波變換的降噪技術

     我們可以看到,小波去噪的原理是比較簡單類,類似以往我們常見的低通濾波器的方法,但是由于小波去找保留了特征提取的部分,是以性能上是優于傳統的去噪方法的。

三、小波去噪的基本方法

     一般來說, 一維信号的降噪過程可以分為 3個步驟

      信号的小波分解。選擇一個小波并确定一個小波分解的層次N,然後對信号進行N層小波分解計算。

      小波分解高頻系數的門檻值量化。對第1層到第N層的每一層高頻系數(三個方向), 選擇一個門檻值進行門檻值量化處理.

     這一步是最關鍵的一步,主要展現在門檻值的選擇與量化處理的過程,在每層門檻值的選擇上matlab提供了很多自适應的方法, 這裡不一一介紹,量化處理方法主要有硬門檻值量化與軟門檻值量化。下圖是二者的差別:

【DWT筆記】基于小波變換的降噪技術

     上面左圖是硬門檻值量化,右圖是軟門檻值量化。采用兩種不同的方法,達到的效果是,硬門檻值方法可以很好地保留信号邊緣等局部特征,軟門檻值處理相對要平滑,但會造成邊緣模糊等失真現象。   

      信号的小波重構。根據小波分解的第 N層的低頻系數和經過量化處理後的第1層到第N 層的高頻系數,進行信号的小波重構。

四、仿真實驗

     在這裡,我采用lena的256*256的标準圖進行分析,采用 coif2的兩層小波分解,并從三個方向上對小波系數進行軟門檻值量化,為了友善起見,門檻值的選擇我采用手動設定的方法,最後對圖像進行小波重構,後面部分會給出重構的效果圖和相應的峰值信噪比。代碼如下:

1 clear;
 2 clc;
 3 X=imread(\'lena256.bmp\');
 4 %X=rgb2gray(X);
 5 figure(1);
 6 subplot(121);
 7 imshow(X);
 8 title(\'原始圖像\');
 9 X=double(X);
10 
11 XX=X+10*randn(size(X)); 
12 subplot(122);
13 imshow(uint8(XX));
14 title(\'含噪圖像\');
15 
16  [c,l]=wavedec2(XX,2,\'coif2\'); 
17  
18 n=[1,2];
19 p=[10.28,10.08]; 
20  
21 nc_h=wthcoef2(\'h\',c,l,n,p,\'s\');
22 
23 X1=waverec2(nc_h,l,\'coif2\');
24 figure(2);
25 subplot(131);
26 imshow(uint8(X1));
27 title(\'第一次消噪後的圖像\'); 
28  
29 
30 nc_v=wthcoef2(\'v\',nc_h,l,n,p,\'s\');
31 
32 X2=waverec2(nc_v,l,\'coif2\');
33 subplot(132);
34 imshow(uint8(X2));
35 title(\'第二次消噪後的圖像\');
36  
37 
38 nc_d=wthcoef2(\'d\',nc_v,l,n,p,\'s\');
39 
40 X3=waverec2(nc_d,l,\'coif2\');
41 subplot(133);
42 imshow(uint8(X3));
43 title(\'第三次消噪後的圖像\');
44  
45 psnr0=psnr(X,XX);
46 psnr1=psnr(X,X1);
47 psnr2=psnr(X,X2);
48 psnr3=psnr(X,X3);      

     下面給出運作的效果圖,為了顯示友善,我重新排版了下,下圖是原圖和加噪後的圖像:

【DWT筆記】基于小波變換的降噪技術

     下面給出去噪的效果圖:

【DWT筆記】基于小波變換的降噪技術

    信噪比資料為:

1 psnr0 =
 2    28.1782
 3 
 4 psnr1 =
 5    29.1551
 6 
 7 psnr2 =
 8    30.0441
 9 
10 psnr3 =
11    31.6952      

     為了增加實驗室可信度,可以寫一個簡單的基于DCT變換的低通濾波器的去噪的方法,如下所示:

1 clear;
 2 clc;
 3 
 4 X=imread(\'lena256.bmp\');
 5 %X=rgb2gray(X);
 6 figure(1);
 7 subplot(141);
 8 imshow(X);
 9 title(\'原始圖像\');
10 % 生成含噪圖像并圖示
11 X=double(X);
12 
13 % 添加随機噪聲
14 XX=X+10*randn(size(X)); 
15 
16 Y1=dct2(XX);
17 
18 [m,n]=size(Y1)
19 for i=1:m
20     for j=1:n
21         if abs(Y1(i,j))<20 %這個門檻值要根據實際情況設定
22            Y1(i,j)=0;
23         end
24     end
25 end
26 
27 YY1=idct2(Y1);
28 subplot(142)
29 imshow(uint8(XX));
30 
31 subplot(143)
32 imshow(uint8(YY1));
33 
34 psnr0=psnr(X,XX)
35 psnr4=psnr(X,YY1)      

      運作的效果圖為:

【DWT筆記】基于小波變換的降噪技術

      運作的結果為:

1 psnr0 =
2 
3    28.1068
4 
5 
6 psnr4 =
7 
8    28.6162      

     由此,我們可以看出,小波變換去噪能力還是比較突出的。

五、小結

       離散小波變換(DWT)在圖像進行中的運用還是十分廣泛的,去噪隻是其中一個。有時間會跟大家一起總結下其他的應用。

我的新浪微網誌:http://weibo.com/3109428257/profile?rightmod=1&wvr=5&mod=personinfo

【DWT筆記】基于小波變換的降噪技術