AVS2中的预测编码(一):帧内预测

预测编码是目前应用最广泛的数据压缩技术,也是主流视频压缩标准里的关键技术之一。它利用视频信号在时域和空域的相关性,运用已重建信息和预测器对未编码信息进行预测,只编码信号的原始值和预测值之间的差值,从而减少冗余,达到提高压缩效率的目的。视频编码标准中的预测技术分为两类:用于消除空域冗余的帧内预测和用于消除时域冗余的帧间预测。

在AVS2中预测方式是基于编码单元CU决定的。CU会被进一步划分为若干预测单元PU,再进行预测模式的决策。对于帧内预测,编码器要选出率失真代价最小的预测模式;对于帧间预测,编码器利用运动估计选出最佳的运动矢量和参考帧。

1.  亮度分量的帧内预测

在AVS2的亮度分量帧内预测中,PU的划分方式在方形的基础上引入了非方形的划分。非方形的划分的帧内预测又被称为短距离帧内预测(Short Distance Intra Prediction, SDIP),相对方形划分,SDIP中平均预测距离变短,有利于提高预测精度。需要注意的是,在帧内预测中,SDIP只适用于16×16和32×32大小的CU。

AVS2支持的33种帧内预测模式,相比上一代标准AVS和H.264/AVC,AVS2引入了更多的预测方向,而且与H.265/HEVC不同的是,AVS2支持的预测方向角度范围更广。具体如下:

图1  亮度分量的帧内预测模式

帧内预测的参考像素来自左下、左、左上、上、右上方向相邻块的边界位置重建像素,参考像素的取点范围跟PU大小有关,具体如下图。若指定位置的参考像素不存在或者尚未被重建,则通过其相邻参考像素值来填充或者标记为不可用,参考像素的填充策略为标准定义,且编解码器保持一致。

图2  帧内预测的参考像素

1.1  DC预测模式

图3  DC预测模式

DC预测即为均值预测,所有像素点预测值均为参考像素点的均值。对于M×N的预测单元PU,所有像素点的预测值取PU左侧和上方相邻点的平均值。即

其中,C表示预测单元PU内像素点的预测值,V表示PU左侧相邻点的像素值,H表示PU上方相邻点的像素值。如果PU左侧和上方不存在相邻像素点,则给C赋予一个默认值。

1.2  Plane预测模式

图4  Plane预测模式

在Plane模式下,预测单元PU的像素值由左侧和上方相邻点通过线性插值得到。

其中,a,b和c为M,N的大小以及相邻像素点的值有关。

1.3  Bilinear预测模式

图5  Bilinear预测模式

Bilinear模式与前两种模式相比要复杂一些。假设像素点C为PU中的待预测像素点,A、H、B、G分别为PU上方和左侧的相邻像素点,E和F分别为C所在PU中最下方和最右侧的待预测像素点,其中G、F和C在同一行,H、E和C在同一列。先根据A和B的值线性加权得到PU右下角的待预测像素点D的预测值,然后根据E到B和D的距离,线性加权计算出E的预测值;同理根据F到A和D的距离计算出F的预测值。最后根据C到H、E、G、F的距离线性加权得到C的预测值。

1.4  垂直预测模式和水平预测模式

图6  垂直预测模式和水平预测模式

对于垂直模式直接使用最上方的相邻像素点的值作为PU中整列像素点的预测值。同理,水平模式使用最左侧相邻像素点的值作为整行像素点的预测值。

1.5  角度预测模式

AVS2中,包括垂直模式和水平模式两种特殊的角度模式在内,共有30种角度模式,每个角度均是7.5度的整数倍。每个模式的预测方向由向量(dx, dy)确定。

图7  利用(dx, dy)定义的角度预测模式

模式3-11只使用上方的相邻像素点进行预测;模式25-32只使用左侧的相邻像素点进行预测。对于模式13-23,一部分像素点利用上方的相邻像素点进行预测,一部分利用左侧的像素点进行预测。预测过程为,利用预测方向(dx, dy)确定预测像素位置,由相邻4个参考像素采用一个4抽头的线性滤波器计算得到预测值,其中分像素精度为1/32。计算公式为

其中,A,B,D,E是最近的整像素相邻像素点,ref(c)是PU中像素点的预测值,offset是角度预测模式对应的分像素偏移量,它的取值与模式和待预测的像素点位置有关。

2.  色度分量的帧内预测

和亮度分量相比,色度分量的帧内预测要简单许多,没有非方形的划分方式,而且只包含5种模式:DC模式、水平预测模式、垂直预测模式、Bilinear预测模式和独特的亮度导出模式(DM, Derived Mode)。在亮度导出模式下,色度分量将选择和亮度分量第一个PU相同的预测模式。由于色度只有方形的划分方式,所以计算过程会简单一些。

3.  帧内预测模式的编码

选出帧内预测的模式后,要将预测模式写进码流里传输到解码端。为了节省码率,AVS2对预测模式的传输进行了优化。

在亮度分量上,AVS2将待编码块左侧和上方相邻块的帧内预测模式作为两个最有可能的模式MPM(Most Probable Mode),假设模式编号分别为MPM0和MPM1, 模式编号小的一个为MPM0,大的为MPM1。若相邻块不存在,就将其模式值设为0,即DC模式。如果左侧和上方的相邻块选定的模式都是DC模式,就将MPM0和MPM1的值分别设为0和2,即DC模式和Bilinear模式。如果MPM0和MPM1的值相同,且不为0,则将MPM0设为0。如果待编码块选出的模式序号与MPM0一样,那么就将0写入码流来传输待编码块的帧内模式,如果与MPM1一样,就将1写入码流。如果和MPM0、MPM1都不一样,剩下的31种模式只需要5个bit就能表示。假设待编码块选出的模式为ModeC,具体规则如下:

在色度分量上,选择亮度分量上第一个PU的预测模式作为参考值,设为LumaPred。 LumaPred映射为色度分量模式的序列号,记为PredC。LumaPred为DC模式、水平模式、垂直模式和Bilinear模式时,要分别映射为1、2、3和4,其他模式映射为0。假设色度分量选出的帧内预测模式为ModeC。如果PredC为0或者ModeC小于PredC时,直接将ModeC的需要写入码流。否则,将ModeC-1写入码流。

总结

与上一代AVS标准相比,AVS2的帧内预测技术更加灵活,不仅引入了非方形PU的划分方式,而且有更多的预测模式可供选择。针对平坦区域,可以选择DC模式、Plane模式或者Bilinear模式。针对纹理区域,又有30种角度模式(包含垂直模式和水平模式)可以应用。在预测模式编码方面也引入了多种高效的预测和编码方法。因此,AVS2帧内预测技术的效率才能大幅提升。

(本文为原创作品,转载请注明来源)