编解码技术:H264 - 帧内预测

在帧内预测模式中,预测块 P 是基于已编码重建块和当前块形成的。对亮度像素而言,P 块用于 4×4 子块或者 16×16 宏块的相关操作。4×4 亮度子块有 9 种可选预测模式,独立预测每一个 4×4 亮度子块,适用于带有大量细节的图像编码;16×16 亮度块有 4 种预测模式,预测整个 16×16 亮度块,适用于平坦区域图像编码;色度块也有 4 种预测模式,类似于 16×16 亮度块预测模式。编码器通常选择使 P 块和编码块之间差异最小的预测模式。

4×4 亮度预测模式

如图 1 所示,4×4 亮度块的上方和左方像素 A~Q 为已编码和重构像素,用作编解码器中的 预测参考像素。a~p 为待预测像素,利用 A~Q 值和 9 种模式实现。其中模式 2 (DC 预测) 根据 A~Q 中已编码像素预测,而其余模式只有在所需预测像素全部提供才能使用。图 2 箭头表明了每种 模式预测方向。对模式 3~8,预测像素由 A~Q 加权平均而得。

图 1
图 1 : a) 利用像素 A-Q 对方块中 a-p 像素进行帧内 4×4 预测
  1. 帧内 4×4 预测的 8 个预测方向
图 2
图 2 : 4×4 亮度块预测模式

例如,模式 4 中,p = round(b/4+C/2+D/4)

表 1 给出了这 9 种模式的描述。

表 1 : 预测模式描述
模式 描述
模式 0(垂直) 由 A、B、C、D 垂直推出相应像素值
模式 1(水平) 由 I、J、K、L 水平推出相应像素值
模式 2(DC) 由 A~D 及 I~L 平均值推出所有像素值
模式 3(左下对角线) 由 45° 方向像素内插得出相应像素值
模式 4(右下对角线) 由 45° 方向像素内插得出相应像素值
模式 5(右垂直) 由 26.6° 方向像素值内插得出相应像素值
模式 6(下水平) 由 26.6° 方向像素值内插得出相应像素值
模式 7(左垂直) 由 26.6° 方向像素值内插得出相应像素值
模式 8(上水平) 由 26.6° 方向像素值内插得出相应像素值

16×16 亮度预测模式

宏块的全部 16×16 亮度成分可以整体预测,有 4 种预测模式,如表 2 和图 3 所示。

图 3
图 3 : 16×16 预测模式
表 2 : 16×16 预测模式
模式 描述
模式 0(垂直) 由上边像素推出相应像素值
模式 1(水平) 由左边像素推出相应像素值
模式 2(DC) 由上边和左边像素平均值推出相应像素值
模式 3(平面) 利用线形 "plane" 函数及左、上像素推出相应像素值,适用于亮度变化平缓区域

8×8 色度块预测模式

每个帧内编码宏块的 8×8 色度成分由已编码左上方色度像素预测而得,两种色度成分常用同一 种预测模式。4 种预测模式类似于帧内 16×16 预测的 4 种预测模式,只是模式编号不同。其中模式 0(DC)、模式 1(水平)、模式 2(垂直)、模式 3(平面)。

信号化帧内预测模式

每个 4×4 块帧内预测模式必须转变成信号传给解码器。该信息可能需大量比特表示,但邻近块的帧内模式通常是相关的。例如,A、B、E 分别为左边、上边和当前块,如果 A 和 B 预测模式为模式 1,E 的最佳预测模式很可能也为模式 1。所以通常利用这种关联性信号化 4×4 帧内模式。对每个当前块 E,编码器和解码器计算最可能预测模式和 A、B 预测模式的较小者。如果这些相邻块不被提供(当前片外或者非帧内 4×4 模式),相应值 A 或 B 置 2(DC 预测模式)。编码器分配每个 4×4 块一个标志 prev_intra4×4_pred_mode。该标志置 1 时,使用最可能预测模式;置 0 时,使用参数 rem_intra4×4_pred_mode 来指明模式变化。rem_intra4×4_pred_mode 小于当前最可能模式时,预测模式选 rem_intra4×4_pred_mode。否则预测模式为 rem_intra4×4_pred_mode+1。rem_intra4×4_pred_mode 值为 0~7。

举例:块 A 和 B 分别用模式 3 和模式 1 预测。最可能模式则为 1,prev_intra4×4_pred_mode 置 0,rem_intra4×4_pred_mode 被传送。取决于 rem_intra4×4_pred_mode 的值,表 6.5 所示的 8 种预测模式中的一种被选定。

表 3 : 预测模式选择(最可能模式为 1)
表 3 : 预测模式选择(最可能模式为 1)

帧内 16×16 亮度和色度预测模式在宏块头中指明。 这里需说明的是,包括帧内预测的所有预测都不能跨片边界预测,每片必须独立编解码。

帧内预测以绝对误差和(SAE, Sum of Absolute Errors)为标准选取最佳预测模式,使预测帧更加接近原始帧,减少了相互间的差异,去除时间上的数据冗余,提高了编码的压缩效率。帧内预测中,块或宏块利用已编码并重建的块作为参考,进行预测。具体编程时,编码器通过计算并比较各种模式下的 SAE,选取 SAE 值最小的模式作为最佳预测模式,并将该模式信息化,同时传送至解码端,以供正确解码。

参考资料

  • [1] [《 新一代视频压缩编码标准 -- H264/AVC(第二版)》]