6. 传统视频编码标准
H.261
ITU 编制的 H.261[2] 标准是第一个主流视频压缩标准。它主要针对双工视频会议应用,是为支持 40kpbs~2Mbps 的 ISDN 网络而设计的。H.261 支持 352(288 (CIF) 及 176(144 (QCIF) 分辨率,色度分辨率二次采样为 4:2:0。由于可视电话需要同步实时编解码,因此复杂性设计得较低。由于主要用于对延迟敏感的双向视频,因此 H.261 仅允许采用 I 与 P 帧,而不允许 B 帧。
H.261 采用基于块的 DCT 进行残差信号的变换编码。DCT 把像素的每个 8(8 块映射到频域,产生 64 个频率成分(第一个系数称为 DC,其他的称为 AC)。为了量化 DCT 系数,H.261 在所有 AC 系数中采用固定的线性量化。量化后的系数进行行程编码,其可以按非零系数描述量化的频率,后面跟随一串零系数,在最后一个非零值之后以块代码结束。最后,可变长度编码 (Huffman) 将运行级别对 (run-level pair) 转换成可变长度编码 (VLC),其比特长度已针对典型概率分布进行过优化。
基于标准块的编码最终产生模块化视频。H.261 标准利用环路滤波避免这种现象。在模块边缘采用的简单 2D FIR 滤波器用于平滑参考帧中的量化效应。必须同时在编码器及解码器中精确地对每个比特应用上述滤波。
MPEG-1
MPEG-1[3] 是 ISO 开发的第一个视频压缩算法。主要应用是数字媒体上动态图像与音频的存储与检索,如速率为 1.15Mbps、采用 SIF 分辨率(352(240 - 29.97fps 或者 352(288 - 25 fps)的VCD。MPEG-1 与 H.261 相似,不过编码器一般需要更高的性能,以便支持电影内容的较高运动性而不是典型的可视电话功能。
与 H.261 相比,MPEG1 允许采用 B 帧。另外它还采用自适应感知量化,也就是说,对每个频段采用单独的量化比例因子(或等步长),以便优化人们的视觉感受。MPEG-1 仅支持逐行视频,因此新标准——MPEG2 已经开始做出努力,同时支持分辨率及比特率更高的逐行与隔行视频。
MPEG-2/H.262
MPEG-2[4] 专门针对数字电视而开发,很快成为了迄今最成功的视频压缩标准。MPEG-2 既能够满足标准逐行视频的需求(其中视频序列由一系列按一定时间间隔采集的帧构成),又能够满足电视领域常用的隔行视频的需求。隔行视频交替采集及显示图像中两组交替的像素(每组称为一个场)。这种方式尤其适合电视显示器的物理特性。MPEG2 支持标准的电视分辨率,其中包括:针对美国和日本采用的 NTSC 制式隔行 720(480 分辨率,每秒 60 场,以及欧洲和其他国家采用的PAL 制式的 720(576 分辨率,每秒 50 场。
MPEG-2 建立在 MPEG-1 基础之上,并具备扩展功能,能支持隔行视频及更宽的运动补偿范围。由于高分辨率视频是非常重要的应用,因此 MPEG-2 支持的搜索范围远远大于 MPEG-1。与之前的标准相比,它显著提高了运动估计的性能要求,并充分利用更宽搜索范围与更高分辨率优势的编码器需要比 H.261 和 MPEG-1 高得多的处理能力。MPEG2 中的隔行编码工具包含优化运动补偿的能力,同时支持基于场和基于帧的预测,而且同时支持基于场和基于帧的 DCT/IDCT。MPEG-2 在 30:1 左右的压缩比时运行良好。MPEG-2 在 4-8Mbps 时达到的质量适合消费类视频应用,因此它很快在许多应用中得到普及,如:数字卫星电视、数字有线电视、DVD 以及后来的高清电视等。
另外,MPEG-2 增加了分级视频编码工具,以支持多层视频编码,即:时域分级、空域分级、SNR 分级以及数据分割。尽管 MPEG-2 中针对分级视频应用定义了相关类别 (profile),不过支持单层编码的主类 (Main Profile) 是当今大众市场中得到广泛应用的唯一 MPEG-2 类。MPEG-2 通常称为 MPEG-2 主类。
MPEG-2 解码最初对于通用处理器及 DSP 具有很高的处理要求。优化的固定功能 MPEG-2 解码器开发已问世,由于使用量较高,成本已逐渐降低。MPEG2 证明低成本芯片解决方案的供应是视频编解码标准成功和普及的关键。
H.263
H.263[5] 在 H.261 之后得到开发,主要是为了以更低的比特率实现更高的质量。其主要目标之一是基于普通 28.8Kbps 电话调制解调器的视频。目标分辨率是 SQCIF (128(96)~CIF (352(288)。其基本原理与 H.261 大同小异。
H.263 的运动矢量在两个方向上允许是 1/2 的倍数(“半像素”),参考图像以数字方式内插到更高的分辨率。这种方法可以提高 MC 精度及压缩比。MV 可采用更大的范围。为不同方案提供许多新的选项,包括:
* 4 个运动矢量——每个块采用一个运动矢量,而非整个 MB 采用单个运动矢量。
* 3D VLC:Huffman 编码——将块结束 (EOB) 指示符与每个运行级别对结合在一起。这种功能主要用于低比特率,这时大多时候只有一、两个编码系数。
尽管存在这些功能,但是仍然很难在普通电话线上实现理想的视频质量,而且目前基于标准调制解调器的可视电话仍然是一个难题。不过,由于 H.263 一般情况下可提供优于 H.261 的效率,它成为了电视会议首选的算法,但是,为了兼容旧系统,仍然需要支持 H.261。H.263 逐渐发展成为了 H.263+,其增加了可选的附件,为提高压缩并实现分组网的鲁棒性提供支持。H.263 及其附件构成了 MPEG-4 中许多编码工具的核心。
MPEG-4
MPEG-4[6] 由 ISO 提出,以延续 MPEG-2 的成功。一些早期的目标包括:提高容错能力以支持无线网、对低比特率应用进行更好的支持、实现各种新工具以支持图形对象及视频之间的融合。大部分图形功能并未在产品中受到重视,相关实施主要集中在改善低比特率压缩及提高容错性上。.
MPEG-4 简化类 (SP) 以H.263为基础,为改善压缩增加了新的工具,包括:
无限制的运动矢量:支持对象部分超出帧边界时的预测。
可变块大小运动补偿:可以在 16(16 或 8(8 粒度下进行运动补偿。
上下文自适应帧内 DCT DC/AC 预测:可以通过当前块的左右相邻块预测 DC/AC DCT 系数。
扩展量化 AC 系数的动态范围,支持高清视频:从 H.263 的 [-127:127] 到 [-2047, 2047]。
增加了容错功能,以支持丢包情况下的恢复,包括:
片断重同步 (Slice Resynchronization):在图像内建立片断 (slice),以便在出现错误后更快速的进行重新同步。与 MPEG-2 数据包大小不同,MPEG4 数据包大小与用于描述 MB 的比特数量脱离了联系。因此,不管每个 MB 的信息量多少,都可以在位流中按相同间隔进行重新同步。
数据分割:这种模式允许利用唯一的运动边界标记将视频数据包中的数据分割成运动部分和 DCT 数据部分。这样就可以实现对运动矢量数据更严格的检查。如果出现错误,我们可以更清楚地了解错误之处,从而避免在发现错误情况下抛弃所有运动数据。
可逆 VLC:VLC 编码表允许后向及前向解码。在遇到错误时,可以在下一个slice进行同步,或者开始编码并且返回到出现错误之处。
新预测 (NEWPRED):主要用于在实时应用中实现快速错误恢复,这些应用中的解码器在出现丢包情况下采用逆向通道向解码器请求补充信息。
MPEG-4 高级简化类 (ASP) 以简化类为基础,增加了与 MPEG-2 类似的 B 帧及隔行工具(用于Level 4 及以上级别)。另外它还增加了四分之一像素运动补偿及用于全局运动补偿的选项。MPEG-4 高级简化类比简化类的处理性能要求更高,而且复杂性与编码效率都高于 MPEG-2。
MPEG-4 最初用于因特网数据流,例如,已经被 Apple 的 QuickTime 播放器采用。MPEG-4 简化类目前在移动数据流中得到广泛应用。MPEG-4 ASP 是已经流行的专有 DivX 编解码器的基石。