帧间预测Merge模式
HEVC提出了一种名为“Merge”的帧间预测技术,在VVC中沿用了这一种帧间预测技术,Merge技术运用的是空域以及时域运动矢量预测的思想,利用当前编码块空时域上相邻已编码块的运动信息(运动矢量和参考帧信息)直接推导得到当前块运动信息。在Merge模式下,会为当前块建立一个候选表,由周围已编码块运动信息组成,在解码端也使用同样的方法建立该候选列表,如此以来,编码器只需要传输最佳候选的索引到编码端即可,大大减少了编码过程的比特消耗。
Merge模式建立的候选列表由空域候选和时域候选组成,建立候选列表包括了空域候选推导过程,空域候选冗余校验过程和时域候选候选推导过程,对于B帧还采用了组合列表的方式,具体介绍如下:
(1)空域候选列表的建立。
空域列表候选的位置如图,Ao, A1分别表示位于当前块左下方距离最近的以及左侧最下方的已编码块,Bo, B1分别表示位于当前块右上方距离最近的以及上方最右侧的编码块,B2则表示当前块左上方距离最近的编码块。空域最多为当前块提供四个候选运动矢量,也就是说需要在上述的五个候选块中选出四个添加进Merge候选列表中,添加进列表的顺序A1—B1—Bo—Ao—(B2),当前四个候选均不可用时,才采用B2的运动信息。
如果当前编码块采用矩形划分方式进行划分,其候选列表的建立需要做特殊处理,如图。
当CU划分方式为NXN, NX2N, nLX2N或nR X 2N的时候 ,A1的运动信息不能出现在PU:的候选列表中。这是因为一旦PU2使用了A1的运动信息(比如PUI的运动矢量MV),那么PU2与PUI的MV将会相同,与2N X 2N的划分方式没有区别。
同样的道理,如下图,当划分方式为2NXN, 2NXnU或2NXnD的时候,A1的运动信息不能出现在PU2的候选列表中。
(2)时域候选列表的建立。
时域候选来自于当前PU在时域上邻近已编码图像中对应位置的PU(同位PU),如下图所示。与空域候选列表不同的是,时域候选列表不能直接利用对应的候选块的运动信息,需要根据相对位置和距离做一定的比例伸缩调整。此外,在时域上,只提供一个候选,由图中位置H的同位PU进行MV伸缩而得,如果H位置的候选存在不可用的情况(比如帧内编码或者是在当前CTU行之外),则采用位置C的同位PU。
根据同位PU 推导时域候选MV 的具体步骤如图3-5 所示,cur_PU 表示当前PU,col_PU 表示他的同位PU, col_pic、cur_pic、 col_ref、cur_ref 分别表示同位图像、当前图像、同位图像参考图像、当前图像参考图像, td 和tb 分别表示当前图像与它的参考图像、同位图像与它的参考图像之间的距离,colMV 表示同位PU的MV,curMV 表示当前PU 的时域候选MV,则有如下等式成立:
此外,Slice 头中定义了候选列表的长度L,当处理完空域和时域的候选MV之后,如果列表中候选MV 的数量不足L 个,则使用零向量(0,0)进行填充直到达到规定的数量。
(3)建立组合列表
B 帧的帧间预测比较特殊,因为会进行双向预测,所以存在两个MV,候选列表也需要提供两个预测MV,HEVC 标准将MV 候选列表(由步骤1 和步骤2 建立的)中的前4 个候选MV 两两组合,产生B 帧的组合列表。组合顺序依次为(0,1)、
(1,0)、(0,2)、(2,0)、(1,2)、(2,1)、(0,3)、(3,0)、(1,3)、(3,1)、(2,3)、(3,2),0、1、2、3 分别表示候选列表中候选MV 的序号,这12 个组合分别对应候选对序号0~11。