我介绍了如何在图像和视频压缩标准中使用 DCT(离散余弦变换)。
但为什么仅 DCT 优于 dft 或 dst 等其他变换?
我介绍了如何在图像和视频压缩标准中使用 DCT(离散余弦变换)。
但为什么仅 DCT 优于 dft 或 dst 等其他变换?
因为cos(0)
是 1,所以 DCT-II 的第一个(第 0 个)系数是被转换值的平均值。这使得每个 8x8 块的第一个系数代表其组成像素的平均色调,这显然是一个好的开始。随后的系数增加了越来越多的细节水平,从扫描梯度开始,一直到越来越复杂的模式,而前几个系数恰好捕获了摄影图像中的大部分信号。
Sin(0)
为 0,因此 DST 以 0.5 或 1 的偏移量开始,第一个系数是平缓的土丘而不是平坦的平原。这不太可能适合普通图像,结果是 DST 需要比 DCT 更多的系数来编码大多数块。
DCT恰好适合。这就是它的全部。
在执行图像压缩时,我们最好的选择是执行 KLT 或Karhunen-Loève 变换,因为它可以使原始图像和压缩图像之间的均方误差最小。然而,KLT 依赖于输入图像,这使得压缩过程不切实际。
DCT 是最接近 KL 变换的近似值。大多数情况下,我们对低频信号感兴趣,因此只需要偶数分量,因此仅计算 DCT 在计算上是可行的。
此外,使用余弦而不是正弦函数对于压缩至关重要,因为需要更少的余弦函数来逼近典型信号(有关进一步解释,请参阅Douglas Bagnall 的回答)。
使用余弦的另一个优点是没有不连续性。在 DFT 中,由于信号是周期性地表示的,因此在截断表示系数时,信号会趋于“失去其形式”。然而,在 DCT 中,由于连续的周期性结构,信号可以承受相对较多的系数截断,但仍保持所需的形状。
顶部和底部和/或左右边缘不匹配的图像宏块的 DCT 在较高频率系数中的能量将低于 DFT。因此,允许更大的机会去除这些高系数,更粗略地量化或压缩,而不会产生更多可见的宏块边界伪影。
DCT 优于 DFT(离散傅立叶变换)和 KLT(Karhunen-Loeve 变换)
1. Fast algorithm
2. Good energy compaction
3. Only real coefficients