本文根据视频监控的特点,主要讨论了MPEG-4" title="MPEG-4">MPEG-4 在视频监控应用中的软件实现过程与涉及的关键技术,其中重点讲述了以前的标准中没有的部分,包括VOP" title="VOP">VOP 的生成" title="生成">生成,形状、纹理、运动编码" title="编码">编码,特别强调了Sprite" title="Sprite">Sprite 编码和可扩展编码" title="可扩展编码">可扩展编码。
关键词 MPEG-4 VOP 生成 Sprite 编码 可扩展编码
The Software Realization of MPEG-4 Based on video surveillance application
Li Qing-ping , Shi Zhong-suo,Chen Ming (University of Science and Technology Beijing, Information Engineering Institute, Beijing,100083)Abstract Due to the characters of video surveillance, this paper mainly discusses the softwarerealization of MPEG-4 based on video surveillance application. Also the related key techniquesincluding the generation of VOP, shape coding, texture coding, motion coding are presented andthe novel techniques that do not appear in the previous standard are emphasized, for example,Sprite coding and scalable coding.
Key words MPEG-4, VOP generation, Sprite coding, Scalable coding
1 引言
目前,用于数字视频监控的图像压缩标准主要是H.261 和MPEG-1,他们在实际应用中有一定的局限性。第一,他们的适应性差,不能根据网络情况自适应的调节传输率,使得网络发生拥塞时性能急剧下降;第二,他们不具备较强的用户交互性。MPEG-4 能弥补以上不足,还具有在监控应用中的独特优势:由于压缩比是同质量的MPEG-1 的十倍多,所以可大大节约存储空间和网络带宽;错误恢复能力强:当网络传输有误码或丢包现象时,MPEG4 受的影响很小并且能够迅速恢复;图像质量高:可以达到接近DVD 的效果。
2 设计思路
根据视频监控的图像特点及其实时性要求,考虑到实际中网络的不稳定性,进行了编码软件的设计。视频监控的原始图像有一个显著的特点,即有大量的背景对象是静止不动的或极少运动的。MPEG-4 最基本的思想是基于对象的编码,编解码的基本单元是对象。所以可以把图像分割为运动物体对象和背景对象。背景对象采用压缩比较高、损失较大的方法进行编码,运动物体对象采用压缩比较低、损失较小的方法编码。基于此,我们采用MPEG-4 中Sprite 编码的思想来对背景对象编码。这是软件实现的一个重点所在。针对视频监控的实时性要求,算法的设计与选择上,除尽可能提高压缩比外,还要考虑到算法的复杂性,使其尽量满足实时性要求。这一思想贯穿于编码的整个过程,具体的,如VOP 的定义与生成,Sprite 编码等。另外考虑到网络的不稳定性,采用了MPEG-4 的可分级编码思想。
3 MPEG-4 的软件实现过程
现在,基于MPEG-4 标准的应用大多为硬件方案,采用专门的MPEG-4 编码芯片,难以实现升级,灵活性也较差,而本文中使用软件方案,可按实际应用要求进行编码,易于以后的升级,具有很好的灵活性。本文中,实现的是自然视频编码,不涉及音频编码。软件设计的总体步骤是首先利用图像分割技术生VOP,接下来是Sprite 生成,最后是对各VOP 的编码。软件实现流程如图1 所示。下面对其中的关键技术作介绍,重点是以前的标准中所没有的:视频对象平面VOP(video object plane)的定义与生成,Sprite 生成与编码,形状、运动、纹理编码,可扩展编码。MPEG-4 中,VOP 分四种,I-VOP、P-VOP、B-VOP、S-VOP,对于普通视频对象,只涉及到前三种,S-VOP 指SpriteVOP。
3.1 VOP 的定义与生成
MPEG-4 的编码单位是VOP,但标准并未规定生成VOP 的具体算法,而将其列入公开研究的内容。VOP 的生成是通过视频分割实现的。视频分割是实现基于对象的视频编码系统的基础,也是MPEG-4 编码的一个难点。图像分割技术根据分割所利用的信息,分为基于纹理的分割、基于运动的分割和基于时空的分割三类。按照人工参与的程度,图像分割分为自动分割和半自动分割。自动分割不需要用户的参与,只需要设置一些基本的参数,就可以由分割算法自动将视频对象分割出来,但是结果不很准确,主要用于实时编码;半自动分割需要用户的参与,因此可以得到准确的语义对象和边界,主要用于基于内容的操纵和交互式访问。基于编码对图像分割的要求不是很高,主要在于实时性上,这里,选用了一种时空联合自动视频对象分割算法。该算法首先对时域分割采用基于F-假设检验的方法来得到初始的变化检测模板,然后通过与基于形态学的空域分割融合来获得最终的运动对象。此算法计算比较简单,能较好的将前景运动对象从背景中分离出来,算法详见。
3.2 Sprite 编码
Sprite 编码是新一代的编码技术,它利用全局运动估计生成视频段背景的Sprite 图像(全景图),然后将这个Sprite 图像编码,以后各帧的背景编码都只是对该帧相对于Sprite 图像的运动参数进行编码。基于背景的平滑和纹理相关性大的特点,对Sprite 全景图的编码采用一种直接空间预测方法,基于篇幅限制,这里不作介绍,可参考[2]。Sprite 编码包括两部分,一是Sprite 的生成,使用全局运动估计来生成;二是Sprite 编码。Sprite 在最初的VOP 编码之前建立, MPEG-4标准中定义了两种类型的Sprite:静态Sprite 和动态Sprite。在这里选用动态Sprite,因此我们仅讨论动态Sprite 的生成与编码。
动态Sprite 的编码如图2 所示:视频序列的第一帧采用I-VOP 方法编码,而第一帧的重构图像在编码端和解码端建立相同的初始Sprite 图像;第二帧用全局运动估计算法估计当前VOP 与前一帧VOP 之间的全局运动,用参考点的轨迹描述两个VOP 之间的运动。采用P-VOP 方法编码第二帧的纹理,不同的是编码该VOP 各个宏块时,运动补偿的方式除了宏块和块运动补偿外,还可以用Sprite图像为参考进行运动补偿,此时宏块的运动补偿为全局运动补偿。解码器的解码参考点的轨迹得到全局运动参数,然后解码纹理信息得到第二帧的重构图像,根据全局运动参数和第二帧重构图像更新Sprite 图像。同样的方法用来编码序列后面的VOP。
图2 动态Sprite 编码框图
3.3 可扩展编码
根据视频监控的特点,当传输图像的分辨率和帧率不是很高时,仍能达到一般要求下的监控效果。因此我们可以采用MPEG-4 的基于对象的分层传输思想,使用空域分级功能调节空间分辨率,使用时域分级功能调节帧率。这样做一方面可以方便地实现码率控制,对网络带宽的变化具有很好的自适应性,另一方面,用户可以通过交互功能选择分辨率和帧率,以得到更好的视频效果或获得某一对象局部的细节。MPEG-4 定义了一种通用的可分级扩展框架来实现空间和时间可分级扩展,如图3 所示。
图3 MPEG-4 通用的可分级扩展框架图
当用于空域扩展时,可扩展预处理器对输入的VOP 下采样,得到由VOP编码器处理的基本层VOP。中间处理器处理重建的基本层VOP,并对其进行上采样,原始VOP 与中间处理器输出的差作为增强层编码器的输入。在增强层中的编码是以P-VOP 或B-VOP 方式编码的。通过反复接器可以分别访问基本层和增强层解码器对应的基本层和增强层码流,解码器端的中间处理器与编码端执行相同的操作,扩展后处理器执行必要的转换工作。
当扩展编码使用时域扩展编码时,可扩展预处理器在时域上将一个VO 分解成VOP 的两个子流,其中一个被输入到基本层编码器中,另一个输入到增强层编码器中。在这种情况下,不需要中间处理器,而是简单地将解码的VOP 基本层输入到VOP 增强层编码器,增强层编码器将使用它们进行时域预测。可扩展后处理器只是简单地输出基本层的VOP,并不进行任何转换,但是在时域上混合基本层和增强层VOP,以产生更高时域分辨率的增强输出。
3.4 普通VOP 的形状、运动、纹理编码
形状编码是其他的编码标准中所没有的,编码的信息有两类:二值形状信息(binary shapeinformation)和灰度级形状信息(gray scale shape information)。二值形状信息就是用0、1 的方法表示编码的VOP 的形状,0 表示非VOP 区域,1 表示VOP 的区域;灰度级形状信息可取值0~255,类似于图形学中的α 平面的概念,0 表示非VOP 区域(即透明区域),1~255 表示VOP 区域透明程度的不同,255 表示完全不透明。灰度级形状信息的引入主要是为了使前景物体叠加到背景上时不至于界太明显、太生硬,进行一下模糊处理。这里二值形状采用基于上下文的算术编码方法[4],整个编码过程可分为以下五步:①对于给定VOP 的二值形状图重新确定形状边界,并将它分为若干个16×16 二值α块(Binary Alpha Block,缩写为BAB)。②对即将编码的BAB 块进行运动估计,得到运动矢量MVs(MV for shape 缩写为MVs)。③对该VOP 中待编码的BAB 块确定编码方式。④对待编码的BAB 块确定分辨率。⑤对BAB 块进行编码。灰度级编码形状编码与此类似。对普通视频对象,MPEG-4 编码算法支持三种类型的VOP:I-VOP、P-VOP、B-VOP。在MPEG-4 中运动预测和运动补偿可以是基于16×16 宏块,也可以为8×8 块。如果宏块完全位于VOP 内,运动估计使用一般的方法进行;倘若宏块位于VOP 边界,则使用图像填充技术给VOP 外的像素指定值。然后利用这些值计算SAD。对于P-VOP 和B-VOP,运动矢量首先被差分编码,然后再用可变长编码运动矢量。
视频对象的纹理信息用亮度Y 和两个色差分量Cb、Cr 表示,对于I-VOP,纹理信息直接包含在亮度和色差分量中,在有运动补偿的情况下,纹理信息用运动补偿后的残差表示。纹理信息的编码使用了标准的8*8 的DCT。纹理编码中,帧内VOP 和运动补偿后的残差数据都用相同的8×8 块DCT 方案编码,对亮度和色度分别做DCT。对于VOP 之内的宏块用与H.263 相同的技术编码,对位于VOP 形状边缘的宏块,有两种选择,一是用图像填充技术填满宏块中VOP 以外的部分,另一种是用形状自适应DCT 编码的方法。后者只对VOP 内部的像素编码,从而在比特率相同的情况下有较高的质量,代价是应用的复杂度稍高,考虑到视频监控的实时要求,选用了图像填充技术中的低通外推(Low PassExtrapolotion)方法。接着再做DCT。对DCT 后的数据量化、扫描与可变长编码操作类似于MPEG- 2 和H.263,在此就不详述了。
4 小结
本文根据图像监控系统的特点,吸取MPEG-4 编码标准的思想,提出了用软件实现MPEG-4 在视频监控应用中的编码的主要框架,相较目前使用较多的硬件方案,更能贴近实际应用的要求,具有很好的灵活性和可升级性,又可降低成本。但由于MPEG-4 的编码非常复杂,加上其技术上还不是很完善,所以实现上有一定的难度尤其如何保持其实时性能上难度更大。随着高速处理芯片的不断出现及MPEG-4 在技术上的发展完善,这些问题将迎刃而解。