夏振华
(长江大学电子信息学院,湖北荆州434023)
王晓爽
(长江大学工程技术学院,湖北荆州434023)
20世纪90年代末,随着网络技术、多媒体技术以及嵌入式系统的飞速发展,产生了嵌入式网络数字图像监控技术。这种监控系统的监控终端部分内置了提供Web服务的图像服务器程序,以此来完成监控图像的采集、压缩编码和动作控制等任务,将压缩编码后的视频数据通过B/S(Browser/Server)模式进行网络传输,局域网或者Internet上的其他的用户可以通过网络浏览器查看Web服务器上的监控图像。这种监控系统如果再配合目前覆盖面非常广泛的移动或者联通的GPRS网络[1],可以实现远程无线图像甚至视频传输,可以大大的拓宽图像监控的地理范围和应用领域。笔者提出了一种基于GPRS无线传输的嵌入式监控系统的设计方案,该系统以ARM9芯片为核心,充分利用GPRS网络的优势,实现了监控图像的远距离无线传输。
系统由图像监控终端和监控中心2部分组成,图像监控终端使用嵌入式系统加上USB摄像头,从USB摄像头采集得到监控画面,进行压缩编码处理后,通过GPRS拨号的方式连入互联网,将压缩的码流经过互联网传输到监控中心,监控中心利用操作系统自带的网络浏览器查看监控画面,系统组成框图如图1所示。
图1 嵌入式视频监控系统组成框图
在图1中,监控终端由带USB摄像头的ARM板和GPRS MODEM组成[2],ARM板端的软件负责采集图像,并控制GPRSMODEM实现互联网的接入[3];监控中心是一台联入互联网的PC机,它负责数据的接收和图像的显示。整个系统工作在B/S模式,监控中心工作在Browser模式,监控终端工作在Server模式。监控中心直接采用IE浏览器来查看监控画面,不需要在PC机上运行其他的软件,整个系统的主要设计工作是嵌入式监控终端的硬件和软件设计。监控终端的设计核心任务就是进行基于Linux操作系统的视频采集、传输的软件设计。
监控终端采用三星公司的S3C2410嵌入式芯片为核心,其主要硬件电路由系统存储电路、外围接口电路、电源、复位电路和GPRSMODEM[4]等几个部分组成,系统硬件总体结构如图2所示。
图2中各硬件模块的功能可以从图中很方便的了解,这里不再详述。需要注意的是USB摄像头控制器的选择直接关系到摄像头驱动程序的设计[5]。目前用于摄像头的控制器主要有中国中芯微公司的ZC030x系列芯片和美国OV公司的OV 511+芯片。中芯微公司的主流控制芯片都带有硬件JPEG编码模块,利用这个特性可以直接从摄像头得到经过压缩的图片格式,大大简化监控终端应用软件的设计,笔者选用了ZC301P芯片的130万像素的USB摄像头。
图2 监控终端硬件总体结构
图3 视频采集流程图
嵌入式操作系统的种类很多,目前比较流行的Windows Mobile、Linux、ucOS,考虑到成本控制的问题,笔者选择Linux为嵌入式操作系统。Linux操作系统可以运行在包括ARM等多种嵌入式芯片上。与Windows下的程序一样,要想利用USB摄像头进行图像采集,软件系统需要包含驱动程序和应用程序两部分。驱动程序运行在系统的底层,它提供USB摄像头的初始化、参数调节、图像数据读取等API函数,Linux系统自带了包括ZC301在内的多种摄像头的驱动,在移植Linux内核时,只需将ZC301相关的驱动程序选项予以选中,进行内核编译后,就可以直接使用。图像的采集应用程序可以利用Linux自带的视频函数库 (Video For Linux,V4L)所提供的API函数来实现。在Linux中,视频设备是设备文件,可以像访问普通文件一样对其进行读写,以便对摄像头的参数进行设置和读取摄像头的状态及图像数据,摄像头一般挂载在/dev/video0下[6]。下面介绍利用V4L和Socket API编写图像监控系统的应用程序的方法。
V4L为应用程序提供了一系列的接口函数,通过这些函数,可以执行打开、读写、关闭等基本操作。设备驱动提供了read、write、open、close等函数的具体实现,在编写应用程序时直接调用驱动提供的接口函数就能实现 JPEG格式的图像数据的采集。JPEG图像数据已经经过了压缩编码,利用Linux Socket提供的TCP/IP协议栈的API函数进行网络传输。视频采集和网络传输程序的流程如图3所示。从图3可以看出,应用程序先要打开已经正确驱动的视频设备,接着读取设备的一些信息,如视频设备的缓冲大小、当前采集图像的分辨率、图像的色阶等,然后选择图像格式为BMP或者JPEG,此时准备工作完成,进入图像采集。在采集图像时,需要判断缓冲区是否满,缓冲区满就可以读取缓冲区内的图像数据,读到图像数据后,通过PPP方式拨号联入互联网,再利用UDP协议将图像数据传送到网络中,当一帧图像传输结束,并且没有收到停止监控指令,就继续循环上述读取和传送操作,否则,停止监控并关闭视频设备。
图4 监控画面
该系统最后运行的效果如图4所示。该图是监控中心通过IE浏览器查看到的监控终端提供的监控画面的截图。
从图4中可以看出该系统所提供的监控画面图像质量较好,完全可以满足实际应用中对监控画面质量的要求。另外,通过抓包软件 (sniffer)分析,监控终端传输一幅352×288大小的全彩画面需要的网络流量约为17Kb,按照1min传输5幅画面计算,1min所需要的流量为85Kb,单个监控终端1d的流量约为12.3Mb,1mon约为360Mb,从上面的流量分析可以看出,该系统对网络流量要求较低,能在较低的流量费用下提供较好质量的监控画面,有较大的实用价值。
笔者提出的基于GPRS技术的嵌入式图像监控系统设计方案具有稳定性高、图像质量较好、网络传输性能好等特点。该系统操作简单,只需用户配置IP地址就可以运行,系统的监控图像质量能满足大多数用户对画面质量的要求[7],另外,该图像监控终端对网络流量的需求较低,非常适合利用按流量收费的GPRS传输。
[1]赵霞,张凯.基于ARM的GPRS的污水远程监控系统[J].微计算机信息,2008,(2):169~173.
[2]周云辉,范立志.基于GPRS的无线监控管理系统中远程终端拨号接入技术的实现[J].湖南理工学院学报(自然科学版),2004,(3):37~39.
[3]黄俊飞,廖建新.一种基于GGSN触发的GPRS智能网[J].北京邮电大学学报,2005,(1):25~28.
[4]蔺伟,沈京川,蒋韵.移动智能网在中国铁路的应用与发展[J].铁道通信信号,2006,(5):56~58.
[5]梅晓兰,张连发,梅启斌.基于OMAPl510双核架构的移动多媒体通信终端的设计与实现[J].电子技术应用,2004,(7):30~33.
[6]马计,张睿.便携式终端上AVS-TS播放的软件实现[J].计算机应用与软件,2009,(11):41~44.
[7]王鹏,吕志刚,黄建.基于Linux的嵌入式无线图像监控系统[J].安防科技,2009,(1):51~54.