Ring-2

Wenn das Leben dir eine Zitrone gibt, frag nach Salz und Tequila.

离散余弦变换

Posted at — Jul 9, 2019

离散余弦变换(DCT)可以由离散傅里叶变换(DFT)推导得来。一维离散余弦变换根据输入序列的延拓方式不同有许多不同的定义式,常用的DCT-1定义为以下变换对: \[X^{c1}\left[ k\right] =2\sum_{n=0}^{N-1}\alpha \left[ n\right]x \left[n\right] \cos \left( \dfrac {\pi kn} {N-1}\right) ,0\leq k\leq N-1\] \[x\left[ n\right] =\dfrac {1} {N-1}\sum _ {k=0}^{N-1}\alpha \left[ k\right] X^{c1}\left[ k\right] \cos \left( \dfrac {\pi kn} {N-1}\right) ,0\leq n\leq N-1\]

其直观来看是将DFT变换里函数的基由\(e^{-j2\pi kn / N}\)换为余弦函数,也就是消除了虚数的正弦部分,这也就造成了DCT变换后序列的存储所需空间比DFT的更小。

大致推导

构造有限长实数信号序列\(x\left[ n\right]\),其包含的元素个数为N。对其进行Type-1的周期延拓得到新的无限长周期序列\(\tilde {x} _ {1}\left[ n\right]\),其具体定义为: \[\tilde {x} _ {1}\left[ n\right] =x _ {\alpha }\left[ {\left( \left( n\right) \right)} _ {2N-2} \right] +x _ {\alpha }\left[ \left( \left( -n\right) \right) _ {2N-2}\right]\] 其中 \[x_ {\alpha }\left[ n\right] =\alpha \left[ n\right] x\left[ n\right]\] \[\alpha\left[n\right]=\begin{cases}\dfrac{1}{2},\quad n=0\ and\ N-1\\1,\quad1\leq n\leq n-2\end{cases}\] 式中,\(x\left[ \left( \left( n\right) \right) _ {N}\right]\)表示将\(x\left[ n\right]\)进行周期为N的平移复制得到无限长周期序列,\(\alpha\left[n\right]\)为信号幅值修正项。 在Type-1的周期延拓中,若没有修正,则在\(n=0\)和\(n=(N-1)\)时,延拓的定义式中前后两项均不为0,进而导致了延拓后的幅值在这两点翻倍,所以要加上修正项。

对\(\tilde {x}\left[ n\right]\)进行DFT变换得到: \[X_ {1}\left[ k\right]=X_ {\alpha }\left[ k\right]+X_ {\alpha }^{*}\left[ k\right]=2Re{X_ {\alpha }\left[ k\right]}\]

以上变换用了DFT的一个性质,\(x^{* }\left[ \left( \left( -n\right) \right) _ {N}\right]\)的DFT变换为\(X^{* }\left[ k\right]\),而由于是实数序列,\(x\left[ \left( \left( -n\right) \right) _ {N}\right] = x^{* }\left[ \left( \left( -n\right) \right) _ {N}\right]\)。

由于: \[X_ {\alpha }\left[ k\right]=\sum _ {n=0}^{N-1}x_ {\alpha} \left[n\right] e^{-j2\pi kn / 2N-2}=\sum _ {n=0}^{N-1}\alpha \left[ n\right]x \left[n\right] \left( \cos \left( \dfrac {-\pi kn} {N-1}\right)+j\sin \left( \dfrac {-\pi kn} {N-1}\right)\right)\]

得到: \[X_ {1}\left[ k\right]=2\sum _ {n=0}^{N-1}\alpha \left[ n\right]x \left[n\right] \cos \left( \dfrac {\pi kn} {N-1}\right)=X^{c1}\left[ k\right]\]

能量密集性

首先,DCT变换跟DFT一样,符合Parseval定理,即变换前后能量守恒,再由于DCT-2变换得来的\(X^{c2}\left[ k\right]\),能量相比于DFT能够很好的集中于低k值的区域,所以DCT-2被广泛的应用于信号压缩。

参考:《离散时间信号处理(第三版)》-A.V.奥本海姆