检测MPEG码流所需的基础知识

来源:广播电视与制作  作者:佚名
摘要:MPEG-2标准因其多层次的图像质量和传输速度、具有可分级性、灵活性和广泛的适应性,已成为DVB、HDTV信源编码的公认标准。近年来,除传输外,在电视中心的采集、制作和播出系统中以及多媒体领域里,也得到了广泛的应用。…

在MPEG-2标准中规定有逐行和隔行两种扫描方式,因此,对宏块有逐行和隔行分块方式,如图5、图6所示。通常隔行扫描时,有快速运动发生时,帧行间的空间相关性下降,场行间的空间相关性增大,可以采用基于场的预测效果较好,相反,在运动非常缓慢时,采用基于帧的预测效果较好。另外,还有基于场预测的双基预测(Dual Prime),通过传送一个基于场的矢量和一个小的差矢量,使得传送运动矢量所需的比特数比一般的基于场预测的方式要少一些,对于压缩数据是有利的。

图5 帧DCT编码中宏块的隔行分块方式
图6 场DCT编码中宏块的逐行分块方式

在MPEG压缩处理中,以当前编码帧的亮度宏块为基本单元使用块匹配法寻找其在邻近参考帧的区域位置,得出两者之间的空间位置的相对偏移量,这个相对偏移量就是通常所指的运动矢量,得出运动矢量这一过程称为运动估计。将找到的匹配像块从当前宏块中减去,得出差值,再对差值进行DCT余弦变换,可变字长编码后,形成编码的图像差值,从而使图像数据得到高效压缩。最后,将运动矢量和编码后的图像差值一起传送给解码端,便于解码端解码,为了减少必须传送的运动矢量,色度信号采用同一宏块中的亮度信号的运动矢量。

通过运动估计可以去除帧间冗余度,然后通过离散余弦变换去除空间冗余度,使系数能量集中在低频部分,但是离散余弦变换本身并不能实现数据压缩,通过量化可以使系数减少,量化过程实际是用某一个较大的整数值(量化步长)去除相应的系数,并对结果中接近零的小数忽略取整,使大部分系数为零,经之字形扫描和可变字长编码后,达到数据压缩的目的。因而,量化步长很大程度上决定了压缩图像的质量,量化步长大时码率低,但图像质量下降很多。量化步长小时码率高,图像质量高。通常在压缩过程中会对码率和图像质量兼顾考虑。量化步长由量化矩阵和量化因子决定,量化矩阵根据人类视觉的生理和心理特性对一个DCT块内的各个系数使用不同的量化值,通常亮度、色度其量化矩阵不同,量化因子则对整个量化矩阵进行调整是控制码率的参数。这两个参数在MPEG码流的包头中与图像内容一起发送给解码器。

通常,不同图像内容和不同的压缩帧类型,其输出数据流的码率是不相同的。但是,信道传输要求压缩信号的码率应该恒定,因此,在编码器的输出端和解码器的输入端用一定尺寸的缓冲器来解决这一问题,在编码器的输出端,缓冲器的输入信号码率是变化的,而输出信号是一个恒定比特流;同样,在解码器输入端缓冲器的输入比特流是恒定的,而用于解码的输出信号的码率是变化的。缓冲器的读写速度不同,需要对输入信号的码率进行控制,防止缓冲器出现上溢和下溢。上溢是单位时间内写入的比特数多于读出的比特数,缓冲器内的比特数随时间的增加而不断增加,这种趋势持续下去,将会发生数据丢失;下溢是单位时间内写入的比特数少于读出的比特数,缓冲器内的比特数随时间的增加而不断减少,这种趋势持续下去,将会破坏数据码流。当然,理论上来讲,采用大尺寸的缓冲器可以避免缓冲器出现溢出现象,但是会在编解码之间引入一个很长的延时,不能适应一些实时性要求较高的应用场合。通常MPEG会限定缓冲器的大小,这种情况下,主要依靠调节前面提到的量化因子大小,来控制缓冲器的数据占有率。缓冲器占有率实际上是说明缓冲器正常工作时,缓冲器所存的数据多少,当缓冲器占有率升高到接近100%时,应相应加大量化因子,从而加大整个量化矩阵的各个量化步长,对数据进行粗量化,减少送给缓冲器的数据量,防止上溢;反之,当缓冲器占有率减低到接近10%时,相应减小量化因子,减低整个量化矩阵的量化步长,对数据进行细量化,增加送给缓冲器的数据,起到防止下溢的作用。信道缓冲器的控制过程应符合视频信号的统计特性,但是有些时候实际视频信号的特性与控制系统使用的统计特性并不符合,就有可能发生溢出。这种情况下采取特殊措施防止溢出,强制停止传送部分数据防止上溢,或加入填充码防止下溢,这在MPEG协议分析的比特利用图中可以观察到各帧的数据比特和填充比特的情况。

要对MPEG数据流进行解码,除了图像数据本身以外,还必须依靠协议中精确定义的语义和语法以及相关辅助数据和信息如运动矢量、量化矩阵和量化因子等诸多参数。通常把语法和语义方面出现的误码称为逻辑错误,逻辑错误将严重影响正确解码,这也是MPEG协议分析的重点所在。

【相关文章】好搜一下
Flash教程:利用AS3.0实现逼真喷泉效果

Flash教程:利用AS3.0实现逼真喷泉效

在这个实例教程中,我们将介绍利用速度向量和重置对象的技巧来实现喷泉效果。所谓向量…