为什么视频编解码器中不使用矢量量化器?

信息处理 视频压缩 量化
2022-02-02 11:12:33

使用矢量量化器(VQ),图像样本组(或运动补偿和/或变换数据)可以量化为矢量。我很好奇为什么在H.264/AVCH.265/HEVC等现代、非常流行的视频编解码器中不首选 VQ 。快速的 Wikipedia 搜索显示有一些编解码器(例如Daala)使用 VQ。但是,就压缩效率而言,最好的编解码器不会使用它们。是不是因为很难设计一个好的码本和高效的码本搜索?

2个回答

从理论上讲,VQ 总是优于标量量化 (SQ)。但是,正如您已经提到的,VQ 的复杂度高于 SQ 的复杂度。它与向量的维数一起呈指数增长。因此,问题是如何设计一个实用的编码系统,它可以在给定的复杂度约束下提供最佳的率失真性能。

码本的设计是 VQ 中另一个非常重要的问题。在 VQ 中使用码本的主要实际问题是:

  • 如何为大量图像生成通用码本。
  • 如何根据各种速率失真要求缩放码本。
  • 多少存储空间对于将码本存储在内存中是合理的。

所有这些实际限制使得 VQ 难以通过标准化过程强制执行。

稀疏字典字典学习字典编码在降噪(去噪)方面已经很流行(并且表现出相当高的性能),它基本上是一种矢量量化器。构建码本(字典)需要时间,我不知道它对于去噪应用程序通常会有多大,但如果它是离线计算的,并且对于编码器和解码器都是已知的,那么它不需要作为视频流的一部分发送,然后码本大小不会影响流大小或比特率。如果码本太大,那么在 RAM 受限的设备上解码可能是不可行的。此外,如果太大,我们可能会开始出现缓存未命中,这可能会影响性能。

此外,当今几乎所有的高性能视频编码器都是结合了变换编码和运动编码的混合编码器。人们可能需要找到一种将矢量量化与混合编码概念相结合的好方法。如何做到这一点对我来说并不明显。VQ 应该仅用于 I 帧图像编码还是以某种方式对运动场进行编码?