1.引言

MPEG(Moving Picture Experts Group)的中文意思是运动图像专家小组。
MPEG(Moving Picture Experts Group)运动图像专家小组。
MPEG委员会的活动开始于1988年,其目标是要在1990年建立一个标准的草案。
MPEG和JPEG两个专家小组,都是在ISO领导下的专家小组,其小组成员也有很大的交叠。JPEG的目标是专门集中于静止图像压缩,MPEG的目标是针对活动图像的数据压缩,但是静止图像与活动图像之间有密切关系。
MPEG专家小组,承担制定了一个可用于数字存储介质上的视频及其关联音频的国际标准,这个国际标准,简称为MPEG标准。
MPEG标准的产生
·1988-1992 提出标准化方案。
·1991年11月提出草案
·1992年通过ISO/SEC 11172JPEG 和MPEG同属于一个工作组。
·1993年11月通过 ISO/IEC 13818
·1995年5月15日正式通过。

MPEG专家小组的研究内容,不仅仅限制于数字视频压缩,音频及音频和视频的同步问题都不能脱离视频压缩独立进行,MPEG视频是面向位率大约为1.5  的视频信号的压缩,MPEG音频是面向每信道速率为64  、128  和192  的数字音频信号的压缩,MPEG的最终目标还得解决数字视频和数字音频等多样压缩数据流的复合和同步的问题。所以,MPEG是将数字视频信号和与其相伴随的音频信号在一个可以接受的质量下,能被压缩到位率约1.5  的一个MPEG单一位流。
综上所述,多媒体运动图像和伴音的数据压缩编码标准,即MPEG标准,实际上包括三个部分,MPEG视频、MPEG音频和MPEG系统。本节的重点放在MPEG视频压缩技术上。
MPEG标准的组成
MPEG系统
MPEG视频
MPEG音频
MPEG测试(检测)

MPEG视频压缩技术是针对运动图像的数据压缩技术。为了提高压缩比,帧内图像数据压缩和帧间图像数据压缩技术必须同时使用。要学习MPEG的压缩编码方法,首先要对MPEG数据流结构有所了解。
2.基本的MPEG数据流结构

MPEG-1视频图像数据流是一个分层结构,目的是把比特流中逻辑上独立的实体分开,防止语意模糊,并减轻译码过程的负担。对分层的要求是支持通用性、灵活性和有效性。MPEG标准的通用性可以用MPEG位流来更好地说明。通用性的含义是使MPEG标准的语法规定可满足不同的应用要求。
如表4.6—1所示的MPEG视频比特流分层结构。共包括六层,每一层支持一个确定的函数,或者是一个信号处理函数(DCT,运动补偿),或者是一个逻辑函数(同步,随机存取点)等。
(1)MPEG视频比特流分层结构
表4.6—1 MPEG视频比特流语法的六个层次
图像序列层(随机存取单元:上下文)
|
图像组层(随机存取单元:视频编码)
|
图像层(基本编码单元)
|
宏块片层(重同步单元)
|
宏块层(运动补偿单元)
|
块层(DCT单元)
|

为了更好的理解这个MPEG视频比特流分层结构,我们将其画成形象的结构图如下:
(2)MPEG视频比特流分层结构图


下面我们对这六层结构做更具体的讲解。
① 图像序列层:
一个运动序列(视频流)包括一个表头、一组或多组图像序列和序列尾, 序列头应包括图像的如下信息:序列头码 32bit
水平大小 12bit
垂直大小 12bit
像素的长宽比 4bit
图像速率(传输率) 4bit
位码率 4bit
结束码 32bit
② 图像组层
由一系列图像组成,这些图像可以从运动序列中随机抽取。

