1. 程式人生 > >數字影象處理筆記——二維離散傅立葉變換(2D Discrete Fourier Transform)

數字影象處理筆記——二維離散傅立葉變換(2D Discrete Fourier Transform)

二維傅立葉變換

我們先來看看一維情況的傅立葉變換。在訊號系統中講過連續時間的傅立葉變換和離散時間的傅立葉變換,連續時間傅立葉變換在頻譜上時非週期的,離散時間傅立葉變換(DTFT)在頻譜上是週期的。在DSP中講了離散傅立葉變換,它的思想是將時域週期化,反映在頻域上就是對連續的週期頻譜進行抽樣

有了一維的離散傅立葉變換(DFT),我們可以將其推廣到二維的情況

我們其實可以將二維離散傅立葉變換看成兩次一維的離散傅立葉變換,在matlab中我們可以用fft2這個函式來計算

和一維DFT類似,二維DFT顯示了影象的頻率成分組成情況

如下圖所示就是不同的頻率成分,也就是說影象實際上是由以下各種不同的影象疊加而成

由於在某一幅特定的影象中,頻譜值差距很大,因此我們通常會用log來調整。在實際呼叫的時候我們還可以採用頻譜搬移的方法使得頻譜特性更容易觀察,例如out=fftshift(log(abs(fft2(im))));由於影象頻譜具有中心對稱性(一維傅立葉變換是軸對稱,二維傅立葉變換是中心對稱),我們實際上只需要看頻譜的1/2就可以了

我們會看到圖中會有兩條白色的線,在課程中老師解釋說是由於DFT會將影象進行週期化,使得影象的邊緣不連續(也就是影象下半部分會與下一幅圖的上半部分接壤,左半部分會與右半部分接壤),引入了高頻成分導致的。但是關於這點我有點不是很理解,我認為對於一幅影象而言,我們直接對他進行DTFT得到的是一個連續的週期譜,我們對影象進行週期化的過程實際上只是對連續譜進行一個取樣,而不會引入新的頻率成分,也就是說週期化與否並不影響頻譜成分,而差別只是頻譜由連續變為離散了。因此我認為頻譜存在橫豎的白線僅僅是因為影象中存在水平或豎直的邊緣(例如上圖中的海水與海岸形成豎直的線,山巒與天空形成水平的線)導致的

那麼為什麼影象中的邊緣會使得頻譜中也出現相應的白線呢,我們先給出結論:如果影象中存在角度為θ的邊線,那麼在頻譜中我們會看到角度為θ+90度的一條白線。我們在此不做數學上的推導而是舉個例子讓大家能夠理解:我們假設有一幅影象是黑白相間的豎條紋,我們對這幅影象進行傅立葉變換,我們知道二維傅立葉變換可以看做兩次一維的傅立葉變換,因此我們對產生影象的矩陣分別進行DFT,得到的結果就是隻有頻譜中央的一條橫線上是有值的,而這個值具體是什麼,跟條紋的圖案有關

下圖是一個實際的例子,我們可以看到對於一幅存在傾斜方格的圖片,它的頻譜也會出現對應角度的白線

 

二維傅立葉變換的性質

以下是二維傅立葉變換的一些性質,在這就不細講了

要注意的是DTFT中的卷積性質到DFT中變成了迴圈卷積,也就是將訊號週期化後做卷積(每個位置的值會被迴圈使用)

但是迴圈卷積出來的結果往往不是我們想要的,因為週期化的過程使得引入的迴圈部分也參與卷積運算,而這部分是我們不需要的,解決方法是在序列後面補零,使得迴圈卷積結果與普通卷積相同,好訊息是我們在matlab中呼叫函式時這些函式會自動幫我們完成這些工作