视频编码流程

预测编码

帧内预测
利用图像在空间上相邻像素之间具有相关性的特点,由相邻像素预测当前块的像素值,可以有效的去除块间冗余,编码得到的图像称为I(Intra)帧。


帧间预测
消除运动图像时间冗余的技术。根据预测方向分为前向预测和双向预测。前向预测得到的图像称为P帧,双向预测得到的图像称为B帧。

当一幅图像内容比较相似时,I帧编码效率较高,当相邻帧内容比较相似时,P/B帧编码效率较高。通常情况下,I帧比P/B帧的编码效率低,但由于I帧独立编码的特点,常常通过周期插入I帧来阻止误差累积,进行差错恢复,提高编解码器的鲁棒性。


通常在基于块预测编码中,一般用绝对值差和SAD或平均绝对值差MAD俩衡量预测值与实际值的差异程度。实际像素值与预测像素值的SAD或MAD值越小,表示实际值与预测值之间越相似。

预测过程

SAD
MAD

变换

由于同一帧图像内的像素之间有相关性,可以通过变换编码减少像素间的相 关性以达到消除空间冗余的目的。就数据压缩而言,所选择的变换方法最好能与 图像信号的特征相匹配,并从去相关能力、能量集中以及实现复杂度等多方面来 综合考虑。主要的变换方式有以下几种:
K-L变换 最佳变换,复杂度高,不适用
FFT(快速傅里叶变换) 表现效率低
DCT(离散余弦变换) 效果出色,接近K-L变换,适合块内进行
小波变换 适合全局冗余的消除

量化

量化是降低数据表示精度的过程,通过量化可以减少需要编码的数据量,达 到压缩数据的目的。量化可分为矢量量化和标量量化两种。矢量量化是对一组数据联合量化。标量量化独立量化每一个输入数据,标量量化也是一维的矢量量化。
编码图像的失真主要是由于量化引起的。

扫描

变换量化系数在熵编码之前通常要通过“Z”字(Zigzag)扫描。通过Zigzag扫描可将二维变换量化系数重新组织为一维系数序列,经过重排序的一维 系数再经过有效的组织能够被高效的编码。扫描的顺序一般根据待编码系数的非 零系数分布,按照空间位置出现非零系数的概率从大到小排序。排序的结果是使 非零系数尽可能的出现在整个一维系数序列前面,而后面的系数尽可能为零或者 接近于零,这样排序非常利于提高系数的熵编码效率。

熵编码

信息熵冗余的消除主要通过熵编码来实现。视频编码常用的熵编码方法有两种:变长编码(Variable Length Coding, VLC)和算术编码(Arithmetic Coding)。