1.3.2 编码框架及编码工具
从根本上讲,H.266/VVC视频编码标准的编码框架并没有革命性的改变。在标准制定过程中,JVET曾经积极探索各类神经网络编码工具,但均因复杂度等因素未纳入标准第一版。因此,目前的H.266/VVC标准类似于以往的国际视频编码标准,仍采用混合编码框架,如图1.4所示,包括变换、量化、熵编码、帧内预测、帧间预测及环路滤波等模块[29]。为了编码框架的简洁,H.266/VVC标准的少量编码技术没有在图1.4中体现,如亮度映射与色度缩放滤波、自适应色度变换、块差分脉冲编码调制等。
1.编码单元
H.266/VVC仍采用基于编码树单元(Coding Tree Unit, CTU)和编码树块(Coding Tree Block, CTB)的编码单元划分结构。待编码图像被分割成大小相等的方形CTU,1个CTU由1个亮度CTB、2个色度CTB组成。视频编码以CTU为单位,按顺序遍历所有CTU。
图1.4 H.266/VVC视频编码标准的编码框架
为更灵活、更有效地表示视频内容,H.266/VVC利用四叉树、二叉树、三叉树将CTU递归划分成不同尺寸的编码单元(Coding Unit, CU)。CU是视频编码的基本单位,大多编码工具以CU为单位进行编码。这种特性有助于编码器根据视频内容特性、视频应用和终端的特性来自适应地选择编码模式。
2.帧内预测
帧内预测模块主要用于去除图像的空间相关性。通过编码后的重建信息来预测当前像素块以去除空间冗余信息,提高图像的压缩效率。与以往的标准相比,H.266/VVC引入了多参考行帧内预测、模式依赖的帧内平滑、更多角度模式、宽角度帧内预测、基于矩阵的帧内预测、分量间线性预测、位置相关的帧内预测组合等新技术。
3.帧间预测
帧间预测模块主要用于去除视频的时间相关性。帧间预测通过将已编码图像作为当前帧的参考图像,获取编码块的预测值,去除时间冗余,提高压缩效率。H.266/VVC引入了带有运动矢量差的Merge、几何划分帧间预测、联合帧内帧间预测、对称运动矢量差分编码、自适应运动矢量精度、仿射运动补偿预测、基于子块的时域MV预测、双向光流、解码端运动矢量细化等新技术。
4.变换
变换模块是指将以空间域像素形式描述的图像转换至变换域,以变换系数的形式表示。在较平坦和内容变化缓慢的区域,变换可使图像能量集中至低频区域,达到去除空间冗余的目的。H.266/VVC引入了多核变换、高频调零、子块变换、二次变换等新技术。
5.量化
量化模块将变换系数(不进行变换时为残差)进行多对一的映射,减小变换系数的动态范围,可以有效地减小信号取值空间,进而获得更好的压缩效果。由于多对一的映射机制,量化过程不可避免地会引入失真,这也是视频编码中产生失真的根本原因。H.266/VVC引入了依赖标量量化新技术。
6.环路滤波
H.266/VVC中的环路滤波模块包括去方块滤波、像素自适应补偿、自适应环路滤波、亮度映射与色度缩放等技术。去方块滤波用于降低方块效应;像素自适应补偿用于改善振铃效应;自适应环路滤波可以减小解码误差;亮度映射与色度缩放通过对动态范围内信息重新分配码字提高压缩效率。去方块滤波、像素自适应补偿、自适应环路滤波3个模块都处在编码环路中,对重建图像进行处理,并作为后续编码像素的参考使用。亮度映射与色度缩放模块较为复杂,详见第9章。
7.熵编码
熵编码模块将编码控制数据、量化变换系数、帧内预测数据、帧间预测数据等信息编码为二进制流进行存储或传输。熵编码模块的输出数据即原始视频编码后的码流。H.266/VVC中采用先进的基于上下文的自适应二进制算术编码进行熵编码,引入了并行处理架构,在速度、压缩效率和内存占用等方面均得到了大幅改善。