AVS2中的预测编码(二):帧间预测

AVS2的帧间预测技术原理与其他基于块的编码标准类似,也是利用视频图像在时域上的相关性,将已重建的图像做参考,对待编码图像进行预测,从而去除时域上的冗余。除了传统的P帧和B帧,AVS2还引入了前向多假设预测F帧。AVS2的帧间预测模式有八种划分方式:2N×2N、2N×N、N×2N、N×N、2N×nU、2N×nD、nL×2N、nR×2N,skip和direct模式只能在2N×2N的模式上使用。

运动矢量预测和编码

基于块的编码标准在传输时为了节省码率,并不会直接传输参考块的运动矢量MV(Motion Vector),而是先计算一个运动矢量预测值MVP(Motion Vector Prediction),然后只传输运动估计得到的运动矢量与这个预测值的差值MVD(Motion Vector Difference)以及预测值的模式编码。在解码端,可以按照同样的模式得到预测值MVP,加上传输过来的差值MVD,就能得到最终的运动矢量MV。因此,运动矢量预测的准确度尤为重要,MVP预测得越准确,MVD就越小,编码所需的码率也越少。AVS2中有四种预测模式:均值模式、空域预测模式、时域预测模式、空域和时域混合预测模式。空域预测模式只在F帧和B帧的skip模式和direct模式的空域推导时使用,时域推导时使用时域预测模式或者空域和时域混合预测模式。其他情况下使用均值预测模式。

为了进一步节省码率,AVS2采用了一种渐进式的运动矢量精度自适应方法PMVR(Progressive Motion Vector Resolution)。先将MVP定位到最接近的整像素位置,如果MV和MVP之间的距离小于某一个阈值时,就使用1/4像素精度的MVD,否则就使用1/2像素精度的MVD。

B帧的帧间预测

B帧可向前和向后各参考1帧图像。与AVS1不同的是,AVS2中B帧本身也可以被其他图像参考。B帧的预测方向包含了传统的前向、后向和双向,还具有AVS标准特有的对称预测。对称预测是一种特殊的双向预测,它只需要记录前向的运动矢量,然后利用前向运动矢量推导出后向运动矢量。除了普通的帧间预测模式可以使用4种不同的预测方向外,在Skip/Direct模式的空域预测中,也能使用上述4种预测方向。

P/F帧的帧间预测

AVS2中的P帧同传统的P帧相同,而F帧则相当于使用了多假设预测技术的P帧。F帧可以使用两个参考块通过求平均来得到一个预测块。在时域多假设预测中,这两个参考块位于不同参考帧上;而在空域多假设预测中,两个参考块位于同一参考帧中。

Skip/Direct模式

图1 相邻块

P/B/F帧的Skip/Direct模式均能使用时域预测,即根据后向参考帧或第一个前向参考帧上,相同位置的块的运动矢量来推导当前块的运动矢量。 同时,AVS2还增加了F帧的加权Skip预测,以及B帧和F帧Skip/Direct模式的空域预测。在加权Skip预测中,除按照传统时域预测得到的参考块外,还对传统时域预测得到的MV进行缩放,在第二个参考帧上再取一个参考块,两者求平均,得到预测块。在Skip/Direct模式的空域预测中,按照上图中F-G-C-A-B-D的顺序对待编码块周围的相邻块进行搜索,选取一个或两个预测模式相同的相邻块作为候选块,然后将候选块的运动信息作为当前块的运动信息。

时域多假设预测模式

时域多假设预测模式融合了前向两个预测块,预测块在不同帧上。假设参考块1是第一个参考帧中的最佳匹配块,运动矢量为MV1,那么第二个参考帧中的最佳匹配块不需要利用运动估计得到,只需要根据第二个参考帧到当前帧和上一个参考帧的距离,利用线性变换就可以生成参考块2的运动矢量MV2。即MV2=f(D1,D2,MV1),其中f为线性方程。然后将两个预测块加权平均,作为当前块的预测值。这样就只需要编码一个MVD和参考图像索引。

图2 时域多假设预测模式

空域多假设预测模式

空域多假设预测预测模式又叫方向性多假设预测(DMH,Directional Multi-Hypothesis Prediction)。先推导出一个初始预测点,然后在初始预测点周围选出两个待参考块进行融合,待参考块和初始预测点在同一条直线上,如下图所示,这样可以减少预测的复杂度。同一像素精度下有4种方向:水平、垂直、45°和135°模式。AVS2在实施DMH时,选用1/2像素和1/4像素精度,再加上初始预测点共9种预测模式进行比较,选出最优的预测模式。

图3 DMH模式

分像素插值

图4 整像素和分像素点

在AVS2中,亮度分量运动矢量的精度为1/4像素,分像素由8抽头的插值滤波器计算得到。如下图所示,大写字母表示整像素的位置,小写字母表示分像素的位置。对于分像素a、b、c,使用横向的一维插值滤波器对距离最近的8个整像素进行滤波;对于分像素d、h、n使用纵向的一维插值滤波器对距离最近的8个整像素进行滤波;剩下的分像素是先对横向最近的整像素点使用横向插值滤波,然后再对中间值使用纵向插值滤波。

色度分量的预测精度为1/8像素,分像素由4抽头的插值滤波器计算得出。假设Ax,y表示位于图像坐标(x,y)处的色度整像素点;ax,y(px,py)表示Ax,y对应位置的63个分像素点,其中(px,py)表示分像素位置,取值范围为[0,7]。对于px或者py等于0的分像素点,可以直接用色度整像素插值得到,对于px和py都不为0的位置,使用整像素行(即py等于0)上的分像素进行计算。

其中,ax,y(px,0)为整像素行上的分像素的临时值,定义为:

图5 色度差值

参考帧管理

视频帧的编码顺序、参考关系等对编码效率有很大影响,因此,如何设计参考帧管理机制直接关系到编码性能的高低。为了满足不同应用场合对编码结构和参考结构的要求,AVS2中采用了一种灵活的参考帧管理方案——参考配置集技术RCS(Reference Configuration Set)。编码端在每个序列头中写入一套参考配置集,设定编码图像组GOP(Group of Picture)的大小,在每幅图像头中传递该图像对应的配置信息,包括图像是否可被参考标记、参考帧数量、编码顺序COI(Coding Order Index)、显示顺序POI(Playing Order Index)、QP位移、需要移出解码图像缓冲区DPB(Decoder Picture Buffer)的图像数目以及当前图像和缓冲区中图像的DOI差值等;解码端通过序列头和图像头中的信息就能直接确定参考帧队列顺序和显示输出顺序等,从而正确解码。

COI用来表示编码顺序和参考图像,由于B帧可以后向参考,所以编码顺序和实际的显示顺序会有所不同,POI用来表示实际的显示顺序。需要移出DPB的图像数目和当前图像与DPB中图像DOI的差值可以用来管理DPB区。

总结

AVS2的帧间预测不仅引入了新的参考帧类型F帧,还对原有的参考模式进行了增强,使其更加充分得利用了待编码块和重建块在时域和空域上的相关性。除此之外,新的参考帧管理方案也更加灵活,进一步提高了AVS2的编码效率。