HEVC的量化和变换

发布时间 2023-10-11 10:46:36作者: 师映川

HEVC的变换和量化大体上和H.264/AVC相似,但增加了多处改进,提高了本部分的编码效率。在变换方面的改进主要体现在三方面,一是变换块(TB)的尺寸可变范围扩大,二是整数DCT的精度提高,三是引进了4X4 的离散正弦变换。

一. 离散余弦变换与正弦变换

1. 2维DCT矩阵

2. 2维DST矩阵

3. 量化与量化失真

在视频图像压缩中,在变换后面还有两个压缩数据量的关键步骤,一个是量化,另一个是熵编码。它们都是对被处理数据的另一种表示方式。

  • 量化把原数据分为不同的区间,每个区间的多个数值只用一个标号来代表,显然标号的个数要远小于数据的个数,数据量得到压缩。由于标号和数据之间失去了一一对应的关系,因而量化是一种有损信息压缩方式。
  • 熵编码按照数据的不同结构,用新的更紧凑的方式来标记,由于标记和原数据之间是一一对应的,因而熵编码是一种无损信息压缩方式。这里主要讨论量化操作。

在图像数据的量化操作中,由于丢弃(忽略)了相当一部分对人眼视觉贡献不大的数据而达到压缩的要求,它是不可逆操作,不可能通过反量化来获得量化前的数据,因而会损失一部分信息。常见量化的方法可以分为两类,一类是标量量化(Scalable Quantization,SQ),另一类是矢量量化(Vector Quantization,VQ)。

  • 标量量化是将图像中样点的取值范围划分成若干区间,每个区间仅用一个数值(标量)“代表”其中所有可能的取值。每个样点的量化取值是一个标量并且独立于其他样点的取值。
  • 矢量量化是将图像的每n个像素看成一个 n 维矢量,将每个n维取值空间划分为若干个子空间,每个子空间用一个 n 维“代表”矢量来表示该子空间所有的矢量取值。由于矢量量化利用了多个像素之间的关联,一般说来,其压缩率要高于标量量化,代价是计算复杂度要高于标量量化。

目前广泛使用的视频编码标准中,量化环节都是采用标量量化。

4. h.264的变换与量化

 

 

 

量化时对实际DCT输出W进行处理。量化步长对于量化系数。

5. HEVC残差的整数变换

和 H264/AVC 类似,HEVC 采用了对预测残差进行近似的整数离散余弦变换(DCT)但为适应较大的编码单元而进行了改进,在一个编码单元(CU)内进行变换运算时,共有4种大小的对称DCT变换尺寸:32X32、16X16、8X8和44。每一种大小的DCT变换都有一个相对应的同样大小的整数变换系数矩阵。大块的变换能够提供更好的能量集中效果,并能在量化后保存更多的图像细节,但是却带来更多的振铃效应。因此,根据当前块像素数据的特性,自适应的选择变换块大小可以得到更好的效果。
HEVC的变换运算的顺序和H264/AVC 不同变换时首先进行列运算,然后再进行行运算HEVC的整数变换的基矢量具有相同的能量,不需要对它们进行调整或补偿,而且对 DCT的近似性要比H264/AVC好。

 

在帧内预测时,当前块的预测参考为紧邻该块左边和上边的已编码块的数据。像素间的相关性是随距离增大而减小的,因此预测块越是左边和上边的像素的预测越是准确,预测误差越小。也就是沿着编码块水平方向向右,预测误差逐渐增大:沿着垂直方向向下,预测误差也逐渐增大。这样的预测误差数据的分布和 DCT 的余弦基函数并不符合,因为余弦函数的特点是起始值最大,而后逐渐减小。而这一数据分布特点正好和离散正弦变换(DST)的正弦基函数比较一致,在起始处最小,然后逐渐增大。根据变换编码的特点,变换基函数和信号的相似程度越高,其乐缩率越大,因此HEVC 对内预测4X4亮度残差TB 的所有的模式都采用可分离整数近似离散正弦变换(DST),以利于图像压缩率的提高。