视频编码之空间模型

空间模型的目标是把时间模型中生成的残差,通过一个变换转换到另一个空间。去除各个残差之间的相关性。这样的变换必须满足一些要求,比如说

  • 要可逆
  • 要减少个系数的相关性
  • 计算不要太复杂

现在的视频处理过程基本上都是基于宏块的,因此这个变换也是要基于宏块的,目前比较普遍采用的变换是离散余弦变换(DCT)。

Y = AXA’

其中A是一个给定的变换矩阵,输出Y为一个系数矩阵(4×4),其中的系数可以认为是一些基本图像模式的权重。对于4×4变换而言,这些基本的图像模式为:


这样,原始的图像可以认为这这些基本图像在该系数权重下生成的最终图像。

由于生成的系数都是小数,我们希望把这些小数变成整数,于是在变换以后,多出一个步骤叫量化,量化的目标是把这些系数从一个区域映射到一个另一个区域。这个映射为:

FQ = round (X/QP) , Y=QP *round( X/QP )

这里的QP是量化的步长,步长为1,表示将这个数字round到最近的整数,步长为4,表示把这个数字round到4的整数倍,以此类推。如此,量化以后,原来的数字被映射到一些固定的整数,步长太大,则丢失的信息越多,反之则越接近于原来的数字。对DCT系数最量化的结果是有不少的系数因为靠近零,结果被量化成了0.

量化以后,生成的DCT系数,有很多是为零的,不为零的只占少数,有人专门研究了这个DCT系数的分布,研究发现,系数分布从左上角到右下角是逐渐减小的,并且是基于对角线对称的。对于场块系数而言,靠左边的系数较大,靠右边的系数较小。

有了这样的前提以后,如果把非零系数和零系数分开会比较有利于压缩和编码。对于帧图,系数的存储顺序如下图,(这是8×8示意图,对4×4同样适用)

这样大的非零的系数就排在前面,而较多的零系数则排在后面。这样排列非常有利于对这些系数进行压缩编码。
如此,生成并经过重排的系数被送到后面一个熵编码模块。



本文地址: http://www.bagualu.net/wordpress/archives/693 转载请注明




发表评论

电子邮件地址不会被公开。 必填项已用*标注