H.266/VVC技术描述_3-帧间预测_4-DMVR

1、DMVR技术

  DMVR(Decoder side motion vector refinement)是为了提高merge模式的预测准确率,在解码端对运动矢量MV进行调整。在双向预测中,根据初始MV,在参考列表L0和L1中进行搜索,比较两个参考像素块的差,得到调整后的MV。如下图中,计算初始参考块周围的块,计算两个参考帧中两个参考块的SAD(Sum of Absolute Differences),SAD最小者为调整的参考块。
H.266/VVC技术描述_3-帧间预测_4-DMVR_第1张图片
VTM6中使用DMVR的CU条件为:
  1、带有双向MV的merge模式CU。
  2、两个参考帧在时域上位于当前帧的一前一后。
  3、两个参考帧到当前帧的距离相等。
  4、CU至少有64个亮度样点。
  5、CU的高度宽度均大于8。
  6、BCW权重使用平均加权。
  7、不使用WP。
  8、不使用CIIP。
  DMVR产生的refine MV用于产生帧间预测值和时域MV预测。原始MV用于空间运动矢量预测和deblocking过程。

2、搜索算法

  任何一个搜索点都遵守镜像规则,即DMVR中的候选MV对(MV0,MV1)符合如下公式:
  MV0′ = MV0 + MVoffset
  MV1′ = MV1 − MVoffset
  其中MVoffset代表修正MV和初始MV之间的偏移量,VTM中,搜索范围为初始MV周围两个亮度像素,共25点,分为整数搜索和分数搜索两个阶段。
  如果初始MV的SAD小于某个阈值,整数搜索阶段直接终止。否则按扫描顺序搜索剩余24点,找到SAD最小的点。为了减小DMVR带来的不稳定性,加强选择初始MV的倾向,初始MV的SAD降为四分之一。
  分数搜索在整数搜索被提前终止时才会进行。为了降低复杂度,分数阶段用parametric error surface等式代替SAD。
parametric error surface等式使用了中心位置和周边4个位置的样点,需要满足等式:
  E(x, y) = A(x − xmin)2 + B(y − ymin)2 + C
  (xmin,ymin)时分数的最小值点,也就是目标点,C是五个点中最小cost(此时也就是中间点cost),。使用五个点解以上方程,结果为:
  xmin = (E(−1,0) − E(1,0))/(2(E(−1,0) + E(1,0) − 2E(0,0)))
  ymin = (E(0, −1) − E(0,1))/(2(E(0, −1) + E(0,1) − 2E(0,0)))
  观察结果可以发现,由于E(0,0)为最小cost,且E(0, 0)值大于等于0,因此xmin和ymin最大值为1/2,最小值-1/2。例如,E(0,0)、E(1,0)为0时xmin取得最大值1/2。放大到1/16精度,xmin和ymin处于-8到8之间。

3、插值和填充

  VVC中的MV精度为1/16,分像素位置的样点通过8抽头滤波器进行插值得到。在DMVR过程中也需要进行插值来获取分像素位置的值,为了减少计算复杂度,通过双线性插值。使用双线性插值另一个重要原因是它只需要2点的范围,与传统运动补偿过程中的插值相比,不需要周边太多的像素点,而在DMVR中,可能无法接触到较多的像素点。
  在得到refined MV后,最终的运动补偿过程依然采用8-tap滤波器。但是此时MV进行了调整,参考块可能会使用到不存在的像素点,所以需要进行padding。

4、最大DMVR处理单元

  DMVR最大处理单元为16x16,CU宽或高大于16时需要划分为小于16x16的子块。

你可能感兴趣的:(H.266/VVC,视频编码)