news 2026/4/15 19:56:10

音视频学习(七十四):视频压缩:变换编码

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
音视频学习(七十四):视频压缩:变换编码

变换编码(Transform Coding)是现代视频压缩技术中消除空间冗余(帧内冗余)和残差冗余的核心环节。无论是在独立编码的I帧中,还是在帧间预测后产生的残差块中,变换编码都是将空间域(像素值)的数据转化为更便于压缩的频率域数据的关键步骤。

变换编码

在视频编码器的整体流程中,变换编码位于预测(帧内或帧间)之后,量化之前

1. 作用与目标

  • 集中能量(Energy Compaction):这是变换编码最核心的目标。大多数自然图像和视频帧的残差块在空间域上具有很强的相关性(相邻像素相似)。通过变换,可以将这些相关性转化为频域中的少数几个较大的系数(通常是低频系数),而大部分高频系数的值则趋近于零。
  • 便于量化(Facilitation of Quantization):将能量集中后,编码器可以在量化阶段对那些数值接近于零的高频系数进行粗量化,甚至直接置零,从而实现有损压缩,大幅减少需要存储和传输的数据量。

2. 处理对象

变换编码主要处理两种数据块:

  • 帧内预测残差块:在I帧或P/B帧的帧内编码模式下,由原始块减去帧内预测块所得的残差。
  • 帧间预测残差块:在P帧或B帧的帧间编码模式下,由原始块减去运动补偿预测块所得的残差。

核心原理:离散余弦变换(DCT)

在视频编码的早期标准(如MPEG-1/2/4、H.263)和当前主流标准(如H.264/AVC)中,**离散余弦变换(Discrete Cosine Transform, DCT)**是应用最广泛的变换编码方法。

1. DCT 的数学定义(二维)

对于一个 N * N 的像素块 f(x, y),其二维 DCT 变换 F(u, v) 定义为:

2. 变换结果的解释

经过 DCT 变换后,得到的 N * N 系数矩阵 F(u, v) 具有明确的频率含义:

  • 直流(DC)系数 F(0, 0):位于矩阵的左上角,代表原始块中所有像素值的平均值(即图像块的基准亮度/颜色)。这是最重要的系数,通常数值最大,承载了块中大部分的能量。
  • 交流(AC)系数 F(u, v), (u, v) \ne (0, 0):矩阵中其余的系数,代表图像块在水平和垂直方向上的频率分量
    • 靠近 F(0, 0) 的系数是低频系数,代表块中平滑、缓慢变化的区域。
    • 远离 F(0, 0) 的系数是高频系数,代表块中细节、纹理和边缘等快速变化的信息。

3. 能量集中的体现

由于残差块的大部分像素值接近于零,经过 DCT 后,能量会高度集中在 F(0, 0) 及其周围的少数低频 AC 系数上。这使得后续的量化可以高效地“砍掉”矩阵右下角(高频)的系数,实现高压缩比。

变换编码在不同标准中的演进

随着视频编码标准的发展,变换编码从简单的8×88 \times 88×8DCT 演进到更灵活、更高效的整数变换和多尺寸变换。

1. H.264/AVC 中的整数变换(Integer Transform)

  • 问题:标准的 DCT 涉及到浮点数运算,会引入微小的反变换失配误差(IDCT Mismatch)。
  • 解决方案:H.264 引入了整数变换,用整数运算来近似 4 * 4 或 8 * 8 的 DCT,消除了 IDCT 失配问题,并简化了硬件实现。
  • 特点:H.264 主要使用4 * 4 块的整数变换,这种小尺寸的变换可以更好地适应复杂的、非平滑的残差信号。对于色度(Chroma)分量,它使用 2 * 2 的变换。

2. H.265/HEVC 中的多尺寸变换(Multi-size Transform)

为了追求更高的压缩效率,H.265/HEVC 进行了显著改进:

  • 变换单元(Transform Unit, TU):引入了灵活的变换单元概念,尺寸不再固定。TU 的尺寸可以从最小的 4 * 4 扩展到8 * 8、 16 * 16 甚至 32 * 32
  • 动态选择:编码器会根据编码树单元(Coding Tree Unit, CTU)的划分和残差块的特性,动态选择最合适的 TU 尺寸。例如,对于平坦区域,使用 32 * 32 变换可以更好地集中能量;对于细节丰富的区域,则使用 4 * 4 变换以避免过多引入振铃效应。
  • 离散正弦变换(DST):除了 DCT-II(标准的 DCT),HEVC 还引入了**离散正弦变换(Discrete Sine Transform, DST)**用于 4 * 4 块的帧内编码残差,因为实验证明 DST 在处理帧内残差时能提供略微更好的能量集中效果。

