在JEM中,引入了一种特殊merge模式——帧率上变换FRUC模式。该模式下块的运动信息不需要传输,在解码器端直接推到得到。FRUC模式分为双边匹配模式和模板匹配模式。
当merge flag为真的时候,会为CU传输FRUC flag。当FRUC flag是假时,使用正常merge模式并传输merge索引。当FRUC flag为真的时候,一个额外的FRUC模式flag被传输来表示使用双边匹配还是模板匹配。
在编码器端,CU使用RD代价选择是否使用FRUC merge模式。FRUC模式分为双边匹配和模板匹配,CU会对两者进行RD代价检测,选择代价最小者进一步和其他CU模式比较,如果最终判决FRUC模式最高效,则设置该CU的FRUC flag为真,使用其对应的匹配模式。
在FRUC merge模式中运动推导处理分为两步,首先执行一个CU级别的运动搜索,然后进行一个亚CU级别的运动优化:
1.CU级别运动搜索中,会为整个CU基于双边匹配或模板匹配推导得到一个初始运动矢量。首先生成一个MV候选列表,选择其中匹配代价最小的候选作为下一步CU级优化的起始点。
2.在上一步找到的起始点周围执行基于双边匹配或模板匹配的局部搜索,将找到的匹配代价最小的MV作为整个CU的MV。接下来以这个CU级的MV作为起点进行亚CU级别的优化。
例如,对一个WxH的CU进行运动信息推导。第一阶段推导WxH的整个CU的MV;第二阶段将CU划分为MxM的子CU,推导每个子CU的MV。子CU尺寸的M值由下式计算得到,其中D是预先定义的划分深度,在JEM中默认为3。
Image may be NSFW.
Clik here to view.
bilateral matching双边匹配
如下图所示,双向匹配通过在两个不同的参考图像中,根据当前CU的运动轨迹找到两个块之间的最接近匹配,来推导当前CU的运动信息。假设运动轨迹连续,分别指向两个参考块的运动矢量MV0和MV1应该是和时域距离(当前图像与两个参考图像的时域距离TD0和TD1)成比例的。当TD0=TD1时,双边匹配就变为了基于镜像的双向MV。
Image may be NSFW.
Clik here to view.
template matching模板匹配
模板匹配会在当前图像中选择当前CU的上方/左侧邻近块作为模板,通过在参考图像中找到一个和模板大小相同的最接近匹配块计算当前CU的运动信息,如下图所示。
Image may be NSFW.
Clik here to view.
除了上述的FRUC merge模式,模板匹配也被用于AMVP模式。JEM和HEVC一样,AMVP有两个候选。模板匹配被作为一个新的候选,如果通过模板匹配推导得到的新的候选和第一个已有的AMVP候选不同,它会被插入到AMVP候选最前位置,列表尺寸被设置为2(此时AMVP原有的第二候选会被删除)。当应用AMVP模式时,只有应用CU级别的搜索。
候选列表
在CU和亚CU两个级别处理阶段,MV候选列表如下:
CU级别MV候选列表:
1.Original AMVP candidates if the current CU is in AMVP mode
2.all merge candidates
3.several MVs in the interpolated MV field
4.top and left neighbouring motion vectors
亚CU级别MV候选列表
1.an MV determined from a CU-level search,
2.top, left, top-left and top-right neighbouring MVs,
3.scaled versions of collocated MVs from reference pictures,
4.up to 4 ATMVP candidates,
5.up to 4 STMVP candidates