WebM 技术解密:VP8 替补参考帧

自一周前 WebM 项目开源以来,我们看到有很多博文与文章讨论其处理能力。作为一个开放的项目,我们欢迎有助于该编码提升的技术复查与贡献。我们从大量测试中得知,VP8 能够胜任或超越其他领先编码,但为了获取最佳结果,很值得深入了解该编码如何工作。作为系列博文中的第一篇,我想讲解 VP8 的一些底层技术,以及相关的示例与标准。

替补参考帧(alternate/alternative reference frame)是 VP8 中最令人兴奋的质量创新之一。让我们深入研究一下 VP8 如何使用这些帧提高预测能力,从而提升整体视频质量的。

VP8 中的替补参考帧

VP8 使用三类参考帧交互进行预测:最后一帧,“金”帧(从任意远的过去以来解压后的数据所占的一帧)以及替补参考帧。总体上来说,与很多参考帧的设计相比,这样的设计占用较少的编码器/解码器的内存空间。在视频压缩领域,用超过三个参考帧实现显著的质量增益非常罕见,但这些额外帧占用的内存空间非常可观。

与视频压缩所用的其他类型的参考帧(这些帧会由解码器显示给用户)不同,VP8 替补参考帧会被正常解码,但不会展示给用户。它仅仅用作提升其他已编码的帧的交互预测的参考。因为替补参考帧不被显示,VP8 编码器可以用它们传播任何有利于压缩的数据。例如,VP8 编码器可以根据多个来源帧建立替补参考帧,或者利用数百个不同的视频帧的宏块创建替补参考帧。

当前实现的 VP8 允许两类不同的替补参考帧用法:降噪预测(noise-reduced prediction)以及过去/将来趋势预测(past/future directional prediction)。

降噪预测

替补参考帧以类似其他帧的方式传输、解码,因此它的使用不会给解码增加额外的计算量。然而 VP8 编码器在离线编码中可以自由采用更复杂的处理方法来创建这些帧。替补参考帧的一种应用是用作降噪预测。在这种应用中,VP8 编码器在时间或空间过滤中使用多个输入源帧来建立一个参考帧。这个“无噪”的替补参考帧随后用来提升编码后续帧的预测能力。

您可以通过在 VP8 编码时设置 ARNR 参数使用此功能,其中 ARNR 代表“替补参考降噪(Alternate Reference Noise Reduction)”。使用此参数的两重编码设置示例:

--arnr-maxframes=5 --arnr-strength=3

让编码器使用“5”个连续的输入源帧来生成一个替补参考帧,过滤强度为“3”。这个例子展现了采用这个实验性的“ARNR”功能所产生的质量增益,所用样本为标准的测试剪辑《Hall Monitor》。(图像中各行代表编码的流在多种数据率下的质量。点在 y 轴(PSNR)上越高表明流的画质越高。)

两条曲线 唯一的不同就是 VP8_ARNR 是通过带 ARNR 参数的编码生成的,而 VP8_NO_ARNR 没有该参数。由图像可以看出,降噪预测在编码噪点较多的片源时对压缩质量非常有益。我们才刚刚开始用类似《Hall Monitor》这样的噪点较多的输入剪辑探索这个构思,就已经看到非常强大的提升了。我们感觉在这方面还能做很多。

不使用 B 帧提升预测能力

VP8 中没有 B 帧,这曾激起一些讨论,怀疑关于它达到经得起考验的压缩效率的能力。然而,VP8 编码器能够智能利用“金”参考帧和替补参考帧来弥补此缺陷。VP8 编码器能够选择传输类似“将来”的帧的替补参考帧,对后续帧的编码可以利用过去(上一帧和金帧)和将来(替补参考帧)的信息。这使得编码器不必在解码器中对帧重新排序,就能非常有效地达到类似双向(B 帧)预测的结果。两重编码模式下,VP8 编码器可通过使用启用滞缓编码和自动放置替补参考帧的编码参数提升压缩率:

--auto-alt-ref=1 --lag-in-frames=16

这样使用,VP8 编码器可以在不增加解码器的复杂度的情况下达到更加的预测和压缩效率:

在视频压缩领域,《Mobile and calendar》作为显著受益于 B 帧的使用而为人所知。上图表明使用替补参考帧可以令 VP8 在不用 B 帧的情况下显著受益。

此博客还将发布更多关于 VP8 编码的博文,敬请关注。要获取关于上述编码参数的更多信息以及使用 VP8 编码器的详细说明,请访问我们的网站,或者加入我们的 讨论列表

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

原文链接:Inside WebM Technology: The VP8 Alternate Reference Frame by John Luther
本文编译:@xslidian

2个评论

  1. Pingback: VP8 编解码器优化更新 « WebM 项目

  2. Pingback: mkclean v0.8.4 & mkvalidator v0.3.5 发布 « WebM 项目

发表评论

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