量化:
是将信号的连续取值(或大量可能的离散取值)映射为有限多个离散幅值的过程,实现信号取值多对一的映射。在视频编码中,残差信号经过变换之后,变换系数往往具有较大的动态范围。因此,对变换系数进行量化可以有效的减少信号取值空间,进而获得更好的压缩效果。
量化是失真的根本原因:
由于一对多映射机制,量化过程不可避免地会引入失真,这也是视频编码中产生失真的根本原因。
标量量化器(Scalar Quantizer,SQ):
非常基本的量化方法,它是将一个幅度连续的信号映射成若干个离散的符号。
均匀标量量化器:
是一种非常简单的标量量化器,将输入值域划分成等距的区间,每个区间对应的输出值(重建值)为该区间的中点。区间的长度称为量化步长(Quantization Step)。
Lloyd-Max 量化器:
最优标量量化器。
熵编码量化器:
最优量化器应在对熵的约束下使失真最小。
矢量量化器(Vector Quantizer,VQ):
矢量量化的输入为矢量,是多对一的量化,即两个或两个以上的幅度对应一个量化结果。矢量量化可以看作是标量量化的延伸。其基本思想就是若干个标量数据组构成一个矢量,然后在矢量空间进行整体量化,用码书中与输入矢量最匹配的码字索引代替输入矢量进行传输域存储。
网格编码量化(Trellis Coded Quantization,TCQ):
很好的结合了标量量化和矢量量化的优点,复杂度低并且具有优良的性能。
反量化的公式:
cl = li.Qstep
量化参数(Quantization Parameter,QP):
实际应用中,不会直接编码量化步长,而是用一个整数值即量化参数来表示所选的量化步长。在H266中量化参数QP的取值范围为 -6.(bitdepth - 8) ~ 63
。
QP 与 Qstep 关系: QP 每增加1,Qstep大约增大12.25%;QP每增加6,Qstep大约增大1倍。
率失真优化量化(Rate-Distiortion Optimized Quantization,RDOQ):
思想是将量化过程同率失真优化RDO准则相结合。对于一个变换系数,给出多个可选的量化值,利用RDO准则从中选择一个最优的量化值。
依赖量化(Dependent Quantization,DQ):
其利用了变换系数间的相关性,当前变换系数的量化值依赖前一个变换系数的量化值,使得变换系数经量化后在N维向量空间更紧密。这意味着对于固定大小的变换块,该方法减小了输入向量(量化前的块)和重建向量(反量化得到的块)之间的误差,即减小了量化带来的失真。
QG(Quantization Group,QG):
H266沿用H265的QG概念,QG为CTB内的一块矩形区域,为一个划分子树包含的CU,同一个QG内的所有CU共享一个QP,不同的QG可以使用不同的QP。
量化矩阵:
H266的变换量化过程如下图。量化矩阵作用于比例缩放,其大小与TU相同。在比例缩放过程中,变换后的DCT(或DST)系数将与量化矩阵对应位置的系数相除,所得到的结果作为量化模块的输入。
H266规定了2x2、4x4和8x8共三种大小的默认量化矩阵
,并规定16x16、32x32、64x64的量化矩阵可由8x8量化矩阵通过上采样得到。
此外还有自定义量化矩阵
,根据不同的应用场合自行觉醒量化矩阵各元素的值。自定义量化矩阵由APS参数集承载。
JVET输出文档:
https://www.itu.int/wftp3/av-arch/jvet-site/
书籍:
新一代通用视频编码H266/VVC:原理、标准与实现[万帅 霍俊彦 马彦卓 杨付正/著]
本系列博客主要是对《新一代通用视频编码H266/VVC:原理、标准与实现》
的学习笔记。