频率域波图像增强
本文主要包括以下內容
- 頻率域圖像增強
- 高通濾波器和低通濾波器
- 本章的典型案例分析
- 利用頻域濾波消除周期噪聲
頻域濾波基礎
頻域濾波與空域濾波的關系
傅立葉變換可以將圖像從空域變換到頻域,而傅立葉反變換則可以將圖像的頻譜逆變換為空域圖像,即人可以直接識別的圖像。這樣一來,我們可以利用空域圖像與頻譜之間的對應關系,嘗試將空域卷積濾波變換為頻域濾波,然后再將頻域濾波處理后的圖像反變換回空間域,從而達到圖像增強的目的。這樣做的一個最主要的吸引力在于頻域濾波的直觀性特點,關于這一點稍后將進行詳細的闡述。
根據著名的卷積定理:兩個二維連續函數在空間域中的卷積可由其相應的兩個傅立葉變換乘積的反變換而得:反之,在頻域中的卷積、可由在空間域中乘積的傅立葉變換而得,即:
頻域濾波的基本步驟
根據式(6-47)進行頻域濾波通常應遵循以下步驟。
(1)計算原始圖像f(x,y) 的DFT, 得到F(u, v).
(2)將頻譜F(u,v)的零頻點移動到頻譜圖的中心位置。
(3)計算濾波器函數H(u, v)與F(u,v)的乘積G(u, v).
(4)將頻譜G(u, v)的零頻點移回到頻譜圖的左上角位置。
(5)計算第(4)步計算結果的傅立葉反變換g(x,y) 。
(6)取g(x,y )的實部作為最終濾波后的結果圖像.
由上面的敘述易知, 濾波能否取得理想結果的關鍵取決于頻域濾波函數H(u,v)。我們常常稱之為濾波器,或濾波器傳遞函數,因為它在濾波中抑制或濾除了頻譜中某些頻率的分量,而保留其他的一些頻率不受影響。本書中我們只關心值為實數的濾波器,這樣濾波過程中H 的每一個實數元素分別乘以F中對應位置的復數元素,從而使F中元素的實部和虛部等比例變化,不會改變F的相位譜,這種濾波器也因此被稱為“零相移” 濾波器。這樣,最終反變換回空域得到的濾波結果圖像 g(x,y)理論上也應當為實函數,然而由于計算舍入誤差等原因, 可能會帶有非常小的虛部,通常將虛部直接忽略。
matlab實現
為方便讀者在Matlab中進行頻域濾波,我們編寫了imfreqfilt函數,其用法同空域濾波時使用的imfilter函數類似,調用時需要提供原始圖像和與原圖像等大的頻域濾波器作為參數,函數的輸出為經過濾波處理又反變換回空域之后的圖像。
頻域低通濾波器
在頻譜中,低頻主要對應圖像在平滑區域的總體灰度級分布,而高頻對應圖像的細節部 分,如邊緣和噪聲。因此,圖像平滑可以通過衰減圖像頻譜中的高頻部分來實現,這就建立了空間域圖像平滑與頻域低通濾波之間對應關系。
理想低通濾波器及其實現
最容易想到的衰減高頻成份的方法就是在一個稱為“截止頻率”的位置“截斷”所有的 高頻成份,將圖像頻譜中所有高于這一截止頻率的頻譜成份設為0,低于截止頻率的成為保持不變。能夠達到這種效果的濾波器如圖6.16所示,我們稱之為理想低通濾披器。如果圖像的寬度為M,高度為N,那么理想低通頻域濾波器可形式化地描述為:
其中Do 表示理想低通濾波器的截止頻率,濾波器的頻率域原點在頻譜圖像的中心處,在以截止頻率為半徑的圓形區域之內的濾鏡元素值全部為1, 而該圓之外的濾鏡元素值全部為o. 理想低通濾波輯的頻率特性在截止頻率處十分陡峭,無法用硬件實現,這也是我們稱之為理想的原因, 但其軟件編程的模擬實現較為簡單。
理想低通濾波器可在一定程度上去除圖像噪聲, 但由此帶來的圖像邊緣和細節的模糊效應也較為明顯,其濾波之后的處理效果比較類似于5.3.1中的平均平滑。實際上,理想低通濾波器是一個與頻譜圖像同樣尺寸的二維矩陣,通過將矩陣中對應較高頻率的部分設為0,較低頻率的部分〈靠近中心〉設為1,可在與頻譜圖像相乘后有效去除頻譜的高頻成份〈由于是矩陣對應元素相乘,頻譜高頻成份與濾波器中的0相乘〉。其中0與1的交界處即對應濾波器的截止頻率。
matlab實現
function out = imidealflpf(I, freq) % imidealflpf函數 構造理想的頻域低通濾波器 % I參數 輸入的灰度圖像 % freq參數 低通濾波器的截止頻率 % 返回值:out – 指定的理想低通濾波器 [M,N] = size(I); out = ones(M,N); for i=1:Mfor j=1:Nif (sqrt(((i-M/2)^2+(j-N/2)^2))>freq)out(i,j)=0;endend endI = imread('baby_noise.bmp');ff = imidealflpf(I,20); out = imfreqfilt(I,ff);figure(1); subplot(2,2,1); imshow(I); title('Source');temp = fft2(I); temp = fftshift(temp); temp = log(1+abs(temp)); figure(2); subplot(2,2,1); imshow(temp,[]); title('Source');figure(1); subplot(2,2,2); imshow(out); title('Ideal LPF,frq = 20');temp = fft2(out); temp = fftshift(temp); temp = log(1+abs(temp)); figure(2); subplot(2,2,2); imshow(temp,[]); title('Ideal LPF,frq = 20');
由圖可知,當截止頻率非常低時, 只有非常靠近原點的低頻成份能夠通過, 圖像模糊嚴重:截止頻率越高, 通過的頻率成份就越多, 圖像模糊的程度越小, 所獲得的圖像也就越接近原圖像。 但可以看出, 理想低通濾波器并不能很好地兼顧噪聲濾除與細節保留兩個方面, 這和空域中采用平均模板時的情形比較類似。 下面將介紹頻域的高斯低通濾 波器并比較它與理想低通濾波器的處理效果。
高斯低通濾波器及其實現
從圖6.19可以發現,當σ增大時,H(u)的圖像傾向于變寬,而h(x)的圖像傾向于變窄和變高。這也體現了頻率域和空間域的對應關系。頻率域濾波器越窄,濾除的高頻成份越多, 圖像就越平滑〈模糊〉:而在空間域,對應的濾波器就越寬,相應的卷積模板越平坦,平滑〈模糊)效果就越明顯。
我們在圖6.20中分別給出σ取值為3和1時的頻域二維高斯濾波器的三維曲面表示,可 以看出頻域下的二維高斯濾波器同樣具有上述一維情況時的特點.
matlab實現
function out = imgaussflpf(I, sigma) % imgaussflpf函數 構造頻域高斯低通濾波器 % I參數 輸入的灰度圖像 % sigma參數 高斯函數的Sigma參數[M,N] = size(I); out = ones(M,N); for i=1:Mfor j=1:Nout(i,j) = exp(-((i-M/2)^2+(j-N/2)^2)/2/sigma^2);end endI = imread('baby_noise.bmp');ff = imgaussflpf(I,20); out = imfreqfilt(I,ff);figure(1); subplot(2,2,1); imshow(I); title('Source');temp = fft2(I); temp = fftshift(temp); temp = log(1+abs(temp)); figure(2); subplot(2,2,1); imshow(temp,[]); title('Source');figure(1); subplot(2,2,2); imshow(out); title('Gauss LPF,sigma=20');temp = fft2(out); temp = fftshift(temp); temp = log(1+abs(temp)); figure(2); subplot(2,2,2); imshow(temp,[]); title('Gauss LPF,sigma=20');
顯然, 高斯濾波器的截止頻率處不是陡峭的。高斯低通濾波器在Sigma參數取 40 的時候可以較好地處理被高斯噪聲污染的圖像,而且相比于理想低通濾波器而言, 處理效果上的改進是顯而易見的. 高斯低通濾波器在有效抑制噪聲的同時, 圖像的模糊程度更低, 對邊緣帶來的混疊程度更小, 從而使高斯低通濾波器在通常情況下獲得了比理想低通濾波器更為廣泛的應用。
頻率域高通濾波器
圖像銳化可以通過衰減圖像頻譜中的低頻成份來實現, 這就建立了空間域圖像銳化與頻域高通濾波之間對應關系。
高斯高通濾波器及其實現
matlab實現
function out = imgaussfhpf(I, sigma) % imgaussfhpf函數 構造頻域高斯高通濾波器 % I參數 輸入的灰度圖像 % sigma參數 高斯函數的Sigma參數[M,N] = size(I); out = ones(M,N); for i=1:Mfor j=1:Nout(i,j) = 1 - exp(-((i-M/2)^2+(j-N/2)^2)/2/sigma^2);end end
高斯高通濾波器可以較好地提取圖像中的邊緣信息, Sigma參數取值越小, 邊緣提取越
不精確, 會包含更多的非邊緣信息: Sigmaa 參數取值越大, 邊緣提取越精確, 但可能包含不完整的邊緣信息。
頻域拉普拉斯濾波器及其實現
matlab實現
function out = imlapf(I) % imlapff函數 構造頻域拉普拉斯濾波器 % I參數 輸入的灰度圖像[M,N] = size(I); out = ones(M,N); for i=1:Mfor j=1:Nout(i,j) = -((i-M/2)^2+(j-N/2)^2);end end
Matlab 綜合案例一一利用頻域濾波消除周期噪聲
介紹了幾種典型的頻域濾波器,實現了頻域下的低通和高通濾波.它們均可在空域下來用平滑和銳化算子實現。本節將給出一個特別適合在頻域中完成的濾波案例, 即利用頻域帶阻濾波器消除圖像中的周期噪聲。下面就來看著這個在空域中幾乎不可能完成的任務在頻域中是如何中實現的。
頻域帶阻濾波器
顧名思義, 所謂“ 帶阻” 就是阻止頻譜中某一頻帶范圍的分量通過, 其他頻率成份則不受影響。常見的。帶阻濾波器有理想帶阻濾波器和高斯帶阻濾波器。
理想帶阻濾波器
理想帶阻濾波器的表達式為:
高斯帶阻濾波器
matlab實現
添加躁聲
O = imread('pout.tif'); [M,N] = size(O); I = O; for i = 1:Mfor j = 1:NI(i,j) = I(i,j)+20*sin(20*i)+20*sin(20*j);end endsubplot(1,2,1); imshow(O); title('Source');subplot(1,2,2); imshow(I); title('Added Noise');
頻譜分析
使用高斯帶阻濾波器時,首先應對需要處理圖像的頻譜有一定了解.下面的命令得到了兩幅圖像的頻譜.
帶阻濾波
觀察圖片,可以發現周期性圖像的傅立葉頻譜中出現了兩對相對于坐標軸對稱的亮點,它們分別對應圖像中水平和豎直方向的正弦噪聲.我們構造高斯帶阻濾波器的時候就需要考慮盡可能濾除具有這些亮點對應的頻率的正弦噪聲.這4個點位于以頻譜原點為中心,以50為半徑的圓周上.因此,設置帶阻濾波器中心頻率為50,頻帶寬度為5,如圖6.31 (c)示,濾波后的頻域效果如圖6.31 (d)所示
上述程序運行后得到的高斯帶阻濾波器的最終濾波效果如圖所示。我們看到周期噪聲被很好地消除, 這樣的效果在空域中是很難實現的。
頻域濾波器與空域濾波器之間的內在聯系
在6.4.1小節中, 我們探討了頻域濾放與空域濾波之間的關系。這里則更進一步, 研究頻域濾波器與空域濾波器之間的內在聯系。
頻域濾波較空域而言更為直觀, 頻域下濾波器表達了一系列空域處理(平滑、銳化等〉的本質,即對高于/低于某一特定頻率的灰度變化信息予以濾除的同時,而其他的灰度變化信
息基本保持不變. 這種直觀性增加了頻域濾波器設計的合理性,使我們更容易設計出針對特定問題的頻域濾波器,就如在6.7節中我們利用了帶阻濾波器實現了對圖像中周期噪聲的濾除,而想直接在空域中設計出一個能夠完成如此濾波任務的濾波器〈卷積模板〉是相當困難的。
為了得到合適的空域濾波器, 我們很自然地想到可以首先設計頻域濾波器H(u,v),然后根據卷積定理〈式6-61).將H(u,v)反變換至空域后就得到了空域中濾波使用的卷積模板h(x,y), 從而解決了空域濾波器的設計難題。
由于直接反變換得到的空域卷積摸板h(x, y)同H(u,v)等大, 所以模板與圖像f(x, y)具有相同的尺寸。但是模板操作十分耗時, 要計算這樣大的模板與圖像的卷積將是非常低效的。在第3 章中我們使用的都是很小的模板(如3 × 3 、5 × 5、7 × 7 等〉, 因為這樣的模板在空域
中才具有濾波效率上的優勢. 一般來說, 如果空域模板中的非零元素數目小于132(大約13 ×13 見方〉, 則直接在空域中計算卷積較為劃算, 否則直接利用H(u,v)在頻域下濾波更為合適。
在實際操作中我們發現, 利用以全尺寸空域濾波器h(x, y)為指導設計出的形狀與之類似的小空域卷積模板,同樣可以取得類似于頻域濾波器H(u,v)的濾波效果。這就為從頻域出發,最終設計出具有實用價值的空域模板提供了一種完美的解決方案。
式(6-52 )給出的高斯頻域低通濾波器H(u)及與其構成傅立葉變換對兒的空域高斯模板h(x)正好印證了上述結論。從圖6.19上來看,H(u)越窄, h(x)就越寬。而頻域低通濾波器H(u)越窄,說明能夠通過的頻率越低,被截斷的高頻成份也就越多,從而使濾波處理后原函數f(x)變得平滑:而空域下以越寬的模板h(x)與函數f(x)卷積則同樣會產生平滑的效果。再進一步以h(x)的形狀為指導,就可以得到曾在高斯平滑中使用的高斯模板(式5-5).
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
- 上一篇: Android实现网络音乐播放器
- 下一篇: 分段线性变换与直方图修正