H.266/VVC技术学习52:Merge模式相关

VVC中Merge模式分为目录中的以下五种。

1 Merge

在VVC中,通过按顺序包括以下五种类型的候选对象来构造merge候选列表:
1)来自空间相邻CU的空间MVP
2)来自相同位置CU的时间MVP
3)来自基于历史的MVP队列
4)来自成对平均MVP
5)来自零MV。

merge列表的大小在Slice标头中用信号通知,并且merge列表的最大允许大小为6。对于merge模式下的每个CU,使用截断一元二进制化对最佳merge候选索引进行编码。
merge索引的第一个位置使用上下文进行编码,其他容器使用旁路编码。

1.1 空域候选

除了交换前两个merge候选的位置以外,VVC中的空间merge候选的推导与HEVC相同。
在位于下图所示位置的候选中最多选择4个合并候选者。
在这里插入图片描述
推导的顺序为B0, A0, B1, A1, B2。仅当位置B0, A0, B1, A1的一个CU或一个以上的CU不可用时(例如,因为它属于另一片或图块)或进行帧内编码时,才考虑位置B2。
在添加位置A1的候选之后,对其余候选者的添加进行冗余检查,以确保从列表中排除具有相同运动信息的候选者,从而提高了编码效率。
为了降低计算复杂度,在提到的冗余检查中并未考虑所有可能的候选对。而是仅考虑下图中用箭头链接的对,并且仅在用于冗余检查的相应候选对象具有相同运动信息时才将候选对象添加到列表中。
在这里插入图片描述

1.2 时域候选

在此步骤中,仅将一个候选添加到列表中。
特别地,在该时域merge候选者的推导中,对于属于相同的参考帧的相同的CU,推导了缩放的MV。在slice头中明确地用信号发送要用于导出同位CU的参考图片列表。如下图的虚线所示,获得了用于时域merge候选缩放后的运动矢量,该缩放后的运动矢量是使用POC距离tb和td从并置CU的运动矢量缩放而成的,其中tb为将当前帧的参考帧之间的POC差;td定义为位于参考同位帧和当前同位帧位于之间的POC差。将时域merge候选的参考帧索引设置为零。
在这里插入图片描述
如下图所示,在候选C0和C1之间选择时域候选的位置。如果位置C0处的CU不可用,未进行内部编码或在CTU的当前行之外,则使用位置C1。否则,在时间合并候选者的推导中使用位置C0。
在这里插入图片描述

1.3 历史候选

在空间MVP和TMVP之后,将基于历史记录的MVP(HMVP)merge候选添加到merge列表。
在该方法中,先前编码的块的运动信息被存储在表格中,并且用作当前CU的MVP。在编码/解码过程中将维护具有多个HMVP候选者的表。遇到新的CTU行时,将清空表。只要有非子块间编码的CU,相关联的运动信息就会作为新的HMVP候选者添加到表的最后一项。
HMVP表大小S设置为6,这表示最多可以将6个基于历史记录的MVP(HMVP)候选者添加到表中。当向表中插入新的运动候选者时,约束先进先出。
利用(FIFO)规则,其中首先应用冗余检查以查找表中是否存在相同的HMVP。如果找到,则从表中删除相同的HMVP,然后将所有HMVP候选者向前移动,HMVP候选者可以在merge候选列表构建过程中使用。按顺序检查表中最新的几个HMVP候选者,并将其插入到TMVP候选者之后的候选者列表中。

冗余检查应用于HMVP候选者到空间或时间merge候选者。
为了减少冗余检查操作的数量,引入了以下简化:
1)将用于merge列表生成的HMVP候选数量设置为(N <= 4 ) ? M: (8 – N),其中N表示merge列表中现有候选的数量,M表示merge列表中可用HMVP候选的数量表。
2)一旦可用merge候选的总数达到最大允许merge候选减去1,则HMVP的merge候选列表构建过程终止。

1.4 平均候选

