当前位置:文档之家› H264变换与量化

H264变换与量化

1. 简介

为了进一步节省图像传输码率,需要对图像信用进行压缩,通常采用变换编码及量化来消除图像信号中的相关性及减小图像编码的动态范围。变换编码将图像时域信号变换成频域信号,在频域中,图像信号能量大部分集中在低频区域,相对时域信号,码率有较大下降。H.264对图像或预测残差采用4x4整数离散余弦变换技术,避免了以往标准中使用的通用8x8离散余弦变换、逆变换经常出现的失配问题。量化过程根据图像的动态范围大小确定来量化参数,即保留了图像必要的细节,又可减少码流。

在图像编码中,变换编码和量化从原理上讲是相互独立的两个过程。但在H.264中,将两个过程中的乘法运算合二为一,并进一步采用整数运算,较少编码的运算量,提高了图像压缩的实时性,这些措施对峰值信噪比(PSNR )影响很小,可以忽略不计。H264的整数变换及量化过程如图1,其中,如果输入块是色度块或帧内16x16预测模式的亮度块,则将宏块中各4x4块的整数余弦变换的直流分量组合起来再进行Hadamard 变换,进一步压缩码率。

DCT 直流系数变换,内16x16预测模式下度块直流系数变换和

图1 编码器中变换编码和量化过程

2.离散变换

H.264协议中的变换方式主要有3种:4x4残差变换(实际为整数DCT 变换);4x4亮度直流系数变换(16x16帧内模式下)(离散哈达玛变换);2x2色度直流系数变换(离散哈达玛变换)。

2.1 整数DCT 变换

2.1.1 按理论推导,二维NxN 图像块的DCT 变换的公式实际为

(公式1)

由于A中的a, b, c都是实数,而图像块X中的元素都是整数,对实数的DCT,由于在解码端存在浮点数运算精度的问题,会造成解码后的数据的失配,进而引起漂移。由于H.264中使用了较多的预测过程,甚至内部编码模式也依赖于空间预测。因此H.264对预测漂移是十分敏感的,为此H.264对4x4 DCT中的A军阵进行了改造。采用整数DCT技术,有效的减少了计算量,同时不损失图像的准确度。

2.1.2 H.264对4x4DCT运算的改造过程

(1). 首先(公式1)可以等效为

其中,d=c/b,约为0.414,符号表示结果中每个元素乘以矩阵E中对应位置上的系数值的运算(也即流程图中所说的比例缩放)。

(2). 为简化计算,取d=1/2,同时又要保持变换的正交性,对b进行修正,得到

(公式2)

(3). 将矩阵C中d所在位置的参数变为整数,即C的第二行和第四行以及C的转制矩阵中的第二列和第四列分别乘以2,同时相应的改造矩阵E为Ef,以保证与(公式2)等效。如下

(公式3)

(4). H.264将Ef的实数运算过程融入到后面的量化过程中,因此就形成了只有整数变换的DCT过程,公式如下

(公式4)可以将上述公式中的矩阵乘法运算改造成两次一维整数DCT变换,例如先对图像或残差块的每行进行一维整数DCT,然后对经行变换的块的每列再应用一维整数DCT,而每次一维整数DCT可以采用蝶形快速算法,这样可以节省计算时间。

2.2 H.264的4x4亮度直流系数变换(帧内16x16预测模式亮度块的直流系数变换)

如果当前处理的图像宏块是帧内16x16预测模式的亮度块,经上面4x4整数DCT变换后直流分量集中在每个4x4矩阵的左上角,将这些直流分量取出来

图2 16x16帧内预测模式下亮度块的直流系数矩阵

注: 黑色的数字-1到15表示传递顺序,最先传递-1表示的W D直流系数。

对直流系数矩阵W D进行哈达玛变换,公式如下

(公式5)

2.3 色度块的直流系数变换

每个宏块中包含图像色度Cr及Cb(每色度为8x8大小的矩阵)该系数矩阵经上述4x4的DCT整数变换后,每个4x4的子矩阵左上角都是直流系数分量,由这些直流系数分量组成2x2的色度直流系数矩阵W D,如下图

图3 色度直流系数矩阵(其中的顺序为其在每个宏块数据中的传递顺序)

然后对W D进行哈达玛变换,公式如下

(公式6)

3.量化

上述每个变换过程之后都伴随着量化过程。(下面公式中是以整数DCT后的量化为例列出的)

量化的原则是在不降低视觉效果的前提下尽量减少图像编码长度,减少视觉恢复中不必要的信息。

量化器原理

H264中采用标量量化技术,它将每个图像样点编码映射成较小的值,一般的标量量化器原理是

(公式7)其中Y ij是矩阵Y(即整数DCT中理想公式中的Y)中的转换系数,Z ij是输出的量化系数,Q step是量化步长。量化步长决定量化器的编码压缩率以及图像精度。如果量化步长较大,则量化值Z ij动态范围较小,其相应的编码长度较小,但反量化时会损失较多的图像细节信息;如果量化步长比较小,则Z ij动态范围较大,相应的编码长度也较大,但图像细节损失较少,H.264编码器根据图像值实际动态范围自动改变量化步长值,在编码长度和图像精度之间折衷,达到整体最佳效果。

H.264中的量化步长

在H.264中,量化步长Q step共有52个值如表1所示,其中QP是量化参数,是量化步长的序号,QP每增加6,Q step增加一倍。

表1 量化步长和量化参数

对于色度编码,一般使用与亮度编码同样的步长,为了避免在较高量化步长时出现颜色量化人工效应,H.264草案规定亮度的QP最大值是51,色度QP的最大值是39。

量化过程的实际表述

H.264的实际量化过程中还要同时完成DCT变换中的Ef运算过程,因此实际公式应表述为

(公式8)其中W ij是矩阵W中的转换系数(即公式4中的W)。PF是矩阵E f中的元素,根据样本点在图像块中的位置(i, j)取值为

利用量化步长随量化参数每增加6而增长一倍的性质,可以进一步简化计算,设qbit=15+floor(QP/6),令

这样,公式8变为

(公式9)这样MF就可以在不影响Zij值的情况下取接近的整数,量化过程变为整数运算,并且可以避免使用除法,还能确保用16位算法来处理数据,从而在没有PSNR性能恶化的情况下实现最小的运算复杂度。表2列出了QP值为0-5的MF值,对于QP大于5的情况,只是qbits随QP值每增加6而增加1,而对应的MF值不变。

表2 MF的实际取值

实际的量化处理过程中,还增加了修正偏移量,如下

(公式10)

修正偏移量的作用是改善恢复图像的视觉效果,对帧内预测图像块,f取/3,对帧间预测图像块f 取/6。

4.变换与量化的完整步骤描述

对输入的4x4块做整数DCT变换,公式如下

比例缩放和量化,如下

如果是色度块或帧内16x16预测模式的亮度块,则取出直流系数组成W D,进行哈达玛变换,如下

4.4 如果执行了步骤4.3,则对Y D进行比例缩放和量化

相关主题
相关文档 最新文档