资源描述
整数变换及量化
1.目的:
进一步节省图像传输码率→对图像信号进行压缩→方法→去除图像信号中的相关性,减少图像编码的动态范围
变换编码 量化技术
将图像时频信号变换成频域信号 根据图像动态范围的
大小确定量化参数
信号能量集中在低频,比时域时码率下降
H.264中,将两个过程中的乘法合二为一,并进一步采用整
数运算,减少了编解码的运算量,提高图像压缩的实时性
流程图:
2. 整数变换
(1) 一维N点离散余弦变化(DCT)为:
其中,是输入时域序列的第n项,是输出频域序列中的第k项,系数定义为:
对,k=0时的系数为直流分量,其它系数成为AC系数。
(2) 二维N*N点图像块的离散余弦变化(DCT)为:
可理解为先对图像块的每行进行一维DCT,在对经行变换的块的每列再应用一维DCT。可以表示为:
为图像块中第i行第j列图像的残差值,是变换结果矩阵Y相应频率点上的DCT系数。用矩阵表示:
其中,。
H.264中对4*4的图像块进行操作,则相应的4*4的DCT变换矩阵A为:
设,则
A中a,b,c是实数,而图像块X中元素是整数。对实数的DCT,由于在解码端的浮点运算精度问题,会造成解码后的数据的失配,进而引起漂移。H.264由于预测过程,其对预测漂移是十分敏感的,因此,对A进行改造,采用整数DCT技术,可有效减少计算量,同时不损失图像的准确度。
,为简化,取d=0.5.
“”表示结果中的每个元素乘以矩阵E中对应位置上的系数值的运算。
同时为了保持变换的正交性,对b修正,取。
对矩阵C中第2行和第4行,和CT中的第2列和第4列,乘以2改造,改造矩阵E为Ef。
(1)
“”对每个矩阵元素只进行一次乘法。 归纳到量化里。
只剩下整数的加法、减法和移位运算。
实际的DCT输出为: (2)
r=2:整数DCT变换 r=1:Hadamard变换
(程序中用的算法)
3. 量化
(1)概念
H.264中,量化步长一共52个值。QP是量化参数,是量化步长的序号。 QP每增加6,增加一倍。(QP小,量化精细;QP大,量化粗糙)
亮度编码:采用QP值范围0—51;
色度编码:采用QP值范围0—39。(避免在较高的量化步长时出现颜色量化人工效应)。
(2) 量化理论:
H.264中,量化过程是对前面(1)式的DCT结果进行操作:
其中,是矩阵Y中的转换系数,是输出的量化系数,是量化步长。
实际上,H.264量化过程还要完成DCT变换中的“”乘法运算,即:
(3)
其中,是矩阵W中的转换系数(见(2)式),PF是矩阵中的元素,根据样本点在图像块中的位置(i,j)取值:
利用量化步长()随量化参数(QP)每增加6而增加一倍的性质,可以进一步简化计算。设:
令:
floor()为取整函数(不大于输入实数的最大整数)。式(2)可写成:
这样,MF可以取整数,见下表:
表中只列出QP值为0到5的MF值,对于QP值大于5的情况,只是qbits值每增加6而增加1,而对应的MF值不变。这样,量化过程则为整数运算,并且可以避免除法。
(3) 量化运算公式:
具体的量化过程的运算为:
f为偏移量,用以改善恢复图像的视觉效果。对帧内预测图像块f取,对帧内预测图像块f取。
4. DCT直流系数的变换量化(Hadamard变换)
如果当前处理的图像宏块是色度块或帧内16*16预测模式的亮度块,则需要将其中各图像块的DCT变换系数矩阵W中的直流分量或直流系数按对应图像块的顺序排序,组成新的矩阵,再对进行Hadamard变换及量化。(上面的量化过程就不需对各图像块的单独进行量化)
(1) 帧内16*16预测模式亮度块的直流系数变换量化
16*16的图像宏块中有4*4个4*4的图像亮度块,所以亮度块的为4*4矩阵,其组成元素为各图像块DCT的直流系数,见下图:
对亮度块的Hadamard变换为:
YD是Hadamard变换结果。
接着对YD再进行量化输出:
是位置为(0,0)的MF系数值。
4*4Hadamard变换也可采用快速算法(上面DCT快速算法图中有)。
(2) 色度块的直流系数变换量化
色度块的Hadamard变换为:
YD再进行量化输出:
展开阅读全文