H.266/VVC 中一种改进的仿射运动估计算法
2022-03-12王佳波
王佳波,杨 静
(上海海事大学 信息与工程学院,上海 201306)
0 概述
2020 年7 月1 日,国际电信联盟视频编码专家组(ITU-T VCEG)和国际标准化组织活动图像编码专家组(ISO/IEC MPEG)联合制定了新一代视频编码标准H.266/VVC。直到标准测试模型VTM-10.0 后,通用视频编码(Versatile Video Coding,VVC)性能基本稳定,在相同的峰值信噪比条件下相比HEVC 的高清视频和超高清视频,VCC 标准平均码率节省了约40%[1]。
在帧间预测过程中,H.265/HEVC 采用平移运动模型对物体的运动进行描述,即用一个运动矢量表示物体的运动,但该模型不能准确地描述物体的复杂运动,例如旋转、缩放和裁剪等[2-3]。在H.266/VVC 的帧间预测过程中采用了仿射运动模型,它可以更精确地表示物体复杂运动的类型[4]。以往的相关研究尝试将仿射运动模型嵌入到运动补偿帧中,但是该方法在VVC 之前一直未被采纳,其原因是所提的仿射运动估计方法增加了视频编码过程的复杂度,而且在大多数应用场景中该复杂度是不能忽略的[5-6]。
文献[7]基于H.266/VVC 提出2 种降低仿射运动估计复杂度的方法,通过检查当前块父块的最佳帧间预测模式是否为Skip 模式,如果是Skip 模式,则当前块直接跳过整个仿射运动估计过程;对当前块的传统运动估计的最佳预测方向进行检查,基于检查结果决策是否缩减仿射运动估计参考帧序列的大小。文献[8]基于H.266/VVC 的JEM 测试模型提出一种仿射运动估计架构,该架构使得编码器自适应地选择四参数或者六参数仿射模型。文献[9]基于HEVC 提出一种迭代搜索最优仿射运动矢量的仿射运动估计算法和一种仿射高级矢量预测(AAMVP)候选列表的构建方法,其中迭代搜索最优仿射运动矢量的仿射运动估计算法在VVC 标准中已经被采纳。
相比H.265/HEVC,H.266/VVC 视频编码标准的适应场景更广泛,H.265/HEVC 中的仿射运动估计算法难以满足H.266/VVC 对编码复杂度的要求,因此,本文提出一种改进的仿射运动估计算法。通过优化VVC 中AAMVP 候选列表的构建方法,使得选择出的候选运动矢量更精确,同时对VVC 中迭代搜索最优仿射运动矢量的方法进行优化,缩短迭代搜索所需的时间。
1 VVC 中的仿射运动估计
在H.266/VVC 的帧间预测中采用与H.265/HEVC平移运动估计相类似的方式来实现仿射运动估计。H.266/VVC 中编码器首先通过AAMVP 技术为当前编码块构建一个仿射运动估计起始运动矢量组合的候选列表;然后在该列表中选择一个最优的候选运动矢量组合,编码器将该组合作为仿射运动估计的起始点,通过迭代搜索确定当前编码块真实的运动矢量组合[10-13]。
1.1 仿射运动模型
在H.266/VVC 的仿射运动估计中,有2 种仿射运动模型,分别为四参数仿射运动模型和六参数仿射运动模型。四参数仿射运动模型使用2 个控制点的运动矢量组合来描述当前编码块的运动类型,如图1 所示。六参数仿射运动模型用3 个控制点的运动矢量来描述当前编码块的运动类型,相比于四参数仿射模型能更精确地表示仿射运动。
图1 四参数仿射运动模型Fig.1 4-parameter affine motion model
当前图像中的编码块具有2 个控制点,这2 个控制点的运动矢量为mmv(0)和mmv(1),则当前编码块中任意点(x,y)的运动矢量如式(1)所示:
其中:ω为当前编码块的宽度;分别为控制点0 和控制点1 运动矢量的水平和垂直分量。式(1)也可以改写成矩阵形式,如式(2)~式(4)所示:
六参数仿射运动模型当前编码块的运动矢量的推导方式与四参数仿射运动模型的推导方式相类似。
1.2 AAMVP 技术
AAMVP 技术在H.266/VVC 中被用于构建仿射迭代搜索过程中起始向量组合候选列表,同时编码器会选择一个最优的候选向量组合作为迭代搜索的起始位置[14-16]。
在H.266/VVC 中AAMVP 候选列表的长度被限定为2。首先编码器按照特定的顺序对当前编码块的相邻已编码块是否使用仿射运动估计进行检查,如果相邻已编码块使用了仿射运动估计,则直接复用相邻已编码块的仿射运动信息。如果编码器对上一步所有相邻已编码块检查完成后,AAMVP 候选列表未被填满,则分别检查当前编码块的3 个角落相邻块中第1 个可用的已编码块的平移运动矢量,若3 个角落相邻块至少存在1 个可用的平移运动矢量,则将它们直接构造组成运动矢量组合,并作为AAMVP 的候选项。经过上述步骤,如果候选列表仍未被填满,则编码器直接用当前编码块3 个角落的相邻已编码块,对第1 个可用的已编码块的平移运动矢量进行重复扩充为运动矢量组合,作为AAMVP 候选列表的候选项。然后,若AAMVP 候选列表未被填满,编码器检查当前编码块的相邻编码块的时域候选是否存在,若存在,直接作为AAMVP列表的候选项。最后,若候选列表仍未被填满,编码器直接使用零向量对AAMVP 候选列表进行填充。图2 所示为AAMVP 候选列表中候选来自于当前编码块的相邻已编码块的位置信息[17-19]。
图2 仿射AAMVP 候选列表的构建Fig.2 Construction of affine AAMVP candidate list
1.3 迭代搜索仿射运动矢量
在H.266/VVC 中,编码器从AAMVP 候选列表中选出一个最优的候选项,将该最优候选项作为起始点,通过迭代搜索得到当前编码块真实的仿射运动矢量。
在迭代搜索过程中,编码器采用最小均方误差作为匹配准则,如式(5)所示:
其中:ω和h分别为当前编码块的宽度和高度;为当前编码块所在的图像;为当前编码块的参考图像。
定义第i次迭代过程的运动矢量变化为,则第i次迭代时的运动矢量如式(6)所示:
其中:(x,y)为当前编码块的位置;为一个行矩阵。的转置矩阵如式(7)所示:
经过i次迭代后,参考点的像素值如式(8)所示:
其中:(xi-1,yi-1)为上一次迭代搜索时匹配块的位置。
对式(8)进行泰勒展开,并忽略高阶项得到式(9):
在H.266/VVC 的测试模型VTM10.0 中,采用Sobel 算子对像素矩阵进行卷积,求解的相对梯度,如式(10)所示:
2 本文算法
2.1 AAMVP 优化
文献[9]基于H.265/HEVC 提出一种利用相邻已编码块的平移运动信息构造仿射AAMVP 候选方法。图2 中编码器首先检查当前编码块的3 个角落中所有相邻块的平移运动信息可用性,并不是像H.266/VVC 中在获得第一个可用相邻已编码块的平移信息后就立即终止与同一个角落其他相邻已编码块可用性的检查。编码器在得到3 个角落的所有相邻已编码块的可用平移运动信息之后,分别将3 个角落所有相邻块的可用平移运动矢量组合成向量组,同时利用准则选择DMV 最小和次小的向量进行组合,并作为AAMVP 候选列表的两个候选项。DMV 具体表达如式(11)所示:
相比于H.266/VVC的AAMVP候选列表构建过程,优化的AAMVP 是直接使用3 个角落的相邻已编码块中第一个可用平移运动矢量,以构成AAMVP 列表候选项,文献[9]基于DMV 准则,利用所有相邻已编码块的平移运动矢量构造的AAMVP列表候选项更加精确,因此本文考虑把文献[9]的DMV 准则引入到H.266/VVC 中AAMPV 候选列表的构建过程。对于仿射变换块,在小程度变形的情况下,当前块的宽度在水平方向的变化程度接近高度在垂直方向的变化程度,而高度在水平方向上的变化程度接近宽度在垂直方向的变化程度,因此,本文对DMV 准则进行改进,提出本文算法中的准则,如式(12)所示:
本文将DMV′准则引入到H.266/VVC 的AAMVP 候选列表构建过程中,得到更加精确的AAMVP 列表候选项,使得列表的候选项更接近编码块真实的仿射运动矢量,从而减少后续编码器根据AAMVP 列表最优候选项迭代搜索真实仿射运动矢量时所需的迭代次数,达到缩短编码时间的目的。具体算法主要有以下5 个步骤。
步骤1检查当前编码块左上角相邻块A->C 的平移运动矢量的可用性,并将可用的平移运动矢量添加到数组amvpInfo0 中,利用变量ret0 完成检查,确定amvpInfo0 是否为空。
步骤2检查当前编码块右上角相邻块D->E 的平移运动矢量的可用性,并将可用的平移运动矢量添加到数组amvpInfo1 中,利用变量ret1 完成检查,确定amvpInfo1 是否为空。
步骤3检查当前编码块左下角相邻块F->G 的平移运动矢量的可用性,并将可用的平移运动矢量添加到数组amvpInfo2 中,利用变量ret2 完成检查,确定amvpInf2 是否为空。
步骤4若根据ret0、ret1、ret2 的检查结果判断3 个数组amvpInfo0、amvpInfo1、amvpInfo2 中任意一个为空,则结束仿射AAMVP 候选的构造过程,否则利用循环遍历计算所有运动矢量组合的DMV′值。
步骤5将最小DMV′值对应的运动矢量组合添加到AAMVP 候选列表中。
AAMVP 算法的流程如图3 所示。
图3 AAMVP 优化流程Fig.3 Optimization procedure of AAMVP
2.2 迭代搜索优化
编码器在H.266/VVC 的仿射运动估计中进行迭代搜索,以寻找当前迭代位置周围像素梯度的最小失真方向,并更新最小失真对应的运动矢量,更新的运动矢量作为下一次迭代的初始运动矢量。当前运动矢量对应的率失真在每一次迭代时都会被更新,其反映了运动矢量汇聚到最优运动矢量的速度。为避免在迭代搜索过程中像素梯度极值处收敛太慢,本文所提的算法考虑在计算当前迭代位置的像素梯度时,增加一个动量参数以解决这个问题。当本次迭代的像素梯度在x或y方向上与上一次迭代的像素梯度方向相同时,动量参数能够加速迭代搜索过程,从而减少迭代搜索过程消耗的时间。相反,当本次迭代的梯度在x或y方向上与上一次迭代的梯度方向差异较大时,动量参数能够减缓梯度的变化趋势,使得搜索过程更精确。该算法如式(13)所示:
考虑到包含复杂的仿射运动的视频序列,梯度下降过快会导致迭代搜索过程中梯度不平滑,最终得到的最优仿射运动矢量不够精确,从而造成重建后的视频序列质量损失较大。因此,选择六参数仿射运动的编码块的梯度下降速度相较于四参数仿射运动模型慢。对于快速仿射运动类型的编码块,在进行迭代搜索最优仿射运动矢量时能够达到相对减缓其梯度下降的目的,使搜索得到的最优仿射运动矢量更接近真实的仿射运动矢量,从而减少重建后视频序列的质量损失。当前编码块使用六参数仿射运动模型且为双向预测时,动量参数设置为0.1,其为单向预测时,动量参数设置为0.7;当前编码块使用四参数仿射运动模型且为双向预测时,动量参数设置为0.3,其为单向预测时动量参数设置为0.9;当前编码块不使用仿射运动估计时,动量参数设置为0。
3 实验仿真
3.1 仿真环境设置
本文的算法仿真实验以H.266/VVC 原始参考模型VTM-10.0 为平台,配置文件为encoder_lowdelay_vtm.cfg,量化参数为22、27、32 和37,测试序列为官方推荐视频序列,测试范围为A~F 类。实验平台的硬件配置为Inter®CoreTMi5-6500 CPU,主频为3.20 GHz,内存为8 GB,集成开发环境为VS 2015。实验编码性能使用BD-BR 和ΔT来评估算法性能。其中BD-BR 为比特比变化率,表示在图像质量PSNR 一致的情况下码率的平均变化情况,若数值为负数,表示能够减少码率;相反,表示增加了码率[20-21]。ΔT为编码时间减少的百分比,若为负数,表示相比VVC 原始算法,序列的整体编码时间有所降低;相反,序列的整体编码时间得到提高。ΔT如式(14)所示:
3.2 仿真结果
由于文献[9]所提的算法是针对H.265/HEVC,仿真平台是H.265/HEVC 的测试模型HM-16.7,而本文所提的算法是针对H.266/VVC 中仿射运动估计的改进,对于本文,文献[9]的仿真结果不具有参考意义。因此,本文首先对文献[9]所提算法在H.266/VVC 的测试模型VTM-10.0平台上进行仿真,以该部分的仿真结果作为本文所提算法的对比;然后分别对本文所提算法的AAMVP改进和迭代搜索优化进行仿真实验;最后对本文所提算法的整体改进性能进行仿真,结果如表1所示。
文献[9]所提的算法经过改进后被H.266/VVC标准采纳,因此表1 中文献[9]所提的算法在相较于VVC 标准算法的BD-BR 增加了0.001%条件下,对于测试序列的整体编码时间平均提高了1.51%。本文在对文献[9]所提的算法做了适应于H.266/VVC的改进之后,仿真结果表明,本文算法在AAMVP 改进部分中参考H.266/VVC 标准算法,其在相较于VCC 标准算法BD-BR 提高0.001%的条件下,对于测试序列的整体编码时间平均降低了2.62%,迭代搜索改进部分参考H.266/VVC 标准算法,在相较于VCC标准算法BD-BR 增加0.014%的条件下,对于序列的整体编码时间平均降低了11.2%,最后本文所提算法的整体性能参考H266/VVC 标准算法,在BD-BR 提高0.023%的条件下,对于序列的整体编码时间平均降低了13%。相比文献[9]所提的算法,本文算法在BD-BR 提高0.022%的条件下,对于序列的整体编码时间平均降低了14.51%。
表1 本文算法与改进算法的仿真结果Table 1 Simulation results of the proposed algorithm and improved algorithms %
在F 类序列中所有测试序列的BD-BR 值都为负数,表示在F 类的所有序列中既节省了码率,同时减少了编码时间,本文所提改进的仿射运动估计算法使得仿射编码块运动估计得到的运动信息更精确,从而提高率失真性能。然而在C 类和E 类视频序列中,本文所提的算法具有较优的编码性能,相比VTM 原始算法,其在BD-BR 增加0.016%条件下,整体编码时间缩短了15.7%。其主要原因为相比于其他测试序列,C 类和E 类测试序列包含大量的仿射运动,而本文所提的算法是对进行仿射运动的编码过程进行改进。
将本文所提的算法与文献[7]所提的H.266/VVC中快速仿射运动估计算法进行对比,实验结果如表2所示。从表2 可以看出,本文算法相较于文献[7]减少BD-BR 的条件下,整体编码时间的下降幅度大于文献[7]所提的快速仿射运动估计算法,因此,本文算法具有更优的编码质量和更高的编码效率。将本文的算法与文献[21]的快速编码算法相比,文献[21]算法虽然降低了编码的计算复杂度,但是编码后重建的视频质量损失较大。本文算法能够平衡编码后重建视频的质量和编码效率。
表2 不同算法的BD-BR 和ΔT 对比Table 2 BD-BR and ΔT comparison among different algorithms %
4 结束语
本文基于H.266/VVC 中帧间仿射运动估计的分析和研究,提出一种改进的仿射运动估计算法,对仿射运动估计中AAMVP 候选列表的构建过程进行优化,以得到更精确的编码块仿射候选运动信息,同时对仿射运动估计中的迭代搜索真实仿射运动矢量进行改进,加快迭代搜索的过程。实验结果表明,本文算法在BD-BR 损失较少的条件下,能够有效降低编码的计算复杂度。后续将在本文工作基础上对其他帧间预测工具进行优化,进一步降低编码的计算复杂度。