离散余弦变换(DCT for Discrete Cosine Transform)是与傅里叶变换相关的一种变换,它类似于离散傅里叶变换(DFT for Discrete Fourier Transform),但是只使用实数。离散余弦变换相当于一个长度大概是它两倍的离散傅里叶变换,这个离散傅里叶变换是对一个实偶函数进行的(因为一个实偶函数的傅里叶变换仍然是一个实偶函数),在有些变形里面需要将输入或者输出的位置移动半个单位(DCT有8种标准类型,其中4种是常见的)。
基本介绍
离散傅里叶变换需要进行复数运算,尽管有FFT可以提高运算速度,但在图像编码、特别是在实时处理中非常不便。离散傅里叶变换在实际的图像通信系统中很少使用,但它具有理论的指导意义。根据离散傅里叶变换的性质,实偶函数的傅里叶变换只含实的余弦项,因此构造了一种实数域的变换——离散余弦变换(DCT)。通过研究发现,DCT除了具有一般的正交变换性质外,其变换阵的基向量很近似于Toeplitz矩阵的特征向量,后者体现了人类的语言、图像信号的相关特性。因此,在对语音、图像信号变换的确定的变换矩阵正交变换中,DCT变换被认为是一种准最佳变换。在近年颁布的一系列视频压缩编码的国际标准建议中,都把 DCT 作为其中的一个基本处理模块。
DCT除了上述介绍的几条特点,即:实数变换、确定的变换矩阵、准最佳变换性能外,二维DCT还是一种可分离的变换,可以用两次一维变换得到二维变换结果。
最常用的一种离散余弦变换的类型是下面给出的第二种类型,通常我们所说的离散余弦变换指的就是这种。它的逆,也就是下面给出的第三种类型,通常相应的被称为"反离散余弦变换","逆离散余弦变换"或者"IDCT"。
有两个相关的变换,一个是离散正弦变换(DST for Discrete Sine Transform),它相当于一个长度大概是它两倍的实奇函数的离散傅里叶变换;另一个是改进的离散余弦变换(MDCT for Modified Discrete Cosine Transform),它相当于对交叠的数据进行离散余弦变换。
主要应用
离散余弦变换,尤其是它的第二种类型,经常被信号处理和图像处理使用,用于对信号和图像(包括静止图像和运动图像)进行有损数据压缩。这是由于离散余弦变换具有很强的"能量集中"特性:大多数的自然信号(包括声音和图像)的能量都集中在离散余弦变换后的低频部分,而且当信号具有接近马尔科夫过程(Markov processes)的统计特性时,离散余弦变换的去相关性接近于K-L变换(Karhunen-Loève 变换--它具有最优的去相关性)的性能。
例如,在静止图像编码标准JPEG中,在运动图像编码标准MJPEG和MPEG的各个标准中都使用了离散余弦变换。在这些标准制中都使用了二维的第二种类型离散余弦变换,并将结果进行量化之后进行熵编码。这时对应第二种类型离散余弦变换中的n通常是8,并用该公式对每个8x8块的每行进行变换,然后每列进行变换。得到的是一个8x8的变换系数矩阵。其中(0,0)位置的元素就是直流分量,矩阵中的其他元素根据其位置表示不同频率的交流分量。
一个类似的变换, 改进的离散余弦变换被用在高级音频编码(AAC for Advanced Audio Coding),Vorbis 和 MP3 音频压缩当中。
离散余弦变换也经常被用来使用谱方法来解偏微分方程,这时候离散余弦变换的不同的变量对应着数组两端不同的奇/偶边界条件。
计算方式
尽管直接使用公式进行变换需要进行O(n2)次操作,但是和快速傅里叶变换类似,我们有复杂度为O(nlog(n))的快速算法,这就是常常被称做蝶形变换的一种分解算法。另外一种方法是通过快速傅里叶变换来计算DCT,这时候需要O(n)的预操作和后操作。
改进变换
编辑
改进的离散余弦变换(Modified Discrete Cosine Transform, MDCT)是一种与傅立叶变换相关的变换,以第四型离散余弦变换(DCT-IV)为基础,重叠性质如下:它是应用于处理较大的资料集合,当连续的资料区块中,当前的资料区块跟后续的资料区块有重叠到的情形;即当前资料区块的后半段与下一个资料区块的前半段为重叠的状态。这样的重叠情形,除了具有离散余弦变换(Discrete Cosine Transform, DCT)的能量压缩特性外,也使这种变换在应用于信号压缩时更引人注目。因为它有助于避免由于资料区块边界所产生的多余资料。因此,这种变换可应用于MP3,AC-3, ogg vorbis,和AAC的音频压缩等方面。
改进的离散余弦变换是由Princen,Johnson和Bradley承接早前(1986年)Princen和Bradley所提出关于时域混叠消除法(Time-Domain Aliasing Cancellation, TDAC )的改进的离散余弦变换基本定理,于1987年所提出,详述如下。至于其他类似的变换还有如以离散正弦变换为基础的改进的离散正弦变换(Modified Discrete Sine Transform, MDST)。以及其他较少使用的变换,例如以其他不同类型的DCT或DCT/DST的组合为基础的改进的离散余弦变换。
在MP3的应用上,改进的离散余弦变换,并不适用于直接处理音频信号,而适用于处理32波段多相正交滤波器(Polyphase quadrature filter, PQF)阵列的输出端信号。这样的改进的离散余弦变换输出是由一个混叠削减公式作后置处理,用以减少多相正交滤波器阵列的特殊混叠。这样的改进的离散余弦变换与滤波器阵列组合,被称作混合滤波器阵列或子带改进的离散余弦变换 。相反地,AAC通常使用一个纯粹的改进的离散余弦变换;仅Sony公司使用的MPEG – 4 AAC - SSR技术采用了运用改进的离散余弦变换的四波段多相正交滤波器阵列(但也是很少使用)。自适应听觉变换编码(Adaptive TRansfeorm Acoustic Coding, ATRAC)利用运用改进的离散余弦变换的堆叠型正交镜像滤波器(Quadrature Mirror Filter, QMF)。
改进离散余弦变换
改进离散余弦变换(Modified Discrete Cosine Transform ),简称MDCT,是一种线性正交交叠变换。它使用了一种时域混叠抵消技术(TDAC),包含50%的时域交叠窗,在不降低编码性能的情况下有效地克服加窗离散余弦变换(DCT)块处理运算中的边缘效应,从而有效地去除由边缘效应产生的周期化噪声,在相同编码率的情况下,MDCT性能优于DCT,广泛应用于语音、宽带音频和图像信号的变换编码中。MDCT本身计算量庞大,对于实时编解码系统,直接计算复杂度很难接受,其快速算法一类是基于FFT,另一类是基于DCT。