量化参数QP:quantization parameter 以及 HEVC

摘要:
1、 引言1。量化是将信号的连续值映射到多个离散振幅的过程,实现信号值的多对一映射。量化可以有效地减少信号值的范围。1.均方误差MSE2、信噪比SNR3、峰值信噪比PSNR。3.HEVC可以使用的传统量化方法。1.近似公式:c表示系数,Qstep表示量化步长,l表示量化值。通过查找表可以获得两者之间的关系。4.量化过程还应完成整数DCT中的缩放操作。
一、介绍
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、总的量化公式:
 
量化参数QP:quantization parameter 以及 HEVC第1张
四、HEVC使用的RDOQ(率失真优化量化)
1、把量化与率失真优化过程结合,给定多个可选的量化值,利用RDO(率失真优化)选出最优的值
2、操作步骤:
     (1)确定当前TU每个系数的可选量化值,利用下面公式进行预量化:
          量化参数QP:quantization parameter 以及 HEVC第2张
     (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的计算公式
        量化参数QP:quantization parameter 以及 HEVC第3张
 
六、量化矩阵。
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:quantization parameter 以及 HEVC第4张

 量化参数QP:quantization parameter 以及 HEVC第5张

 量化参数QP:quantization parameter 以及 HEVC第6张

量化参数QP:quantization parameter 以及 HEVC第7张

量化参数QP:quantization parameter 以及 HEVC第8张

量化参数QP:quantization parameter 以及 HEVC第9张

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最低了),但一般而言不推荐调节这个值。

免责声明:文章转载自《量化参数QP:quantization parameter 以及 HEVC》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇struts 2 时间控件Idea基本设置下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

UnityShader实例09:Stencil Buffer&Stencil Test

http://blog.csdn.net/u011047171/article/details/46928463 Stencil Buffer&Stencil Test 在开始前先吐槽下unity的官方文档,说实话关于stencil ,官方文档真的是可以不要了,除了记流水账般解释了下各个参数的作用,作为例子的shader也是让人一头雾水,整个文...

js object 常用方法总结

Object.assign(target,source1,source2,...) 该方法主要用于对象的合并,将源对象source的所有可枚举属性合并到目标对象target上,此方法只拷贝源对象的自身属性,不拷贝继承的属性。 Object.assign方法实行的是浅拷贝,而不是深拷贝。也就是说,如果源对象某个属性的值是对象,那么目标对象拷贝得到的是这个对象...

document.cookie的使用

设置cookie 每个cookie都是一个名/值对,可以把下面这样一个字符串赋值给document.cookie:document.cookie="userId=828";如果要一次存储多个名/值对,可以使用分号加空格(; )隔开,例如: document.cookie="userId=828; userName=hulk"; 在cookie的名或值中不...

memset函数及注意事项

  memset函数的原型为:void * memset(void *ptr,int value,size_t num);用于为地址ptr开始的num个字节赋值value。   memset函数的头文件为:C:<memory.h>或<string.h>    C++:<cstring>。   在用memset为申请的数组...

border-radius的兼容问题

  border-radius可以便捷的制作圆角效果,不需要通过增加圆角图片来达到效果,便于维护。 语法:border-radius:none | 1-4 length | % / 1-4 length|% 按顺序设置圆角四个方向的值,和设置border的顺序一样。 ' / '前后的值都存在,那么' / '前面设置的值为水平半径,后面设置的值为垂直半径。若...

Opencv之斑点(Blob)检测SimpleBlobDetector_create

转载:(158条消息) Opencv之斑点(Blob)检测--SimpleBlobDetector_create_ancy的博客-CSDN博客 斑点(Blob)的定义: 图像特征点检测包括角点和斑点,斑点是指二维图像中和周围颜色有颜色差异和灰度差异的区域,因为斑点代表的是一个区域,所以其相对于单纯的角点,具有更好的稳定性和更好的抗干扰能力.斑点通常是指与周...