③ 图像层 一个图像(静止图像)若是彩色由三个部分组成:一个亮度信号Y,两个色差信号UV。
一个图像可以分成许多的宏块,宏块的大小为16×16,是运动补偿的基本单位。由于人的眼睛对亮度敏感,对色差不敏感,所以MPEG-1色度与亮度采样的关系如图4.6—2。每采样4个亮度值,对应的采样1个色差值。所以Y:U:V=8:2:2,但需要指出的是每一个像素的Y、U、V都是用8比特存储。
④ 宏块片层
一个或多个连续的宏块组成切片中宏块的次序由左到右,由上到下。如果有误差就跳到下一个切片开始位置,使用越多的图像切片误差的隐蔽性就越好。
⑤ 宏块层
每个宏块都有:一个16×16的亮度信息,8×8的色度信息。
⑥ 块层
每一块有:8×8的亮度信息和8×8的色度信息
以上我们讲了MPEG-1数据流结构,在此基础上我们来学习MPEG的视频压缩技术。MPEG视频压缩技术分为帧内图像数据压缩和帧间图像数据压缩技术。帧内压缩算法与JPEG压缩算法大致相同,采用基于DCT的变换编码技术,用以减少空域冗余信息。我们把重点放在帧间压缩技术上。下面我们讲MPEG的帧间编码技术。
3.帧间编码技术

由于MPEG对视频信号作随机存取的重要要求,和通过帧间运动补偿可有效地压缩资料比特数,MPEG采用了三种类型的图像:帧内图(Intrapictures
I),预测图(Predicted Pictures P)和插补图,即双向预测图(Bidirectional Prediction B)。
(1) MPEG图像的三种类型
I 图像——Intra Picture
P 图像——Predicted Picture预测图
B 图像——Bidirectional Picture双向预测图

I图像也叫I帧,就是静态图像,用JPEG帧内压缩的方法得到,压缩比适度,压缩后变成1—2个比特/像素;P图像( P帧)由最近的I 帧或P帧经过预测编码得到,称为前向预测,而且可以作为下一个B帧或P帧的照图像;B图像(
B帧)可以使用前一个和后一个图像作参考图像,也叫双向预测;也可以使用前后两个参考图像,因而B帧用到了前项预测、后项预测还有帧内编码。 帧内图(I)和预测图(P)及双向预测图(B)沿时间轴上的顺序排列如图4.6—3所示。是在沿时间轴方向的排列中,每8帧图像内,有一幅帧内图(I),一幅预测图(P),6幅插补图(B)。(B)图处于(I)图和(P)图之间。(I)、(P)和(P)、(I)之间各包括3个(B)图。


