H.266/VVC技术描述_5-量化-QP控制, DQ, 量化矩阵

1、量化参数控制

  VVC中最大量化参数为63,当slice_qp_delta不为0,SliceQpY的初始值被调整到slice segment层(HEVC中QP初始值在pps中)。当变换块的尺寸不是4的指数时,会对QP作出调整来补偿变换中的隐性缩放。使用skip模式的块QP最小值设为4,因此QP=4时量化步长为1。
  HECV中使用固定的表来根据亮度的QP得到色度QP,VVC在SPS中发送了一个分段线性模型,规定线性模型斜率非负(保证亮度QP增加时色度QP不会减小)。分段线性模型的输入范围是[−QpBdOffset Y , 63],输出范围是[−QpBdOffset C , 63]。
  CU级亮度QP使用预测QP加上DeltaQP得到,亮度和色度的DeltaQP可被分别编码。对于色度,可以使用的QPoffset表在pps中被编码,CU中传输offset的索引。

2、Dependent quantization

  除了普通量化和率失真量化之外,VVC加入了dependent quantization (DQ)。首先定义两个量化器Q0和Q1,使用哪个量化器取决于当前的state。state共有4种,state0和state1使用Q0,state2和state3使用Q1,下一个state取决于当前state和重建系数level。下图中k指level。H.266/VVC技术描述_5-量化-QP控制, DQ, 量化矩阵
H.266/VVC技术描述_5-量化-QP控制, DQ, 量化矩阵

3、量化矩阵

  与HEVC相同,VVC也支持默认量化矩阵和用户自定义量化矩阵。使用量化矩阵的目的是对不同位置的系数使用不同的量化步长,比如人眼对高频分量不敏感,就可以对高频系数使用更大的量化步长。
默认量化矩阵是平坦的,所有位置的值都是16。IBC和帧内模式使用相同的量化矩阵,因此用户自定义矩阵的个数为,

MatrixType: 30 = 2 (2 for intra&IBC/inter) × 3 (Y/Cb/Cr components) × 5 (square TB size: from 4×4 to 64×64 for luma, from 2×2 to 32×32 for chroma)
MatrixType_DC: 14 = 2 (2 for intra&IBC/inter × 1 for Y component) × 3 (TB size: 16×16, 32×32, 64×64) + 4 (2 for intra&IBC/inter × 2 for Cb/Cr components) × 2 (TB size: 16×16, 32×32)
  
  用户自定义量化矩阵需要编码并传输到解码端,HEVC中使用差分编码。VVC中,对于16x16、32x32、64x64的量化矩阵,DC值被单独编码。对于大于8x8的矩阵,只编码8x8=64个元素,然后上采样得到相应大小量化矩阵。对于高频调零的情况,量化矩阵的相应位置也被,例如对于64x64的块,由于高频调零,不再编码8x8=64个元素,而是编码3x4x4=48个元素。