流媒体 6——MPEG电视

1.电视图像的数据率

1.1 ITU-R BT.601标准数据率

  按照奈奎斯特(Nyquist)采样理论,模拟电视信号经过采样(把连续的时间信号变成离散的时间信号)和量化 (把连续的幅度变成离散的幅度信号)之后,数字电视信号的数据量大得惊人,当前的存储器和网络都还没有足够的能力支持这种数据传输率,因此就要对数字电视信号进行压缩。为了在PAL、NTSC和SECAM彩色电视制之间确定一个共同的数字化参数,早在1982年国际无线电咨询委员会 (CCIR)就制定了演播室质量的数字电视编码标准,这就是非常有名的ITU-R BT.601标准。按照这个标准,使用4:2:2的采样格式,亮度信号Y的采样频率选择为13.5 MHz/s,而色差信号Cr和Cb的采样频率选择为6.75 MHz/s,在传输数字电视信号通道上的数据传输率就达到为270 Mb/s(兆比特/秒)
  亮度(Y):
   858样本/行×525行/帧×30帧/秒×10比特/样本 ≌ 13.5兆比特/秒(NTSC)
   864样本/行×625行/帧×25帧/秒×10比特/样本 ≌ 13.5兆比特/秒(PAL)
  Cr (R-Y):
   429样本/行×525行/帧×30帧/秒×10比特/样本 ≌ 6.8兆比特/秒(NTSC)
   429样本/行×625行/帧×25帧/秒×10比特/样本 ≌ 6.8兆比特/秒(PAL)
  Cb (B-Y):
   429样本/行×525行/帧×30帧/秒×10比特/样本 ≌ 6.8兆比特/秒(NTSC)
   429样本/行×625行/帧×25帧/秒×10比特/样本 ≌ 6.8兆比特/秒(PAL)
  总计:

    27兆样本/秒×10比特/样本 = 270兆比特/秒
实际上,在荧光屏上显示出来的有效图像的数据传输率并没有那么高,
   亮度(Y): 720×480×30×10 ≌ 104 Mb/s (NTSC)
        720×576×25×10 ≌ 104 Mb/s (PAL)
   色差(Cr,Cb):2×360×480×30×10 ≌ 104 Mb/s (NTSC)
          2×360×576×25×10 ≌ 104 Mb/s (PAL)
   总计: ~ 207 Mb/s
  如果每个样本的采样精度由10比特降为8比特,彩色数字电视信号的数据传输率就降为166 Mb/s。

2. 数据压缩算法

 电视图像本身在时间上和空间上都含有许多冗余信息,图像自身的构造也有冗余性。此外,正如前面所介绍的,利用人的视觉特性也可对图像进行压缩,这叫做视觉冗余。

电视图像压缩利用的各种冗余信息

种类

内容

目前用的主要方法

统计

空间冗余

像素间的相关性

变换编码,预测编码

特性

时间冗余

时间方向上的相关性

帧间预测,移动补偿

    图像构造冗余

图像本身的构造

轮廓编码,区域分割

    知识冗余

收发两端对人物的共有认识

基于知识的编码

    视觉冗余

人的视觉特性

非线性量化,位分配

    其他

不确定性因素

 

  MPEG-Video图像压缩技术基本方法和方法可以归纳成两个要点:
    ① 在空间方向上,图像数据压缩采用JPEG(Joint Photographic Experts Group)压缩算法来去掉冗余信息。
    ② 在时间方向上,图像数据压缩采用移动补偿(motion compensation)算法来去掉冗余信息。
   为了在保证图像质量基本不降低而又能够获得高的压缩比,MPEG专家组定义了三种图像:帧内图像I(intra),预测图像P(predicted)和 双向预测图像B(bidirectionally interpolated ),这三种图像将采用三种不同的算法进行压缩。

                                      MPEG专家组定义的三种图像

