熵编码是一种无损压缩技术。它的核心任务是将编码器产生的所有语法元素,如预测模式、运动矢量差、量化后的变换系数等,用尽可能少的比特来表示。
其基本原理是信息熵理论:为出现概率高的符号分配更短的码字,为出现概率低的符号分配更长的码字。
H.264 主要提供了两种熵编码方案:
CAVLC (Context-...
阅读更多
在编码过程中,为了压缩数据,会对块的变换系数进行量化。
由于每个块是独立处理的,量化误差在块与块之间会产生不连续性。当视频被解码重建后,这些不连续性就会在块的边界上形成明显的方块感,这就是块效应。
去块滤波的目的,就是在解码端对解码后的图像进行平滑处理,以减少或消除这种块效应,从而提高视频的主观和客观质量。
...
阅读更多
变换将残差块的能量集中到了少数低频系数上,但这些系数仍然是精度较高的数值,需要大量比特来表示。量化的核心作用有两个:
信息减少: 这是压缩过程中最主要的信息损失源。它通过降低变换系数的精度来大幅减少需要编码的数据量。这是一个不可逆的过程,丢失的精度在解码端无法恢复。
创造零值: 量化过程会将大量(特别...
阅读更多
变换将空间域的残差信号转换为频域系数。
在进行帧内或帧间预测后,会得到一个**残差块。这个块虽然数据范围比原始图像小,但仍然存在大量的空间相关性。
变换的目的有:
去相关: 打破像素之间的空间依赖性,使得每个值都尽可能独立。
能量集中: 将信号的大部分能量集中到少数几个低频系数上。
变换之后,...
阅读更多
Skip 模式 和 Direct 模式的核心思想都是利用时域或空域上运动矢量的相关性,通过 继承 或 推算 的方式来获得当前宏块的运动信息,从而省去编码运动矢量和参考帧索引本身,甚至连残差数据(Residual)都不用编码,因此能达到极高的压缩率。
它们通常被用于画面中运动很小或者运动规律很强的区域,例如静止的...
阅读更多
帧间预测利用时间上的相似性。视频序列中,相邻的帧通常内容非常相似,只是发生了微小的移动。帧间预测就是利用 时间相关性 来消除数据冗余。
其基本原理是:不再编码完整的当前帧,而是将其与已经编码好的参考帧(通常是前一帧或后一帧)进行比较,找到当前帧中某个区域在参考帧中的最佳匹配块。然后,只需编码这个位置偏移信息(运...
阅读更多
帧内预测核心思想:消除空间冗余
相邻的像素之间通常存在着极高的相似性。帧内预测利用空间相关性来消除数据冗余,从而实现高效压缩。
其基本原理是:不直接编码每个像素的原始值,而是先根据其邻近像素(已经编码完成的左侧和上方像素)来预测它的值,然后只对原始值与预测值之间的差值(即残差)进行编码和传输。 由于这个差值通...
阅读更多
从码流功能的角度可以分为两层:
视频编码层 (Video Coding Layer, VCL):
职责: 核心压缩数据
输出: 经过VCL处理后,输出的是一系列Slice数据。Slice是H.264编码的基本单元,包含了一组宏块的压缩信息。
网络抽象层...
阅读更多