WebM 技术解密:VP8 帧内预测与帧间预测

我们继续 WebM 技术系列文章。我这次讨论 VP8 视频编码中预测方法的使用,尤其着重于 VP8 所特有的 TM_PRED 与 SPLITMV 模式。

首先说说相关背景。要编码一个视频帧,像 VP8 这样基于块的编码将首先把该帧切割为较小的部分,称作“宏块”(macroblocks)。在各宏块内部,编码器可以根据之前处理的宏块来预测冗余运动与色彩信息。冗余数据将从块中剔除,从而实现更高效的压缩。

宏块运动分析
图像作者为 Fido Factor,依据《知识共享 署名 授权许可》发布
基于 flickr 上的作品制作

VP8 编码器采用两类预测:

  • 帧内预测Intra prediction)利用单个视频帧中的数据
  • 帧间预测Inter prediction)利用之前编码的帧中的数据

剩下的信号数据随后将采用其他技术编码,如变换编码

VP8 帧内预测模式

VP8 帧内预测模式用于三类宏块:

  • 4×4 明度块(luma)
  • 16×16 明度块
  • 8×8 色度块(chroma)

这些宏块共用四种常见的帧内预测模式:

  • H_PRED (水平预测)。将块的每列使用左列(L)数据的副本进行填充。
  • V_PRED (垂直预测)。将块的每行使用上列(A)数据的副本进行填充。
  • DC_PRED (DC 预测)。将块使用 A 上列的像素与 L 左列的像素的平均值进行填充。
  • TM_PRED (TrueMotion 预测)。该模式因 On2 Technologies 所开发的压缩技术得名。在 A 行与 L 列以外,TM_PRED 利用了所在块左上方的像素 PA中的像素(从 P 开始)水平方向的差异使用 L 中的像素进行扩展,以此作为各行的开始。

针对 4×4 明度块,还有六种与 V_PRED 和 H_PRED 类似用于预测不同方向像素的帧内模式。这些模式在本帖子所阐述范围之外,不过如果您感兴趣,可以在 VP8 位流指南中了解到更多。

如前文所述,TM_PRED 模式是 VP8 所独有的。下图以一个 4×4 块的像素作为例子,说明 TM_PRED 模式如何工作:
TM_PRED 模式
图中 CAxLx 均代表之前编码过的块的像素值的重组,X00X33 代表当前块的预测值。TM_PRED 采用下述公式计算 Xij

Xij = Li + AjC (i, j=0, 1, 2, 3)

尽管上面的例子使用的例子是 4×4 的块,TM_PRED 模式对 8×8 与 16×16 的块采用同样的方式运算。

TM_PRED 是 VP8 中较常用的帧内预测模式之一,对于常见的视频序列,该模式在所有帧内编码的块中通常用到了20% 到 45%。总体来说,与其他帧内预测模式相结合,TM_PRED 帮助 VP8 获取非常高的压缩率,尤其是针对关键帧这样只能使用帧内模式压缩的帧(关键帧的特性决定了它们难以参照之前编码的帧)。

VP8 帧间预测模式

VP8 中,帧间预测模式仅用于补间帧(inter frame,即 非关键帧)。对 VP8 的交互帧而言,通常可以利用前三个已经编码的参考帧进行预测。通常,帧间预测块的构建要用运动向量来复制前三帧之一中的一块。该运动向量指向要复制的像素块的位置。在大多数视频压缩方案中,相当一部分的数据量花在编码运动向量上;这部分数据量对于低数据率编码的视频而言会非常大。

同前几版的 VPx 编码类似,VP8 通过重新利用相邻近宏块(包含一个 16×16 明度块与两个 two 8×8 色度块的宏块)中的向量非常有效地编码运动向量。VP8 在帧间预测模式的总体设计中采用了类似的策略。例如, “NEAREST” 和 “NEAR” 预测模式利用了相邻宏块的最后两个非零运动向量。这些帧间预测模式可以与三种不同的参考帧相结合利用。

此外,VP8 有一种非常完备灵活的帧间预测模式,称作 SPLITMV。该模式设计用来将宏块灵活分割为子块以进行更准确的帧间预测。当宏块中物体的运动特性不同时,SPLITMV 非常有用。在使用 SPLITMV 模式编码的宏块中,每个子块都有自己的运动向量。与在宏块级别重新利用运动向量这一策略类似,子块也可以利用当前块上方或左边的周边子块中的运动向量。该策略非常灵活,可以有效编码任意形状的子宏块分割,实践结果也证实了这一点。这是一个 16×16 明度像素的宏块被分割为16 个 4×4 块的例子:

SPLITMV 模式

图中 New 代表使用新运动向量编码的4×4 块,而 LeftAbove 分别代表使用左侧或上方块的运动向量编码的4×4 块。而这个例子有效地将16×16 的宏块分割为 3 个运动向量不同的不同部分(如下图中 123 所示):

通过有效利用帧内与帧间预测模式,WebM 编码器得以实现适应广阔材料源的高压缩质量。如果您希望深入探究 VP8 预测模式,请阅读 VP8 位流指南或者研究 VP8 源码树中的 reconintra.crdopt.c 两个文件。

Yaowu Xu, Ph.D. 是 Google 的编解码器工程师。

原文链接:Inside WebM Technology: VP8 Intra and Inter Prediction by Lou Quillio
本文译者:@xslidian

发表评论

电子邮件地址不会被公开。 必填项已用*标注