第1帧为I帧用的是帧内编码,也就是JPEG编码(显示(1))。第2帧为P帧,P帧用到了帧间预测,由I帧预测P帧,也就是说P帧预测的“源”是I帧,叫前向预测编码(显示(2);P帧的“源”也可以是P帧(显示(3));

B帧是双向预测帧,B帧是向前参考I帧,向后参考P帧而得到的(显示(4));但B帧不能做为参考帧。也可以使用前后两个参考图像(显示(5))通过双向预测可以获得很高的压缩比



MPEG中这些帧序列图的组织结构是十分灵活的,它们的组合可由应用规定的参数决定,如随机存取和编码延迟等。 下面讲一下运动序列流的组成
(2) 运动序列流的组成
图4.6—5示出一个视频序列中帧图显示顺序的例子,这也是帧编码器输入帧图的排列顺序。图中第一行表示帧图属性[(I)图、(P)图、(B)图],第二行是编码器输入帧图的编号。
(点击查看大图)

从图中可以看出,两幅B图位于两幅参考图之间,一般在每0.5秒给一个I帧,这样可以避免误差变大。组成视频流编码时,允许编码端自行选择I帧的使用频率和在视频流的位置。典型每秒使用2次。允许编码端自行选择任何两帧参考图像(I,P)之间的B帧。插入两个B帧较为适宜。我上面说的是视频流的显示顺序,当要对其进行传输时就不能按这个顺序,因为“2”号B帧是靠参考I和P帧得来的在P未到之前是无法恢复B帧的,译码器接收端收到的传输来的视频流的顺序应和显示的顺序不一致。
(3) 显示顺序和传输视频流顺序不一致
例如:
显示的顺序:1 2 3 4 5 6 7
I B B P B B P
传输的顺序:1 4 2 3 7 5 6
I P B B P B B

以上讲的是帧间预测,那么如何实现两帧之间的预测呢?也就是说如何实现从I帧的P帧的预测?又如何实现从I、P两帧到B帧的双向预测?MPEG中采用的是运动补偿技术。下面来讲运动补偿技术。
4.运动补偿
运动补偿技术指的是: 运动补偿预测是以子块(16×16)为预测单元,把当前子块认为是先前某一时刻图像子块的位移,位移的内容包括运动方向和运动幅度。

可以说运动补偿技术为了提高效率,是在宏块一级运算的,拿当前帧的一个宏块,到另外一帧里去找,找的方法呢,算法就是匹配算法,如何匹配呢,用的是搜索算法,如果找到了得到的是运动向量。这就是运动补偿。
运动补偿技术主要用于消除P.B图像在时间上的冗余,提高压缩效率是在宏块一级。如何进行运动补偿,先来明确一些基本概念。一宏块类型的定义,有四种类型的宏块
(1)四种类型的宏块 I 块 帧内宏块
F 块 前向预测宏块
B 块 后向预测宏块
A 块 平均宏块(内插宏块、双向预测宏块)

我们知道有三种类型的图像I、P、B,这三种类型的图像里所有的宏块是不一样的。
(2)各图像中的宏块类型 B图像有四种宏快,是以下四种之一:
(1)帧内宏块—I块(Intra Macro Block)
(2)前向预测宏块—F块(Forward Predicted Macro Block )
(3)后向预测宏块 —B块 (Backward Predicted Macro Block )
(4)平均宏块(内插宏块双向预测宏块)A (Average Macro Block )

它有着些类型,因为B图像是双向预测。
·P图像只有I,F两种宏块。因为P图只能前向预测,所以有F块
·I图像只有I宏块。因为I图没有预测所以只有一种。

无论是P、B和I块处理技术都一样。都采用基于预测的运动补偿技术。
基于块的运动补偿就是要在参照帧中找出一个最佳匹配块,对于F和B找出一个,对于A前后各一个。
F块 预测参照前一个I和P图像
B块 预测参照后一个I或P图像
A块 前一个I图像或P图像和后一个I图像P图像

如何找出最佳匹配块呢?采用最佳匹配块算法和搜索算法。
(3)匹配块算法有
归一化相关函数NCCF
均方误差MSE
帧间绝对误差MAD
(4)搜索算法有
1.穷尽搜索法 MAD
2.二维对数法 TDL采用MSE均方误差
3.三步搜索法 9个点/步 MSE均方误差
采用绕参考点逐渐向外生长的方式:

找到块匹配后,也就是得到了匹配块的运动向量后,有两种处理办法:
一是恢复被预测块时,用匹配块代替(B图像常用) ;
二是对预测的误差采用ADCT技术编码(运动补偿后ADCT编码效率会提高)
5. 运动表示
假设 前一帧为 I0,
后一帧为 I2,
当前帧为 I1,
预测的点坐标为 X,
MV01是该点相对于I0帧的运动向量
MV21是该点相对于I2帧的运动向量。
B图中宏块的预测方式宏块类型预测器 预测误差
帧内 I I1(x) I1(x)-I'1(x)
前向预测F I1(x)=I0(x+mv01) 1(x)-I'1(x)
后向预测B I1(x)=I2(x+mv21) I1(x)-I'1(x)
双向预测A I1(x)=1/2[I0 (X+MV01)+I2(X+MV21)] I1(x)-I'1(x)

对于B、F块,只包含一个运动向量,A块包含两个运动向量以差分的形式编码。
|