H.266 JEM7.0 帧间预测之六(仿射运动补偿预测 Affine)

仿射运动补偿预测 Affine motion compensation prediction

HEVC中,运动补偿预测MCP中只使用平移的运动模型。真实世界存在放大、缩小、旋转、透视等其他情况。JEM中引入affine运动MCP。块的仿射运动场MVF由两个控制点MV描述。

一个块的MVF被描述为:

(v0x,v0y)为左上角控制点的MV,(v1x,v1y)为右上角控制点的MV。

为了进一步简化运动补偿预测,引入基于仿射运动预测的子块。MxN的子块大小为下式,MvPre是MV分数精度(JEM中为1/16),(v2x,v2y)是左下的控制点,与(v0x,v0y)算法相同。

在由上述公式得出后,M N应该视情况作为w和h的因子向下调整。

为了得到每个MxN子块的MV,每个子块中心样本(如图)的MV都根据(v0x,v0y)相同的算法计算,并且舍入至1/16分像素精度。随后,使用运动补偿差值滤波器来通过得到的MV获取每个子块的预测。

在MCP后,每个子块高精度的MV被舍入并存储至与普通MV相同的精度。

JEM中,有两种仿射运动模式:

a、AF_INTER

条件:CU>=8*8.

需传输标志位表明AF_INTER模式是否使用。在此模式下,通过使用相邻块构造下述MV对的候选列表:

。如图,v0是从A B C 的MV中选出的。相邻块的MV根据参考列表和相邻参考帧POC,当前CU参考帧的POC和当前CU的POC被缩放。v1同样从D E 中选择。如果候选列表数量小于2,通过复制AMVP候选组成的运动矢量对进行填充。当候选列表大于2,首先根据相邻MV的连续性(成对候选中的两个运动矢量的相似性)对候选排列并只保留前两个。RDcost操作随后用于检测哪个MV候选对可作为当前CU的控制点MVP(CPMVP)。同时,比特流中需传输索引来表示CPMVP在候选列表中所处的位置。在当前仿射CU的CPMVP确定后,使用仿射运动估计,并找到控制点MV(CPMV)。CPMV与CPMVP的残差在比特流中进行传输。

此过程的相关函数为predInterSearch() ,在CU>=8*8及其余必须条件下调用的函数:

TEncSearch::predAffineInterSearch()

b、AF_MERGE

当CU使用AF_MERGE模式,从有效相邻重构块中得到第一个仿射模式的编码块。选择顺序为:左,上,右上,左下到左上,即A-E。如果左块A为仿射模式编码,包括块A的CU的左上角的MV:v2,v3,v4,右上角及左下角均被导出。当前CU左上角的MV,v0根据v2,v3,v4进行计算。随后,计算当前CU右上的v1。

 

当前CU的CPMV操作后,可得到v0及v1,根据简化的仿射运动模型,可得到当前CU的MVF。为了确认当前CU是否采用AF_MERGE模式,当至少有一个相邻块采用仿射模式编码时,比特流中需传输仿射标志位。

仿射运动补偿预测与Inter、Merge、FRUC相并列,函数为:

TEncCU::xCheckRDCostAffineMerge2Nx2N()

该函数调用getAffineMergeCandidates() 获取控制点MV及候选列表,随后进行MC等操作。

猜你喜欢

转载自blog.csdn.net/yolo_life/article/details/81181175
今日推荐