通过平均现有合并候选列表中的预定义候选对来生成成对平均候选,并且将预定义对定义为{(0,1),(0,2),(1,2),(0,3), (1,3),(2,3)},其中数字表示合并候选者列表的merge索引。为每个参考列表分别计算平均运动矢量。如果两个运动矢量在一个列表中均可用,则即使这两个运动矢量指向不同的参考图片,也要对其平均。如果只有一个运动矢量可用,则直接使用它;如果没有运动矢量可用,则使此列表无效。

1.5 零MV

在添加成对平均合并候选者后merge列表依然不完整时,最后会插入零MVP,直到补充至最大merge候选数量。

2 MMVD(Merge mode with MVD)

除了merge模式(其中隐式导出的运动信息直接用于当前CU的预测样本生成)外,VVC中还引入了具有运动矢量差(MMVD)的合并模式。发送skip标志后立即发出MMVD标志和merge标志以指定是否将MMVD模式用于CU。

2.1 预测方式

1、选择merge列表中前两个候选对象之一作为起点,用flag通知merge候选标志以指定使用哪个;
2、用flag通知merge指示运动方向的索引(共4个);
3、用flag通知merge用于指定运动步长的索引(共8个)。
在这里插入图片描述

2.2 搜索方向

方向索引代表MVD相对于起点的方向。方向索引代表四个方向,如下表所示。
在这里插入图片描述
注意,MVD符号的含义可以根据起始MV的信息而变化:
1、当起点MV为单向预测MV,或者是双向预测MV但两个列表均在当前帧同侧时(即,两个参考的POC均大于当前图片的POC,或均小于当前图片的POC)。上表中的符号指定添加到起始MV的MV偏移的符号。
2、当起始MV为双向预测MV时,两个MV指向当前图片的不同侧(即,一个参考的POC大于当前图片的POC,另一个参考的POC小于当前图片的POC),上表中的符号指定添加到起始MV的list0中MV分量的MV偏移的符号,而list1种MV的符号是相反的。

2.3 搜索步长

步长索引代表运动幅度信息,指示距起点MV的预定义偏移。将偏移添加到起始MV的水平分量或垂直分量。距离索引与预定义偏移的关系在下表中指定。
在这里插入图片描述

3 CIIP(Combined inter and intra prediction)

在VVC中,当CU以merge模式编码时,如果CU包含至少64个亮度采样(即CU宽度乘以CU高度等于或大于64),并且CU宽度和CU高度均小于在128个亮度采样中,用信号通知附加标志以指示是否将组合帧间/帧内预测(CIIP)模式应用于当前CU。顾名思义,CIIP预测将帧间预测信号与帧内预测信号相结合。

3.1 预测值计算

1、帧间预测信号是使用与merge模式处理导出的。
2、帧内预测信号是在Planar模式的得出的。
然后,使用加权平均对帧内和帧间预测信号进行组合,其中权重值的计算取决于顶部和左侧相邻块(图39中所示)的编码模式,如下所示:
在这里插入图片描述

3.2 权重获取

1、如果上邻居可用并且已帧内编码,则将isIntraTop设置为1,否则将isIntraTop设置为0;
2、如果左邻居可用并且已帧内编码,则将isIntraLeft设置为1,否则将isIntraLeft设置为0;
3、如果(isIntraLeft + isIntraLeft)等于2,则wt设置为3;
4、如果(isIntraLeft + isIntraLeft)等于1,则将wt设置为2;
5、如果(isIntraLeft + isIntraLeft)等于0,将wt设置为1。
,

4 TPM(Triangle Partition Mode)

在VVC中,对8x8或更大的CU,支持三角形分割模式(即TPM)进行帧间预测。
三角形分区模式不能与SBT结合使用,当使用TPM时无需flag就将cu的sbt标志推断为0。

TPM模式使用CU级标志作为一种merge模式来进行信号通知。使用此模式时,可使用对角线分割或反对角线分割将CU均匀分割为两个三角形分区如下图所示。
在这里插入图片描述

4.1 列表构建

