MPEG-2图像压缩的原理是利用了图像中的两种特性:空间相关性和时间相关性。这两种相关性使得图像中存在大量的冗余信息。如果我们能将这些冗余信息去除,只保留少量非相关信息进行传输,就可以大大节省传输频带。而接收机利用这些非相关信息,按照一定的解码算法,可以在保证一定的图像质量的前提下恢复原始图像。

MPEG-2视频通常包含多个GOP(Group Of Pictures),每一个GOP包含多个帧(frame)。帧的帧类(frame type)通常包括I-帧(I-frame)、P-帧(P-frame)和B-帧(B-frame)。其中I-帧采用帧内编码,P-帧采用前向估计,B-帧采用双向估计。

I 帧图像采用帧内编码方式,即只利用了单帧图像内的空间相关性,而没有利用时间相关性。I 帧使用帧内压缩,不使用运动补偿,由于I 帧不依赖其它帧,所以是随机存取的入点,同时是解码的基准帧。I 帧主要用于接收机的初始化和信道的获取,以及节目的切换和插入,I 帧图像的压缩倍数相对较低。I 帧图像是周期性出现在图像序列中的,出现频率可由编码器选择。

P 帧和B 帧图像采用帧间编码方式,即同时利用了空间和时间上的相关性。P 帧图像只采用前向时间预测,可以提高压缩效率和图像质量。P 帧图像中可以包含帧内编码的部分,即P 帧中的每一个宏块可以是前向预测,也可以是帧内编码。

B 帧图像采用双向时间预测,可以大大提高压缩倍数。值得注意的是,由于B 帧图像采用了未来帧作为参考,因此MPEG-2编码码流中图像帧的传输顺序和显示顺序是不同的。

MPEG-2的编码码流分为六个层次。为更好地表示编码数据,MPEG-2用句法规定了一个层次性结构。它分为六层,从上至下依次为:视频序列层(Sequence),图像组层(GOP: Group of Picture),图像层(Picture),像条层(Slice),宏块层(Macro Block)和像块层(Block)。可以看到,除宏块层和像块层外,上面四层中都有相应的起始码(Start Code,SC),可用于因误码或其它原因收发两端失步时,×××重新捕捉同步。因此一次失步将至少丢失一个像条的数据。

一般来说输入视频格式是25(CCIR标准)或者29.97(FCC)帧/秒。

MPEG-2支持隔行扫描逐行扫描。在逐行扫描模式下,编码的基本单元是。在隔行扫描模式下,基本编码可以是帧,也可以是field)。

原始输入图像首先被转换到YCbCr颜色空间。其中Y是亮度,Cb和Cr是两个色度通道。对于每一通道,首先采用块分割,然后形成“宏块”(macroblocks),宏块构成了编码的基本单元。每一个宏块再分割成8x8的小块。色度通道分割成小块的数目取决于初始参数设置。例如,在常用的4:2:0格式下,每个色度宏块只采样出一个小块,所以三个通道宏块能够分割成的小块数目是4+1+1=6个。

对于I-帧,整幅图像直接进入编码过程。对于P-帧和B-帧,首先做运动补偿。通常来说,由于相邻帧之间的相关性很强,宏块可以在前帧和后帧中对应相近的位置找到相似的区域匹配的比较好,这个偏移量作为运动向量被记录下来,运动估计重构的区域的误差被送到编码器中编码。

对于每一个8×8小块,离散余弦变换把图像从空间域转换到频域。得到的变换系数被量化并重新组织排列顺序,从而增加长零的可能性。之后做游程编码(run-length code)。最后作哈夫曼编码(Huffman Encoding)。

I帧编码是为了减少空间域冗余,P帧和B帧是为了减少时间域冗余。

GOP是由固定模式的一系列I帧、P帧、B帧组成。常用的结构由15个帧组成,具有以下形式IBBPBBPBBPBBPBB。GOP中各个帧的比例的选取和带宽、图像的质量要求有一定关系。例如因为B帧的压缩时间可能是I帧的三倍,所以对于计算能力不强的某些实时系统,可能需要减少B帧的比例。

MPEG-2输出的比特流可以是匀速或者变速的。最大比特率,例如在DVD应用上,可达10.4 Mbit/s。如果要使用固定比特率,量化尺度就需要不断的调节以产生匀速的比特流。但是,提高量化尺度可能带来可视的失真效果。比如马赛克现象。