分块与预处理是视频压缩(编码)流程的起点,它的目标是将原始的、高冗余的视频数据转换成适合高效压缩的格式和基本处理单元。这一阶段的工作质量直接影响后续运动估计、变换编码和量化等步骤的效率和最终的压缩比与图像质量。
预处理的核心目标与作用
预处理阶段主要完成两项任务:去除人眼不敏感的数据冗余 和建立后续处理的粒度。
| 目标 | 具体作用 |
|---|---|
| 色彩空间优化 | 将冗余度高的RGB格式转换为YUV格式,为色度信息降采样提供基础,消除部分视觉冗余。 |
| 数据降采样 | 降低色度数据的分辨率,利用人眼对亮度比色度更敏感的生理特性,减少数据量。 |
| 确定处理单元 | 将视频帧分割为宏块或编码单元,作为运动估计和变换编码的基本处理粒度,实现并行处理。 |
| 去噪与滤镜 | 采用预处理滤波器去除原始视频中的噪声,避免噪声在编码过程中占用宝贵的码率。 |
关键技术
关键技术一:色彩空间转换与色度采样
1. 色彩空间转换 (Color Space Conversion)
原始视频信号通常使用RGB(红、绿、蓝)色彩模型,这是一种面向显示的加法混色模型。在RGB模型中,三个分量都以相同的分辨率存储,但人眼对这三个分量的敏感度是不同的。
在视频压缩中,必须转换为YUV 或YCbCr模型:
- Y (Luminance):亮度分量,携带了图像的灰度信息,人眼对此最敏感。
- U/Cb 和 V/Cr (Chrominance):色度分量,携带了图像的颜色信息(蓝色和红色的差异度)。
转换:将RGB转换为YUV的数学操作确保了亮度与色度信息的解耦,这是后续降采样的基础。
2. 色度采样 (Chroma Subsampling)
由于人眼对亮度(Y)的细节比对色度(U/V或Cb/Cr)的细节更敏感,可以安全地减少色度分量的空间分辨率而不会对视觉质量造成明显影响。这种技术称为色度降采样。
主流采样格式:
| 格式 | Y:U:V 比率 | 说明 | 常见应用 |
|---|---|---|---|
| 4:4:4 | 1:1:1 | 无降采样。Y、U、V三个分量具有相同的采样率。用于高质量编辑、数字电影制作。 | 高清专业视频 |
| 4:2:2 | 2:1:1 | 水平方向色度采样减半。每两个亮度采样点共享一组色度采样点。 | 广播电视、DVD、专业编辑 |
| 4:2:0 | 4:1:1 | **水平和垂直方向色度采样都减半。**每四个亮度采样点(一个2x2的区域)共享一组色度采样点。这是最常见的消费级视频和网络视频格式。 | H.264/AVC, HEVC, MPEG-4, 网络流媒体 |
4:2:0 格式的原理:
对于一个 2 * 2 的宏块,有4个亮度样本(Y),但只有1个U样本和1个V样本。通过降采样,数据量理论上减少了 50%。
色度采样的优点:
- 大幅减少数据量: 4:2:0 相比 4:4:4 节省一半的原始数据,显著提高了压缩效率。
- 不显著影响视觉质量: 基于人眼的生理特性,这种损失在日常观看中难以察觉。
关键技术二:视频帧的分块处理
视频压缩的效率依赖于对局部区域(而非整帧)进行高效的预测和变换。因此,每一帧图像都需要被分割成标准化的处理单元。
1. 宏块 (Macroblock, MB)
在早期的MPEG系列标准和H.264/AVC 标准中,视频帧的基本处理单元是宏块 (MB)。
- 定义: 一个宏块通常是 16 * 16 像素的区域。
- 结构: 在4:2:0格式中,一个宏块包含 16 * 16 的亮度样本和 8 * 8 的U和 8 * 8 的V色度样本(因为色度是半分辨率)。
- 用途: 宏块是进行运动估计和运动补偿 (消除时间冗余)以及块内预测(消除空间冗余)的基本单元。
2. 编码单元 (Coding Unit, CU)
随着更高分辨率视频(4K/8K)的出现,固定的 16 * 16 宏块不再是最优选择。在H.265/HEVC 和H.266/VVC 等新一代标准中,引入了更灵活的编码树单元 (Coding Tree Unit, CTU) 和编码单元 (Coding Unit, CU) 的概念。
- CTU: 类似于宏块,但尺寸可以更大,如 64 * 64 或 128 * 128。
- CU (Coding Unit): CTU 可以根据图像内容,递归地(通过四叉树结构)分割成更小的CU,其尺寸范围可以从 64 * 64 到最小的 4 * 4。
- 优势:
- 自适应性: 对于图像内容平坦的区域,使用大尺寸CU(如 64 * 64)可以减少编码所需的头部信息(header/overhead),提高效率。
- 精度: 对于图像细节丰富、纹理复杂的区域,使用小尺寸CU(如 8 * 8 或 4 * 4)可以提高预测和变换的精度,减少残差。
关键技术三:预处理滤波器
除了色彩转换和分块之外,在编码前,还可以应用各种预处理滤波器来优化源视频,使其更适合压缩。
1. 噪声去除 (Noise Reduction)
视频源(尤其是摄像机或老旧胶片)往往包含各种噪声(如高斯噪声、椒盐噪声)。噪声本质上是高频随机信号,在压缩过程中,编码器会试图对这些随机的细节进行编码。
- 问题: 编码随机噪声会消耗大量的宝贵码率,但对人眼来说,这些噪声并无信息价值。
- 解决方案: 使用空间滤波器 (如中值滤波、高斯平滑)或时域滤波器来平滑图像,去除冗余的噪声。
- 权衡: 滤波器力度过大可能去除图像真实的细节和纹理,导致图像模糊(Softening)。编码器必须在去噪 和保留细节之间取得平衡。
2. 去隔行扫描 (Deinterlacing)
对于标清或一些旧的高清视频源,如果采用隔行扫描 (Interlacing) 方式采集(将一帧分为奇数场和偶数场),在进行现代逐行扫描(Progressive)编码之前,需要通过去隔行算法将其转换为逐行扫描格式。
总结
分块与预处理阶段的工作是为压缩算法搭建框架和提供基础数据:
- 通过色彩空间转换 和色度降采样,将数据量减少了 50% 左右,并为后续变换编码提供了更优化的数据格式。
- 通过分块(MB/CU),将大规模的帧处理问题分解为可以并行和自适应处理的小规模子问题。
- 通过预处理滤波器,提高了输入信号的质量,减少了噪声对码率的消耗。
这些经过预处理和分块的 Y、 U、V 宏块/编码单元,将作为输入,进入视频压缩的核心阶段------运动估计与补偿 (消除时间冗余)和变换编码与量化(消除空间冗余),最终生成压缩的比特流。