mpeg2解码过程,标准解读part2

(三)反扫描

扫描包括两种方式,有图像头扩展中的alternate_scan决定,具体如下图所示,其中alternate_scan为的时候就是zig-zag扫描。

894-412663ac29097b42

894-412663ac291eb852

(四)反量化

反量化的总体步骤如下所示:

894-412663ac9fd70a3d

QF为反扫描之后的数据,F为反量化之后的数据,F会传递给IDCT。

编码的过程中,在DCT之后的数据,如果直接拿来编码,数据的位宽比较宽。对编码来讲,可以损失一部分精度,而得到更大的压缩率,损失的这部分精度,并不会在视觉效果上产生很大的影响。因此,就存在量化这一步:即把一个比较大的数据,除上一个数,使得表示这个数变小,利于编码。

1.反量化算法

量化的时候,是将原始数据除上一个数,反量化的时候,就是乘回去。而乘回去的这个量化系数对不同的情况,选择不一样。反量化的输出记为F''

1)内部DC系数

DC系数的反量化方式如下:

894-412663aca7bd4018

而intra_dc_mult根据下面这个表选择决定

894-412663aca801845d

2)其他系数

对其他系数,按照下面的重构公式进行重构:

894-412663aca9097b42

W为量化矩阵(加强矩阵),quantiser_scale为量化器比例因子。下面解释其中各个变量的选取方法。

a)量化矩阵(加权矩阵)W

不同的block同样有不同呃量化矩阵(加权矩阵)W[w][v][u],w取值为0-3,指明要用哪个矩阵。规则如下所示:

894-412663aca8ba9876

b)量化器比例因子

量化器比例因子根据quantiser_scale_code和q_scale_type两个参数选择,具体选择方式参见标准的表7-6

2.饱和化

饱和化是要将F''钳位到一个固定的区间范围之内[-2048:2047],输出为F',具体做法如下:

894-412663acab579be0

3.解谐控制

根据一定的算法,修正F',恢复出F。具体做法如下:

894-412663acac048d16

首先将所有的系数求和,然后根据和的最低位的奇偶性来修改F[7][7],其他系数不变。

既然我们只关心sum的奇偶性,因此没有必要真正的求和,可以用异或运算代替这个求和运算。

至此,反量化完成,输出的结果F,将进行IDCT。

(五)逆离散余弦变换

IDCT的定义公式如下:

894-412663acaf363bec

其中

894-412663acaf530ecb

正变换的输入和反变换的输出以9个比特位表示。DCT系数以12个比特位表示。DCT系数的变化范围是[-2048:2047]

posted on 2009-09-04 16:35  vincenzo.lai  阅读(1313)  评论(0)    收藏  举报

导航