H.266 JEM7.0 帧间预测之四(重叠块的运动补偿 OBMC)

9 篇文章 0 订阅

重叠块的运动补偿 Overlapped Block Motion Compensation (OBMC)

OBMC可以在CU级别通过采用语法元素进行开关。当JEM中使用OBMC时,对CU除去右侧和底部所有边界的运动补偿MC都使用OBMC,包括亮度及色度。JEM中,MC块对应一个编码块。当CU采用子CU模式编码(包括子CUmerge,affine以及FRUC模式),CU的每个子块都是一个MC块。为了统一处理CU的边界,当子CU块大小设为4x4时,OBMC对所有的子CU级别的MC块的边界均使用。

在当前子CU使用OBMC时,当前MV,四个相邻的子块的MV,如果可获取且与当前MV不完全相同,也会被用来获取当前子CU的预测块。这些基于多MV的多预测块结合起来,得到当前子CU最终的预测信号。

Pn为基于相邻子块MV得到的预测块,N为相邻上方,下方,左侧和右侧子块的索引,基于当前子块MV得到的预测块为Pc。当Pn是根据相邻子块的运动信息得到的,且此运动信息与当前子块运动信息相同,Pn中不使用OBMC。否则,Pn的每个样本均被加入到Pc的相同样本中。如,Pn的四行/列加到Pc上。Pn权重为{1/4, 1/8, 1/16, 1/32} ,Pc为 {3/4, 7/8, 15/16, 31/32}。预测为小MC块(当编码块的宽/高=4或者CU是子CU模式编码的),此时Pn的两行/列加入Pc。此时Pn权重 {1/4, 1/8},Pc为 {3/4, 7/8}。对于根据水平/垂直相邻子块得到的Pn而言,Pn相同列/行采用相同的权重增加到Pc上。

JEM中,对于亮度样本小于等于256的CU而言,CU级别一个标志位需要传输来表示OBMC是否使用。对于亮度样本大于256或者不是AMVP模式的CU,OBMC默认使用。编码端,当OBMC使用时,在运动估计层面考虑了其影响。OBMC使用上方和左侧相邻块的运动信息生成的预测信号被用于补偿当前CU上方和左侧边界的原始信号,然后进入运动估计过程。

OBMC技术在JEM中对应的主要函数为:

TComPrediction::subBlockOBMC()

 此函数中主要调用了:

TComPrediction::xSubBlockMotionCompensation()
TComPrediction::xSubtractOBMC() || xSubblockOBMC()

前者通过调用xPredInterUnixPredInterBi完成运动补偿。后者中,如果bOBMC4ME为true(传入参数,只有在predInterSearch中为true),此时需要在运动补偿中考虑OBMC,选择xSubtractOBMC;否则选择xSubblockOBMC,对当前块的预测器和通过当前块的相邻运动的预测器求平均,对Y、Cb、Cr分量均运行一次。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值