- 量化
量化就是把信号的连续取值映射成多个离散的幅值的过程,实现了信号取值多对一的映射。
残差数据进过变换之后,变换系数具有较大的取值范围,量化可以有效减小信号的取值范围,进而获得更好的压缩效果
量化是造成失真的根本原因 - 衡量失真的三种准则:
1、均方差MSE
2、信噪比SNR
3、峰值信噪比PSNR - HEVC可以使用的传统量化方法
1、大概的公式:l = floor(c/Qstep + f),c表示系数、Qstep表示量化步长、l表示量化后的值,floor是向下取整函数,f控制舍入关系
2、HEVC有52个量化步长,对应了52个量化参数QP,可以通过查表查询
3、对于色度分量,量化参数限制为045。具体的说,当亮度分量的QP小于30时,色度分量的QP和亮度的相同,当亮度信号QP在3051时,两者的关系可以通过查表得出
4、量化过程同时要完成整数DCT中的比例缩放运算,为了避免浮点计算,HEVC把分子分母进行放大处理,然后取整,以此保证运算精度,QP的运算方式也要进行调整:QP = floor(QP/6) + QP % 6 - HEVC使用的RDOQ(率失真优化量化)
1、把量化与率失真优化过程结合,给定多个可选的量化值,利用RDO(率失真优化)选出最优的值
2、操作步骤:
(1)确定当前TU每个系数的可选量化值,利用下面公式进行预量化:
|l| = round(|c|/Q_{step})
(2)利用RDO准则确定当前TU所有系数的最优量化值QP(注意是每个系数的QP)
(3)利用RDO准则确定当前TU每一个系数块组(CG,4x4的块)是否量化成全零组。如果当前的CG是全零CG,那么只需要编码全零标志;否则,要编码所有的系数。具体是:遍历所有的CG,计算其量化为全零CG时的率失真代价,与原来的率失真代价比较,如果全零CG对应的率失真代价较小,那么令当前CG为全零CG
(4)利用RDO准则准确确定当前TU最后一个非零系数的位置 - 量化矩阵。
1、使用量化矩阵的原因是,对不同位置的系数使用不同的量化步长,这样能提高视频的主观质量
2、量化矩阵作用于比例缩放过程(比例缩放过程在变换和量化之间),其大小和TU相同(从4x4到32x32)
3、HEVC定义了4x4和8x8两种大小的默认量化矩阵,并规定16x16、32x32量化矩阵可以由8x8量化矩阵采样得到
4、HEVC对量化矩阵中的元素使用差分编码! - 量化参数:
1、量化参数QP是量化步长Qstep的序号。对于亮度(Luma)编码而言,量化步长Qstep共有52个值,QP取值051,对于色度(Chroma)编码,Q的取值039。
2、量化参数,反映了空间细节压缩情况。值越小,量化越精细,图像质量越高,产生的码流也越长。如QP小,大部分的细节都会被保留;QP增大,一些细节丢失,码率降低,但图像失真加强和质量下降。
————————————————————————————————
0–0.625 1–0.6875 2–0.8125 3–0.875 4–1 5–1.125 6–1.25 7–1.375 8–1.625 9–1.75
10–2 11–2.25 12–2.5 13–2.75 14–3.25 15–3.5 16–4 17–4.5 18–5 19–5.5
20–6.5 21–7 22–8 23–9 24–10 25–11 26–13 27–14 28–16 29–18
30–20 31–22 32–26 33–28 34–32 35–36 36–40 37–44 38–52 39–56
40–64 41–72 42–80 43–88 44–104 45–112 46–128 47–144 48–160 49–176
————————————————————————————————
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),作用是描述图像色彩及饱和度,用于指定像素的颜色。
- min qp 最小量化步长
说明:设置x264可以使用的最小量化器。量化参数越小,输出越接近输入。使用某些值时,x264的输出可以和输入看起来完全一样,虽然其实并不是精确相同的,通常就够了没有必要使用更多比特在宏块上了。如果开启了自适应量化器(默认开启),则不鼓励提高qpmin的值,那样可能会降低帧的平坦部分的质量。
- max qp最大量化步长
说明:qpmin的反面,设置x264可以使用的最大量化器。默认值51是H.264标准中的最大值,质量非常低。默认值51其实相当于没有设置qpmax。如果你想控制x264输出的最低品质,也许你想要把这个值调低一点(调到30-40最低了),但一般而言不推荐调节这个值。