数字视频编码IPB帧编码序列,显示序列及GoP相关知识

   1. 编码格式简介

    频编码卡的视频编码算法从JPEG 发展到MPEG-1、MPEG-2、MPEG-4和H.264。JPEG是一种著名的图像压缩方法,最初由Joint Photographic Experts Group在1986年提出并于1992年正式成为ISO标准(ISO/IEC 10918),主要应用于静态图像压缩,如果把它用在运动图像压缩的时候,就是我们通常所说的Motion-JPEG,由于JPEG相当于MPEG的帧内压缩,因而没有去除时域上的冗余,所以在保证一定图像质量的时候,压缩比不高,通常只有10-30倍,但是它有一个固定的优点,就是延迟在40ms,实时性很好,所以在某些特殊应用的场合仍然可以看到它的踪影。MPEG运动图像编码技术标准是由Motion Picture Experts Group在1988年提出,并于1992年11月通过,1993年8月作为ISO/IEC 11172标准公布,这就是通常所说的MPEG-1。MPEG-1为了追求更高的压缩效率,更注重去除图像系列的时间冗余度。因此引入了I帧(帧内编码)、P帧(前向预测编码)、B帧(双向预测编码)。

     MPEG-1标准的一个成功应用范例是小型激光视盘(VCD)。由于它的压缩比相对于M- JPEG大为提高,因而在数字监控系统中得到广泛的应用。但是并不是最适合数字监控系统的应用,主要表现在码率固定,代价是引起图像质量的抖动,而数字监控系统最需要的不是恒定码率,而是恒定质量。同时MPEG-1本身的技术限制,其压缩比也没有达到用户满意的程度。而2000年提出的MPEG-4不仅是一个非常开放的标准,而且增加了许多新的工具,以达到降低某些应用或图像场景中要求的图像质量所需的比特率。值得注意的是虽然大部分用来降低比特率的工具是为非实时应用开发的,无法使用到数字监控系统中,但是相对MPEG-1,由于使用半像素和1/4像素图像匹配、帧内预测、高级运动矢量预测等新的技术,因而采用MPEG-4的压缩标准之后,在PAL CIF 25fps情况下,大部分情况下码率在300k-500k的MPEG-4压缩图像质量超过1.25Mbit的MPEG-1图像,因而在数字监控系统中得到最广泛和成功的应用。

   2. I帧 P帧 B帧

    I帧采用帧内预测编码,仅仅使用前一个显示的基准帧来编码的帧被称为P帧,同时使用前一个显示帧和未来帧作为基准帧进行编码的帧称为B帧。在通常的场景中,编解码器编码一个I帧,然后向前跳过几个帧,用编码I帧作为基准帧对一个未来P帧进行编码,然后跳回到I帧之后的下一个帧。编码的I帧和P帧之间的帧被编码为B帧。之后,编码器会再次跳过几个帧,使用第一个P帧作为基准帧编码另外一个P帧,然后再次跳回,用B帧填充显示序列中的空隙。这个过程不断继续,每12到15个P帧和B帧内插入一个新的I帧。P帧由前一个I帧或P帧图像来预测,而B帧由前后的两个P帧或一个I帧和一个P帧来预测,因而编解码和帧的显示顺序有所不同,如图1所示。同样,图2以更清晰的方式说明了I帧P帧和B帧的编码序显示序之间的区别。

I B B P B B P…B B I    I P B B P B B … I B B
1 2 3 4 5 6 7 …         1 4 2 3 7 5 6 …
  (a) 显示顺序              (b) 编解码顺序

图1 IPB帧编码序和显示序

图2 IPB帧编码序和显示序

      通常,更换场景后的第一帧就是I帧,I帧应当全帧传送。从压缩的程度来看,I画面的压缩量最少;P画面次之,它是以I画面为基础;B画面压缩最多。为了加大压缩比,通常在I帧后面相隔2帧(最多3帧)设置1个P帧,在I、P帧之间都是B帧,在两个P帧之间也是设置2~3帧B帧。B帧传送它与I帧或P帧之间的差值信息,或者P帧与后面P帧或I帧之间的差值信息,或者它与前后I、P帧或P、P帧平均值之间的差值信息。当主体内容变化愈大时,两个I画面之间的帧数值越小;当主体内容变化小时,I面画的间隔可以适当大一些。或者说,B帧、P帧所占比例越大,图像压缩比越高。一般两个I画面相隔13~15帧,相隔帧数不宜再多。

      下面以15帧为例,说明VCD图像帧的排列顺序。I、P、B三种画面的典型设置方式,对NTSC制共约需半秒时间。节目输入顺序是按实际出现顺序排列的,即I、B、B、P、B、B、P、B、B、I、B、B、P;但为了解码时便于从I、P画面插补得到B画面,在编码录制节目时,将顺序改变了,即按照I、P、B、B顺序,即改为按原来0、3、1、2、6、4、5、9、7、8的画面顺序。解码时先解出0帧、3帧,再由其插补预测计算得出1帧、2帧等等。为此,须在解码器内设置动态存储器,将I、P帧先解码并存储,再计算出各个B帧。不过最后输出时,还是应当按照实际播放顺序重组读出,按正确顺序输出。

3. GoP

       GoP是Group of Picture的缩写,是画面组的意思。通常意义上的GoP由I帧开始,到下一个I帧之前的帧结束。一个GoP组内的所有帧独立于其之前的GoP及其后面的GoP,但是在实际应用中,为了得到更大的压缩比,出现的Open GoP和Closed GoP之分。

       Closed GoP:传统意义的GoP,即一个GoP内的所有帧不能依赖该GoP之前或者之后的GoP,只能依赖该GoP内的帧。

       Open GoP:GoP以1个或多个B帧开始,这些B帧参考前一个GoP最后的P帧和当前GoP的第一个I帧进行编码,也可认为这些B帧是前一个GoP不以P帧结尾,而是以B帧结尾,这些B帧参考所在GoP的最后一个P帧及下一个GoP的起始I帧进行编码。总之,Open GoP相比于Closed GoP扩展出1个或者多个B帧,具有更高的压缩率。图3说明了Open GoP和Closed GoP之间的区别,图片来源于http://documentation.apple.com/en/compressor/usermanual/index.html#chapter=18%26section=5%26tasks=true,该篇文章中详细说明了MPEG2的帧类型及GoP。

图3 Open GoP及Closed GoP说明

【注】:该篇博文部分内容出自:http://blog.chinaunix.net/uid-20235103-id-1970915.html

                                          http://blog.163.com/cb_lion/blog/static/14181861720111015341646/

posted @ 2012-12-12 15:59  wangyujoy  阅读(3896)  评论(0编辑  收藏  举报