H.266/VVC相关技术学习笔记17:VTM6.0中的DMVR(解码端运动矢量细化)技术前言:DMVR在JEM中的实现

今天先大致讲一下关于DMVR技术在VVC早期版本JEM中的具体实现方式,DMVR(Decoder-side motion vector refinement)技术就是解码端运动矢量细化,意思就是在解码端才对运动矢量进行细化,而且编码端也不用传任何附加语法元素或者信息。

DMVR具体的过程如下图所示:
第一步生成双边模板:在解码端得到初始的Merge双向MV后,在运动补偿阶段,对该块的两个初始MV形成的预测块进行加权,得到一个新的预测块,作为一个初始预测值(即模板),记为P_Ori;
第二步计算初始SAD:然后用该模板和初始的两个MV生成的预测块(图中的蓝色线所指示的块)计算SAD(sum of absolute differences)(前向列表和后向列表分别计算),作为初始的SAD最小值用于后续的SAD的比较,选出最优的候选块及其相应的候选MV。
第三步比较SAD选最优:在初始预测块的周围几个像素的范围内搜索对应的候选块(图中的红色线所指示的块),总共是9个像素点位置,一个初始点以及周边8个点。然后计算P_Ori与各个候选块之间的差值并计算对应的SAD,与初始的SAD最小值相比较,选出SAD最小的那个候选块,得到该候选块的新的MV最为当前编码块的最优MV,也就是对MV进行了细化。
在这里插入图片描述
这里需要解释几个问题:
①为什么要选用SAD作为代价比较的基准,而不是用RDcost?
因为该技术只是用于解码端的MV的修正,因此这时候解码端已经接收到了传过来的码流信息,此时的码率是确知的不变的,因此码率已经无法作为率失真的衡量基准,只有失真可以衡量,所以只需要SAD计算Cost就足够了。

②该技术的背后的原理在哪?
答:我的个人理解就是,在编码端已经得到了可能最优的MV,但在解码端认为这或许不是最优,因此要将其修正,而修正的方式就是利用原始MV预测得到的预测值(输出)反过来作为一个输入,再对MV左适当的细化,这就是一个正反馈的过程,也类似于深度神经网络中的反向传播过程,利用神经末端的输出反过来影响权重和神经元偏置。

③目前VTM6.0中由于觉得细化的MV并不一定比原始的MV更好,因此在DMVR的过程中优先考虑使用原始的MV,来减少DMVR细化过程中的不确定性带来的性能上的损失。
关于该问题的详细解析详见DMVR的后续:VTM中的DMVR

未完待续~~~~~~
VTM6.0中的DMVR技术参考后续博客:H.266/VVC相关技术学习笔记26:VTM6.0版本中的DMVR(解码端运动矢量细化)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值