小波降噪的方法有多種,如利用小波分解與重構的方法濾波降噪、利用小波變換模極大值的方法去噪、利用信號小波變換后空域相關性進行信噪分離、非線性小波閾值方法去噪、平移不變量小波降噪法,以及多小波降噪等等。歸結起來主要有三類:模極大值檢測法、閾值降噪法和屏蔽(相關)降噪法。其中最常用的就是閾值法去噪,其基本思想就是利用圖像小波分解后,各個子帶圖像的不同特性選取不同的閾值,從而達到較好的降噪目的。
一、小波降噪函數簡介
MATLAB中實現圖像的降噪,主要是閾值獲取和圖像降噪實現兩個方面。
1.閾值獲取
MATLAB中實現閾值獲取的函數有ddencmp、select、wbmpen、和wdcbm2。這里主要介紹函數ddencmp。
函數ddencmp的功能是獲取降噪或壓縮的默認值。該函數是降噪和壓縮的導向函數,它給出一維或二維信號使用小波或小波包進行降噪和壓縮一般過程的所有默認值。
其語法格式為:
[THR,SORH,KEEPAPP,CRIT]=ddencmp(IN1,IN2,X)
[THR,SORH,KEEPAPP]=ddencmp(IN1,’wv’,X)
[THR,SORH,KEEPAPP,CRIT]=ddencmp(IN1,’wp’,X)
2.閾值降噪
MATLAB中實現閾值降噪的函數有wden、wdencmp、wpdencmp、wthresh、wpthcoef和wthcoef2。這里主要介紹函數wdencmp。
其語法格式為:
[XC,CXC,LXC,PERF0,PERFL2]=wdencmp(‘gbl’,X,‘wname’,N,THR,SORH,KEEPAPP)
[XC,CXC,LXC,PERF0,PERFL2]=wdencmp(‘lvd’,X,‘wname’,N,THR,SORH)
[XC,CXC,LXC,PERF0,PERFL2]=wdencmp(‘lvd’,C,L,‘wname’,N,THR,SORH)
函數wdencmp的功能是使用小波進行降噪。該函數是二維小波降噪的導向函數。它使用小波對信號或圖像執行降噪過程。wname是所用的小波函數。gbl(global)表示每層都采用同一個閾值進行處理。lvd表示每層用不同的閾值進行處理。N表示小波分解的層數。THR為閾值向量,長度為N。SORH表示選擇軟閾值或硬閾值(分別取值為‘s’和‘h’)。參數KEEPAPP取值為1是,則低頻系數不進行閾值量化,反之,則低頻系數要進行閾值量化。XC是降噪后的信號,[CXC,LXC]是XC的小波分解結構,PHRF0和PERFL2是恢復和壓縮L2的范數百分比。如果[C,L]是x的小波分解結構,則PERFL2=100?(CXC向量的范數/C向量的范數)2;如果X是一維信號,小波wname是一個正交小波,則:
二、用小波對信號進行降噪
1、使用小波進行一維信號的降噪
對含噪一維信號降噪,實現信噪分離。含噪的正弦信號:對含噪信號進行分解,從分解中得出高頻與低頻系數。高頻系數對應細節信號,低頻系數對應逼近信號。由高頻系數中檢測噪聲,低頻系數中識別各分量信號的不同頻率。然后,再從去噪的高頻信號與逼近的低頻信號重構目標信號。
%生成含噪正弦信號
N=1024
t=1:N;
sig=sin(0.03*t);
?figure(1);
subplot(211);plot(t,sig);title(‘正弦信號’);
%疊加噪聲
x=sig+randn(1,N);
subplot(212);plot(t,x);title(‘含噪正弦信號’);
%一維小波分解,使用‘haar’進行4層分解?
[c,l]=wavedec(x,4,‘haar’);
%重構第1-4層逼近信號
a4=wrcoef(‘a’,c,l,‘haar’,4);
a3=wrcoef(‘a’,c,l,‘haar’,3);
a2=wrcoef(‘a’,c,l,‘haar’,2);
a1=wrcoef(‘a’,c,l,‘haar’,1);
%顯示各層逼近信號
figure(2);
subplot(411);plot(a4);ylabel(‘a4’);
subplot(412);plot(a3);ylabel(‘a3’);
subplot(413);plot(a2);ylabel(‘a2’);
subplot(414);plot(a1);ylabel(‘a1’);
%重構第1-4層細節信號
d4=wrcoef(‘d’,c,l,‘haar’,4);
d3=wrcoef(‘d’,c,l,‘haar’,3);
d2=wrcoef(‘d’,c,l,‘haar’,2);
d1=wrcoef(‘d’,c,l,‘haar’,1);
%顯示各層細節信號
figure(3);
subplot(411);plot(d4);ylabel(‘d4’);
subplot(412);plot(d3);ylabel(‘d3’);
subplot(413);plot(d2);ylabel(‘d2’);
subplot(414);plot(d1);ylabel(‘d1’);
2、使用小波對圖像的降噪處理
對含有高斯白噪聲的圖像,使用sym4小波進行分解,再用閾值法進行降噪處理,最后重構圖像,實現降噪目的。
下面通過具體實例來說明利用小波閾值降噪進行圖像去噪的問題。
I=imread(‘D:\aaa.jpg’);
I=rgb2gray(I);
figure;J=imnoise(I,‘gaussian’,0,0.01);
[thr,sorh,keepapp]=ddencmp(‘den’,‘wv’,J);
Gxd=wdencmp(‘gbl’,J,‘sym4’,2,thr,sorh,keepapp);
subplot(2,2,1);
imshow(I,map);
title(‘原始圖像’);
subplot(2,2,2);
imshow(J,map);
title(‘加高斯噪聲圖像’);
subplot(2,2,3);
imshow(Gxd,map);
title(‘高斯噪聲濾波效果’)
程序運行結果:
比較上面幾幅圖像,可見閾值降噪可以濾除大部分高頻噪聲,去噪效果較好,圖像質量比原圖稍差。
評論
查看更多