



除了方向帧内预测之外,AV1还定义了5种非方向帧内预测模式来模拟图像块的平滑区域。这5种非方向预测模式分别是DC_PRED、SMOOTH_PRED、SMOOTH_H_PRED、SMOOTH_V_PRED和PAETH_PRED。
在DC_PRED预测模式中,AV1使用当前变换块的左侧和上方参考像素的平均值来生成预测像素值。在DC_PRED预测模式下,预测像素生成过程具体描述如下:
❍如果当前变换块的左侧和上方参考像素AboveRow[0: W -1]和LeftCol[0: H -1]均可用,那么:
❍否则,如果当前变换块的左侧参考像素LeftCol[0: H -1]可用,那么:
❍否则,如果当前变换块的上方参考像素AboveRow[0: W -1]可用,那么:
❍否则,如果AboveRow[0: W -1]和LeftCol[0: H -1]均不可用,那么:
p[col][row] = 1 << (BitDepth-1)
预测模式SMOOTH_V_PRED和SMOOTH_H_PRED分别沿垂直和水平方向使用二次插值方式生成预测值,而预测模式SMOOTH_PRED则使用预测模式SMOOTH_V_PRED和SMOOTH_H_PRED的二次插值结果的平均值生成预测值。用于二次插值的参考像素包括来自顶部和左侧的参考像素以及右上角和左下角的参考像素。具体来讲,SMOOTH_V_PRED使用顶部参考像素AboveRow[col]和左下角像素LeftCol[ H -1]的加权平均作为预测值,而SMOOTH_H_PRED使用左侧参考像素LeftCol[row]和右上角参考像素AboveRow[ W -1]的加权平均作为预测值。SMOOTH_PRED则使用LeftCol[row]、AboveRow[col]、AboveRow[ W -1]和LeftCol[ H -1]这4个参考像素的加权平均作为预测值。图4-12所示为4×8变换块在SMOOTH_PRED预测模式下的预测像素和参考像素之间的位置关系。
图4-12 SMOOTH_PRED预测模式下的预测像素和参考像素之间的位置关系
在预测模式SMOOTH_V_PRED、SMOOTH_H_PRED以及SMOOTH_PRED下,AV1首先根据当前变换块的宽度 W 和高度 H ,使用表4-3中的水平和垂直权重对应关系选择合适的权重数组。表4-3中列出的权重数组是通过二次函数 y = ax 2 + bx + c 拟合得到的,其中 y 是待预测像素位置的权重, x 是待预测像素距离参考像素的距离, a , b 和 c 是拟合参数。由于权重smWeightsX和smWeightsY是通过二次函数拟合得到的,因此预测像素值可以视为使用二次插值来生成的。
表4-3 SMOOTH_PRED的水平和垂直权重选择方式
之后,对于SMOOTH_V_PRED预测模式,预测值p[col][row]的计算方式如下:
s =smWeightsY[row]·AboveRow[col]+(256-smWeightsY[row])·LeftCol[ H -1]
p[col][row]=( s +128)>>8
对于SMOOTH_H_PRED预测模式,预测值p[col][row]的计算方式如下:
s =smWeightsX[col]·LeftCol[row]+(256-smWeightsX[col])·AboveRow[ W -1]p[col][row]=( s +128)>>8
对于SMOOTH_PRED预测模式,预测值p[col][row]的计算方式如下:
s =smWeightsY[row]·AboveRow[col]+(256-smWeightsY[row])·LeftCol[ H -1]+smWeightsX[col]·LeftCol[row]+(256-smWeightsX[col])·AboveRow[ W -1]p[col][row]=( s +256)>>9
在PAETH_PRED预测模式中,AV1使用顶部参考像素AboveRow[col]、左侧参考像素LeftCol[row]和左上角参考像素AboveRow[-1]来生成预测值p[col][row]。图4-13为PAETH_PRED预测模式中参考像素的位置示意图。
图4-13 PAETH_PRED预测模式中参考像素的位置示意图
之后,PAETH_PRED预测模式按照下述公式来生成预测值p[col][row]:
p[col][row] = arg min| x -base|, ∀x∈Λ
Λ= {AboveRow[col],LeftCol[row],AboveRow[-1]}
base = AboveRow[col] + LeftCol[row]-AboveRow[-1]
也就是说,PAETH_PRED预测模式从参考像素AboveRow[col]、LeftCol[row]和AboveRow[-1]中选择与base值最接近的参考像素作为预测值。这种非线性的预测像素生成方式可以控制预测方向,使其与具有最高相关性的纹理方向对齐。
为了传输非方向帧内预测,AV1仍然使用语法元素intra_frame_y_mode和uv_mode来指明亮度和色度的非方向帧内预测模式。