AV1的运动模型(全局运动GM和块局部扭曲LM)

物体的运动是复杂的,以前的那些视频编码器里仅靠刚体平动模型不足以充分地表示物体运动。

正如H.266帧间预测里引入AFFINE模式,在AV1视频编码里有帧级别的Global Motion,GM全局运动和编码块级别的Local Warp,LW局部扭曲运动模型,它们都使用了更加复杂和更多参数的运动模型。

如果用x,y来表示当前帧里的像素坐标,xr,yr表示参考帧里的对应像素坐标,一个基本的9个参数的二维运动模型如下:

图片

上面的h矩阵是运动模型参数,AV1视频编码标准里的帧全局运动GM和块局部扭曲LM都是围绕它进行。

01 全局运动GM

在AV1编码标准中,带有参数的GM模型一共有3种,分别是AFFINE模型,Rotation-Zoom模型和TRANSLATION平动模型。

图片

6个参数的AFFINE模型是:

图片

4个参数的Rotation-Zoom模型是:

图片

2个参数的平动模型,即普通的ME模型是:

图片

02 块级局部扭曲模型

在AV1里面,编码块级的运动模式有三种,分别是SIMPLE, OBMC和LW,其中LW局部扭曲模型使用的实际还是AFFINE模型,和H.266里面一样通过(具有相同参考帧的)相邻块的运动信息来获取AFFINE模型的参数。

图片

局部扭曲6个参数AFFINE模型是:

图片

其中h13和h23是编码块的平动分量,也就是块的MV信息,这个是需要写进码流的。如果当前编码块使用了LW工具,那么还需要额外传一个flag,而剩下的4个模型参数则可以由解码器使用最小二乘法估计得到

那编解码器是如何得到这4个模型参数呢?

图片

假设当前块和其参考帧里面的对应块的中心位置分别为:

图片

把它带入AFFINE运动模型有:

图片

同样假设编码块7的中心为C7,有:

图片

C7减去C有:

图片

调整右边h和x的位置以后可以写作:

图片

同理,把块4,块6和块7的坐标写到一起有:

图片

上式也可以写作:

图片

要求的4个模型参数可以分成2个二维最小二乘法问题(最小二乘法的矩阵解法),即:

图片

AFFINE变换看成2次独立的shear变换(shear是把当前2维图像的一边进行固定,然后向某个方向拉伸),可以得到:

图片

首先是垂直shear

图片
图片

然后是水平shear,

图片
图片

2次shear组合起来就是:

图片

求解alpha,beta,gamma以及delta就是求解那4个模型参数。

03 模型参数的求解

全局运动模型参数求解

当前帧和参考帧这两帧之间的GM参数的求解使用的是特征匹配和模型拟合方法。

首先对候选的每个参考帧,计算当前帧和参考帧的FAST特征。如果能够找到足够多的感兴趣点,尝试去将当前帧里面的这些点和参考帧里面的对应点进行匹配,计算相关性大小。

然后再使用RANdom SAmple Consensus,RANSAC算法通过迭代方式得到模型参数。

有了全局运动模型参数,我们按照标准要求将其写进码流里面即可。图片

局部扭曲模型参数求解

在SVT-AV1代码里,局部扭曲模型用在编码块边长大于8的时候,模型参数的求解是在函数warp_motion_parameter函数里,主要包括wm_find_sample函数,select_samples函数和svt_find_projection函数。

前者函数负责找到上边,左边,左上和右上非重叠相邻块中心点的位置坐标,使用的是1/8像素精度。然后对这几个相邻候选块根据当前块和相邻块的MV差值进行一个筛选,留下那些合适的。最后的函数使用最小二乘法根据候选的相邻块像素得到扭曲模型参数,以及两次shear的alpha,beta,gamma和delta值。

是不是还不够清楚,其实大家看看上面的局部扭曲模型参数推导过程就知道了。

图片

只要我们知道了当前块和它3个相邻块中心位置的坐标,把它们带入到上面的式子就可以求出h的4个参数了。在得到块的4个模型参数以后,又该如何呢?其实和我们得到一个编码块的普通MV一样,我们获取运动模型参数最终的目的是,去参考帧里面对应位置,获取预测像素值,也叫运动补偿MC过程,通常需要插值滤波操作。这个过程是在svt_av1_warp_affine函数中。

图片

参考文献

1.E. Rosten, R. Porter, and T. Drummond, “Faster and better: A machine learning approach to corner detection,” IEEE transactions on pattern analysis and machine intelligence, vol. 32, no. 1, pp. 105–119, 2010.

2.https://gitlab.com/AOMediaCodec/SVT-AV1/-/blob/master/Docs/Appendix-Global-Motion.md

3.https://gitlab.com/AOMediaCodec/SVT-AV1/-/blob/master/Docs/Appendix-Local-Warped-Motion.md

4.Sarah Parker, Yue Chen, David Barker, Peter de Rivaz, Debargha Mukherjee,“Global and Locally Adaptive Warped Motion Compensation in Video Compression,” IEEE International Conference on Image Processing (ICIP), pp. 275-279, 2017.

作者:手撕编解码专注于视频编解码算法的优化和实现。左手文档,右手代码。

版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。

(0)

相关推荐

发表回复

登录后才能评论