您的位置:首页 > 其它

H.264的权重量化机制(转载)

2010-05-17 20:17 197 查看
本篇旨在讲解H.264的权重量化机制,至于H.264的量化本篇只简略带过,量化的详细内容可以参考h.264 white paper或毕厚杰的H.264书籍。本篇以4x4 ac系数为例进行讲解,8x8ac, dc, chroma dc, ac等系数的权重量化机制亦雷同。

一、关于量化表
H.264标准早期是没有权重量化的概念,权重量化是在制定high profile(即FRExt)的时候引入的。所谓权重量化,就是对各个位置的变换系数采用不同的量化步长。引入权重量化是基于这样一个前提,不同位置的变换系数对于主观感知的重要程度是不相同的,因此对不同位置的变换系数采取的量化程度应该不同。
H.264之前的编码标准,如MPEG2和H.263等,都有权重量化的机制,它们采用了基于感知的量化因子矩阵。由于H.264编码标准中的变换和量化是有结合的,所以,其权重量化的设计同早期标准的量化因子矩阵不同,本文后面篇幅会具体讲述H.264的权重量化机制。

二、H.264的量化机制
量化:



反量化:



三、引入权重量化之后的量化机制
量化:
cij = ( dij * LevelScale( qP % 6, i, j) ) >> ( 15 + floor(qP / 6))
其中LevelScale( qP % 6, i, j) = MF * 16 / SCALEij;
反量化:
dij = ( cij * DeLevelScale( qP % 6, i, j) ) << ( qP / 6 – 4)
其中DeLevelScale( qP % 6, i, j) = Vij * SCALEij;

【对比】
根据前面给出的两套量化公式,可以看出,引入量化表之后,量化和反量化即对各点MF和Vij通过SCALEij进行缩放。因此,只要给定SCALEij表,就达到了权重量化的目的。

四、SCALE表的类型
H.264中规定了八种SCALE表,依次是:帧内亮度4x4、帧内色度U4x4、帧内色度V4x4、帧间亮度4x4、帧间色度U4x4、帧间色度V4x4、帧内亮度8x8、帧间亮度8x8。
五、SCALE表的编码传输
SCALE表是放在图像参数集中传输的,其编码方式采用的是简单的差分编码。

六、如何兼容早期的量化机制
引入权重量化之后的量化和反量化公式,如果要实现之前的无权重量化方式,或称FLAT模式,只需将SCALE表中每个元素值置为16即可。

附:JVT默认的SCALE
# This is the configuration file for initialising the Q matrix.
# Altogether 6 matrix for 4x4 block and 2 matrix for 8x8 block
# The values range from 1 to 255
# If first value of matrix is equal to 0, default values will be used for that matrix
###############################################################################

INTRA4X4_LUMA =
0,12,19,26,
12,19,26,31,
19,26,31,35,
26,31,35,39

INTRA4X4_CHROMAU =
0,12,19,26,
12,19,26,31,
19,26,31,35,
26,31,35,39

INTRA4X4_CHROMAV =
0,12,19,26,
12,19,26,31,
19,26,31,35,
26,31,35,39

INTER4X4_LUMA =
0,13,18,21,
13,18,21,24,
18,21,24,27,
21,24,27,30

INTER4X4_CHROMAU =
0,13,18,21,
13,18,21,24,
18,21,24,27,
21,24,27,30

INTER4X4_CHROMAV =
0,13,18,21,
13,18,21,24,
18,21,24,27,
21,24,27,30

INTRA8X8_LUMA =
0,10,13,16,19,24,26,28
10,12,16,19,24,26,28,31
13,16,19,24,26,28,31,33
16,19,24,26,28,31,33,35
19,24,26,28,31,33,35,37
24,26,28,31,33,35,37,39
26,28,31,33,35,37,39,42
28,31,33,35,37,39,42,44

INTER8X8_LUMA =
0,12,14,16,18,19,21,22,
12,13,16,18,19,21,22,24,
14,16,18,19,21,22,24,25,
16,18,19,21,22,24,25,27,
18,19,21,22,24,25,27,28,
19,21,22,24,25,27,28,30,
21,22,24,25,27,28,30,31,
22,24,25,27,28,30,31,33
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: