直觀理解影像的傅里葉變換
由於不是專門的訊號專業,當我我問很多身邊的人怎麼解釋傅里葉變換時,很少有人能夠理解,知道傅里葉變換是用來區分訊號頻率的這一層面已經算是比較難得了。在做數字影像處理時,影像的空間域和頻率域相信也勸退了很多初學者,因此本文就從傅里葉變換的本質開始,逐步地對影像的傅里葉變換進行解釋。
一、一維傅里葉變換
1.1 傅里葉變換的公式
傅里葉變換可以通過如下公式把訊號 \(x(t)\) 從時域變換到頻域:
\]
看到這裡估計很多人都會好奇,\(w\) 是哪來的?為什麼要做在 \([-\infty, +\infty]\) 區間上對時間做積分?最後得到的訊號 \(X(w)\) 表示什麼東西?
1.2 傅里葉變換的本質
為了解決這個問題,我們首先了解一下歐拉公式:
\]
虛數 \(i\), 自然底數 \(e\) 在歐拉公式中通過一種完美的方式結合了起來。我們都知道,在複數空間中,\(m = a+bi\) 可以表示一個複平面的向量,它的大小為 \(|m|=\sqrt{a^{2}+b^{2}}\),方向為 \(\theta = arctan(\dfrac{b}{a})\)。其實跟直角坐標系鐘的表示差不多,只不過把 \(y\) 坐標系換成了虛數而已。那麼進一步地,為什麼會出現虛數呢?
我們都知道,虛數 \(i^{2}=-1\),那麼考慮在複平面內的一個向量 \(1+0i\),如果將它乘上 \(i\),那麼原始向量 \(1+0i\) 就變成了 \(i+0\),從複平面的角度來看,類似於逆時針旋轉了 90°。所以,實際上虛數的出現是為了解決向量的旋轉問題。
現在回過頭來看一下歐拉公式,在任意位置 \(x = k\) 處,\(e^{ik}=cos(k)+jsin(k)\),所以 \(|e^{ik}| = \sqrt{cos^{2}(k)+sin^{2}(k)}=1,\theta = arctan(\dfrac{sin(k)}{con(k)})\),因此 \(e^{ix}\) 表示的就是一個複平面上的單位圓。假如 \(x\) 是時間 \(t\) 的函數 \(x=wt\),那麼歐拉公式可以寫成:
\]
此時動態地來看就相當於一個小球在複平面上繞著單位圓在做圓周運動,靜態地來看就相當於將小球的位置在坐標繫上進行了分解。
所以,傅里葉變換可以寫成:
$$
X(w)=\int_{-\infty}^{+\infty}x(t)cos(wt)-jx(t)sin(wt)dt
$$
**傅里葉變換的本質就可以表示為,將原始訊號乘上一組三角函數,之後在整個時間域上進行積分。**
1.3 傅里葉變換的頻率選擇
眾所周知,傅里葉變換可以將時域訊號的頻率選擇出來,選擇的主要方式就是通過積分。比如:
\(\int_{-\infty}^{+\infty}sin(3t)*sin(3t)dt\) 的結果的模接近於正無窮,而 \(\int_{-\infty}^{+\infty}sin(3t)*sin(4t)dt\) 的結果的模明顯為0,因此我們將所乘上的正交函數的頻率設置為變數 \(w\), 通過計算 \(w\) 所對應的模值大小便可以知道原始訊號 \(x(t)\) 中存在哪些頻率的訊號。然而,現實中的訊號都是有限的,因此不存在完全理想的狀態,多少會有些出入,但是規律是一致的。
\(\int_{0}^{50}sin(3t)*sin(3.1t)dt=-4.7731,\int_{0}^{50}sin(3t)*sin(4t)dt=-0.0627\)
因此,相對於時域訊號 \(x(t)=sin(t)(t\in[0,25])+sin(5t)(t\in[25,50])\),其傅里葉變換的結果為(這裡並沒有體現出相位的關係):
#### 1. 4傅里葉變換的直觀理解
其實無論是時域訊號還是頻域訊號,都是用來理解世界的一種方式,比如:在人的眼中可能事物是五顏六色的,這樣能夠很好地幫助我們理解這個世界。但是在蛇等動物的嚴重,可能事物只有紅外這些,雖然都是同一個東西,但是理解的方式不一樣,所感受到的東西也不一樣。
再比如一段音樂,隨著時間的播放會形成一段旋律,然而對於音樂家來說能夠聽出這段旋律中的音調,那麼無論旋律在時域中多麼優美,其實都是由一個又一個固定頻率的音符組成。
因此,我們沒必要將時域訊號和頻域訊號進行一對一的等效,只需要理解這是不同看待訊號的角度即可。
1.5 離散傅里葉變換(DFT)
剛剛提到過,由於實際的訊號通常是離散且有限的,假設採集了 \(N\) 個訊號點,其時刻為 \(\{t_{0},t_{1},…t_{N-1}\}\),則對應時刻的訊號為:\(\{x(t_{0}),x(t_{1}),…,x(t_{N-1})\}\)。首先我們將積分改成求和,得到:
\]
然後我們採用相對取樣時間間隔 \(n=\{0, 1, …, N-1\}\) 代替真實取樣時間 \(\{t_{0},t_{1},…t_{N-1}\}\),得到:
\]
這樣一來,\(X(w)\) 變成了以 \(2\pi\) 為周期的函數,因此積分區間可以從 \([-\infty, +\infty]\) 變成了 \([0, 2\pi]\)。進一步地,我們將積分區間離散化為 \(N\) 個取樣點,則取樣點之間的間隔可以表示為 \(\dfrac{2\pi}{N}\)。取 \(w = \dfrac{2\pi k}{N}, k=0,1,…,N-1\),則有:
\]
這便是離散傅里葉變換的公式了。
二、影像的傅里葉變換
影像比如灰度影像其實也可以看成二維的離散訊號,你可以想像一個三維坐標系,\(x,y\) 軸分別指示影像像素所在的位置,而 \(z\) 坐標系表示影像的像素值,於是,影像就可以表示如下:
於是,如果是影像中變化比較平坦的區域,那麼在三維視角上該區域的頻率就非常小,稱為影像的低頻資訊(比如天空,大部分的地方的像素值都是相似的),而影像中變化比較劇烈的區域,則該區域的頻率就比較大,稱為影像的高頻資訊(比如上圖中的頭髮部分,相鄰近的地方像素值變化比較明顯)。**因此,類似於一維訊號的傅里葉變換,對影像進行傅里葉變換的目的就是把影像不同頻率的資訊進行分離。**如果說一維傅里葉變換的頻譜圖可以用一個二維空間表示,那麼二維訊號的傅里葉變換頻譜就可以用一個三維空間表示,只不過這個三維空間的 $z$ 軸的坐標直接以灰度值的方式體現在了 $(x,y)$ 位置上:
因此,上圖中的每個點到原點的距離描述的是頻率,而不是影像的空間位置(像素位置),該點的灰度值 \(X(w)\) 描述的是頻譜的幅度。
三、參考資料
//zhuanlan.zhihu.com/p/66246381
//zhuanlan.zhihu.com/p/99605178