Skip to main content

视频编码概念

无损压缩:解压视频数据与延时视频数据完全一致。

有损压缩:解压视频数据与原始视频数据不完全一致。有损压缩虽然不能完全恢复视频数据,但是能极大的提高压缩率。

时域模型

消除连续帧之间的时域冗余。

基于块的运动补偿和估计

1. 运动估计 (Motion Estimation)

  • 搜索匹配块:在参考帧(即已经编码并传输完成的,位于当前帧之前或之后的图像帧)中搜索 M×NM \times N尺寸的匹配块。
  • 比较过程:将当前的 M×NM \times N 块,与参考帧搜索区域(通常是以当前块位置为中心的区域)中的部分或全部 M×NM \times N 块进行比较。
  • 匹配准则:为了找出“最佳匹配块”,通常采用的准则是计算当前块与比较块相减后的残差块能量。使残差块能量降到最低的比较块,即为最佳匹配块。

2. 运动补偿 (Motion Compensation)

  • 计算残差:将上一步找到的最佳匹配块作为当前块的“预测块”。
  • 生成残差块:用当前块减去预测块,即可得到相对应的 M×NM \times N 残差块。

3. 编码与传输

  • 传输残差:对上一步得到的残差块进行编码并传输。
  • 传输运动矢量:同时,预测块与当前块之间的相对位置差(即运动矢量,Motion Vector)也会被一起传输给解码器,以便解码端能够准确还原图像。

基于宏块的运动补偿和估计

宏块16x16像素区域是运动预测的基本运算单位

当 前 帧 减 去 参 考 帧 后 所 得 到 的 残 差 图 像 能 量 ( 对 所 有 像 素 点 的 差 值 的 绝 对 值 取 和 , ⼜ 称 S A E ) S A E 越 低 就 说 明 运 动 补 偿 的 效 果 越 好

视频编码(视频压缩)本质是消除数据冗余,减少数据量。

原始视频数据 ---> 编码器 encoder ---> 传输或保存 ---> 解码器 decoder ---> 解压缩视频数据

编码器和解码器统称为CODEC。

视频压缩冗余角度:

  • (1)时间冗余 (Temporal Redundancy):
    • 定义: 在一段连续的视频中,相邻几帧的场景往往是相同或基本相同的(例如静止的背景)。
    • 原理: 帧与帧之间存在大量重复数据,编码时只需记录“变化的部分”(运动矢量和残差),无需重复记录相同的背景。
  • (2)空间冗余 (Spatial Redundancy):
    • 定义: 在单张图像中,相邻的像素通常颜色相近或完全相同(例如一大片蓝天或白墙)。
    • 原理: 可以用更少的数据来表达这些成片的相同像素(如“连续100个蓝色像素”),而不是逐个记录。
  • (3)结构冗余 (Structural Redundancy):
    • 定义: 从宏观上看,图像中存在重复出现的纹理或规则的几何结构(例如砖墙、棋盘格、重复的矩形图案)。
    • 原理: 编码器可以提取这种结构的规律,通过一定的数学模型或预设图案来生成,从而减少数据量。
  • (4)视觉冗余 (Vision/Perceptual Redundancy):
    • 定义: 人类的视觉系统(眼睛和大脑)存在生理局限性:对亮度极度敏感,但对色彩细节不敏感;对平缓区域的噪声敏感,但对剧烈变化边缘的噪声不敏感。
    • 原理: 传统的录制设备会100%记录所有数据,但压缩算法可以大胆丢弃那些“人眼根本看不出差别”的细节数据(例如色度抽样),这被称为视觉冗余。
  • (5)知识冗余 (Knowledge Redundancy):
    • 定义: 图像中包含某些人类社会普遍共识的“先验知识”。例如:人的脸部结构必然是眼睛在上方、鼻子在中间、嘴巴在下方。
    • 原理: 既然结构固定,就可以利用现成的“人脸模型库”来替代逐个像素的记录,只需传输特征参数即可恢复图像。
  • (6)数据/编码冗余 (Data/Coding Redundancy):
    • 定义: 当上述冗余都被去除后,留下的纯粹的数字符号本身在编码方式上依然存在优化空间。
    • 原理: 出现频率高的数据用较短的编码表示,出现频率低的数据用较长的编码表示(如哈夫曼编码),从而进一步压缩总体文件大小。

预测编码

帧内预测编码

帧间预测编码

光流矢量

视频帧之间的变化可能来自于物体的运动,如行驶的汽车。

可以估计每个像素在相邻帧之间的轨迹,从而建立像素轨迹场,称为光流

计算量大,数据量大,运动补偿算法不采用。

基于块的运动估计和补偿

运动估计

宏块的运动估计过程,是在参考帧中寻找与当前宏块最匹配的 16×16 像素区域。参考帧来自视频序列中已经编码的图像帧,在播放顺序上可以位于当前帧之前,也可以位于当前帧之后。

搜索区域通常以当前宏块的位置为中心。在该搜索区域内,根据一定的匹配准则进行比较,使匹配误差达到最小值的 16×16 像素区域 即为最佳匹配块

运动补偿

运动补偿过程中,用当前宏块减去其最佳匹配宏块,得到残差宏块,包括亮度残差和色度残差。同时,描述最佳匹配块位置的运动矢量,即该匹配块相对于当前宏块位置的位移,也会与残差宏块一起进行编码和传输。

在编码器内部,残差宏块不仅被编码,还会被立即解码。解码后的残差宏块与预测宏块相加,重建出当前宏块。该重建宏块进一步组成重建帧,用作后续运动补偿预测的参考帧。

这种方法可以保证编码器和解码器使用相同的重建参考帧,从而避免预测误差在编码端和解码端之间不断累积。