mpeg2解码过程,标准解读part2
(三)反扫描
扫描包括两种方式,有图像头扩展中的alternate_scan决定,具体如下图所示,其中alternate_scan为的时候就是zig-zag扫描。
(四)反量化
反量化的总体步骤如下所示:
QF为反扫描之后的数据,F为反量化之后的数据,F会传递给IDCT。
编码的过程中,在DCT之后的数据,如果直接拿来编码,数据的位宽比较宽。对编码来讲,可以损失一部分精度,而得到更大的压缩率,损失的这部分精度,并不会在视觉效果上产生很大的影响。因此,就存在量化这一步:即把一个比较大的数据,除上一个数,使得表示这个数变小,利于编码。
1.反量化算法
量化的时候,是将原始数据除上一个数,反量化的时候,就是乘回去。而乘回去的这个量化系数对不同的情况,选择不一样。反量化的输出记为F''
1)内部DC系数
DC系数的反量化方式如下:
而intra_dc_mult根据下面这个表选择决定
2)其他系数
对其他系数,按照下面的重构公式进行重构:
W为量化矩阵(加强矩阵),quantiser_scale为量化器比例因子。下面解释其中各个变量的选取方法。
a)量化矩阵(加权矩阵)W
不同的block同样有不同呃量化矩阵(加权矩阵)W[w][v][u],w取值为0-3,指明要用哪个矩阵。规则如下所示:
b)量化器比例因子
量化器比例因子根据quantiser_scale_code和q_scale_type两个参数选择,具体选择方式参见标准的表7-6
2.饱和化
饱和化是要将F''钳位到一个固定的区间范围之内[-2048:2047],输出为F',具体做法如下:
3.解谐控制
根据一定的算法,修正F',恢复出F。具体做法如下:
首先将所有的系数求和,然后根据和的最低位的奇偶性来修改F[7][7],其他系数不变。
既然我们只关心sum的奇偶性,因此没有必要真正的求和,可以用异或运算代替这个求和运算。
至此,反量化完成,输出的结果F,将进行IDCT。
(五)逆离散余弦变换
IDCT的定义公式如下:
其中
正变换的输入和反变换的输出以9个比特位表示。DCT系数以12个比特位表示。DCT系数的变化范围是[-2048:2047]
posted on 2009-09-04 16:35 vincenzo.lai 阅读(1313) 评论(0) 收藏 举报
浙公网安备 33010602011771号