1. 概括
像其它Fourier相关的变换一样,离散余弦变换(DCTs)表达了一个函数或者是一个信号,该函数或者信号是以不同频率和幅度的正弦信号的和。像离散傅里叶变换(DCT),一个DCT表达了一个在有限的离散数值点的函数。DCT和DFT一个很明显的区别在于:前者只有余弦函数,而后者同时拥有正余弦函数。但是,这个明显的差别只是另一个更深的区别的表现而已,那就是:比起DFT或者其它相关的变换来说,DCT运用了不同的边界条件。
Fourier相关的变换操作一个函数在有限的域内,例如DFT,DCT或者一个傅里叶级数,可以认为隐式地定义了一个在域外的扩展。那就是,但你写一个函数
f(x)为正弦函数的和时,你可以计算在任意x处的和,即使原来的
f(x)在该
x点处并没有指定。DFT,就像Fourier级数一样,应用了原来函数的一个周期扩展。DCT,像一个余弦变换,应用了在原始函数的偶扩展。
但是,因为DCT操作在一个有限、离散的序列上,并没有应用在连续的余弦变换上,这就导致出现两个问题。第一,必须去指定函数在定义域的左右边界(也就是在定义域中最小边界和最大边界)究竟是偶对称还是奇对称。第二,必须去指定围绕着哪个点该函数为偶对称还是奇对称。特别地,我们考虑一个四个相等间隔的序列:abcd,如果我们指定左边界偶对称,那么有两种有意义的可能:这个序列以点a偶对称,这种情况下的偶扩展就是dcbabcd,另一种情况是以点a和前一个点的中间为对称轴,这种情况下,偶扩展为dcbaabcd(a重复了)。
这些选项产生了针对DCT,同样也是对DST的不同的标准。每一个边界既可以是偶对称,也可以是奇对称(在每个边界点有两种选择),而对称轴既可以是一个点也可以是两个点中间的位置(在每个边界点也有两种选择),这样就有2x2x2x2=16种的可能性。其中一半的可能性,左边界为偶对称的,对应8种类型的DCT,另外一半对应8种类型的DST。
这些不同的边界条件强烈地影响到这些变换的应用并且导致不同的DCT类型有一些独一无二的有用的属性。更直观地说,当通过频谱方法去使用Fourier相关的变换去解决偏微分方程时,边界条件被直接指定成为需要解决问题的一部分。或者,对于MDCT(基于DCT Ⅳ)来说,边界条件紧密地联系到MDCT的时域混叠取消的关键属性。在一个更精细的形式,边界条件直接关系到“能量压缩”特性,这使得DCT在图片和声音压缩上非常有用,因为边界条件影响到任何类Fourier级数收敛的速率。
特别的,总所周知任何的不连续性降低了傅里叶级数的收敛速率,这使得需要更多的正弦曲线去达到函数的指定的精度。相同的原则统治着DFT的使用和对信号压缩的其它变换:一个函数越是平坦,要达到它的精度,DFT或者DCT需要的项数越少,压缩比例就越大。(这里,我们看做DFT或者DCT对一个函数Fourier级数或者余弦级数的一个近似,对应地,为了讨论他们的“平滑度”)。但是,隐式地DFT的周期性意味着不连续点经常出现在边界条件:一个信号的任意部分不大可能在左边界和右边界具有相同的值。(一个相似的问题出现在DST中,奇左边界条件运用一个不连续点对任意函数不会发生在它的边界点为0。)与之相对的是,DCT边界是偶对称总是产生一个连续的扩展在边界(尽管斜率是总体的不连续)。这就是为什么DCTs,尤其是DCT类型为Ⅰ,Ⅱ,Ⅴ,和Ⅵ(这几种类型有两个偶边界)通常对DFTs和DSTs有更好的信号压缩的效果。实践中,在这些应用中通常使用类型Ⅱ,其中一部分原因就是计算的便利性。
2. 重要参考文献
- http://fourier.eng.hmc.edu/e161/lectures/dct/node1.html
- https://en.wikipedia.org/wiki/Discrete_cosine_transform
- http://www.cmlab.csie.ntu.edu.tw/cml/dsp/training/coding/transform/dct.html