|
通过运动估计可以去除帧间冗余度,然后通过离散余弦变换去除空间冗余度,使系数能量集中在低频部分,但是离散余弦变换本身并不能实现数据压缩,通过量化可以使系数减少,量化过程实际是用某一个较大的整数值(量化步长)去除相应的系数,并对结果中接近零的小数忽略取整,使大部分系数为零,经之字形扫描和可变字长编码后,达到数据压缩的目的。因而,量化步长很大程度上决定了压缩图像的质量,量化步长大时码率低,但图像质量下降很多。量化步长小时码率高,图像质量高。通常在压缩过程中会对码率和图像质量兼顾考虑。量化步长由量化矩阵和量化因子决定,量化矩阵根据人类视觉的生理和心理特性对一个DCT块内的各个系数使用不同的量化值,通常亮度、色度其量化矩阵不同,量化因子则对整个量化矩阵进行调整
是控制码率的参数。这两个参数在MPEG码流的包头中与图像内容一起发送给解码器。 通常,不同图像内容和不同的压缩帧类型,其输出数据流的码率是不相同的。但是,信道传输要求压缩信号的码率应该恒定,因此,在编码器的输出端和解码器的输入端用一定尺寸的缓冲器来解决这一问题,在编码器的输出端,缓冲器的输入信号码率是变化的,而输出信号是一个恒定比特流;同样,在解码器输入端缓冲器的输入比特流是恒定的,而用于解码的输出信号的码率是变化的。缓冲器的读写速度不同,需要对输入信号的码率进行控制,防止缓冲器出现上溢和下溢。上溢是单位时间内写入的比特数多于读出的比特数,缓冲器内的比特数随时间的增加而不断增加,这种趋势持续下去,将会发生数据丢失;下溢是单位时间内写入的比特数少于读出的比特数,缓冲器内的比特数随时间的增加而不断减少,这种趋势持续下去,将会破坏数据码流。当然,理论上来讲,采用大尺寸的缓冲器可以避免缓冲器出现溢出现象,但是会在编解码之间引入一个很长的延时,不能适应一些实时性要求较高的应用场合。通常MPEG会限定缓冲器的大小,这种情况下,主要依靠调节前面提到的量化因子大小,来控制缓冲器的数据占有率。缓冲器占有率实际上是说明缓冲器正常工作时,缓冲器所存的数据多少,当缓冲器占有率升高到接近100%时,应相应加大量化因子,从而加大整个量化矩阵的各个量化步长,对数据进行粗量化,减少送给缓冲器的数据量,防止上溢;反之,当缓冲器占有率减低到接近10%时,相应减小量化因子,减低整个量化矩阵的量化步长,对数据进行细量化,增加送给缓冲器的数据,起到防止下溢的作用。信道缓冲器的控制过程应符合视频信号的统计特性,但是有些时候实际视频信号的特性与控制系统使用的统计特性并不符合,就有可能发生溢出。这种情况下采取特殊措施防止溢出,强制停止传送部分数据防止上溢,或加入填充码防止下溢,这在MPEG协议分析的比特利用图中可以观察到各帧的数据比特和填充比特的情况。 要对MPEG数据流进行解码,除了图像数据本身以外,还必须依靠协议中精确定义的语义和语法以及相关辅助数据和信息如运动矢量、量化矩阵和量化因子等诸多参数。通常把语法和语义方面出现的误码称为逻辑错误,逻辑错误将严重影响正确解码,这也是MPEG协议分析的重点所在。 |