映像傅立葉變換
映像的傅立葉變換,原始映像由N行N列構成,N必須是基2的,把這個N*N個包含映像的點稱為實部,另外還需要N*N個點稱為虛部,因為FFT是基於複數的,如所示:
計算映像傅立葉變換的過程很簡單:首先對每一行做一維FFT,然後對每一列做一維FFT。具體來說,先對第0行的N個點做FFT(實部有值,虛部為0),將FFT輸出的實部放回原來第0行的實部,FFT輸出的虛部放回第0行的虛部,這樣計算完全部行之後,映像的實部和虛部包含的是中間資料,然後用相同的辦法進行列方向上的FFT變換,這樣N*N的映像經過FFT得到一個N*N的頻譜。
下面展示了一副映像的二維FFT變換:
頻域中可以包含負值,映像中灰色表示0,黑色表示負值,白色表示正值。可以看到4個角上的黑色更黑,白色更白,表示其幅度更大,其實4個角上的係數表示的是映像的低頻組成部分,而中心則是映像的高頻組成部分。除此以外,FFT的係數顯得雜亂無章,基本看不出什麼。
將上述直角座標轉換為極座標的形式,稍微比較容易理解一點,幅度中4個角上白色的地區表示幅度較大,而相位中高頻和低頻基本看不出什麼區別來。
上述以一種不同的方法展示了映像頻譜,它將低頻部分平移到了頻譜的中心。這個其實很好理解,因為經2D-FFT的訊號是離散映像,其2D-FFT的輸出就是周期訊號,也就是將前面一張圖周期性平鋪,取了一張以低頻為中心的圖。將原點放在中心有很多好處,比如更加直觀更符合周期性的原理,但在這節中還是以未平移之前的圖來解釋。
行N/2和列N/2將頻域分成四塊。對實部和幅度來說,右上方和左下角成鏡像關係,左上方和右下角也是鏡像關係;對虛部和相位來說,也是類似的,只是符號要取反,這種對稱性和1維傅立葉變換是類似的,你可以往前看看。
為簡單起見,先考慮4*4的像素,右邊是其灰階值,對這些灰階值進行2維fft變換。
h和k的範圍在-N/2到N/2-1之間。
通常I(n,m)是實數,F(0,0)總是實數,並且F(h,k)具有對偶性。
如果寫成指數形式,即:
--------------------------------
映像傅立葉變換的物理意義
如果只保留靠近中心的幅度,則映像的細節丟失,但是不同地區還是有著不同灰階。
如果保留的是遠離中心的幅度,則映像的細節可以看得出,但是不同地區的灰階都一樣了。
考慮一個黑色矩形的傅立葉變換,這個黑色矩形的背景為白色。
如果對頻域中垂直方向高頻分量進行截斷,則映像中黑白將不那麼分明了,表現為振蕩。
可以得出結論:
傅立葉變換係數靠近中心的描述的是映像中慢變化的特性,或者說灰階變換比較緩慢的特性(頻率比較慢的部分);
傅立葉變換係數遠離中心的描述的是映像中快變化的特性,或者說灰階變換比較劇烈的特性(頻率比較快的部分)。
--------------------------------
傅立葉變換相位所含的資訊
有兩幅映像,如果用第一幅映像傅立葉變換的幅度和第二幅映像傅立葉變換的相位做反變換得到的映像是什麼樣子的?如果反過來,將第一幅映像的相位和第二幅映像的幅度做反變換得到的映像又是什麼樣子的?
這裡再用1維傅立葉變換解釋一下:
在1維傅立葉變換中,可以看到相位包含了邊沿何時出現的資訊!在映像的傅立葉變換中也一樣,相位決定了映像的邊沿,所以決定了映像中你看到物體的樣子!
關於相位所含的資訊,你可以這樣理解:
邊沿的形成是當很多正弦波上升沿都發生在同一時刻,也就是這些正弦波的相位是相同的時刻,所以相位所含的資訊決定了邊沿所發生的位置,而正是邊沿決定了映像的樣子。
這個就是映像訊號和聲音訊號的一個區別,聲音訊號的資訊多數都包含在其傅立葉變換的幅度中,即不同頻率幅度的大小,就是說你聽到什麼聲音取決於你聽到什麼樣的頻率的訊號,而對於這些訊號時什麼時候發生的並不十分重要。