题目: DCT: brief overview 作者: Oleg Ponomarev 论文地址: https://www.elecard.com/page/article_dct_overview 内容整理:杜君豪 离散余弦(正弦)变换概览。它主要用于有损(视频)图像压缩系统。
让我们回顾一下使用 H.265/HEVC 系统编码时处理视频帧的主要步骤(图 1)。第一步通常称为 "块划分",将帧划分为称为 CU(编码单元)的块。第二步是使用空间预测(Intra)或时间预测(Inter)对每个块内的图像进行预测。在进行时间预测时,CU 块可被划分为称为 PU(预测单元)的子块,每个子块都有自己的运动矢量。然后,从正在编码的图像的样本值中减去预测的样本值。因此,每个 CU 都会形成一个二维(2D)差分信号或残差信号。第三步,将残差信号样本的二维阵列划分为所谓的 TU(变换单元),进行二维离散余弦傅里叶变换(包含内部预测强度样本的 4×4 大小的 TU 除外,对其采用离散正弦傅里叶变换)。
图 1.H.265/HEVC 系统中视频帧编码的主要阶段
然后对残差信号的频谱傅里叶系数进行逐级量化。最后,将四个阶段中每个阶段所执行的所有操作的数据发送到熵编码器的输入端。这些数据稍后可用于还原编码图像。熵编码器使用上下文自适应二进制算术编码 (CABAC) 算法对输入数据进行额外的无损压缩。
本文旨在解释视频图像在第三步压缩时的情况。为什么要使用离散(余弦)变换?为什么离散余弦变换 (DCT) 主要用于有损(视频)图像压缩系统?(有损压缩系统是指压缩阶段会产生失真,因此解码后的图像总是与原始图像不同)。我们将尝试回答这些问题。
要回答这个问题,我们需要引用霍特林(Hotelling)最初于 1933 年发表的随机过程理论中的一些结果。Hotelling 提出了一种将时间离散随机过程表示为一组不相关随机系数的方法。20 世纪 40 年代,Karhunen 和 Loève 发表论文,为时间连续的随机过程提出了类似的表示方法。现在,离散变换和连续变换在大多数数字信号处理文献中都被称为卡尔胡宁-洛夫变换或特征向量分解。在此,让我们针对二维离散随机过程(图像)的具体情况总结一下这些结果。
卡尔胡宁-洛埃夫变换的计算公式为
表示数字图像的离散样本,为变换核。
是数字图像的协方差函数,而对于固定的是常数,一般认为,数字图像的协方差函数是可分离的,也就是说,它可以表示为一个乘积
是垂直图像协方差,j 和 k 是像素行索引,是水平图像协方差,i 和 l 是像素列索引。如果协方差是可分离的,那么卡胡宁-洛埃夫变换核也是可分离的,变换可以先应用于列,然后再应用于行(反之亦然)。在这种情况下,卡胡宁-洛埃夫变换核可以表示为
而乘积中的每项都满足各自的等式:
和
因此,卡胡宁-洛埃夫变换可以将数字图像表示为一组不相关的随机变量。但这有什么用呢?这种表示有什么特别之处?K.R. Rao 和 P.C. Yip 编著的《变换和数据压缩手册》。(Boca Raton, CRC Press LLC, 2001)以最易懂的方式回答了这个问题。在有关卡尔胡宁-洛夫变换的章节中,作者考虑了以下实验。他们建议将图像划分为非重叠块,如图 2 所示(摘自该书)。
图 2.H.265/HEVC 系统中视频帧编码的主要阶段
这两组区块完全定义了正在处理的图像。因此,图像被表示为一组二维矢量整个矢量集的散点图(其中点的位置由矢量的坐标定义)如图 3 所示(摘自本书)。
图 3.向量的散点图
从图 3 中可以看出,相邻像素的值具有很强的相关性(一条 45 度的直线清晰可见)。图 4(摘自本书)显示了和值的直方图。
图 4. 和 像素值的直方图
卡尔胡宁-洛埃夫变换将向量转化为向量坐标为 图 5 所示向量的散点图(摘自本书)显示向量的坐标之间没有相关性。
图 5.卡尔胡宁-洛埃夫变换后的散点图
图 6(摘自本书)显示了和值的直方图。
图 6.
从直方图中可以看出,值的动态范围与初始值几乎相同(即值的范围)。然而,第二个分量的动态范围却大不相同。该坐标的直方图宽度只有直方图宽度的一小部分。显然,给定数量的动态范围越小,用数字表示该数量所需的比特数就越少。因此,即使是简单的二维矢量变换(相当于将矢量旋转 45 度),卡胡宁-勒夫变换也会压缩图像。
在向量长度较大的一般情况下(如上所述,图像处理中使用的一般假设是二维卡胡宁-洛埃夫变换是可分离的,并可在水平和垂直方向上连续进行),将其变换为坐标不相关的向量可获得更高的压缩比。此外,向量的坐标对量化的影响更大。也就是说,如果我们对卡尔胡宁-洛埃夫分解的系数进行量化,然后去量化并进行反向变换,在所有可能的线性变换中,量化步骤引入的误差将是最小的(均方根意义上)。舍弃一定数量的最终系数(即向量的最终坐标)也会使均方根误差最小。因此,卡胡宁-洛埃夫变换能以最紧凑的方式将向量放置在第一坐标上,从而获得 向量中包含的最大信息量。当然,所有这些使得卡尔胡宁-洛埃夫变换几乎成为数字数据压缩系统(包括图像压缩系统)的理想选择。
卡胡宁-勒夫变换有一个明显的缺点。这种变换的内核是由所处理数据的统计性质定义的,需要对每组向量求解上述方程. 这些方程的解析解仅适用于某些特殊情况。数值解法虽然可行,但计算量非常大,因此在视频图像处理中使用卡胡宁-洛埃夫变换实际上是不切实际的。
随机过程的一个特例是 I 型马尔可夫过程,已知卡尔胡宁-洛埃夫变换核方程的解析解。当这些过程的值呈正态(高斯)分布时,其相关函数呈指数形式。对于离散的一维随机过程,相关函数的形式为
其中ρ在论文《卡尔胡宁洛韦变换和余弦变换之间的关系》(RJ.Clarke,B.Tech.,M.Sc,C.Eng.,Mem.I.E.E.E、 M.I.E.E.IEEPROC,Vol.128,Pt.F,No.6,November 1981),对于 ρ,马尔可夫过程的解与第二类离散余弦傅里叶变换或 DCT-II 相吻合(众所周知,这种变换总共有八种类型)。另一方面,对数字图像统计特性的大量研究表明,图像的水平和垂直相关函数是指数形式的。ρ的值都接近 1(从 0.95 到 0.98 不等)。这意味着,对于大多数图像来说,DCT-II 是卡尔霍恩-洛埃夫变换的一个非常好的近似值,而且水平和垂直变换核的形式完全相同:
使用 DCT 的原因显而易见:对于大多数图像,包括通过相互预测获得的图像,即对于残留信号,这种变换是卡尔胡宁-洛埃夫变换的良好近似值。但正弦变换从何而来?
在 HEVC 标准制定之初,来自新加坡的一个研究小组(文件:JCTVC-B024)就发现,通过内部预测获得的残差信号的相关特性与常规图像和通过内部预测获得的残差信号的相关特性有很大不同。这一点很容易理解:事实上,与用于内部预测的参考样本最接近的残留信号样本的方差显然最小。残留信号样本离参考样本越远,方差就越大。新加坡的研究人员提出了水平和垂直内部预测残留信号相关函数的分析表达式。他们还表明,在这些情况下,卡胡宁-洛埃夫变换的核函数为
与离散正弦傅里叶变换的核重合。