在H.264算法中,量化主要是针对 4*4的残差矩阵进行的。
基本原理是利用经过修正的DCT。
基本框图如下所示:
由于无修正的DCT变换将导致变换结果均为实数,对实数的DCT,由于在解码端的浮点运算精度问题,会造成解码后的数据的失配,进而引起漂移。而H.264对漂移是很敏感的。为此需要对DCT变换矩阵进行改造。
以上是变换后的计算公式。
下面,开始量化过程。
定义 qbits=15+floor(QP/6)
其中: floor表示向下取整,QP取值0~51,QP影响图像质量。
再定义矩阵MF= (Ef . / QStep ). *2^qbits
其中:括号内表示Ef矩阵中的每个元素均除以Qstep值, 然后将得到一个临时矩阵,然后再把该临时矩阵中的每一个元素乘以 2的qbits次方。
最后,量化的结果为矩阵Z44
Z= round(W .*MF ./ 2^qbits)
W为 CXC‘,即上图中的等式右边但不乘以Ef的结果
同样使用的是 .* 和 ./ 表示对应位置元素的乘除
实际中的运算过程稍微有改变:
Z=round( (W .*MF+f )./ 2^qbits )
其中 f=2^qbits /3  对于帧内预测
f=2^qbits/6   对帧间预测
现在举例说明QP不同,对量化结果的影响。
 
对残差矩阵X:
5   11  8   10

9   8    4   12

1   10  11 4

19 6    15 7