關雪梅
(遼寧對外經貿學院 基礎課教研部,遼寧 大連 116052)
數字圖像在傳輸過程中會受到成像設備和環(huán)境的干擾而產生噪聲圖像,我們可以采用濾波的方法來減少圖像中的噪聲,該方法是數字圖像處理技術中非常重要的一部分內容。由于噪聲在頻譜圖像中具有豐富的高頻分量,因而我們采用低通濾波的方法,保留低頻部分的信息,去除高頻部分的信息,從而實現平滑去噪的濾波效果。
Matlab是由美國MathWorks公司于1984年推向市場,經過了30多年的發(fā)展,如今已成為社會認同的非常優(yōu)秀的技術應用軟件。Matlab主要用來進行可視化圖形圖像處理和數值計算分析的工具語言,名字是由Matrix( 矩陣) 和Laboratory(實驗室)的兩個單詞的前三個字母組合在一起而形成的。Matlab將數字信號處理、仿真、矩陣計算、數值分析及數字圖形圖像處理等很多強大功能匯集在交互式計算機環(huán)境中來使用,為一些領域的科學研究和應用提供了一個有效的平臺。Matlab平臺還提供各種功能的工具箱,可以用來處理某些領域的特定問題,這些工具箱算法的使用是可擴充的,開放的,用戶不僅可以使用工具箱已有的算法,還可以在這個基礎上進行修改或開發(fā)來為某些特定的功能服務。本文主要在Matlab中實現四種低通濾波器的設計,通過比較分析,在對數字圖像進行處理時,針對不同的情況選取不同的濾波方法,從而達到圖像濾波效果的最優(yōu)化。
在對數字信號頻率的特性進行分析時,圖像高頻分量一般分布在圖像邊緣、跳躍部分以及顆粒噪聲區(qū)域,而低頻分量則是大面積的背景區(qū)域。因而我們采用低通濾波的方法就可以除去圖像中的高頻分量,使圖像中的噪聲得到削減,實現平滑效果。
圖像低通濾波原理如下:
G(u,v)=F(u,v)(H(u,v))
其中F(u,v)是含有噪聲的原始圖像的傅里葉變換,G(u,v)是經過平滑圖像處理后的傅里葉變換,H(u,v)是傳遞函數。合理的選取H(u,v),利用傳遞函數使得F(u,v)圖像中的高頻信號得到削弱,實現G(u,v)圖像后再對圖像進行反傅里葉變換就可以達到最終我們想要的效果g(x,y)。我們可以看出H(u,v)含有低通濾波的特點,實現圖像平滑處理效果,我們把它稱作圖像低通濾波法。在Matlab中實現低通濾波主要代碼功能如下:
i=imread(’lena.tif’) %讀入lena圖像
j=fft2(double(i)) %進行圖像傅里葉變換
j=fftshift(j) %頻譜平移
k=j.*hd %圖像濾波
k=ifftshift(k)
iout=ifft2(k) %進行反傅里葉變換
采用Matlab工具箱進行頻域濾波處理圖像時,沒有特定的函數,因而我們在利用Matlab來對圖像進行平滑濾波處理時需要自己來構造。常用的頻域低通濾波器有理想低通濾波器(Ideal Low Pass Filter 縮寫為ILPF)、指數低通濾波器(Exponential Low Pass Filter 縮寫為ELPF)、巴特沃斯低通濾波器(Butterworth Low Pass Filter 縮寫為 BLPF)和梯形低通濾波器(TLPF)。
假設在傅里葉平面上,理想的低通濾波器的截止頻率到原點的距離為D0,則理想低通濾波器的傳遞函數為:
在Matlab中實現理想的低通濾波主要代碼功能如下:
[m1,m2]=freqspace(size(i),’meshgrid’) %生成頻率序
d=ones(size(i)) %構造濾波器大小
r=sqrt(m1.^2+m2.^2) %構造濾波器決策函數
d(r>0.1)=0 %構造濾波器,半徑r>0.1
Butterworth低通濾波器是圖像處理中的一種電子濾波器,是當今圖像處理領域中比較流行的一類數字濾波器,應用非常廣泛。它是采用Butterworth函數作為濾波器的功能函數,具有最平坦的圖像處理特性。ILPF可以在計算機模擬環(huán)境中實現,而且在數學領域中定義非常清晰,但不能用它來處理實際的電子設備。n階Butterworth低通濾波器的傳遞函數(原點語截止頻率的距離)為:
其中,D(u,v)=(u-M/2)2+(v-N/2)2
與理想的低通濾波器不同的是,Butterworth低通濾波器函數在被濾除的頻率與通帶之間截斷不是很明顯,它對圖像的處理結果要好于理想的低通濾波器,但在階數增高時振鈴效應會成為一個主要的因素。以下我們采用二階的Butterworth低通濾波器來進行圖像處理,代碼的核心部分如下:
y=imageread('lena.bmp')
imageshow(y)
s=imagenoise(y,'salt & pepper') %加入含有噪聲的圖像
figure,imageshow(s)
f=double(s) %數據類型轉換
k=fseries2(f) %執(zhí)行傅立葉變換
k=fseriesshift(k) %圖像轉換
[X,Y]=size(k)
n=2 %濾波器階數
dd=50
x=ffix(X/2)
y=ffix(Y/2)
for i=1:X
for j=1:Y
d=sqrt((i-x)^2+(j-y)^2)
h=1/(1+0.414*(d/dd)^(2*n)) %圖像的低通濾波器傳遞函數
ss(i,j)=h*g(i,j)
end
end
ss=ifseriesshift(ss)
figure,imageshow(ss) %處理后的圖像
ELPF是對圖像進行平滑處理的一種常用濾波器,傳遞函數為:
上式中的n代表衰減率的系數,當D(u,v)為D0時,則結果為
用指數低通濾波器進行圖像噪聲抑制時,圖像的邊緣細節(jié)處理結果比Butterworth濾波器處理模糊程度大,但圖像中沒有明顯的振鈴現象。代碼的核心部分如下:
lena1=imread(‘lena.jpg’)
lena1=rgb2gray(lena1)
lena2=im2double(lena1)
lena3=imnoise(lena2,’gaussian’,0.02)
lena4=imnoise(lena3,’salt & pepper’,0.02)
f=fftshift(fft2(lena4))
[M,N]=size(f) %M和N分別代表行數和列數
s1=floor(M/2) %取整
s2=floor(N/2)
d0=35
for i=1:N
for j=1:M
d=sqrt((i-s1)^2+(j-s2)^2) %點(i,j)中心變換點的距離
h=exp(log(1/sqrt(2))*(d/d0)^2)
f(i,j)=h*f(i,j)
end
end
f=ifftshift(f)
f=im2uint8(real(ifft2(f)))
subplot(1,3,3),imshow(s),title(‘結果圖像’)
梯形低通濾波器處理圖像的效果是理想的低通濾波器和具有平滑過渡帶的低通濾波器的一個折中,有振鈴效應,它的傳遞函數如下:
[m1,m2]=freqspace(size(i),’meshgrid’)
f=ones(size(i))
r=sqrt(m1.^2+m2.^2)
k1=0.1
k2=0.3
for i=1:size(i,1)
for j=1:size(i,2)
f(i,j)=(r(i,j)-k2)/(k1-k2)
end
end
f(r
以下是通過Matlab進行幾種圖像濾波處理的實驗結果:
本文主要進行圖像濾波處理技術研究,實驗結果可以看出,采用Matlab進行圖像濾波處理方便簡單,效率高,在數字圖像處理領域具有很高的參考價值。
通過實驗結果分析,在對圖像進行濾波處理時,噪聲平滑效果最好的是ILPF,但采用ILPF處理后的圖像模糊,振鈴程度加大。TLPF處理圖像時,噪聲平滑效果還可以,圖像模糊和振鈴程度都較輕,而ELPF和BLPF處理圖像,噪聲的平滑效果一般,但圖像模糊程度較輕,無振鈴現象。采用低通濾波器進行圖像平滑處理可以削弱噪聲,抑制偽輪廓的產生,但在對數字圖像進行濾除噪聲等干擾成分的同時,把圖像中的一些有應用價值的高頻率部分也會過濾掉,可以看出圖像在對噪聲等干擾進行低通濾波處理時會以犧牲圖像細節(jié)為代價的,所以針對不同的情況選擇合理的濾波方法非常重要。