一、介绍
1、量化就是把信号的连续取值映射成多个离散的幅值的过程,实现了信号取值多对一的映射。
2、残差数据进过变换之后,变换系数具有较大的取值范围,量化可以有效减小信号的取值范围,进而获得更好的压缩效果,量化是造成失真的根本原因
二、衡量失真的三种准则(分别有对应的公式):
1、均方差MSE
2、信噪比SNR
3、峰值信噪比PSNR
三、HEVC可以使用的传统量化方法
1、大概的公式:l = floor(c/Qstep + f),c表示系数、Qstep表示量化步长、l表示量化后的值,floor是向下取整函数,f控制舍入关系
2、HEVC有52个量化步长,对应了52个量化参数QP,可以通过查表查询
3、对于色度分量,量化参数限制为0~45。具体的说,当亮度分量的QP小于30时,色度分量的QP和亮度的相同,当亮度信号QP在30~51时,两者的关系可以通过查表得出
4、量化过程同时要完成整数DCT中的比例缩放运算,为了避免浮点计算,HEVC把分子分母进行放大处理,然后取整,以此保证运算精度,QP的运算方式也要进行调整:QP = floor(QP/6) + QP % 6
5、总的量化公式:
四、HEVC使用的RDOQ(率失真优化量化)
1、把量化与率失真优化过程结合,给定多个可选的量化值,利用RDO(率失真优化)选出最优的值
2、操作步骤:
(1)确定当前TU每个系数的可选量化值,利用下面公式进行预量化:
(2)利用RDO准则确定当前TU所有系数的最优量化值QP(注意是每个系数的QP)
(3)利用RDO准则确定当前TU每一个系数块组(CG,4x4的块)是否量化成全零组。如果当前的CG是全零CG,那么只需要编码全零标志;否则,要编码所有的系数。具体是:遍历所有的CG,计算其量化为全零CG时的率失真代价,与原来的率失真代价比较,如果全零CG对应的率失真代价较小,那么令当前CG为全零CG
(4)利用RDO准则准确确定当前TU最后一个非零系数的位置
五、HEVC中灵活的QP控制技术
1、量化组QG。是指把一帧图像分成固定大小(NxN)的正方形像素块,其大小又PPS指定,且必须处于CTU和最小CU之间(包含他们)
2、一个CTU可以包含一个或多个固定大小的QG,同一个QG内的所有含有非零系数的CU共享一个QP
3、HEVC中使用相邻的QG的信息来预测当前QG的QP(下面假设A是当前QG的左侧QG,B是当前QG的上方QG):
(1)对于一个slice的第一个QG,A和B都不存在,此时使用当前slice的QP作为该QG的预测QP
(2)去过QG位于slice的上边界,那么B不存在,此时把B替换成前一个已经编码的QG
(3)如果QG位于一个slice的左边界,A不存在,此时把A替换成前一个已编码的QG
(4)预测的QP的计算公式
六、量化矩阵。
1、使用量化矩阵的原因是,对不同位置的系数使用不同的量化步长,这样能提高视频的主观质量
2、量化矩阵作用于比例缩放过程(比例缩放过程在变换和量化之间),其大小和TU相同(从4x4到32x32)
3、HEVC定义了4x4和8x8两种大小的默认量化矩阵,并规定16x16、32x32量化矩阵可以由8x8量化矩阵采样得到
4、HEVC对量化矩阵中的元素使用差分编码!
补充量化参数:
1. 量化参数QP是量化步长Qstep的序号。对于亮度(Luma)编码而言,量化步长Qstep共有52个值,QP取值0~51,对于色度(Chroma)编码,Q的取值0~39。
Quantizer Parameter,量化参数,反映了空间细节压缩情况。值越小,量化越精细,图像质量越高,产生的码流也越长。如QP小,大部分的细节都会被保留;QP增大,一些细节丢失,码率降低,但图像失真加强和质量下降。
QP取最小值0 时,表示量化最精细;相反,QP取最大值51时,表示量化是最粗糙的。
QP和Qstep具有线性相关性,Qstep随着QP的增加而增加,每当QP值增加6,Qstep便增加一倍。
量化是在不降低视觉效果的前提下减少图像编码长度,减少视觉恢复中不必要的信息。H264采用标量量化技术,它将每个图像样点编码映射成较小的数值。一般标量量化器的原理为:FQ = round(y/Qstep)。其中,y为输入样本点编码,Qstep为量化步长,FQ为y的量化值。其相反过程即反量化为:y' = FQ ·Qstep。
1)Round(x)函数
其功能采用“银行家舍入”算法,即四舍五入取偶。详细地说是这样,四舍六入五考虑,五后非零就进一,五后皆零看奇偶,五前为偶应舍去,五前为奇要进一。
2)在YUV中,“Y”代表明亮度(Luminance或Luma),也就是灰阶值; 而“U”和“V”表示的则是色度(Chrominance或Chroma),作用是描述图像色彩及饱和度,用于指定像素的颜色。
2. min qp 最小量化步长
说明:设置x264可以使用的最小量化器。量化参数越小,输出越接近输入。使用某些值时,x264的输出可以和输入看起来完全一样,虽然其实并不是精确相同的,通常就够了没有必要使用更多比特在宏块上了。如果开启了自适应量化器(默认开启),则不鼓励提高qpmin的值,那样可能会降低帧的平坦部分的质量。
3. max qp最大量化步长
说明:qpmin的反面,设置x264可以使用的最大量化器。默认值51是H.264标准中的最大值,质量非常低。默认值51其实相当于没有设置qpmax。如果你想控制x264输出的最低品质,也许你想要把这个值调低一点(调到30-40最低了),但一般而言不推荐调节这个值。