嵌入式 量化参数QP和量化步长Qstep

原创 2013年12月02日 14:51:38

H.264编解码器中,量化参数QP和量化步长Qstep的关系:

量化步长Qstep共有52个值。(对于亮度编码而言)

量化参数QP是量化步长Qstep的序号,取值0~51。

QP取最小值0 时,表示量化最精细;相反,QP取最大值51时,表示量化是最粗糙的。

Qstep随着QP的增加而增加,QP每增加6,Qstep增加一倍。

对于色度编码,QP的最大值是39。

RT.假设源和输出都是8bit.

 

QP
Qstep
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
50
208
51
224
對於YUV 4:2:0的顏色空間,luma分量的qp範圍為0-51,chroma分量的qp範圍為0-39

其中,qp就是x264 --qp中的那個qp. quantization parameter,Qstep是量化步長,即:

Zij=round(Wij/Qstep)

其中Wij代表一個宏塊(macroblock)經DCT變換后的係數.這個宏塊在h264標準鐘可以是16x16,16x8,8x16,8x8,8x4,4x8,4x4等大小,其來源可以是I幀或者P/B幀的殘差值等等.

這裡同樣和JPEG標準不同,每個宏塊採用相同的量化步長量化.

QP和ln(Qstep)具有線性相關性,每當QP值增加6,Qstep便增加一倍.

因此當raw源中每當某分量每像素平均比特數增加一,最大QP值便可以增加6;反之如果減少一,最大QP值便應該減少6.這一點在x264源碼中也有體現.

因此10bit視頻的luma(亮度)分量其最大量化值就是51+2*6=63.

此外也可以看到當x264 --qp 0時並不是嚴格意義上的無損編碼,只不過是0.625的量化步長幾乎難以產生量化噪聲,因此可以近似看成無損編碼.

而x264的crf和2pass碼率控制模式就是通過marco-block tree等工具,採用一定的預測算法,考慮人眼對不同內容的敏感程度,來確定不同宏塊/幀的量化值,從而完成最終成品的碼率控制的

变换与量化

1、   变换量化的过程如图3-1所示:

                                        图3-1

2、 H.264 对4×4 的图像块(亮度块或Cr、Cb 色度块)进行操作,则相应的4×4DCT 变换矩阵A为:

,则:

H.264 对4×4DCT 中的进行了改造,采用整数DCT 技术,有效地减少计算量,同时不损失图像准确。上式可等效为:

其中,d=c/b(≈0.414)。符号“?”表示(CXCT)结果中的每个元素乘以矩阵中对应位置上的系数

值的运算。为了简化计算,取d 为0.5。同时又要保持变换的正交性,对b 进行修正,取b=√(2/5) 。对矩阵中的第2 行和第4 行,以及矩阵CT 中的第2 列和第4 列元素乘以2,相应地改造矩阵EEf,以保持原式成立,得到:

H.264 将DCT 中“?Ef”运算的乘法融合到后面的量化过程中,实际的DCT 输出为:

3、  量化:

 

     

4、 在H.264 中,量化步长Qstep 共有52 个值。如表3-1 所示。其中QP 是量化参数,是量化步长的序号,QP 每增加        6,Qstep 增加一倍。

表3-1

5、 量化步长是实际用来进行量化的值,量化参数只是量化步长的别名。

6、 亮度QP 的最大值是51,而色度QP 的最大值是39。

7、 H.264 量化过程还要同时完成DCT 变换中“?Ef”乘法运算,它可以表述为:

其中,Wij 是矩阵中的转换系数,PF 是矩阵Ef 中的元素,根据样本点在图像块中的位置(i, j)取值:

 

利用量化步长随量化参数每增加6 而增加一倍的性质,可以进一步简化计算。设:

qbits = 15 + floor(QP/6)。

。于是:

这样,MF 可以取整数。表3-2 只列出对应QP 值为0 到5 的MF 值,对于QP 值大于5 的情况,只是qbits 值随QP 值每增加6 而增加1,而对应的MF 值不变。这样,量化过程则为整数运算,并且可以避免使用除法。

表3-2

具体量化过程的运算为:

 

其中sign()为符号函数;f 为偏移量,它的作用是改善恢复图像的视觉效果例如,对帧内预测图像块f 取2qbits/3,对帧间预测图像块f 取2qbits/6

 

8、 如果当前处理的图像宏块是色度块或帧内16×16 预测模式的亮度块,则需要将其中各图像块的DCT 变换系数矩阵中的直流分量或直流系数W00 按对应图像块顺序排序,组成新的矩阵WD,再对WD 进行Hadamard 变换及量化。

9、 对亮度块WD 的Hadamard 变换为:

其中,YD 是Hadamard 变换结果。接着要对YD 再进行量化输出:

 

   10、对各色度块WD 的Hadamard 变换为:

       

       其中,YD 是Hadamard 变换结果。接着要对YD 再进行量化输出:

      

 

11、zig-zag扫描顺序如下图3-1:

         

 

         

帧模式                   

                                                                                                   场模式

                                                                                                   图3-1

                cbp是什么参数?

12、cbp一共6bit,高2bit表示cbpc (2:cb、cr中至少一个4x4块的AC系不全为0;1:cb、cr中至少一个2x2的DC系数不全为0;0:所有色度系数全0)。低4bit分别表示4个8x8亮度块,其中从最低一位开始的4位分别对应00,10,01,11位置的8*8亮度块。如果某位为1,表示该对应8*8块的4个4*4块中至少有一个的系数不全为0。 

13、level:幅值;run: 每个非零系数前面 0 的个数。

相关文章推荐

JPEG2000中有损压缩中的量化步长的计算和思考

        量化是实现数据有损压缩的一个非常重要步骤。JPEG2000里面对小波系数的有损量化有个叫"死区标量量化"的东西(deadzonescalar quantization)。听起来很唬人的...

H.264量化参数QP和量化步长Qstep

1. 量化参数QP是量化步长Qstep的序号。对于亮度(Luma)编码而言,量化步长Qstep共有52个值,QP取值0~51,对于色度(Chroma)编码,Q的取值0~39。 QP取最小值0...

信息隐藏-预处理-猫脸变换-Arnold

信息隐藏可以将机密的信息,如图片文本等信息通过置乱加密,隐藏在公开的信息载体上。 现有的图像置乱加密技术有: 1.Arnold变换 2.幻方变换 3.许多许多.... 这里讨论到的是Arnold猫脸...
  • gaoapp
  • gaoapp
  • 2017年04月28日 16:29
  • 317

Arnold变换置乱图像

名称由来 Arnold变换是俄国数学家弗拉基米尔·阿诺德(Vladimir Igorevich Arnold)提出,Arnold将其应用在遍历理论研究中。由于Arnold本人最初对一张猫的图片进行了此...

HEVC有关量化参数Qp的计算

量化参数,简称QP,是解码中反量化过程中最重要的参数,我觉得HEVC解码的中Qp的计算有那一点复杂,标准有那么一点晦涩,这里来一起探讨下。 1.参数 PPS中关于Qp的参数: init_qp_...

嵌入式电网参数监测系统的研制

  • 2011年05月13日 21:22
  • 3.88MB
  • 下载

嵌入式C开发基础题(13)之C的变长参数

第13题:此题考查的是C的变长参数; #include #include int ripple ( int , ...); void main() { int num; num= ripple ...
  • xchbx
  • xchbx
  • 2013年09月12日 00:23
  • 1788
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:嵌入式 量化参数QP和量化步长Qstep
举报原因:
原因补充:

(最多只允许输入30个字)