微博

QQ

MPEG视频帧精确剪接的实现技术

2005-12-29 王星 刘辉 昆明理工大学 依马狮网


    【摘要】 本文分析了采用MPEG帧相关压缩技术时给帧精确剪接带来的困难。文中提出了一种GOP重建技术来解决帧精确剪接的技术难题,详细介绍了这种技术的算法和技术实现细节。
    【关键词】 Mpeg-2  帧相关压缩  帧精确剪接  帧精确  GOP重建

    MPEG压缩是根据运动图像相邻帧之间有一定的相似性原则,通过运动预测,参考前一帧图像与这一帧图像的相似情况,去掉与前一帧相似的冗余数据,而只记录这一帧与上一帧不同的数据,从而大大提高了视频数据的压缩效率,这种压缩方法也称为帧相关压缩。MPEG压缩是以图像组(GOP)为一个单元的,由I帧B、P帧构成。一般情况下一个图像组(GOP)由15帧组成,第一帧为一个I帧, 依次为1个P帧,2个B帧,由此构成IPBB PBBPBB……结构。I帧称为参考帧,其它帧都参考I帧,所以I帧是一个能够完全记载这一帧全部图像数据的帧。亦称作全帧。P帧是前向预测帧,是根据与前一帧图像的比较,去掉与前帧相似的数据而构成的帧。B帧是双向预测帧,是根据与前后一帧图像的比较而得到的帧。P、B帧是一个不完全帧,它需要依靠一个或两个参考帧而成立。
    由于MPEG-2格式只有I帧是一个完整的帧,所以在电视需要帧精确地进行剪接时会带来一定的困难。
    
    一. MPEG格式素材的存储顺序与显示顺序
    为了实现MPEG格式素材的帧精确剪接,我们除了需要掌握MPEG编解码技术外,还必须对MPEG格式素材的存储顺序以及显示顺序有深入的了解。正如前面提到的,MPEG格式由于引入了帧相关压缩技术,其存储格式相对于仅使用帧内压缩的格式来讲,具有更多的复杂性。当MPEG格式素材以流的方式传输时,接收端或者解码器每当接收到一帧的压缩数据,必须能同时解码出一帧的图像数据。当图像是以帧相关方式压缩时,如果压缩数据按其显示的顺序传输,要解码出B帧,必需用到还未发送的后面的参考帧数据,这就导致了解码器在接收到B帧数据时,需等待接收到下一个参考帧后才能开始解码,这不仅违反了“接收一帧、解码一帧”的原则,而且会降低解码资源利用率。显然,这不是我们所希望的。为了解决这一问题,位于B帧后的参考帧必须先于B帧发送并解码,亦即MPEG格式素材的存储顺序和解码顺序是一致的,但不同于显示顺序。图1和图2说明了这一差异。

MPEG视频帧精确剪接的实现技术
图1 原始图像序列及其帧类型
MPEG视频帧精确剪接的实现技术
图2 存储的图像序列及其帧类型

    我们可以看到,当解码第0帧时,由于第0帧是I帧,不需要额外的数据就可以被解码,同时解码的数据被缓存起来,供以后解码P帧或B帧时做参考。当解码第3帧时(在存储顺序上是第1帧),由于该帧是P帧,需要用到前面的参考帧,刚才我们已经将参考帧缓存起来了,所以解码该帧没有问题。同样解码完毕后,我们把这一帧也缓存起来,这样我们的解码帧缓存里就有了两个参考帧数据了。当解码第1帧时(在存储顺序上是第2帧),由于该帧是B帧,需要用到前后两个参考帧,因为我们刚才已经缓存了两个参考帧,所以也是没有问题的。B帧解码后马上用于显示,不需要缓存。需要注意的是,参考帧缓存里最多只需要两个参考帧,当新的参考帧被解码后,参考帧缓存按照先入先出的原则弹出一帧用于显示,并将新的参考帧放在队列尾。
    在这里我们可以发现不仅仅是存储顺序与原始图像的显示顺序不一致,解码器端图像的解码顺序也和显示顺序不一致。虽然是“接收一帧,解码一帧”,但解码一帧后,并不一定可以马上显示这一帧,而是根据该帧的帧类型决定的:如果刚解码的一帧是I帧或P帧,则解码的图像不能马上被显示,必须等到下一个I帧或P帧被解码后才能被显示;如果刚解码的一帧是B帧,则它马上被显示。

    二. MPEG帧相关压缩素材帧精确剪接的难点
    使用了帧相关压缩的MPEG素材只能以GOP为单位被剪切,如果我们从GOP中的某一帧剪切,由于剪切后剩下的无论是P帧还是B帧都需要GOP头的I帧做为最原始的参考帧,因此剪切后的任何一帧都无法被完全解码。另外,如果使用了非闭合的GOP结构,由于该GOP的头几个B帧的解码还需要用到前一个GOP的最后一个关键帧做参考帧,因此仅仅以GOP为单位剪切还不够,还需要去掉该GOP的头几个B帧。一般一个GOP的长度是12帧或15帧,这样的精确度是无法满足大多数电视应用的精确度需求的。
    为了解决MPEG素材帧精确剪接的问题,业界普遍采用的做法是,在存储和传输环节才采用帧相关压缩技术,而在节目编辑环节放弃了帧相关压缩技术,采用的是MPEG全I帧格式。为此付出的代价是昂贵的存储空间,以及从节目编辑环节到存储和传输环节进行多代编码带来的图像质量的损失。

    三. 采用GOP头尾重建技术解决MPEG帧精确剪接问题
    经过上面的分析,我们很自然地会想到:既然MPEG帧相关压缩素材只能以GOP为单位被剪切,如果需要在GOP中间剪切断,我们是否可以在被剪切的地方重建GOP头尾数据,以最小的代价解决帧精确剪接问题呢?答案是肯定的。

MPEG视频帧精确剪接的实现技术
图3 待剪接的GOP

    如图3所示。剪切点分两种情况:入点和出点。我们先分析剪切点是入点时的情况:
    如果入点位于第0帧,亦即GOP头,无需任何处理,可以直接被剪断。
    如果入点位于第1帧,我们首先解码出1、2、3帧,并将这三帧重新压缩为I帧,重建后的GOP如图4所示。我们可以看到这个GOP的头三帧都变成了I帧,它们都无需任何额外数据而被完全解码;而第6帧是P帧,它在剪切前的参考帧是第3帧,剪切后它的参考帧仍然是第3帧,所以第6帧的解码也没有问题;第4、5帧在剪切前都需要第3帧和第6帧作为参考帧,剪切后这两个参考帧仍然存在,解码也没有问题。唯一的问题是第1、2、3帧剪切后都经过了重新编码,会带来一定的图像质量损失,不过仅仅3帧的图像质量的轻微损失对于整个素材来讲是可以忽略不计的。
MPEG视频帧精确剪接的实现技术
图4 以第1帧为入点重建后的GOP

    如果入点位于第2帧,情况与入点位于第1帧类似,不再赘述。
    如果入点位于第3帧,我们先将第3帧解码,丢掉第1、2帧,重建后的GOP如图5所示。

视听科技视频号 广告
发表评论