news 2026/2/25 3:09:18

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

作者头像

张小明

前端开发工程师

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/2/22 13:16:03

如何快速解决PMX转VRM骨骼缺失问题:完整指南

VRM-Addon-for-Blender是一个强大的开源工具,专门用于VRM格式转换和3D模型处理。在进行PMX转VRM格式转换时,许多用户会遇到上半身骨骼缺失的问题,这直接影响VRM规范兼容性。本文将为您提供完整的解决方案,帮助您轻松应对这些挑战。…

作者头像 李华
网站建设 2026/2/23 1:56:39

Lumafly模组管理器完整指南:从零开始掌握空洞骑士模组管理

Lumafly模组管理器完整指南:从零开始掌握空洞骑士模组管理 【免费下载链接】Lumafly A cross platform mod manager for Hollow Knight written in Avalonia. 项目地址: https://gitcode.com/gh_mirrors/lu/Lumafly 还在为空洞骑士模组安装的复杂流程而烦恼…

作者头像 李华
网站建设 2026/2/23 0:20:36

商业用途授权说明:LobeChat MIT协议的含义

LobeChat 的商业潜力:从 MIT 协议到企业级应用 在 AI 聊天界面日益成为数字产品标配的今天,一个看似简单的前端项目——LobeChat——正悄然改变着企业构建智能助手的方式。它不仅拥有媲美 ChatGPT 的用户体验,更因其采用 MIT 许可协议&#…

作者头像 李华
网站建设 2026/2/23 20:03:12

ncmdumpGUI:彻底解锁网易云音乐加密文件的终极解决方案

你是否曾经遇到过这样的困扰:在网易云音乐下载的歌曲只能在特定客户端播放,换个设备或者播放器就无法打开?这种格式限制让很多音乐爱好者感到无奈。今天,我们将深入解析一款能够完美解决这一痛点的工具——ncmdumpGUI,…

作者头像 李华
网站建设 2026/2/21 14:57:23

现代C++详解(98,11,14,17)

文章目录 首先说一下C语法的定位再说一下技术的意义再说一下C语法本身列一下我的教程目录教程的具体地址教程的额外介绍 1. 首先说一下C语法的定位 其实学C永远记住开发体系优先,语法本身只是个工具。就像在写简历时,技能介绍部分。其实C语法&#xf…

作者头像 李华
网站建设 2026/2/22 18:31:55

AI虚拟房地产架构关键步骤解析:架构师规避项目风险的7个方法!

AI虚拟房地产架构实战:从0到1搭建与风险规避的7个关键 一、引言:虚拟地产项目的“踩坑”困境,你遇到过吗? 去年我参与了一个AI虚拟售楼处项目:客户要求“沉浸式体验”,我们加班加点用Unreal Engine做了超…

作者头像 李华