VVC/VTM:变换量化——Quantization

Dependent Scalar Quantization

HEVC中,根据8bit信号的取值范围,量化参数QP取值为0~51,为了向解码端传输量化参数,编码器会首先在PPS中传输一个起始的QP,然后再在条和CU层传送增量QP值。而在VTM中,QP取值范围扩展到0 ~ 63(相应的,init_qp_minus26的取值范围变为-(26+QpBdOffsetY ) 到37),且相应的起始QP改为在slice层传输。

VTM中使用了与HEVC相同的标量量化(scalar quantization),但是对其进行了改进得到了一个新的概念——依赖性的标量量化(dependent scalar quantization,下文简称DQ)。在DQ中,重建过程中当前变换系数块的重建值(即反量化得到的值)取决于前一个变换系数块(反量化得到的值)的level(这里的前一个根据重建顺序决定)。与HEVC中传统的标量量化相比较,这个方法可以使得量化得到的用于变换的系数块在N维向量空间更紧密(N代表变换块中的变换系数的个数)。意味着对于固定大小的变换块,该方法减小了输入向量(量化前的块)和重建向量(反量化得到的块)之间误差,即减少了量化带来的失真。

为了达到上述目的,DQ主要做出了两点改进:1)定义了两种不同的标量量化器Q0和Q1,即对应了两种不同的重建像素;2)定义了两种不同的标量量化器之间的转换规则。

VVC/VTM:变换量化——Quantization_第1张图片如下图所示,标量量化器的转换规则如下所示,K表示前一个变换系数的level,根据当前所在state和level计算得到下一个state。初始state设置为0.
VVC/VTM:变换量化——Quantization_第2张图片代码中的标量量化器转换过程如下代码所示

      state = ( 32040 >> ((state<<2)+((level&1)<<1)) ) & 3;   // the 16-bit value "32040" represent the state transition table

你可能感兴趣的:(VVC,(H266))