补充:

  视频压缩中,每帧代表一幅静止的图像。而在实际压缩时,会采取各种算法减少数据的容量,其中IPB就是最常见的。简单地说,I帧是关键帧,属于帧内压缩。就是和AVI的压缩是一样的。 P是向前搜索的意思。B是双向搜索。他们都是基于I帧来压缩数据。I帧表示关键帧,你可以理解为这一帧画面的完整保留;解码时只需要本帧数据就可以完成(因为包含完整画面)。P帧表示的是这一帧跟之前的一个关键帧(或P帧)的差别,解码时需要用之前缓存的画面叠加上本帧定义的差别,生成最终画面。(也就是差别帧,P帧没有完整画面数据,只有与前一帧的画面差别的数据)。B帧是双向差别帧,也就是B帧记录的是本帧与前后帧的差别(具体比较复杂,有4种情况),换言之,要解码B帧,不仅要取得之前的缓存画面,还要解码之后的画面,通过前后画面的与本帧数据的叠加取得最终的画面。B帧压缩率高,但是解码时CPU会比较累~。
  从上面的解释看,我们知道I和P的解码算法比较简单,资源占用也比较少,I只要自己完成就行了,P呢,也只需要解码器把前一个画面缓存一下,遇到P时就使用之前缓存的画面就好了,如果视频流只有I和P,解码器可以不管后面的数据,边读边解码,线性前进,大家很舒服。但网络上的电影很多都采用了B帧,因为B帧记录的是前后帧的差别,比P帧能节约更多的空间,但这样一来,文件小了,解码器就麻烦了,因为在解码时,不仅要用之前缓存的画面,还要知道下一个I或者P的画面(也就是说要预读预解码),而且,B帧不能简单地丢掉,因为B帧其实也包含了画面信息,如果简单丢掉,并用之前的画面简单重复,就会造成画面卡(其实就是丢帧了),并且由于网络上的电影为了节约空间,往往使用相当多的B帧,B帧用的多,对不支持B帧的播放器就造成更大的困扰,画面也就越卡。一般平均来说,I的压缩率是7(跟JPG差不多),P是20,B可以达到50,可见使用B帧能节省大量空间,节省出来的空间可以用来保存多一些I帧,这样在相同码率下,可以提供更好的画质。

2.1.帧内图像I的压缩编码算法

  如果电视图像是用RGB空间表示的,则首先把它转换成YCrCb空间表示的图像。每个图像平面分成8×8的图块,对每个图块进行离散余弦变换 DCT(discrete Cosine Transform)。DCT变换后经过量化的交流分量系数按照Zig-zag的形状排序,然后再使用无损压缩技术进行编码。DCT变换后经过量化的直流分量系数用差分脉冲编码DPCM(DifferentialPulse Code Modulation),交流分量系数用行程长度编码RLE(run-length encoding),然后再用霍夫曼(Huffman)编码或者用算术编码。

2.2.预测图像P的压缩编码算法

  预测图像的编码也是以图像宏块(macroblock)为基本编码单元,一个宏块定义为I×J像素的图像块,一般取16×16。预测图像P使用两种类型的参数来表示:一种参数是当前要编码的图像宏块与参考图像的宏块之间的差值,另一种参数是宏块的移动矢量。假设编码图像宏块MPI是参考图像宏块MRJ的最佳匹配块,它们的差值就是这两个宏块中相应像素值之差。对所求得的差值进行彩色空间转换,并作4:1:1的子采样得到Y,Cr和Cb分量值,然后仿照JPEG压缩算法对差值进行编码,计算出的移动矢量也要进行霍夫曼编码。

2.3.双向预测图像B的压缩编码算法

2.4.图像结构

  MPEG 编码器算法允许选择I图像的频率和位置。I图像的频率是指每秒钟出现I图像的次数,位置是指时间方向上帧所在的位置。一般情况下,I图像的频率为2。 MPEG编码器也允许在一对I图像或者P图像之间选择B图像的数目。I图像、P图像和B图像数目的选择依据主要是根节目的内容。例如,对于快速运动的图像,I图像的频率可以选择高一些,B图像的数目可以选择少一点;对于满速运动的图像I图像的频率可以低一点,而B图像的数目可以选择多一点。此外,在实际应用中还要考虑媒体的速率。
  一个典型的I、P、B图像安排如图所示。编码参数为:帧内图像I的距离为N=15,预测图像(P)的距离为M=3。


MPEG电视帧编排

  I、P和B图像压缩后的大小如表所示,单位为比特。从表中可以看到,I帧图像的数据量最大,而B帧图像的数据量最小

 MPEG三种图像的压缩后的典型值(比特)

图像类型

I

P

B

平均数据/帧

MPEG-1 CIF 格式(1.15 Mb/s)

150 000

50 000

20 000

38 000

MPEG-2 601 格式(4.00 Mb/s)

400 000

200 000

80 000

130 000




原文地址:https://www.cnblogs.com/zxqstrong/p/4600868.html