北京交通大学信息所 李心益 裘正定
摘 要:本文介绍了基于内
容的视频压缩标准MPEG-4和嵌入式系统在数字监控领域中的应用,并且给出了一种在嵌入式系统软件平台上实现MPEG-4的方法。
关键字:嵌入式系统 MPEG-4 XviD
一、概述
随着数字化时代的到来,越来越多的领域开始掀起一场数字化革命。在监控领域,集中了多媒体技术、数字图像处理及远程网络传输等最新技术的数字监控正在逐步取代传统的模拟监控,它代表了监控系统的发展潮流,正在被越来越多的工业、商业及其他部门所使用,经济效益和社会效益巨大。而在具体的数字监控技术中,如今有两项技术正在受到广泛的注意,即嵌入式技术和MPEG-4压缩编码技术。
嵌入式系统,一般指非PC系统,有计算机功能但又不称为计算机的设备或器材,它是以应用为中心,软硬件可裁减的,对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。简单地说,嵌入式系统集系统的应用软件与硬件于一体,类似于PC中BIOS的工作方式,具有软件代码小、高度自动化、响应速度快等特点,特别适合于要求实时和多任务的应用。
新一代的基于对象的编码标准MPEG-4和传统的MPEG-1、MPEG-2和H.263相比较,它在交互性、抗误码性和高效压缩上都具有巨大的优势。在交互性方面,MPEG-4采用的是基于对象的编码,便于操作和控制对象;在抗误码性方面,MPEG-4提供了强壮性和可扩展性,并且对其误码恢复技术(包括再同步,数据恢复和错误隐藏)都进行了优化;在高效压缩方面,由于采用了基于对象的编码方式,使得在编码过程中能够考虑到人对图像信息的主观感受以及人眼的视觉神经特性。这就可以给人们感兴趣的对象分配较多的码率,而一些诸如背景等人们感觉迟缓的对象分配较少的码率,从而大大提高压缩率。
基于上述的特点,嵌入式系统和MPEG-4在数字监控领域受到越来越广泛的关注,具有良好的应用前景。
二、基于MPEG-4标准和嵌入式技术的数字监控
1.两种数字录像监控系统的比较
数字监控录像系统(DVR)通常可以分为两类:一类是基于PC组合的计算机多媒体工作方式;另一类就是嵌入式数字监控录像系统(见图1)。随着数字视频压缩编码技术的日益成熟以及计算机的普及,基于PC机的数字监控系统迅速崛起,并且逐渐取代原先的模拟视频监控模式,但是由于PC系统在实际工作中暴露出来的不稳定性,使得基于嵌入式系统的数字监控系统更具有发展前景,其具体的优点体现在以下几方面。
(1)布控区域广泛。嵌入式数字监控系统的Web服务器和终端设备可直接连入网络,没有线缆长度和信号衰减的限制,同时网络是没有距离概念的,因此彻底抛弃了地域的概念,扩展了布控区域。
(2)可组成非常复杂的监控网络。如果采用基于嵌入式Web服务器为核心的监控系统,由于Web服务器输出已完成模拟到数字的转换并压缩,采用统一的协议在网络上传输,支持跨网关、跨路由器的远程视频传输,所以其在组网方式上和基于PC平台的监控方式有极大的不同,能支持更为复杂的监控网络。
(3)性能稳定可靠,无需专人管理。嵌入式数字监控系统采用嵌入式实时多任务操作系统,视频压缩和Web功能集中到一个体积很小的设备内,直接连入局域网或广域网,即插即看,系统的实时性、稳定性、可靠性大大提高,所以无需专人管理,适合于无人值守的环境。
图1 基于嵌入式系统的监控应用
2.视频压缩编码方法的选择
要进行远程监控,大量的视频数据就需要通过网络进行传输,这就需要在数据传输之前进行编码压缩以减少数据量。从视频压缩编码技术来看,MPEG-4在录像存储容量、图像质量、网络传输、对图像可以进行交互操作等方面都具有巨大的优势。
(1)存储空间得到节省。在优势最明显的存储容量方面,采用MPEG-4的视音频全同步录像所需的硬盘空间约为相同图像质量的MPEG-1或M-JPEG所需空间的1/10,此外,MPEG-4因能根据场景变化自动调整压缩方法,故对静止图像、一般运动场景、剧烈活动场景均能保证图像质量不会劣化。表1把MPEG-4的表现同MJPEG和MPEG-1做了比较。
表1 MPEG-4同MJPEG和MPEG-1的比较
注:该测试结果随场景变化可能略有出入。
(2)在录像清晰度方面,尽管MPEG-4瞄准的是低带宽上的音视频解决方案,但是它独特的基于内容的压缩方式同样也适合CIF或者更高清晰度(768×576,640×480)的视频压缩。
(3)在网络传输方面,由于中国实际应用场合的网络环境还不能和国外相比,可以被广泛利用的只有ISDN,如何在如此低的带宽上传输视频,正是MPEG-4大显身手的地方。目前在低带宽上传输活动视频的另一个解决方案就是采用H.263标准,尽管H.263也有较高的压缩比,但是图像质量要差于MPEG-4。表2显示了它们在不同网络上测试结果的对比。在纠错能力上,当网络进行传输有误码或丢包现象时,MPEG-4受到的影响很小,并且能够很快恢复。例如在误码达到1%时,MPEG-1已无法播放,而MPEG-4只会有轻微的边缘模糊。又如当网络传输出现瞬间丢包现象时,MPEG-1恢复至少需要10多秒,而MPEG-4只需1~3秒。
表2 不同网络上测试结果的对比
三、嵌入式系统上MPEG-4的实现方法
1.MPEG-4编码芯片
目前,MPEG-4在嵌入式系统的应用主要是专用的MPEG-4编码芯片,其用法和MPEG-1、MPEG-2、H.263的编码芯片类似。国外已经有很多公司开发出了这类芯片,如WIS公司推出的wisGO7007,飞利浦公司的trimedia等,而在国内,真正掌握了MPEG-4编解码技术的只有汉唐科技一家公司。
MPEG-4编码芯片以下的几个缺点使其在现阶段还不能得到广泛的应用。
(1)价格高。由于MPEG-4的编码技术还处于发展阶段,其算法本身及相应的固化技术都还不够成熟,因此MPEG-4编码芯片的价格比较昂贵。
(2)性能一般。目前大多国内厂商推出的MPEG-4的编码芯片所采用的并不是真正意义上的MPEG-4编码,在性能上和应用比较广泛的H.263、H.263+相近,没有什么优势。
(3)没有可控性和交互性。由于多对象编码需要进行图像识别和分割,这是专用芯片很难完成的,所以MPEG-4的编码芯片基本都只能实现MPEG-4视频流的VLBV (Very Low Bit-rate Video)部分的功能,没有可控性和交互性。
(4)可扩展性差。硬件实现MPEG-4编码由于其算法固化在芯片中,这就使得无法对算法进行方便的修改优化,在有新的算法模块出现时,也无法加入,可扩展性差。
还有一种MPEG-4在嵌入式系统上的实现方法,那就是在嵌入式的软件平台上直接开发MPEG-4编码。
2.MPEG-4在嵌入式系统上的软件实现
在嵌入式系统上用软件直接实现MPEG-4编码,虽然有编码芯片所不具备的优势,但是因为MPEG-4算法复杂,加上嵌入式系统资源有限,这就使得在嵌入式系统软件平台上实现的MPEG-4效率不高,没有很好的实时性。
下面就给出一个在嵌入式系统上完成MPEG-4软件编码的实例。
(1)硬件和软件平台
图2 基于Strong ARM SA1110的嵌入式系统
硬件平台(如图2所示):本设计采用的嵌入式微处理器为Intel基于ARM技术设计的SA1110,这是一款功能强大的32位RISC微处理器,其时钟频率高达206MHz,内部有强大的指令操作能力、高速缓冲能力、寄存器管理能力、读/写缓冲器能力。SA1110芯片206M的运算速度相对弥补了其作为RISC芯片在处理多媒体信息方面能力的不足。
图3 嵌入式Linux操作系统
软件平台(如图3所示):采用Linux为嵌入式操作系统,其内核版本为2.4.19。选择Linux的优势在于其是开放源码的,可以根据不同的监控设备对底层软件进行修改,减少硬件冲突,增加系统的稳定性。编译环境为arm-linux-gcc。
(2)编码实现
a.MPEG-4编码流程(如图4所示)
图4 MPEG-4视频编码框图
b.MPEG-4源码的选择
为了减少工作量,本设计使用了几个源码开放的MPEG-4编码器模型,它们分别是:MPEG-4校验模型、OpenDivX和XviD。
MPEG-4 校验模型
在MPEG-4制定的同时,有两个组织负责为MPEG-4制作校验模型,分别是美国的Microsoft和欧洲的MoMuSys小组。所谓校验模型就是要实现MPEG-4所有的功能和内容(当时只涉及系统、视频、音频三个部分),但是无需为实用考虑,也就是说不需要做算法的优化。
然而,对本设计来讲,固然使用校验模型的优势在于它算法的完备性,但是,由于它要实现的功能太过复杂,因此在我们资源有限的嵌入式系统上是无法达到实时处理的。尽管MPEG-4编解码算法的优化是当前MPEG-4研究的热点之一,而这其中的很多工作都是基于MPEG-4校验模型来完成的,并且这些工作对于MPEG-4的应用来说都是必不可少的,但是,对于本文所要完成的目标来说,却是不现实的。
OpenDivX
DivX最初是从对微软的MS MPEG-4V3编码核心破解而来的,也就是人们熟悉的DivX 3.11。之后DivXNetworks Inc.公司成立,发起一个开放源码项目ProjectMayo,开发出OpenDivX 编码器和解码器原型,然后又开发出更高性能的编码器Encore 2。但是后来由于商业利益的原因,OpenDivX 结束了源代码的开放,Encore 2是OpenDivX的最后的版本。
我们对源码开放的DivX版本做了程序上的修改,使得其在arm-linux-gcc上编译通过。移植结果是:对CIF格式下MPEG-4标准测试序列能达到10秒编一帧,效率很差。
XviD
XviD是OpenDivX的延续,它是目前基于整帧编码(出于应用的考虑,XviD和DivX一样,都没有实现MPEG-4所有的功能和内容,这点和校验模型不同)的MPEG-4 编码器中表现非常出众的一个。和DivX相比,它有以下几个特点:
多种编码模式:除了最原始单重固定码流压缩(1-pass CBR)之外,XviD提供了包括:单重质量模式动态码流压缩、单重量化模式动态码流压缩、和包括外部控制和内部控制的两种双重(2-pass)动态码流压缩模式。由此,XviD是目前MPEG-4编码内核中可选模式最多的。其中特别是双重动态码流压缩模式,通过检测画面运动幅度,以最优化的方式曲线分配画面量化幅度,使充满活性元素的视频图象可以在占用空间和画面质量之间获得最佳的平衡。而单重量化模式动态码流压缩,可以高速地一次性生成可控画面细节的动态码流视频文件,在较少的压缩时间代价之下,可以获得较稳定的画面细节质量。
量化方式选择和范围控制:XviD不仅提供了标准的MPEG量化方式,还特地提供了更适合低码流压缩的H.263量化方式。并且XviD还可以在双重运算(2-pass)时,根据对画面信息的综合分析,动态的决定某段场景的画面量化方式,有利于网络媒体文件传播中,空间与画质的平衡。
运动侦测和曲线平衡分配:XviD可以对画面逐帧进行运动侦测,以及对全片段的运动侦测结果进行分析后,重新以曲线平衡分配每一帧的量化幅度。这样,需要高码流的运动画面可以分配更多空间、更高的码流、更低的量化幅度来保持画面的细节;而对于不包含太多运动信息的静态画面,则消减分配预算。
动态关键帧距:这是另一个XviD所具有的,在空间和画面之间获得最大平衡的技术。我们知道在视频压缩中不是每一帧都记录着全部的画面信息,事实上只有关键帧记录着完整的画面信息,而后续的P 帧(P-Frame)仅仅是纪录下与之前一帧的差值。如果关键帧之间的画面变化很大,则会浪费宝贵的空间在P-Frame上;而加入把变化很大的那一帧记录在关键帧里,那么由于后续的帧不再有更大的变化,就可以节省P帧所需的空间。因此,根据画面镜头切换和运动幅度来变换关键帧的位置,有利于画面质量的提高。
我们对XviD的基于标准C的0.9.1版本在嵌入式系统上移植成功后,其对CIF格式的MPEG-4标准测试序列的编码效率能达到1帧/秒左右。
(3)针对嵌入式系统的MPEG-4编码优化
a.以效果换取效率。以XviD为例,如上所述,XviD在改善图像质量和增强编码效率两方面都下了很大的功夫。但以某些监控领域来说,图像质量并不要求要达到DVD的效果,这样我们可以以牺牲图像质量为代价,去掉XviD的某些功能,减少运算量,来换取帧率的提高。
b.结构上的优化。无论是DivX还是XviD,当初设计的时候都是针对PC机的X86芯片的,现在换到嵌入式系统时,就需要结合的嵌入式芯片的指令级及结构对源码的设计做出结构上的调整。比如说,我们现在选用的是RISC芯片,这类芯片不支持MMX指令,对条件指令的处理速度也很慢。
c.算法上的优化。算法上的优化是通用的,并不针对某一款具体的芯片。如今的算法优化主要集中在运动估计和运动补偿方面。
四、结束语
本文介绍了嵌入式系统和MPEG-4标准在数字监控领域的应用,并且在嵌入式平台上移植实现了一种基于软件平台的MPEG-4编码方法。然而,这种方法在实时性上并不好,并且占用太多的嵌入式系统资源。这就需要我们在了解嵌入式系统特点的基础上进行算法和结构两个方面的编码优化,相信这将是MPEG-4编码技术领域的一个新热点。
----《中国多媒体视讯》