VVC/H.266帧间模式(一):Extended merge prediction

在VTM6.0中,通过按顺序包括以下五种类型的候选者来构造Merge候选者列表

1)从空域相邻CU获取空域MVP

2)从同位CU获取时域MVP

3)从一张FIFO(先进先出)表中获取基于历史记录的MVP

4)Pairwise average MVP(成对平均MVP)

5)填充零MVP

在VTM6.0中,merge列表的尺寸由slice头信息传送,最大允许merge列表尺寸是6。对于merge模式下的每个CU代码,使用截断的一元二进制码(TU)对最佳合并候选者的索引进行编码。

一、空域候选列表推导

空域合并候选列表的推导和HEVC的一样,最多可选出4个候选,候选块位置如下图20所示,选择的顺序为A0,B0,B1,A1,B2。只有其他位置不可用时才考虑B2。在添加位置A1上的候选对象之后,对剩余的候选对象的添加进行冗余检查,以确保从列表中排除具有相同运动信息的候选对象,从而提高了编码效率。为了降低计算复杂度,在提到的冗余检查中并未考虑所有可能的候选对。 而是仅考虑在图21中用箭头链接的对,并且仅在用于冗余检查的相应候选对象具有不同运动信息时才将候选对象添加到列表中。

在这里插入图片描述在这里插入图片描述

二、时域候选列表推导

merge列表中仅加入一个时域候选,而且时域候选MV要进行运动伸缩,伸缩方式和HEVC一样。

如下图所示,在候选C0和C1之间选择时间候选的位置。如果位置C0的CU不可用,或进行帧内编码或在CTU的当前行之外,则使用位置C1。 否则,在时域merge候选列表的推导中使用位置C0,记得MV要进行伸缩。

在这里插入图片描述

三、基于历史记录的候选列表推导(HMVP)

在空域MVP和TMVP(时域MVP)之后,将基于历史记录的MVP(HMVP)合并候选者添加到合并列表。在该方法中,先前编码的块的运动信息被存储在表格中,并且用作当前CU的MVP。 在编码/解码过程中将维护具有多个HMVP候选者的表。遇到新的CTU行时,将重置(清空)表。每当存在非子块帧间编码的CU时,相关联的运动信息就会作为新的HMVP候选者添加到表的最后一项。

在VTM6中,HMVP表大小S设置为6,这表示最多可以将6个基于历史记录的MVP(HMVP)候选者添加到表中。当将新的运动候选者插入到表中时,利用约束的先进先出(FIFO)规则,其中首先应用冗余检查以发现表中是否存在相同的HMVP。 如果找到,则从表格中删除相同的HMVP,然后将所有HMVP候选者向前移动,HMVP候选者可以在合并候选者列表构建过程中使用。 按顺序检查表中最新的几个HMVP候选者,并将其插入到TMVP候选者之后的候选者列表中,同样进行冗余检查。

为了减少冗余检查操作的数量,引入了以下简化:

  • 将用于merge列表生成的HMVP候选数设置为(N <= 4)? M:(8 – N),其中N表示merge列表中现有候选的数量,M表示表中可用的HMVP候选的数量。
  • 一旦可用merge候选者的总数达到最大允许的merge候选者减去1,则HMVP的merge候选者列表构建过程终止。

四、成对平均合并候选者推导

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

当添加成对平均合并候选者后合并列表不完整时,最后会插入零向量,直到遇到最大合并候选者数目为止。

五、总结

在merge候选列表的构建中,时域和空域候选和HEVC区别不大,VVC新增了第三种和第四种MVP的填充方式,计算复杂度有所提升。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章