CU中的每个三角形分区都是使用自己的运动进行帧间预测的;每个分区仅允许单向预测,即每个分区具有一个运动矢量和一个参考索引。应用单向预测运动约束以确保与常规双向预测相同,每个CU仅需要两个运动补偿的预测。每个分区的单向预测运动如下:
单向预测候选列表直接从根据merge预测过程构造的merge列表中得出。将n表示为三角形单预测候选列表中的单向预测运动的索引。 X等于n的奇偶校验的第n个扩展merge候选的LX运动矢量用作三角形分区模式的第n个单向预测运动矢量。这些运动矢量在下图中用“ x”标记。在不存在merge候选对象n的相应LX运动矢量的情况下,将相同候选对象的L(1-X)运动矢量用作替代对象。
在这里插入图片描述

4.2 分区融合成块

在预测每个三角形分区之后,使用具有自适应权重的融合处理来调整沿对角线或反对角线边缘的像素值。这是整个CU的预测信号,并且如同其他预测模式一样,变换和量化处理将应用于整个CU。
在混合过程中使用权重如图:
在这里插入图片描述

4.3 运动存储

使用TPM预测的CU的运动场的存储方式如下所示,即生成以TPM编码的CU的运动矢量过程如下:
1)如果Mv1和Mv2来自不同的参考帧列表(一个来自LO,另一个来自L1),则简单地将Mv1和Mv2组合起来即可形成双向预测运动矢量。
2)否则,如果Mv1和Mv2来自同一列表,则仅存储Mv2。

4.4 二值化方式

如果当前CU使用TPM,则用信号指示三角形分区的方向(对角线或反对角线)以及两个合并索引(每个分区一个)。最大TPM候选大小的数目在Slice级别上指出,并指定TMP索引的语法二值化。

5 sbTMVP(Subblock-based temporal motion vector prediction)

VVC支持基于子块的时间运动矢量预测(SbTMVP)方法。
类似于HEVC中的时间运动矢量预测(TMVP),SbTMVP使用同位帧中的运动存储来改进运动矢量预测和当前图片中CU的merge模式。 TMVP使用的相同并置图片用于SbTVMP,SbTMVP在以下两个主要方面与TMVP不同:
1、TMVP预测CU级别的运动,但SbIMVP预测subCU级别的运动;
2、TMVP从同位帧中的相同块右下或中心位置获取时间运动矢量,但SbTMVP在从同位帧中获取时间运动信息之前应用了运动偏移,其中从当前CU的空间相邻块之一的运动矢量获得运动偏移。

5.1 预测过程

SbTVMP过程下图所示。SbTMVP分两步预测当前CU内子CU的运动矢量。

1、检查相邻块A1。如果A1具有将同位帧用作其参考帧的MV,则将该MV选择为要应用的运动偏移。如果未识别到此类运动,则将运动偏移设置为(0,0)。

2、从同位帧中获取子CU级运动信息(运动矢量和参考索引),并应用步骤1中标识的运动偏移(将同位帧各个子MV作用到当前块标中),如下图所示。
在这里插入图片描述
上图假定将运动偏移设置为阻止A1的运动。然后,对于每个子CU,在同位帧中其对应块(覆盖中心样本的最小运动网格)的运动信息被用于导出子CU的运动信息。在识别出同位帧的子CU的运动信息之后,以与HEVC的TMVP过程类似的方式,将其转换为当前子CU的运动矢量和参考索引,这里需要一个时间运动缩放系数,用来将时间运动向量的参考帧与当前CU的参考帧对齐(假定匀速)。

5.2 信令传输

在VVC中,基于组合子块的merge列表(同时包含SbTVMP候选 和 Affine merge候选)用于基于子块的merge模式的信令。SPS级标志启用/禁用SbTMVP模式。
如果启用了SbTMVP模式,则将SbTMVP预测变量添加为基于子块的merge候选者列表的第一项,然后是Affine merge候选。
基于子块的merge列表的大小在SPS中用信号通知,并且基于子块的merge列表的最大允许5个。

5.3 使用限制

SbTMVP中使用的子CU大小固定为8x8,并且与Affine merge模式一样,SbTMVP模式仅适用于宽度和高度均大于或等于8的CU。
附加的SbTMVP候选的编码逻辑与其他merge候选的编码逻辑相同,即对于P或B帧中的每个CU,执行附加的RD检查以确定是否使用SbTMVP候选。

猜你喜欢

转载自blog.csdn.net/weixin_42979679/article/details/103271565