av1编码--非方向帧内预测
目录
4.3 非方向帧内预测
1. DC_PRED预测模式
2. SMOOTH系列预测模式
3. PAETH_PRED预测模式
4.3 非方向帧内预测
除了方向帧内预测之外,AV1 还定义了 5 种非方向帧内预测模式来模拟图像块的平滑区域。这 5 种非方向预测模式分别是DC_PRED、SMOOTH_PRED、SMOOTH_H_PRED、SMOOTH_V_PRED和PAETH_PRED。
1.DC_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]均不可用,那么
2.SMOOTH系列预测模式
预测模式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所示为4x8变换块在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-3SMOOTH_PRED的水平和垂直权重选择方式
水平方向权重 | 垂直方向权重 | ||
|
|
|
|
2 |
| 2 |
|
3 |
| 3 |
|
4 |
| 4 |
|
5 |
| 5 |
|
6 |
| 6 |
|
- 对于
SMOOTH_V_PRED预测模式,预测值p[col][row]的计算方式如下:
- 对于
SMOOTH_H_PRED预测模式,预测值p[col][row]的计算方式如下:
- 对于
SMOOTH_PRED预测模式,预测值p[col][row]的计算方式如下:
3.PAETH_PRED预测模式
在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]:
也就是说,PAETH_PRED预测模式从参考像素AboveRow[col]、LeftCol[row]和AboveRow[-1]中选择与base值最接近的参考像素作为预测值。这种非线性的预测像素生成方式可以控制预测方向,使其与具有最高相关性的纹理方向对齐。
为了传输非方向帧内预测,AV1 仍然使用语法元素intra_frame_y_mode和uv_mode来指明亮度和色度的非方向帧内预测模式
