1. 程式人生 > >11.頻域裡的卷積——介紹,傅立葉變換和卷積,快速傅立葉變換(FFT)_1

11.頻域裡的卷積——介紹,傅立葉變換和卷積,快速傅立葉變換(FFT)_1

目錄

介紹

FFT

介紹

我們將繼續討論頻率分析以及如何用頻率分量的概念來研究影象。如果你還記得上次我們講過的基於頻率的影象分解的概念。我們通過給你們看這張照片來回憶它(如圖)。這是著名的Dali圖片,當你在那裡允許高頻影象時,你會看到一個女人在欣賞地中海之類的東西。

但是當你模糊它的時候,就是當你去掉高頻的時候只有低頻的時候,它就變成了林肯的照片。值得我們思考的是我們如何分解影象,思考什麼是所涉及頻率的基集,以及 基集將是一些函式,我們將線性地跨越我們可能的訊號。所以我們的想法是我們應該從這個集合中建立並製造出任何可能的訊號,並且它們是線性無關的,所以基本上我可以做這個求和。我們也會在模糊的基底集合中結束,所以當你改變一個基底元素的數量時,你不會得到其他元素的任何變化。

我們討論的基集是這個傅立葉集(如圖),對吧? 傅立葉集基本上把東西分解成正弦曲線,它們是頻率不斷增加的正弦曲線它們是垂直(如圖垂直箭頭)和水平移動(如圖水平箭頭)的,我們可以這樣構造影象。

所以相關這個想法是我們稱之為傅立葉變換的概念,而傅立葉變換就是你會輸入一個訊號,在這裡以1D顯示它,但也在2D中談論它,你會得到的不是f(x)的函式(即位置函式的強度),你得到是一個F,作為\omega的函式是頻率。這個想法是,F可以分解成一個偶數分量和一個奇數分量用複數表示,這樣我們就可以同時表示給定頻率的大小A 和 相位\varphi(如圖)。

如果你想的話,你可以恢復大小和相位。大小就是每個實分量和虛分量平方和的平方根(如圖),相位就是這個關係的arctan(反正切,如圖)。

做傅立葉變換用這種難看的積分表示。這裡我用1D向你們展示,我們會在2D中再做一次。但是你要做的是把函式從負無窮到正無窮進行積分(如圖)。

 你把它乘以任何頻率的正弦曲線(如圖),有時甚至是頻率\omega。當我們在二維空間中計算u和v時,這是它的形式。儘管這看起來不像正弦函式,

但你必須記住e的ik次方是cosk + isink。 

這就是讓我們從空間域到頻域的原因。我們也提到過,如果你想的話,你可以逆這個(如圖),對吧? 如果你給我一個訊號的傅立葉變換f (u)從而改變它是正的還是負的,我可以做積分得到原始訊號。

現在有u和v。

我們還討論了離散型。我們在這裡展示了一些例子你們用求和代替積分。

大多數時候,我們最感興趣的是功率。還記得平方和的平方根嗎?在這裡表示出來。所以我可能有一個訊號有一定的偶數部分和奇數部分,或者說是實部、虛部,

你用的平方和的平方根,得到平方和的大小(如圖),當我們討論任何給定影象的頻率存在時,我們通常要討論的是功率的大小。我們想知道它的功率。這個相位對重建很重要,但一般來說,我們不會做重建。

今天,我們要做的是,我們要把傅立葉變換和卷積聯絡起來。特別是,空間中的卷積是如何乘以頻率的,我來給你們演示一下。

傅立葉變換和卷積

假設有一個函式 g ,它就是 f 與 h 的卷積(如圖)。也許 h 是一個濾波器,f 是原始影象,沒關係,它是 f 與 h 的卷積,

假設我想要 g 的傅立葉變換。這將被寫成這樣,我們的定義是,G (u)就是G (x)的傅立葉變換。

但是g (x)只是卷積,這是 f 和 h 的卷積(如圖)。記住這是 G 的定義,f 和 h 的卷積。

我能做的是重新整理一下(如圖),你們會看到我在這裡做的是,第二個公式是 ux,這裡是 u\tau,這裡是 x -\tau。如果把它們相乘,就得到 ux,這是一樣的。但是我重新整理了一下後,所有的 \tau 都在這裡。所有的 x 元素都在那裡,這個 \tau 在那裡,

所以,我們將快速改變變數,對吧?我要說,讓我們定義一個 x -\tau 是 x 素數的新變數,現在我把它轉換成x '(x prime),

現在這裡有一個積分,這裡也有一個積分。如果你盯著這些,然後問自己,準備好。這些積分是什麼?

我們來看看這個積分。這是 f 的傅立葉變換,對吧? 這裡用的是 \tau 而不是 x,但這是一樣的。另一個積分(公式的右邊),這是 H 的傅立葉變換,

所以可以寫成F(u)*H(u),所以 G (u) 等於F(u)乘以H(u) ,換句話說,記住 G 是 F 和 H 的卷積。G (u)頻域就是F和H的傅立葉變換的乘積,Okay? 所以,這裡的思想是當你在空間域做卷積時,實際上是在頻域做乘法。這是非常重要的,後面我們要講混疊的時候,這也是我們要講的卷積是如何進行頻率操作的。

這是寫在這裡的,如果在空間域中我做卷積,在頻域中我做乘法。順便說一下,由於變換的對稱性。

如果我要在空間域中相乘,也就是說,如果我取兩個函式並把它們相乘,我就不對它進行卷積,我只是將它們相乘(如圖左2等式)。新函式的傅立葉變換將是每個函式的傅立葉變換的卷積(如圖右2等式)。我們會用到它,在這裡,當我們討論混疊的時候。所以,在空間域中你做卷積,在頻域中是乘法或者反之亦然。

FFT

這實際上意味著,這在不久前更為重要,但人們今天仍然使用它。如果我想用一些非常大的濾波器卷積函式,這通常是很昂貴的運算,實際上我可以用一種稍微不同的方法來做,這在這裡顯示出來了。假設我想要的,g 是 f 和 h 做卷積,假設 f 和 h 都是非常大的東西,所以你還記得卷積醜陋的原因是N^2M^2,其中N是影象的大小 N*N 和 M*M,所以我們能做的是,我們實際上可以採用 F的傅立葉變換 和 H的傅立葉變換。

還有一種傅立葉變換的快速方法,叫做快速傅立葉變換(FFT),我們不會談論關於FFT,但我可以快速完成那些傅立葉變換,然後我可以將這兩個傅立葉變換相乘得到新的傅立葉變換, 那麼我可以做逆傅立葉變換來得到答案(如圖)。就像我說的那樣,當機器速度較慢時,這非常重要,現在人們傾向於在空間領域工作,但即使在今天,如果你有一個大濾波器或一些你嘗試對大影象進行卷積的大函式,使用傅立葉技巧來做到這一點並不罕見。

——學會編寫自己的程式碼,才能練出真功夫。