视频编码基础原理全解析
1. 视频格式
1.1 数字视频格式
数字视频存在多种格式,每种格式都有其特定的空间分辨率和典型帧/场速率。以下是常见数字视频格式的详细信息:
| 名称 | 空间分辨率 | 典型帧/场速率 |
| — | — | — |
| QCIF (Quarter Common Intermediate Format) | 176 × 144 | 15, 30 |
| SIF (Source Input Format) | 352 × 240
352 × 288 | 30
25 |
| CIF (Common Intermediate Format) | 352 × 288 | 30 |
| 4SIF | 704 × 480 | 30 |
| 4CIF | 704 × 576 | 30 |
| SD (Standard Definition) | 480i/p: 704 × 480, 720 × 480
576i/p: 704 × 576, 720 × 576 | 24, 30, 60i
25, 50i |
| ED (Enhanced Definition) | 480p: 640 × 480, 704 × 480, 720 × 480
576p: 704 × 576, 720 × 576 | 60
50 |
| HD (High Definition) | 720p: 1,280 × 720
1080i/p: 1,920 × 1,080 | 24, 25, 30, 50, 60
24, 25, 30, 60, 50i, 60i |
| UHD (Ultra High Definition) | 3,840 × 2,160, 7,680 × 4,320 | 24, 25, 50, 60, 120 |
| QVGA (Quarter Video Graphics Array) | 320 × 240 | - |
| WQVGA (Wide Quarter Video Graphics Array) | 400 × 240 | - |
| VGA (Video Graphics Array) | 640 × 480 | - |
| WVGA (Wide Video Graphics Array) | 800 × 400 | - |
| SVGA (Super Video Graphics Array) | 800 × 600 | - |
| XGA (Extended Video Graphics Array) | 1,024 × 768 | - |
| SXGA | 1,280 × 1,024 | - |
高清(HD)正在逐步取代标清电视(SDTV),超高清电视(UHDTV)在不久的将来也可能会融入人们的生活。
1.2 YCbCr 采样格式
人眼对亮度的敏感度高于对颜色的敏感度。在数字视频传输中,降低色度的采样精度是减少带宽的有效方法。视频编码通常使用 YCbCr 颜色空间,典型的采样格式包括 4:0:0、4:2:0、4:2:2 和 4:4:4。
- 4:0:0 格式 :仅对亮度信号进行采样,用于黑白系统。
- 4:2:0 格式 :在数字电视广播中广泛使用。在此格式中,Cb 和 Cr 矩阵在水平和垂直维度上的大小均为 Y 矩阵的一半,且 Y 矩阵的行数和列数均为偶数。
- 4:2:2 和 4:4:4 格式 :通常用于高端显示设备或工作室后期制作。
除了采样率,YUV 各分量的采样精度(位深度或颜色深度)也是一个重要参数,它决定了 YUV 所能表示的颜色数量。早期系统由于硬件限制,通常使用较低的颜色深度,如 4 位或 8 位颜色。如今,24 位颜色(每个颜色分量 8 位)已成为主流,但更高颜色深度的应用也不可避免。在行业中,HDMI(高清晰度多媒体接口)已定义了 30、36 甚至 48 位颜色,以实现更生动的色彩显示。
2. 视频编码工具
2.1 预测编码
预测编码的基本思想是传输原始信号与预测信号之间的差分信号(残差信号),而不是原始信号。在接收端,通过将残差信号与预测信号相加即可重建原始信号。与原始信号相比,残差信号的相关性更低。预测编码是减少视频信号中空间、时间和集合冗余的有效工具,以下是预测编码的发展历程:
-
像素级预测
:最早的预测编码是基于像素的差分脉冲编码调制(DPCM),通过量化和传输相邻两个像素之间的差值来实现。
-
帧内预测
:Harrison 于 1952 年提出了第一种代表性的帧内预测方法,该方法将重建像素的线性组合作为当前像素的预测值。改进后的 LOCO - I 算法被 JPEC - LS 图像压缩标准采用。随后,变换域的 AC/DC 帧内预测和空间域的方向帧内预测被提出,其中方向帧内预测成为视频编码领域的主流方法,许多流行的视频编码标准如 AVC/H.264、HEVC/H.265 和 AVS 都采用了这种方法。
-
帧级预测
:预测单元从像素扩展到帧。Seyler 于 1962 年提出了基于帧的差分编码方法,通过传输两帧之间的差值来显著减少数据冗余。Rocca 于 1969 年提出了基于块的运动估计方法,将场景建模为一组由任意形状块表示的恒定亮度区域,这些区域通过运动向量从一帧移动到下一帧,并传输差值用于图像重建。此外,运动补偿预测通过利用编码视频序列中的长期统计依赖关系得到进一步改进。Puri 等人于 1990 年提出了 B 帧概念,通过考虑前后帧之间的运动来插值跳过的帧,从而实现更高的压缩比。多假设运动补偿预测则通过线性组合运动补偿信号进一步扩展了 B 帧的概念。
-
集合冗余减少
:为了减少相似图像和视频之间的集合冗余,Karadimitriou 等人提出了一系列方法,如 Min - Max 差分(MMD)方法和质心方法。Yue 等人提出了仅压缩图像缩略图和图像局部特征描述符,并从云端检索相似图像块来重建高质量图像的方法。Wang 等人将其扩展到视频压缩,通过参考视频本身或其他编码的相似视频来联合压缩多个近重复视频。
2.2 变换编码
变换编码通过正交变换将信号从空间域转换到频率域,从而减少预测残差信号中的相关性。以下是变换编码的发展历程:
-
一维 Hadamard 变换
:1965 年,Enomoto 和 Shibata 提出了一种基于一维 Hadamard 变换的实用视频压缩方法。
-
二维傅里叶变换
:1968 年,Andrews 和 Pratt 将 Enomoto 的方法扩展到二维块傅里叶变换,但傅里叶变换的计算复杂度较高,难以应用于实际视频编码系统。
-
Slant 变换
:1973 年,Chen 提出了 Slant 变换及其快速计算算法,该变换具有比傅里叶变换更高的能量压缩特性。
-
离散余弦变换(DCT)
:1974 年,Ahmed 等人提出了离散余弦变换(DCT),该变换计算复杂度较低,在去相关和能量集中方面更有效。
-
混合预测/变换编码器
:1979 年,Netravali 和 Stuller 提出了运动补偿变换框架,即混合预测/变换编码器,通常被称为第一代编码方法,自 H.261 以来已广泛应用于视频编码标准。
-
AVC/H.264 中的整数变换
:在 AVC/H.264 中,开发了整数变换以实现类似 DCT 的变换,同时避免逆变换失配。为了提高编码效率,还提出了自适应块大小变换(ABT),根据预测块的大小选择合适的变换大小。
-
HEVC/H.265 中的自适应变换方案
:在 HEVC/H.265 的发展过程中,研究了更多自适应变换方案,如模式相关方向变换(MDDT)和率失真优化变换(RDOT)。此外,根据帧内预测残差的统计特性,还提出了离散正弦变换(DST)以实现更高效的编码。
2.3 熵编码
熵编码通过利用图像中的空间统计冗余来实现压缩。以下是熵编码的发展历程:
-
早期熵编码方法
:早期的图像编码方法直接利用图像中的空间统计冗余进行压缩,如 Huffman 编码和 Golomb 编码。变换编码发明后,Tescher 和 Cox 提出了著名的 zig - zag 扫描,将二维 DCT 系数转换为一维数组。为了进一步提高编码效率,MPEG - 2/4 针对帧内和帧间预测残差块使用不同的可变长度编码(VLC)表,H.263 也增加了可选的高级帧内编码模式和替代帧间 VLC 模式。
-
AVC/H.264 中的上下文自适应可变长度编码(CAVLC)
:在 AVC/H.264 中,采用了针对 4 × 4 DCT 的上下文自适应可变长度编码(CAVLC),通过使用多个上下文和相应的 VLC 表来适应 DCT 系数的局部统计变化,从而进一步提高编码效率。
-
算术编码
:与 VLC 不同,算术编码通过为输入符号序列分配码字,在符号概率高于 50% 时,平均每个符号所需的位数可以小于 1 位。虽然算术编码的概念早已提出,但直到 1979 年 Rissanen 和 Langdon 才提出了第一个实用的熵编码方案。H.263 是第一个采用算术熵编码器的基于块的混合视频编码标准,但 H.263 中的算术编码器编码的语法元素与 VLC 方法相同,难以表示非整数长度的符号。
-
AVC/H.264 中的上下文自适应二进制算术编码(CABAC)
:AVC/H.264 中提出了真正成功的算术编码方案——上下文自适应二进制算术编码(CABAC)。CABAC 不直接编码语法元素,而是对每个二进制化语法元素的每个二进制位进行编码。概率模型根据先前编码的语法元素或二进制位进行选择,并根据编码符号的值进行更新。与 AVC/H.264 中的 CAVLC 相比,CABAC 可实现约 9 - 14% 的比特率节省。在最新的 HEVC/H.265 标准中,通过减少上下文依赖性设计了更高效的 CABAC。
2.4 环路滤波
基于块的编码图像和视频在低比特率下通常会出现令人讨厌的伪像,如块效应和振铃效应。在混合视频编码框架中,每个块的独立粗量化是产生压缩伪像的主要原因,运动补偿块的生成也可能引入伪像。环路滤波不仅可以提高当前帧的视觉质量,还可以为后续编码帧提供高质量的参考,从而显著提高编码效率。然而,环路滤波也带来了较高的计算和硬件实现复杂度。以下是环路滤波的发展历程:
-
去块滤波器
:直到 1998 年,H.263v2 附件 J 才首次将环路滤波器(去块滤波器)标准化。在 AVC/H.264 标准的开发过程中,去块滤波器也经过了广泛的讨论和优化,但该滤波器仍占解码器计算复杂度的约三分之一。
-
HEVC/H.265 和 AVS2 中的环路滤波器
:随着计算能力的提高,更复杂的环路滤波器被引入视频编码系统。在 HEVC/H.265 和 AVS2 的开发过程中,讨论了两种环路滤波器:样本自适应偏移(SAO)和自适应环路滤波器(ALF)。SAO 通过将重建样本分类为不同类别,为每个类别获取偏移量,并将偏移量添加到每个样本中,从而减少压缩伪像。与 SAO 不同,ALF 通过多抽头滤波器处理样本及其相邻样本,滤波器参数通过最小化失真重建帧与原始帧之间的失真来获得。在 HEVC/H.265 开发过程中,还提出了许多与 ALF 相关的技术,如基于四叉树的 ALF 和基于 LCU 的 ALF。
2.5 质量测量
视频质量测量在视频应用中是一个重要问题,它在编码工具的开发中也起着重要作用。视频质量评估方法通常可分为主观和客观质量评估两类。
2.5.1 主观质量评估
主观质量评估通过主观测试来确定人眼感知的最终质量。ITU - R BT.500 - 13 中标准化了多种主观质量评估方法,如双刺激损伤尺度(DSIS)方法、双刺激连续质量尺度(DSCQS)方法以及单刺激(SS)方法、刺激比较方法、单刺激连续质量评估(SSCQE)和同时双刺激连续评估(SDSCE)方法等。然而,主观测试通常需要大量的人力和物力资源,因此无法应用于实时应用。
2.5.2 客观质量评估
客观评估方法通常通过数学模型来预测视觉质量,这些模型可以进行定量计算。峰值信噪比(PSNR)是视频编码中广泛使用的质量指标,但有时它可能无法很好地反映视觉质量。由于感知质量高度依赖于人类视觉系统,而人类视觉系统过于复杂,难以准确建模,因此客观视觉质量指标的研究是一个热门话题。一些著名的感知质量指标包括 Sarnoff JND(最小可察觉差异)模型、NASA DVQ(数字视频质量)模型和结构相似性指数(SSIM),但它们的应用也非常有限。
3. 总结
视频编码涉及多个方面,包括视频格式、编码工具和质量测量,这些方面相互关联。视频格式的选择影响着编码工具的应用,而编码工具的目的是减少视频信号中的冗余,提高编码效率。同时,质量测量对于评估编码效果和选择合适的编码工具至关重要。随着技术的不断发展,更高分辨率的视频格式和更高效的编码工具将不断涌现,为视频应用带来更好的体验。
以下是视频编码工具发展的 mermaid 流程图:
graph LR
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
A(预测编码):::process --> A1(像素级预测):::process
A --> A2(帧内预测):::process
A --> A3(帧级预测):::process
A --> A4(集合冗余减少):::process
B(变换编码):::process --> B1(一维Hadamard变换):::process
B --> B2(二维傅里叶变换):::process
B --> B3(Slant变换):::process
B --> B4(离散余弦变换):::process
B --> B5(混合预测/变换编码器):::process
B --> B6(AVC/H.264整数变换):::process
B --> B7(HEVC/H.265自适应变换):::process
C(熵编码):::process --> C1(早期熵编码):::process
C --> C2(AVC/H.264 CAVLC):::process
C --> C3(算术编码):::process
C --> C4(AVC/H.264 CABAC):::process
D(环路滤波):::process --> D1(去块滤波器):::process
D --> D2(HEVC/H.265 SAO和ALF):::process
这个流程图展示了视频编码工具中预测编码、变换编码、熵编码和环路滤波的主要发展阶段,有助于读者更直观地理解这些编码工具的演变过程。
3. 总结(续)
视频编码领域是一个充满活力且不断发展的领域,各个组成部分之间相互影响、相互促进。从色彩空间的选择到视频格式的确定,再到编码工具的应用以及最终的质量测量,每一个环节都紧密相连,共同决定了视频的编码效果和质量。
色彩空间的转换,例如从 RGB 到 YUV 并对 UV 进行下采样,不仅是一种有效的数据缩减方式,还为后续的编码处理提供了基础。不同的视频格式,如高清(HD)和超高清(UHD)的出现,反映了人们对更高画质的追求,也推动了编码技术的不断进步。编码工具的不断创新和优化,如预测编码、变换编码、熵编码和环路滤波等,旨在减少视频信号中的冗余信息,提高编码效率,从而在有限的带宽下传输更高质量的视频。而质量测量则是衡量编码效果的重要手段,它不仅帮助我们评估视频的质量,还为编码工具的选择和改进提供了依据。
4. 技术点分析
4.1 预测编码的优势与挑战
预测编码通过传输残差信号,有效地减少了视频信号中的冗余信息。其优势在于能够显著降低数据量,提高编码效率。例如,在帧内预测中,通过利用相邻像素的相关性,可以更准确地预测当前像素的值,从而减少传输的数据量。然而,预测编码也面临一些挑战。例如,预测的准确性依赖于图像的内容和特性,如果图像中存在复杂的纹理或运动,预测的误差可能会增加,从而影响编码效果。此外,预测编码的计算复杂度相对较高,需要更多的计算资源。
4.2 变换编码的作用与选择
变换编码将信号从空间域转换到频率域,能够有效地去除信号中的相关性,集中能量。不同的变换方法具有不同的特点和适用场景。例如,离散余弦变换(DCT)具有较低的计算复杂度和较好的能量集中特性,因此在视频编码中得到了广泛应用。而在 HEVC/H.265 中,根据不同的场景和需求,采用了多种自适应变换方案,如模式相关方向变换(MDDT)和率失真优化变换(RDOT),以提高编码效率。在选择变换编码方法时,需要考虑计算复杂度、能量集中效果和编码效率等因素。
4.3 熵编码的性能比较
熵编码通过利用数据的统计特性来实现压缩。不同的熵编码方法具有不同的性能。例如,上下文自适应可变长度编码(CAVLC)通过使用多个上下文和 VLC 表,能够适应 DCT 系数的局部统计变化,提高编码效率。而上下文自适应二进制算术编码(CABAC)则通过对二进制化语法元素的每个二进制位进行编码,并根据先前编码的元素更新概率模型,实现了更高的编码效率。与 CAVLC 相比,CABAC 能够节省约 9 - 14% 的比特率。在实际应用中,需要根据具体的需求和场景选择合适的熵编码方法。
4.4 环路滤波的效果与复杂度
环路滤波在提高视频质量方面具有重要作用。它能够减少基于块的编码图像和视频在低比特率下出现的伪像,如块效应和振铃效应。然而,环路滤波也带来了较高的计算和硬件实现复杂度。例如,在 AVC/H.264 中,去块滤波器占解码器计算复杂度的约三分之一。随着技术的发展,更复杂的环路滤波器如样本自适应偏移(SAO)和自适应环路滤波器(ALF)被引入,虽然它们能够进一步提高视频质量,但也增加了计算和实现的难度。在实际应用中,需要在视频质量和计算复杂度之间进行权衡。
5. 未来展望
随着技术的不断进步,视频编码领域将迎来更多的发展机遇和挑战。以下是一些可能的发展趋势:
5.1 更高分辨率和帧率的视频编码
随着显示技术的不断发展,更高分辨率(如 8K 甚至更高)和帧率(如 120fps 甚至更高)的视频需求将不断增加。这将对视频编码技术提出更高的要求,需要开发更高效的编码工具来处理这些大数据量的视频。
5.2 人工智能在视频编码中的应用
人工智能技术,如深度学习和神经网络,已经在图像和视频处理领域取得了显著的成果。未来,人工智能可能会被应用于视频编码中,例如通过学习视频的特征和模式,实现更智能的预测和编码,提高编码效率和视频质量。
5.3 跨设备和跨平台的兼容性
随着移动设备和智能电视的普及,视频需要在不同的设备和平台上进行播放和传输。因此,未来的视频编码技术需要更好地支持跨设备和跨平台的兼容性,确保视频在各种设备上都能获得良好的播放效果。
5.4 绿色编码技术
随着对能源效率的关注不断增加,绿色编码技术将成为未来的一个重要发展方向。绿色编码技术旨在减少编码过程中的能量消耗,提高能源利用效率,同时保持或提高视频质量。
6. 结论
视频编码是一个复杂而重要的领域,它涉及到多个方面的知识和技术。通过对视频格式、编码工具和质量测量的深入了解,我们可以更好地理解视频编码的原理和方法,选择合适的编码工具和参数,以满足不同的应用需求。随着技术的不断发展,视频编码领域将不断创新和进步,为我们带来更好的视频体验。
以下是视频编码各部分关系的 mermaid 流程图:
graph LR
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
A(色彩空间):::process --> B(视频格式):::process
B --> C(编码工具):::process
C --> D(质量测量):::process
D --> E(编码效果):::process
E --> F(应用需求):::process
F --> A(色彩空间):::process
这个流程图展示了视频编码各部分之间的相互关系,形成了一个闭环。色彩空间的选择影响视频格式,视频格式决定了编码工具的应用,编码工具的效果通过质量测量来评估,而编码效果又要满足应用需求,应用需求又会反过来影响色彩空间的选择。这种相互关系体现了视频编码领域的系统性和复杂性。
同时,为了更清晰地对比不同编码工具的特点,下面给出一个表格:
| 编码工具 | 优势 | 挑战 | 适用场景 |
| — | — | — | — |
| 预测编码 | 减少冗余,提高编码效率 | 预测准确性受图像内容影响,计算复杂度高 | 适用于存在大量冗余信息的视频 |
| 变换编码 | 去除相关性,集中能量 | 不同变换方法计算复杂度和效果不同 | 根据视频内容和需求选择合适的变换方法 |
| 熵编码 | 利用统计特性压缩数据 | 不同熵编码方法性能有差异 | 根据编码效率和计算复杂度选择 |
| 环路滤波 | 提高视频质量 | 计算和硬件实现复杂度高 | 在低比特率下改善视频质量 |
通过这个表格,我们可以更直观地了解不同编码工具的特点和适用场景,有助于在实际应用中做出更合适的选择。

3960

被折叠的 条评论
为什么被折叠?



