圖 (a): (從左到右) (1) 原始圖片 (2) 使用高斯低通濾波器 (3) 使用高斯高通濾波器. 本文中的原始圖像來自O(shè)penCV Github示例。
數(shù)字圖像現(xiàn)在已經(jīng)成為我們?nèi)粘I畹囊徊糠。因此,?shù)字圖像處理變得越來越重要。如何提高圖像的分辨率或降低圖像的噪聲一直是人們熱門話題。傅里葉變換可以幫助我們解決這個(gè)問題。我們可以使用傅立葉變換將灰度像素模式的圖像信息轉(zhuǎn)換成頻域并做進(jìn)一步的處理。
今天,我將討論在數(shù)字圖像處理中,如何使用快速傅立葉變換,以及在Python中如何實(shí)現(xiàn)它。操作流程如下 (從左到右):
圖(b)
1. 實(shí)現(xiàn)快速傅立葉變換,將灰度圖像轉(zhuǎn)換為頻域
2. 零頻域部分的可視化與集中
3. 應(yīng)用低/高通濾波器過濾頻率
4. 離散
5. 實(shí)現(xiàn)快速傅里葉逆變換生成圖像數(shù)據(jù)
讓我們深入到每一部分,找出這些步驟背后的理論。
快速傅里葉逆變換
圖 (c): (從左到右) (1)原始圖像 (2) FFT 頻譜的可視化輸出 (3) 集中化 (4) 離散化 (5) 逆向FFT
與現(xiàn)實(shí)生活中的光波和聲波不同,由于像素的不連續(xù)性,數(shù)字圖像是離散的。這意味著我們應(yīng)該實(shí)現(xiàn)離散傅立葉變換(DFT)而不是傅立葉變換。然而,離散傅立葉變換(DFT)常常太慢而不實(shí)用,這就是我選擇快速傅立葉變換(FFT)進(jìn)行數(shù)字圖像處理的原因。
第一步:計(jì)算二維快速傅里葉變換。
快速傅立葉變換(FFT)處理的結(jié)果是一個(gè)很難直接可視化的復(fù)數(shù)數(shù)組。因此,我們必須把它轉(zhuǎn)換成二維空間。這里有兩種方法可以可視化這個(gè)快速傅立葉變換(FFT)結(jié)果:1、頻譜2、相位角
圖 (d): (從左到右t) (1) 頻譜 (2) 相位角
從圖(d)(1)可以看出,四個(gè)角上有一些對(duì)稱圖案。這些圖案可以在下一步中轉(zhuǎn)換到圖像的中心。
頻譜圖像中的白色區(qū)域顯示出較高的頻率。頻譜圖像中的角表示低頻域。因此,結(jié)合以上兩點(diǎn),角上的白色區(qū)域表明:在低/零頻域中存在高頻率,這對(duì)于大多數(shù)圖像來說是非常正常的情況。
另一方面,很難從圖(d)(2)中識(shí)別出任何明顯的圖案,這并不代表快速傅立葉變換(FFT)的相位角完全沒有用處,因?yàn)橄辔槐A袅藞D像所必需的形狀特征。
第二步:將零頻域部分移到頻譜中心。
二維快速傅立葉變換(FFT)具有平移和旋轉(zhuǎn)特性,因此我們可以在不丟失任何信息的情況下移動(dòng)頻譜。我把零頻域部分移到了頻譜的中心,這使得頻譜圖像對(duì)人類更為可見。此外,這種轉(zhuǎn)換可以幫助我們輕松實(shí)現(xiàn)高通/低通濾波器。
步驟3:與步驟2相反。將零頻域部分移回原位置
步驟4:與步驟1相反。計(jì)算二維快速傅里葉逆變換。
步驟3和步驟4的過程是將頻譜信息轉(zhuǎn)換回灰度圖像。它可以通過應(yīng)用逆向移位和快速傅立葉變換(FFT)的逆運(yùn)算來實(shí)現(xiàn)。
編碼
在Python中,我們可以利用Numpy模塊中的numpy.fft 輕松實(shí)現(xiàn)快速傅立葉變換(FFT)運(yùn)算操作。
在理解了傅里葉變換背后的基本理論之后,我們就可以研究如何控制頻譜輸出來處理圖像了。首先,我們需要了解低/高通濾波器。
低通濾波器
圖 (e):
低通濾波器是一種只允許低頻譜通過的濾波器。圖像中的低頻譜意味著像素值變化緩慢。例如,圖像中顏色變化較小的平滑區(qū)域(如新空白白紙的中心)被視為低頻譜內(nèi)容。
由于低通濾波器的輸出只允許低頻通過,對(duì)噪聲等高頻譜內(nèi)容進(jìn)行了阻塞,使得處理后的圖像具有較少的噪聲像素。因此,低通濾波器被廣泛應(yīng)用于圖像的去噪。
高通濾波器
圖(f)
相反,高通濾波器是只允許高頻譜通過的濾波器。圖像中的高頻譜意味著像素值變化很大。例如,圖像中顏色變化較大的邊緣區(qū)域,如兩張重疊的白紙和黑紙之間的邊緣,被認(rèn)為是高頻譜內(nèi)容。
在圖像中,通過做適當(dāng)?shù)闹貜?fù)計(jì)算來銳化原圖像,能用適當(dāng)?shù)闹貜?fù)計(jì)算來銳化原始圖像的圖像,從高通濾波器的輸出可獲得圖像中的邊緣。這將增強(qiáng)原始圖像的清晰度,使邊緣更加清晰。
從圖e(5)和圖f(5),我們可以注意到這兩個(gè)濾波器呈現(xiàn)不同的特性。低通濾波器傾向于保留圖像中的整體信息。另一方面,高通濾波器試圖辨別出圖像中的變化。
在了解了前一節(jié)中的低通/高通濾波器的工作原理后,讓我們繼續(xù)認(rèn)識(shí)濾波器形狀
理想的濾波器
圖(g):(從左到右)(1)使用D₀=50的低通濾波器 (2)使用D₀=50的高通濾波器
公式 (a): 在理想低通濾波器的公式中,D₀是合理常量,D(u,v)是頻域中一點(diǎn)(u,v)與頻域矩形中心之間的距離
在理想濾波器背后的概念非常簡單:給定一個(gè)半徑值D₀作為閾值,低通濾波器圖(g)(1)在閾值下H(u,v)等于1,在閾值以上H(u,v)等于0。
公式(b): 在理想高通濾波器的公式中,D₀是合理常量,D(u,v)是頻域中一點(diǎn)(u,v)與頻域矩形中心之間的距離
相反,高通濾波器圖(g)(2)在閾值下H(u,v)等于0,在閾值以上H(u,v)等于1。
巴特沃思(Btterworth)濾波器
圖(h): (從左到右) (1) 使用n=20,D₀=50的Butterworth 低通濾波器(2) 使用n=20,D₀=50的Butterworth 高通濾波器
圖 (i): (從左到右) (1)使用n=3的Butterworth 低通濾波器 (2)使用n=3的Butterworth高通濾波器
公式(c): 在Butterworth低通濾波器的公式中, D₀是一個(gè)合理常量, D(u,v)是頻域中一點(diǎn)(u,v)與頻域矩形中心之間的距離
與理想濾波器不同的是,巴特沃斯濾波器沒有明顯的不連續(xù)性,使得通過的頻率和被過濾的頻率之間有明顯的邊界。巴特沃斯濾波器在函數(shù)中引入了一個(gè)新的參數(shù)n。當(dāng)操作n時(shí),它影響著通過的頻率和被過濾的頻率之間邊界的清晰程度。圖(h)和圖(i)
公式(d): 在Butterworth高通濾波器的公式中, D₀是一個(gè)合理常量,D(u,v)是頻域中一點(diǎn)(u,v)與頻域矩形中心之間的距離
高斯(Gaussian)濾波器
圖 (j): (從左到右) (1) 使用D₀=50的高斯低通濾波器 (2) 使用D₀=50的高斯低通濾波器
公式 (e): 在高斯低通濾波器的公式中,D₀是一個(gè)合理常量,D(u,v)是頻域中一點(diǎn)(u,v)與頻域矩形中心之間的距離
與巴特沃斯濾波器相比,高斯濾波器產(chǎn)生的邊界更平滑。通過的頻譜和被過濾的頻譜之間的邊界非常模糊,這便可以更平滑的處理圖像。
公式 (f): 在高斯高通濾波器的公式中,D₀是一個(gè)合理常量,D(u,v)是頻域中一點(diǎn)(u,v)與頻域矩形中心之間的距離
濾波器比較
圖 (k): (從左到右) 理想濾波器, n=10的Butterworth濾波器和D₀=50 的高斯濾波器
我把所有不同的過濾器放在圖(k)中,以總結(jié)我們?cè)谶^濾器設(shè)計(jì)中所做的工作。從左到右,圓的邊緣變得模糊,這將對(duì)輸出結(jié)果產(chǎn)生不同的影響
總體上來看,巴特沃斯濾波器是介于理想濾波器和高斯濾波器之間的濾波器。
低通濾波器的結(jié)論
圖 (l): (從左到右) (1) 理想濾波器的輸出 (2)巴特沃斯濾波器的輸出
(3) D₀=50時(shí)高斯濾波器的輸出
圖(l)顯示所有三個(gè)濾波器都是低通濾波器,因?yàn)檩敵鰣D像保留了整個(gè)圖像信息。此外,我們可以很容易地注意到高斯濾波器由于低失真比其他兩個(gè)濾波器表現(xiàn)更好。理想濾波器產(chǎn)生大量波形噪聲的原因是,理想濾波器的設(shè)計(jì)阻塞了距離原點(diǎn)一定半徑以外的所有信息。因此,有些信息會(huì)在沒有任何平滑的情況下急劇中斷。相反,巴特沃斯濾波和高斯濾波是平滑的阻塞在距離原點(diǎn)一定半徑之外的信息,這使得圖像更平滑,失真更小。
高通濾波器的結(jié)論
圖 (m): (從左到右) (1) 理想濾波器的輸出 (2)巴特沃斯濾波器的輸出
(3) D₀=50時(shí)高斯濾波器的輸出
毫無疑問,圖(m)中的濾波器是高通濾波器,因?yàn)檩敵鼋Y(jié)果只捕獲邊緣。在濾波器中,高通濾波器結(jié)果的差異類似于低通濾波器結(jié)果。與巴特沃斯濾波器和高斯濾波器相比,理想濾波器的濾波結(jié)果有很多失真。
結(jié)束語
傅立葉變換是處理二維信息的有力工具。FT允許我們?cè)诹硪粋(gè)維度處理圖像,這帶來了更大的靈活性。