H.266/VVC标准之仿射运动模型
导言
2020年7月,联合视频专家工作组(JVET)第19次会议胜利闭幕,宣告新一代视频编码标准“多功能视频编码 (H.266/VVC,后续简称VVC)”的正式诞生。这距离上一代视频编码标准“高性能视频编码 (H.265/HEVC)”的问世刚刚过去七年。实际上,近年来随着短视频、在线会议等移动视频应用的爆发式普及,全球的视频信息需求快速增长,业界普遍感受到带宽与存储的巨大压力,极度渴望高性能的视频压缩算法。尽管2013年推出的HEVC相对于上一代标准“先进视频编码 (H.264/AVC)”显著提高了压缩性能,但仍无法满足业界日益高涨的需求。针对这种情况,国际标准化组织ITU-T Video Coding Experts Group (VCEG) 与ISO/IEC Moving Picture Experts Group (MPEG) 在2015年联合成立了JVET,提出了全面超越HEVC的战略目标。经过近3年的技术积累与酝酿,VVC标准的制定工作于2018年4月正式启动。历经2年多的艰苦奋战,JVET的专家们终于在第19次会议上完成了VVC的标准制定。经过权威评测,编码同质量的视频节目,使用VVC相比使用HEVC能节省大约一半的带宽。
VVC使用了大量的新技术,如多叉树块划分技术、历史运动矢量预测技术、亮度色度线性模型预测技术等。本文将重点介绍VVC中的仿射运动模型技术。众所周知,标准的文档、参考代码等均为公开资料,相关的学术文献也如汗牛充栋。为了给读者提供更有价值的信息,本文更侧重于相关方法的背景、原理等介绍,不求面面俱到,不拘泥于技术细节,以期读者在短时间内得窥全豹之一斑。
在视频编码的早期研究当中,人们已经发现平动运动模型并不能有效表示转动、缩放等复杂运动。进一步研究发现,仿射(Affine)运动模型能够较好地描述这些复杂运动。从上世纪八十年代开始,学者们研究了整体仿射变换、局部仿射变换等方法,试图在视频编码过程中引入仿射运动模型以提高帧间预测的编码效率。尽管学术界对视频编码中仿射运动模型的研究在近三十年的时间里始终热情不减,但令人遗憾的是,在很长一段时间内仿射运动模型都没能走进代表产业界最新水平的视频编码标准,相关方法始终写在纸面上而不能刻入芯片中。究其原因,大致受困于以下两点。一是仿射运动模型的相关算法复杂度都极高,无论在编码端还是解码端,都超出了同时代实际产品可负担的处理能力。二是相关的研究较为学术化,其设计并没有考虑到算法如何完美地嵌入到现代视频编码标准框架中。现代视频编码标准的整体设计大部分都是基于块划分的混合视频编码框架。如果仿射运动模型无法顺畅地融入这一框架中,也难以被标准采纳。
幸运的是在HEVC诞生之后,一系列源于中国学者的创造性研究逐渐破解了上述两大难题,为仿射运动模型走进工业化标准铺平了道路。首先打破僵局的是Huang 等人[1],他首次提出使用3组角点运动矢量来表示一组6参数的仿射模型并作为merge模式的特别候选的方法。这种方法创造性地利用混合编码框架中存储的运动矢量来表示仿射模型,打开了仿射模型融入混合视频编码框架的大门。Li等人 [2]进一步发展了[1]的方法。他将模型参数由6个简化为4个。更重要的是,他将[1]的方法从Merge模式推广到了普通Inter模式。为了简化编码器,他引入了基于梯度方法的快速运动估计方法以估计仿射模型。为了简化解码器,他将仿射运动模型的运动补偿精度由像素级放大到4×4子块级。 [2]的方法具有里程碑意义,标志着仿射运动模型基本完全克服了上述两大障碍,距离标准化只有一步之遥了。VVC启动之后,Zhang等人[3]进一步改进提高了仿射运动模型的编码效率,提出了4参数/6参数仿射模型自适应切换、角点运动矢量再预测等方法。VVC最终采纳了经过改进的仿射运动模型。经过近四十年的漫长发展,视频编码中的仿射运动模型技术终于凤凰涅槃、修成正果。回首这一历程,我们可以看到一项技术从酝酿、诞生、改进到最终实现工业应用的过程是多么的曲折与艰辛。
从仿射变换到仿射运动补偿
为了更好地理解仿射运动模型技术,我们首先简单介绍一下仿射变换。仿射变换是几何学中的一种常见可逆变换 [4]。其定义为“如果一个可逆变换前后的共线点组仍为共线点组,则该变换为仿射变换。”从定义可以看出,仿射变换可以保持点的共线性。在几何上可以证明,不共线的点经过仿射变换后仍不共线,平行线经过仿射变换仍为平行线。仿射变换的公式表达为
(x, y) 和 (x’, y’) 分别代表变换前后的点坐标。
公式(1)这种形式的仿射变换称为6参数仿射变换,是仿射变换的一般形式。可以表出平移、镜像、旋转、缩放、错切五类变换以及它们的组合。
在公式(1)上做限制我们得到
公式(2)这种形式的仿射变换称为4参数仿射变换,是仿射变换的特殊形式。可以表出平移、旋转、缩放三类变换以及它们的组合。可以看出,4参数仿射变换的表达能力不及6参数仿射变换。但是,在一般地自然视频信号中,平移、旋转、缩放三类运动特征较为常见,镜像与错切较为少见。因此,4参数仿射变换用于视频编码领域也有其参数较少的优势。在VVC中,这两类仿射变换都可能用到。
当仿射变换用于视频编码中时,即应用所谓的“仿射运动模型”时,我们实际上指的是当前待编码的像素点坐标(x, y)与运动补偿中的参考像素点的坐标(x’, y’)存在仿射变换关系。针对公式(1)与公式(2),我们可以很容易得到
其中mv(x, y) = (mvh(x, y), mvv(x, y))T代表像素点坐标(x, y)的运动矢量。由于参数可以任意给定,在后文中我们将统一用a, d 表示 a’, d’ 而不会引起误会。
在VVC中,对每个编码块我们可以使用一套(单向预测)或者两套(双向预测)仿射模型。在实际中,我们并不会保存或者传输参数a~f,而是采用所谓“角点运动矢量导出”的办法,间接保存或者传递这些参数。如图-1所示,4参数仿射模型可以用左上角的角点运动矢量mv0与右上角的角点运动矢量mv1来表示;6参数仿射模型可以用mv0、mv1再加左下角的角点运动矢量mv2来表示。经过简单公式推导(这里我们省略演算过程),我们可以得到,
针对4参数模型:
针对6参数模型:
其中
在上述公式中,我们假设左上角、右上角和左下角三个角点的坐标分别为(x0, y0)、(x0 + W, y0) 和(x0 + W, y0 + H)。
显然,理论上只要给定了一个编码块两个或三个角点运动矢量信息,我们就可以根据上述4参数模型或6参数模型计算出块内任意位置的运动矢量。但在VVC的实现中,为了节省计算量,我们只针对每个4×4子块的中心点计算一次运动矢量,整个4×4子块中的所有像素将共享这一运动矢量,统一完成运动补偿,如图-2所示。这是一种对仿射模型的近似操作,对编码效率造成了一定损失。但是考虑到运算复杂度和硬件带宽等因素,这一近似是必要的。
VVC中的仿射编码模式
角点运动矢量在VVC的仿射运动补偿算法中起到了核心作用。根据角点运动矢量的来源,VVC的仿射编码模式分为两大类,第一类是仿射Inter模式,第二类是仿射Merge模式。
采用仿射Inter模式时,与普通Inter模式类似,运动矢量差值要经过编码传输。不同的是,普通Inter模式下,每一个预测方向(List 0/1)只需要传输一个运动矢量,而仿射Inter模式下,需要传输两个(4参数仿射模型)或者三个(6参数仿射模型)运动矢量来表示两个或三个角点运动矢量(称为角点运动矢量)。编码器可以根据性能优劣选择采用4参数仿射模型或者6参数仿射模型,之后传输一个标志位来通知解码器选择的结果。解码器据此标志位解码两个或者三个角点运动矢量。采用仿射Inter模式时,VVC支持三种运动矢量的精度,即{1/16, 1/4, 1}像素精度,编码器将选定的运动矢量的精度信息发送给解码器。
同样与普通Inter模式类似,仿射Inter模式下将会产生两组预测角点运动矢量候选。预测角点运动矢量的产生方式主要有两种:继承方式(图-3)与构造方式(图-4)。继承方式利用周边相邻的采用仿射模式编码块(如图-3中的A0所在的编码块)来推导产生当前编码块的角点运动矢量的预测值。回到公式(5)和(6),我们可以看到,实际上公式中并不限制(x, y) 的范围,这个目标点既可以在块内,也可以在块外。当我们把公式(5)或(6)套用到A0所在的编码块时,如果把目标点坐标置为当前块的左上角(即图-2中(x0, y0)),我们就可以得到当前编码块左上角的角点运动矢量预测值。类似地也可以得到其他两个角点的角点运动矢量预测值。继承方式得到的角点运动矢量预测准确度较高,在可能的情况下会被优先采用。构造方式则不需要周边相邻的编码块采用仿射模式,而是直接用角点相邻的4×4子块所保存的运动矢量来预测角点运动矢量。例如,{MVA, MVB, MVC}将被用来产生左上角的预测角点运动矢量;{MVD, MVE} 将被用来产生右上角的预测角点运动矢量;而{MVF, MVG}将被用来产生左下角的预测角点运动矢量。如果继承方式与构造方式产生的预测角点运动矢量候选不足两个,VVC还会利用普通Inter模式的预测运动矢量去填充各个预测角点运动矢量(实际上,这种情况下相当于预测的仿射模型只有平移运动)以补足预测角点运动矢量的候选。需要注意的是,VVC中要求产生的预测角点运动矢量与目标角点运动矢量指向相同的参考帧。
有了预测角点运动矢量之后,我们就可以编码角点运动矢量了。左上角的角点运动矢量与普通运动矢量类似,只需要编码其与左上角的预测角点运动矢量的差值(MVD)即可。对于其他两个角点,VVC中引入了角点运动矢量再预测技术。即:其他两个角点的MVD需要用左上角角点的MVD再预测一次。用公式表示,在编码端,我们有
角点运动矢量再预测技术可以提高角点运动矢量的编码效率。如图-5展示了一个例子。通常我们认为仿射运动可以分解为平移运动和非平移运动。在VVC的仿射模型中,左上角的角点运动矢量mv0代表了平移运动,而mv1 – mv0与mv2 – mv0代表了非平移运动。如果我们分别独立预测平移运动与非平移运动,我们就会得到mvd0 = mv0 – mvp0而mvd‘1 = mv1 – mv0 – (mvp1 – mvp0), mvd‘2 = mv2 – mv0 – (mvp2 – mvp0),稍加整理,我们就可以得到公式(8)。
仿射Merge模式在VVC中是作为一种子块merge模式出现的。VVC中的子块merge模式一共有两大类,一类是子块时域运动矢量预测模式,另一类即仿射Merge模式。VVC中的子块merge模式的候选队列第一位为子块时域运动矢量预测模式候选,余下的都是仿射Merge模式候选。VVC中可以支持多达5个仿射Merge模式候选。与仿射Inter模式类似,仿射Merge模式候选的预测角点运动矢量的产生方式主要也是继承方式(图-3)与构造方式(图-4)两类。与仿射Inter模式不同的是,采用仿射Merge模式不需要再发送参考帧信息与MVD。参考帧信息与运动矢量直接来源于Merge模式候选。采用继承方式与构造方式得到的预测角点运动矢量将直接用作仿射Merge模式候选的角点运动矢量。另外,仿射Merge模式下的构造方式要更为灵活一些,除了左上、右上、左下三个角点的相邻4×4子块所保存的运动矢量可以用来估算角点运动矢量之外,右下角的时域预测运动矢量也可以用来预测右下角的角点运动矢量。经过简单换算,右下角的角点运动矢量可以用来推算左上、右上或者左下的角点运动矢量。
仿射运动模型的进一步简化
尽管[2]中的方法相对于传统的仿射运动模型编码方式已经有了很大简化,但对于实际应用特别是硬件实现而言,仍显得复杂。针对这一问题,VVC中对仿射运动模型的运动补偿方式做了进一步简化,主要包括:
-
针对色域格式4:2:0的情况,色度块的子块划分采取4×4子块而非2×2子块的方式,即一个色度块的子块对应四个亮度块子块。色度块的子块的运动矢量由其对应的左上与右下亮度块子块运动矢量平均得到。这样做可以尽可能减少色度块运动补偿占用的带宽。
-
VVC对普通Inter块的运动补偿采用8抽头亚像素插值滤波器,而对仿射模式的编码块的运动补偿采用6抽头亚像素插值滤波器。这是因为普通Inter块不会出现4×4块的双向预测模式,而仿射模式的编码块会出现4×4块的双向预测模式。就平均计算量而言,块尺寸越小,运算量越大。采用6抽头亚像素插值滤波器可以尽量减少仿射模式的编码块中亚像素插值的加法和乘法次数。
-
在硬件实现中,运动补偿的块尺寸越小,平均意义上的带宽需求就越高。为了减少4×4子块运动补偿带来的高额带宽需求,VVC采纳了边界框(bounding box)方案,如图-6所示。在这一方案中,仿射模式下当前块内部4个成田字形的4×4子块,他们所对应的参考像素点必须落在同一个边界框内。这个边界框所需要的参考像素仅比一个8×8块做运动补偿所需要的参考像素点稍多。这样一来,4个成田字形的4×4子块的运动补偿的参考像素点可以一次取出,所需的的带宽仅比对一个8×8块做运动补偿所需要的带宽稍多。如果不满足上述条件,则当前块退回到普通Inter模式,不做仿射运动补偿操作。
仿射运动模型在VVC中的性能
JVET组织在文献JVET-S0013中对各个编码工具的编码效率做了官方评测。实验平台为VTM-9,测试环境为JVET的官方给出的通用测试环境,包括随机访问(RA)测试,与低延迟B帧(LDB)测试。测试方法为关闭待测试的工具,考察VTM编码器的性能损失,性能损失越大则表明工具的性能越强。表1给出了各个测试序列类别以及总的平均结果。从实验结果可以看出,仿射运动模型在VVC中平均可以提供超过3%的编码性能增益,对编码器的时间复杂度影响在20%-30%之间,对解码器的时间复杂度影响在3%-8%左右。对比JVET-S0013中所列举的其他编码工具,仿射运动模型可以说是VVC中除了灵活块划分结构之外最强有力的编码工具之一。
另外,表2还列出了各个序列的单独测试结果。我们可以看出,仿射运动模型编码工具的性能对序列的内容有很强的依赖性。对于富含非平移运动的序列,如Cactus、Catrobot、BQSquare、Slideshow等,仿射运动模型编码工具可以极大的提高编码效率,最好情况下可以超过10%甚至15%。但对于不含非平移运动的序列如Campfire、BQTerrace等,这一工具的效果并不明显。
表1: 仿射运动模型的平均编码效率
RA | LDB | |||||||||
---|---|---|---|---|---|---|---|---|---|---|
Y | U | V | EncT | DecT | Y | U | V | EncT | DecT | |
Class A1 | 2.16% | 2.08% | 1.81% | 81% | 96% | |||||
Class A2 | 6.13% | 4.27% | 3.91% | 79% | 96% | |||||
Class B | 3.20% | 2.44% | 2.34% | 80% | 97% | 3.74% | 3.02% | 3.44% | 73% | 91% |
Class C | 1.46% | 1.02% | 0.87% | 83% | 98% | 2.19% | 1.62% | 1.45% | 79% | 94% |
Class E | 3.10% | 1.90% | 2.51% | 62% | 93% | |||||
Overall | 3.11% | 2.36% | 2.16% | 81% | 97% | 3.06% | 2.27% | 2.54% | 72% | 92% |
Class D | 2.35% | 1.53% | 1.52% | 85% | 99% | 5.08% | 4.14% | 4.45% | 81% | 92% |
Class F | 3.14% | 2.37% | 2.34% | 86% | 99% | 4.48% | 3.21% | 3.87% | 80% | 98% |
表2: 仿射运动模型的具体编码效率
Class | Sequence | RA | LDB | ||||
---|---|---|---|---|---|---|---|
Y | Cb | Cr | Y | Cb | Cr | ||
A14K | Tango | 1.31% | 1.72% | 1.07% | |||
FoodMarket4 | 4.70% | 4.30% | 4.11% | ||||
CampfireParty | 0.47% | 0.21% | 0.24% | ||||
A24K | CatRobot | 8.38% | 6.16% | 5.31% | |||
DaylightRoad | 6.08% | 4.08% | 3.76% | ||||
ParkRunning3 | 3.93% | 2.57% | 2.66% | ||||
B1080p | MarketPlace | 4.73% | 3.41% | 4.06% | 3.99% | 2.69% | 2.90% |
RitualDance | 2.39% | 1.82% | 1.60% | 1.74% | 1.25% | 1.48% | |
Cactus | 7.34% | 5.48% | 4.58% | 10.88% | 9.69% | 9.80% | |
BasketballDrive | 1.23% | 1.13% | 1.02% | 1.76% | 1.42% | 1.47% | |
BQTerrace | 0.30% | 0.36% | 0.44% | 0.33% | 0.04% | 1.54% | |
CWVGA | BasketballDrill | 0.67% | 0.34% | 0.16% | 0.86% | 0.18% | -0.06% |
BQMall | 1.06% | 0.87% | 0.72% | 1.27% | 0.48% | 0.67% | |
PartyScene | 2.81% | 2.09% | 2.00% | 5.31% | 5.31% | 4.28% | |
BasketballPass | 1.30% | 0.78% | 0.62% | 1.31% | 0.51% | 0.91% | |
DWQVGA | BasketballPass | 0.68% | -0.15% | 0.02% | 0.77% | 0.11% | -0.07% |
BQSquare | 5.57% | 3.98% | 4.12% | 15.24% | 13.47% | 14.80% | |
BlowingBubbles | 1.86% | 1.71% | 1.56% | 2.94% | 2.59% | 2.44% | |
RaceHorses | 1.28% | 0.57% | 0.40% | 1.35% | 0.39% | 0.65% | |
E720p | FourPeople | 1.71% | 0.91% | 1.18% | |||
Johnny | 3.95% | 2.53% | 3.63% | ||||
KristenAndSara | 3.66% | 2.25% | 2.72% | ||||
FSCC | BasketballDrillText | 0.53% | 0.17% | 0.07% | 0.40% | 0.39% | 0.08% |
ArenaOfValor | 1.91% | 0.90% | 0.95% | 1.78% | 0.93% | 0.76% | |
SlideEditing | 0.06% | 0.05% | 0.11% | -0.07% | -0.12% | -0.31% | |
SlideShow | 10.08% | 8.34% | 8.25% | 15.80% | 11.66% | 14.97% |
后记
视频编码压缩技术,特别是视频编码标准技术,自上世纪90年代初的H.261/MPEG1到今天一路走来,经过30多年的发展,已经成长为极为繁杂庞大的知识体系。以VVC编码工具集为代表的新一代编码技术的发展更是日新月异,其精妙程度与行业熟知的传统技术已不可同日而语。本文尝试抛砖引玉,引领有兴趣的读者一览VVC中一项非常有特色的新工具——仿射运动模型技术,希望对普及VVC的知识有所裨益。如果读者希望进一步了解仿射运动模型技术的理论基础,推荐参考 [5][6]。由于篇幅有限,一些相关技术,如基于光流的预测修正(PROF)等,本文未作介绍,相关技术细节可参考[7]。
参考文献
- H. Huang, J. Woods, Y. Zhao, and H. Bai, “Control-point representation and differential coding affine-motion compensation,” IEEE Transactions on Circuits and Systems for Video Technology, vol. 23, no. 10, pp.1651–1660, Oct. 2013.
- L. Li, H. Li, D. Liu, Z. Li, H. Yang, S. Lin, H. Chen, and F. Wu, “An Efficient Four-Parameter Affine Motion Model for Video Coding,” IEEE Transactions on Circuits and Systems for Video Technology, Apr. 2017.
- K. Zhang, Y. Chen, L. Zhang, W. Chien and M. Karczewicz, “An Improved Framework of Affine Motion Compensation in Video Coding,” IEEE Transactions on Image Processing, vol. 28, no. 3, March 2019.
- 尤承业 编著,《解析几何》, 北京大学出版社,2004年1月第一版。
- K. Zhang, L. Zhang, H. Liu, J. Xu, Z. Deng and Y. Wang, “Interweaved prediction for video coding”, IEEE Transactions on Image Processing, vol. 29, pp. 6422 – 6437, Apr. 2020.
- H. Meuel, J. Ostermann, “Analysis of Affine Motion-Compensated Prediction in Video Coding”, IEEE Transactions on Image Processing, vol. 29, pp. 7359-7374, June, 2020.
- J. Luo, Y. He, “CE2-related: Prediction refinement with optical flow for affine mode,” JVET-N0236, Mar. 2019.