H.266/VVC技术学习51:解码端运动矢量细化(DMVR)

为了增加双向预测操作中merge模式的MV的准确性,在VVC中应用了解码端运动矢量细化。在参考图片列表L0和参考图片列表L1中的初始MV周围搜索更精确MV。 此方法主要计算参考图片列表L0和列表L1中的两个候选块之间的失真。

如下图所示,对比初始MV(黑色块)计算周围的每个MV候选(红色块)之间的SAD 。最小的SAD的MV候选即为更好的MV,生成双向预测信号。

在这里插入图片描述
总体来说,就是在预测出的MV周围,找到更好的MV取代之。

1 使用条件

在VVC中,DMVR可以应用于使用以下模式和功能编码的CU:
1、双向预测的merge模式;
2、两个参考帧不同(一前一后);
3、两个参考帧到当前图片的距离相同(即POC差相等);
4、两个参考帧均为短期参考帧;
5、CU有超过64个亮度像素(边长为4这种太小的块不用);
6、CU高度和CU宽度均大于或等于8个亮度样本;
7、BCW权重相等;
8、当前块未启用WP;
9、当前块不使用CIIP模式

2 两种MV的不同作用

后面将通过DMVR处理获得的改进的MV称为细化后的MV。
1、原始MV用于DBF过程,还用于未来CU编码的空间运动矢量预测。
2、细化后的MV用于生成帧间预测样本,还用于时间运动矢量预测以用于将来的图片编码。

3 使用过程

在DVMR中,搜索点围绕初始MV,遵守镜像规则。即由DMVR检查的任何点(由候选MV对(MV0,MV1)表示)都遵循以下两个式子:
在这里插入图片描述

3.1 搜索过程

其中MV_offset表示参考帧之一中初始MV和细化MV之间的偏移。细化搜索范围是来自初始MV的两个像素精度。搜索包括整像素搜索阶段和分像素细化阶段。

1、整像素搜索阶段:25点全搜索。首先计算初始MV对的SAD。如果初始MV对的SAD小于阈值,则终止DMVR的整像素搜索。否则,将按照光栅扫描顺序计算并检查其余24点的SAD。选择SAD最小的点作为整数样本偏移搜索级的输出。
为了减少DMVR改进不确定性的损失,提出了在DMVR过程中更偏向于使用原始MV。初始MV候选所引用的参考块之间的SAD降低了SAD值的1 /4。

2、分像素细化阶段:整像素搜索之后是分像素细化。基于整像素搜索阶段的输出,有条件地调用分像素细化:当整像素搜索阶段在第一次迭代或第二次迭代搜索中以具有最小SAD的中心终止时,才进一步应用分数样本细化。
为了节省计算复杂度,分像素细化是通过使用参数误差表面方程式(即下图算式),而不是通过SAD比较进行额外搜索来得出的。
在这里插入图片描述
其中(xmin,ymin)对应于成本最小的分数位置,C对应于最小成本值。通过使用五个搜索点的成本值求解上述方程,可计算出(xmin,ymin)为:
在这里插入图片描述
由于所有成本值均为正且最小值为E(0,0),因此xmin和ymin的值会自动限制在8到8之间。这对应于VVC中具有1/16像素MV精度的半像素偏移。将计算出的小数(xmin,ymin)加到整数距离细化MV中,以获得子像素精确的细化增量MV。

3.2 双线性插值和像素填充

在VVC中,MV的分辨率为1/16像素精度。使用8抽头插值滤波器对分像素精度的样本进行插值。在DMVR中,搜索点围绕初始分像素MV,具有整数采样偏移,因此对于DMVR搜索流程,需要对那些小数位置的采样进行插值。为了降低计算复杂度,双线性插值滤波器用于生成分像素精度样本,以用于DMVR中的搜索过程。另一个重要的影响是,通过使用双线性滤波器,在2个样本的搜索范围内,与正常的运动补偿过程相比,DVMR不会用到更多的像素。在通过DMVR搜索过程获得精确的MV后,将使用常规的8抽头插值滤波器来生成最终预测。
为了不使更多的参考像素访问正常的运动补偿过程,将从那些在界内的像素填充那些出界了的像素,这些像素对于基于原始MV的插值过程不是必需的,而对于基于细化MV的插值过程所必需的。

4 块限制

最大DMVR处理单元当CU的宽度和/或高度大于16个亮度样本时,它将进一步分成宽度和/或高度等于16个亮度样本的子块。 DMVR搜索过程的最大单位为16x16

猜你喜欢

转载自blog.csdn.net/weixin_42979679/article/details/103260000