H.266 JEM7.0 帧间预测之七(模式匹配的运动矢量推导PMMVD)(FRUC)

9 篇文章 0 订阅

模式匹配的运动矢量推导 Pattern matched motion vector derivation(PMMVD)

PMMVD是一个基于 Frame-Rate Up Conversion (FRUC)的特殊merge模式。在此模式下,块的运动信息不传输但可在解码端推导得到。当merge标志为真时,CU传输一个FRUC标志位。当FRUC标志位为假,merge索引需传输,同时采用传统的merge模式。当FRUC标志位为真,需传输一个FRUC模式标志位来表明使用哪种方法(双边匹配或模板匹配)来得到块的运动信息。

在编码端,CU是否使用FRUC merge模式取决于RD cost的选择。使用RD cost判断两个匹配模式(双边匹配或模板匹配),选择代价最小的,继续与CU其余的模式相比较。如果FRUC匹配模式是最有效的,FRUC 标志位设为真且采用相应的匹配模式。

FRUC在JEM中所对应函数为:

TEncCu::xCheckRDCostMerge2Nx2NFRUC()

FRUC merge模式的运动推导过程有两步,包括CU级别的运动搜索以及子CU级别运动修正:

a、根据双边匹配或模板匹配得到整个CU的初始MV。首先,产生MV的候选列表,最小匹配代价的候选被选作CU级别修正的起始点。

b、随后,开始在起始点附近基于双边匹配或模板匹配的局部搜索,匹配代价最小的MV被作为整个CU的MV。随后,运动信息在子CU级别将获得的CU MV作为起始点继续优化。

如WxH的CU,首先获取整个CU的MV。第二步,CU继续划分为MxM子CU,M的值根据下面公式计算,D为预定义的划分深度,默认为3。随后获取每个子CU的MV。

如下图,通过在两个不同的参考图像中沿着当前CU的运动轨迹找到两个块之间的最接近匹配,使用双边匹配来推导得到当前CU的运动信息。在运动轨迹连续的假设下,指向两个参考块的运动矢量MV0、MV1应该与时间距离成正比。一个特殊的情况,在当前图像位于两个参考图像中间且当前图像到两个参考图像的时间距离相等时,双边匹配成为基于镜向的双向MV。

如下图,采用模板匹配得到当前CU的运动信息,l寻找当前图像的模板(当前CU上方/左侧相邻块),通过在参考图像上寻找一个最近匹配的与模板同大小的块,来计算当前CU的运动信息。除去上述的FRUC merge模式,模板匹配也用于AMVP模式。JEM中,AMVP有两个候选。通过模板匹配方法获取了一个新的候选。如果通过模板匹配获得的候选与第一个AMVP中存在的候选不同,将其加入AMVP的最开始的候选列表,随后列表被设为2(剔除AMVP候选中的第二个)。当采用AMVP模式时,只采用CU级别的搜索。

此过程在xCheckRDCostMerge2Nx2NFRUC()函数中调用的:

TComPrediction::deriveFRUCMV()

FRUC编码的第一步优化发生在最佳候选的选择和MV预测期优化过程中。FRUC MV的全部RD代价计算为:

frucRdCost = frucMvRate + frucDist

首先评估速率分量,随后用模板或者双向匹配来计算失真部分。

编码端优化:a、如果FRUC MV候选的率失真代价大于或等于当前最优的frucRdCost,当前FRUC的候选MV的衡量停止,不计算失真,继续循环下一个候选。b、给定精度,移除在FRUC MV细化步骤中与先前选择的最佳方向相反的方向。

7.1  CU级别MV候选集

CU级别的MV候选集包括:

    a、如果当前CU采用AMVP模式,原始的AMVP候选:当AMVP模式中使用FRUC时,原始的AMVP候选也加入CU级别的MV候选集中。

    b、所有的merge候选:当采用双向匹配时,merge候选的每个有效的MV均被当为输入来产生一对假设为双向匹配的MV。例如,merge候选里一个有效的MV在参考列表A中是(MVa, refa)。随后与其成对的参考图像refb中的双向MV在参考列表B中被找到,所以refa以及refb在当前图像时间上不同的两侧。如果参考列表B中这样的refb不可获取,refb被认为是与refa不同的参考,且其到当前图像的时间距离在列表B中是最小的。在refb确定后,基于当前图像和refa,refb的时间距离,通过缩放MVa得到MVb。

    c、插值运动场的一些MV:插值运动矢量场中的4个MV也加入CU级别的候选列表。插值MV位置为 (0, 0), (W/2, 0), (0, H/2) and (W/2, H/2)。

    d、上方和左侧相邻MV

CU级别AMVP最多15个MV,merge最多13个可加入候选列表。

7.2  子CU级别MV候选集

子CU级别的MV候选集包括:

    a、CU级别搜索得到的MV

    b、上方,左侧,左上,右上相邻MV

    c、参考图像同位置MV的放缩MV:遍历两个列表的所有参考图像。在参考图像中与子CU同位的MV被缩放至起始CU级别MV的参考。

    d、最多4个ATMVP候选

    e、最多4个STMVP候选

子CU级别,最多可加入17个MV。

7.3  插值运动矢量场的获取

在编码一帧内容之前,根据单侧ME得到整个图像的插值运动场。随后运动场可能用于CU级别或者子CU级别的候选。

首先,在4x4的块级别遍历两个参考图像的运动场。对每个4x4块,如果关联块的运动穿过当前图像一个4x4的块,如下图,且块没经过任何插值运动,参考块的运动根据时间距离TD0和TD1被缩放至当前图像(与HEVC中的TMVP缩放MV方法相同),缩放的运动被分配给当前帧中的块。如果没有缩放的MV分配给4x4的块,块的运动在插值运动场中被标志为不可获取。

7.4  插值和匹配代价

当MV指向一个分像素样本位置,需要运动补偿差值操作。为了减少复杂度,采用双线性插值而不是HEVC中的8抽头插值,应用于双向匹配和模板匹配。

匹配代价的计算有修改。当从CU级别的候选集中选择候选时。双向和模板匹配代价均为绝对和差值SAD。在起始MV确定后,子CU级别双向匹配搜素的匹配代价C为:

其中w是权重,经验值为4.MV以及MVs代表当前MV以及起始MV。子CU级别模板匹配仍采用SAD。

在FRUC模式下,MV是通过仅使用亮度样本得到的。得到的运动将会用于亮度和色度的MC帧间预测。在MV确定后,最后的MV亮度下采用8抽头插值滤波器,色度采用4抽头。

7.5  MV优化

MV优化是以双边匹配成本或模板匹配成本为准则,基于MV搜索的模式。JEM中,支持两个搜索模式,CU级别的无约束中心偏斜菱形搜索(UCBDS)和子CU级别的自适应交叉搜索。CU和子CU级别的优化,MV均为1/4亮度精度搜索的,随后的是1/8亮度样本的优化。CU和子CU的MV优化的搜索区域步长为8亮度样本。

7.6  模板匹配FRUC merge模式的预测方向选择

在双向匹配merge模式下,由于在两个不同的参考图像中根据当前CU的运动轨迹在两个块之间最接近的匹配而导出CU的运动信息,所以常使用双向预测。对模板匹配merge模式没有这样的限制。在模板匹配merge模式下,编码端可以从list0中的单向预测,list1中的单向预测,CU的双向预测中选择。选择是基于模板匹配代价的:

cost0是list0模板匹配的SAD,cost1是list1的模板匹配SAD,costBi是双向模板匹配的SAD。factor=1.25,意味着选择过程偏向双向预测。

帧间预测方向选择仅用于CU级别的模板匹配过程。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值