前置知識:離散傅立葉變換
傅立葉變換在上文中更多的是 OI 中的理解以及應用。但是傅立葉變換奧秘還很多。
回顧 \(\omega_n\) 在傅立葉變換中的定義:\(e^{i \frac {2\pi} n}\),存在 \(\omega_n^n = 1\) 的性質。意味著離散傅立葉變換實際上是週期性的,這也變相的解釋了為什麼存在迴圈卷積的性質。
傅立葉級數
我們回顧什麼是傅立葉級數。傅立葉斷言,對於任何週期訊號 \(x(t)\) 都可以表示為成諧波關係的虛指數訊號的線性組合,即:
\[x(t) = \sum_{k = - \infty}^{\infty} a_k e^{jk \omega_0 t}
\]
雖然後來證明當 \(x(t)\) 滿足狄裡赫利條件時才成立……
週期訊號 \(x(t)\) 滿足存在一個正值 \(T\) 滿足:
\[\forall t, x(t) = x(t + T)
\]
最小的 \(T\) 稱為基波週期,\(w_0 = \frac {2\pi} T\) 稱為基波頻率。
如果我們知道了一個 \(x(t)\) 該如何求 \(a_k\) 呢?
利用積分:
\[\int_0^T x(t) e^{-jn \omega_0 t} dt = \int_0^T \sum_{k = - \infty}^{\infty} a_k e^{jk\omega_0 t} e^{-jn \omega_0 t} dt
\]
將後面變形:
\[\int_0^T \sum_{k = - \infty}^{\infty} a_k e^{jk\omega_0 t} e^{-jn \omega_0 t} dt = \sum_k a_k \left[ \int_0^T e^{j(k - n)\omega_0 t} dt \right]
\]
注意到:
\[\int_0^T e^{j(k - n)\omega_0 t} dt = \int_0^T \cos[(k - n)\omega_0 t] dt + i \int_0^T \sin[(k - n) \omega_0 t] dt
\]
中,存在:
\[\int_0^T \sin[(k - n) \omega_0 t] dt = \begin{cases}
T & k = n \\
0 & k \ne n
\end{cases}
\]
所以:
\[a_k = \frac 1 T \int_0^T x(t) e^{-jk\omega_0 t} dt
\]
DCT 變換與 DFT 的聯絡
DCT 實際上就是 DFT 的一種特殊形式。
在傅立葉級數的推導中:
\[\int_0^T \sin[(k - n) \omega_0 t] dt = \begin{cases}
T & k = n \\
0 & k \ne n
\end{cases}
\]
是非常有趣的。
這反映出瞭如果對一個週期為 \(T\),並且週期內是個奇函式的函式 \(\int_0^T\),結果一定 \(= 0\),反之不為 \(0\)。
那麼我們考慮將一個一般的週期訊號變成一個週期內的偶函式,這樣和 \(\sin\) 這個奇函式相乘後還是奇函式,積分出來也就沒了,從而使得 DFT 的虛部沒了。
上面所說的連續的情況,但是實際上離散的情況也是一樣。
考察 DFT 的式子:
\[b_k = \sum_{i = 0}^{n - 1} \omega_n^{ik}a_i
\]
令 \(m = 2n\),使得 \(a_k = a_{m - k - 1}\),那麼其 DFT:
\[b_k = \sum_{i = 0}^{m - 1} \omega_m^{ik} a_i = \sum_{i = 0}^{n - 1} a_i \left(\omega^{ik} + \omega^{(2n-k-1)k}\right)
\]
發現並不優美,考慮將冪平移 \(\frac k 2\):
\[\begin{aligned}
b_k &= \sum_{i = 0}^{m - 1} a_j \omega^{kj + \frac k 2} \\
&= \sum_{i = 0}^{n - 1} a_j \left[ \left(\cos \frac {\pi k (n + \frac 12)} n + \cos \frac {- \pi k (n + \frac 12)} n \right) + i\left(\sin \frac {\pi k (n + \frac 12)} n + \sin \frac {- \pi k (n + \frac 12)} n \right) \right] \\
&= 2 \sum_{i = 0}^{n - 1} a_j \cos \frac {\pi k(n + \frac 12)} n
\end{aligned}
\]
中間是利用 \(e^{ix} = \cos x + i \sin x\) 展開推導而來。
發現虛部直接沒了,這符合前面得出的結論。
然後我們成功的學會了 DCT。
IDCT
由於 DCT 本質上就是 DFT,所以 IDCT 本質上就是 IDFT。所以理解是簡單的了。