MPEG/H264

  01 Jan 2015


MPEG标准

MPEG的数据分为MPEG视频、MPEG音频和同步信号三个部分。

MPEG流的分层结构:

  • MPEG流(MPEG stream)包含音频流和视频流。视频流是由图像组(GOP)构成的图像序列,有表示开始的图像序列头和表示结束的图像终止码。

  • 图像组(GOP)是为方便随机存取而加的,其结构和长度均可变。图像组是随机存取视频单位。一个GOP由一串IBP帧组成,起始为I帧。GOP的长度是一个I帧到下一个I 帧的间隔。

  • 图像(Image)是独立的显示单位,也是基本编码单位。

  • 宏块(Macro block)是进行运动补偿的基本单位(即运动补偿不是对每个像素预测,而是对每个块预测)。由一个16x16像素的亮度信息和两个8x8像素的色度信息组成的块称为宏块。

  • 块(Block)是由8*8像素组成的基本单位,是进行DCT运算的单位,块可分为亮度块或色度块。

    MPEG由三种类型的图像组成(如下图):

  • I图(帧内图Intra Picture)是对整幅图像采用JPEG编码的图像,它是一个独立的帧,其信息由自身画面决定,不需要参照其他画面而产生,它是P图和B图的参考图。

  • P图(前向预测帧Predicted Picture),它参照前一幅I或P图像做运动补偿编码。

  • B图像(双向预测 Bidirectional Prediction),它参照前一幅和后一幅I或P图像做双向运动补偿编码。


H.264格式

H.264,同时也是MPEG-4第十部分,是由国际标准化组织(ISO)和国际电信联盟(ITU)共同提出的高度压缩数字视频编解码器标准。 编解码流程主要包括5个部分:帧间和帧内预测、变换和反变换、量化和反量化、环路滤波、熵编码,这些基本功能模块与前几个标准并无太大区别,变化主要体现在功能模块的具体细节上。

1.帧内预测编码

缩减图像的空间冗余。在给定帧中充分利用相邻宏块的空间相关性,相邻的宏块通常含有相似的属性。因此,在对一给定宏块编码时,首先可以根据周围的宏块预测(典型的是根据左上角宏块、左边宏块和上面宏块,因为此宏块已经被编码处理),然后对预测值与实际值的差值进行编码,这样,相对于直接对该帧编码而言,可以大大减小码率。

H.264提供9种模式进行4×4像素宏块预测,包括1种直流预测和8种方向预测。在图中,相邻块的A到I共9个像素均已经被编码,可以被用以预测,如果我们选择模式4,那么,a、b、c、d4个像素被预测为与E相等的值,e、f、g、h4个像素被预测为与F相等的值,对于图像中含有很少空间信息的平坦区,H.264也支持16×16的帧内编码。

2.帧间预测编码

利用连续帧中的时间冗余来进行运动估计和补偿。H.264的运动补偿支持以往的视频编码标准中的大部分关键特性,而且灵活地添加了更多的功能,除了支持P帧、B帧外,H.264还支持一种新的流间传送帧——SP帧。码流中包含SP帧后,能在有类似内容但有不同码率的码流之间快速切换,同时支持随机接入和快速回放模式。SP-帧示意图H.264的运动估计有以下4个特性。

(1)不同大小和形状的宏块分割

对每一个16×16像素宏块的运动补偿可以采用不同的大小和形状,H.264支持7种模式。小块模式的运动补偿为运动详细信息的处理提高了性能,减少了方块效应,提高了图像的质量。

(2)高精度的亚像素运动补偿

在H.263中采用的是半像素精度的运动估计,而在H.264中可以采用1/4或者1/8像素精度的运动估值,在帧间编码中所需的码率更小。

(3)多帧预测

H.264提供可选的多帧预测功能,在帧间编码时,可选5个不同的参考帧,提供了更好的纠错性能,这样更可以改善视频图像质量。这一特性主要应用于以下场合:周期性的运动、平移运动、在两个不同的场景之间来回变换摄像机的镜头。

(4)去块滤波器

H.264定义了自适应去除块效应的滤波器,这可以处理预测环路中的水平和垂直块边缘,大大减少了方块效应。

3.整数变换

在变换方面,H.264使用了基于4×4像素块的类似于DCT的变换,但使用的是以整数为基础的空间变换,不存在反变换因为取舍而存在误差的问题。与浮点运算相比,整数DCT变换会引起一些额外的误差,但因为DCT变换后的量化也存在量化误差,与之相比,整数DCT变换引起的量化误差影响并不大。此外,整数DCT变换还具有减少运算量和复杂度,有利于向定点DSP移植的优点。

4.量化

H.264中可选52种不同的量化步长,这与H.263中有31个量化步长很相似,但是在H.264中,步长是以12.5%的复合率递进的,而不是一个固定常数。

在H.264中,变换系数的读出方式也有两种:之字形(Zigzag)扫描和双扫描。大多数情况下使用简单的之字形扫描;双扫描仅用于使用较小量化级的块内,有助于提高编码效率。

5.熵编码

视频编码处理的最后一步就是熵编码,在H.264中采用了两种不同的熵编码方法:通用可变长编码(UVLC)和基于文本的自适应二进制算术编码(CABAC)。

优势:

1.低码率,同等图像质量下,H.264技术压缩后的数据量只有MPEG2的1/8,MPEG4的1/3;

2.高质量的图像;

3.容错能力强;

4.网络适应性强:H.264提供了网络抽象层。