3. H.266/VVC 中的进一步优化

  • 多模式变换(Multiple Transform Set, MTS):VVC 进一步扩展了可用的变换种类,并允许对同一个块的不同子块使用不同的变换。
  • 非分离变换(Non-Separable Transform):对于 4 * 4 块,VVC 引入了非分离变换,进一步优化了低频分量的编码效率。
  • 低频补偿:VVC 还包含了一些机制来补偿变换编码对低频(DC)系数造成的损失。

变换编码与量化的协同作用

变换编码只是压缩的准备阶段,真正的有损压缩是在**量化(Quantization)**阶段完成的,两者紧密配合。

1. 量化过程

量化就是对变换后的系数 F(u, v) 进行除法和取整操作:

其中 Q 是量化步长(Quantization Step Size),其大小由量化参数(QP)决定。

2. 协同效果

  • 低频系数:F(0, 0) 和相邻的低频 AC 系数数值大,即使被 Q 除后取整,其结果 F(u, v) 仍然是非零的,这部分信息得以保留,保证了图像的基本结构。
  • 高频系数:高频 AC 系数数值小,经过除以 Q 后,大部分会被量化为零
  • Z字形扫描(Zig-Zag Scanning):量化后的系数矩阵通常采用Z字形扫描转换为一维序列。由于能量集中,这个序列的开头是重要的非零系数,而结尾则是一长串的零。

3. 熵编码增益

Z字形扫描和量化操作后产生的序列,其特点是:前面是非零系数,后面是大量的零。这种序列结构非常适合进行熵编码(Entropy Coding),如霍夫曼编码或算术编码(CABAC/CAVLC),从而实现无损压缩,最终达到视频压缩的整体目标。

总结

变换编码是视频压缩流水线中不可或缺的组成部分,它通过以下步骤实现了空间冗余的有效消除:

  1. 数据转换:将空间域的残差信号通过数学变换(主要是 DCT 或其整数近似)映射到频率域。
  2. 能量集中:利用自然图像信号的特性,将大部分信号能量集中在少数低频系数上。
  3. 配合量化:为后续的有损量化阶段创造条件,使得编码器能够高效地丢弃视觉上不重要的高频信息(将它们量化为零)。
  4. 序列优化:通过 Z字形扫描,将量化后的稀疏矩阵转化为利于熵编码的高效序列。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 4:05:24

把timerfd + epoll讲透,最硬核的Linux系统编程实战

传统的定时器实现方案各有优劣:基于最小堆的定时器能够快速找到最早到期任务(O(1)),但插入和删除操作需要 O(logN) 的堆调整;红黑树的插入、查找、删除都是 O(logN),对于大量同时到期的任务处理更加自然;而时间轮(Hashed Wheel Timer)虽然能做到接近 O(1) 的插入和取消…

作者头像 李华
网站建设 2026/4/12 11:04:06

智能预警系统如何让风险在发生前被化解

想象一下:在地铁隧道的墙壁开始渗水前三小时,系统已经预判到排水泵的异常工作模式并向维修团队发出工单;在变电站的断路器跳闸导致全城大停电前十五分钟,值班人员已收到设备过热预警并启动负荷转移预案;在边坡滑坡掩埋…

作者头像 李华
网站建设 2026/4/15 4:00:56

AKA协议认证与密钥协商的核心原理

认证的密钥协商协议(Authenticated Key Agreement,AKA)是现代网络安全通信的基石。它将身份认证(证明“你是谁”)与密钥分发(安全协商“我们用什么密钥通信”)融为一体,为建立安全信…

作者头像 李华
网站建设 2026/4/14 19:12:04

【原创改进代码】基于RFAConv(感受野注意力卷积)-BiGRU(双向门控循环单元)多变量时间序列预测【原创代码改进】基于贝叶斯优化的PatchTST综合能源负荷多变量时间序列预测

程序名称:基于RFAConv-BiGRU的多变量时间序列预测 实现平台:python—Jupyter Notebook 代码简介:构建了基于RFAConv(感受野注意力卷积)-BiGRU(双向门控循环单元)多变量时间序列预测。高创新点…

作者头像 李华
网站建设 2026/4/10 12:35:19

Flutter 三方库 `flutter_phone_direct_caller` 在 OpenHarmony 平台的适配实战

Flutter 三方库 flutter_phone_direct_caller 在 OpenHarmony 平台的适配实战 引言 OpenHarmony(下文简称 OHOS)作为新一代的智能终端操作系统,其生态的完善离不开大量应用的支持。Flutter 凭借高效的渲染引擎和优秀的跨平台一致性&#xf…

作者头像 李华
网站建设 2026/4/15 2:16:08

mysql单表约束

primary key主键约束作为表中的唯一标识unique 唯一,表中只显示这一个值default 默认值,当未特别规定值的时候,默认填充该值,在所在字段名中foregin key 外键 : 对多张表进行约束(这个还没大弄懂&#xff0…

作者头像 李华