基于B/S架构的嵌入式远程视频监控系统的设计
2014-10-20娄德成韦银
娄德成,韦银
0 引言
随着智能小区的逐渐普及以及数字化城市建设的飞速发展,越来越多的楼栋及街道都布满了各式各样的摄像头,视频监控也理所当然的以其方便、直观和信息内容丰富等特点成为信息领域最热门的应用技术之一。传统的视频监控系统通常有两类,一类为闭路电视监控,监控区域有限,缺乏智能化,在很大程度上仍需要依赖于人的主观判断,常常导致误报、漏报现象;另一类为基于普通PC的数字化监控,虽然可为客户提供良好的监控解决方案,但其体积通常较大,视频监控前端设计较复杂、功耗大、不够稳定[1],同样监控使用的电脑需专人管理。再者传统的视频监控系统往往存在操作繁琐、可移动性差、不便组网以及升级维护成本高等缺点,因此如何设计出一套易升级维护、可远程监控、可靠性高的嵌入式视频监控系统就成为行业内的迫切需要。
1 系统结构及工作原理
论文设计了一种基于 B/S模式的嵌入式网络视频监控系统,设计总体目标是:能够实时采集远端监控区域的视频信息,对视频信息进行压缩,通过互联网络进行传输;系统对视频信息的目标检测,一旦发现异常即可报警,从而实现智能化视频监控的目的;由于还设计了基于 B/S的架构方式,用户端仅需要通过浏览器就能方便地对远端进行监控、对视频信息存储和回放等。
2 系统硬件平台设计
图1 系统硬件框图
该系统硬件平台的基础部分是以嵌入式微处理器S3C2410A为核心的最小系统,包含闪存、静态随机读/写存储器、串口以及电源和复位等电路接口;在此基础上拓展了网络摄像头以及以太网接口模块用以实现视频监控功能如图1所示:为了实现视频监控系统的基本功能,且易于编程实现,该系统将外围硬件设备按功能需求划分为各个独立模块。因为视频信息需要依赖TCP/IP协议实现网络传输,所以在总线上扩展了Ethernet接口芯片DM9000。为了方便系统软件的调试和下载,扩展了Jtag口和RS232串口。
2.1 以太网接口电路模块设计
S3C2410A内嵌有以太网控制器, 但是没有提供物理层接口[2],为了实现嵌入式系统的网络互连,需要自行设计相应的硬件接口电路及驱动程序。本系统选择台湾联杰国际生产的10/100M快速以太网控制芯片DM9000作为以太网的物理层接口,该芯片支持 8/16位数据总线,适应不同的网络速度要求;内置16KB的SRAM,支持IP /TCP /UDP加速,支持半/全双工流量控制,响应时间只有 20ns[3],S3C2410A与DM9000的连接电路如图2所示:
图2 系统硬件框图
S3C2410A的数据线DATA[15:0]与DM9000的数据线D[15:0]连接,用来实现其数据传输;S3C2410A的DM_IOR引脚连接 DM9000的读引脚 IOR#,DM_IOW 引脚连接DM9000的写引脚 IOW#,同时,DM9000占用 S3C2410A的中断引脚EINT7,使得S3C2410A能够响应DM9000的中断[4]。DM9000与网络的连接由接收信号线RX+、RX-和发送信号线 TX+、TX-通过隔离变压器 E-2023与以太网水晶接头RJ_45相连。隔离变压器的主要作用是将嵌入式系统与外部线路相隔离,可实现带电插拔功能。
2.2 摄像头接口模块
在摄像头接口模块设计上,采用USB接口的CMOS摄像头,即插即用,处理器通过USB控制器控制摄像头。具体型号为中星微公司的ZC301系列。ZC301是该公司针对图像采集和处理应用而专门设计的摄像机数字图像处理芯片,它集成了 CMOS传感器接口、图形信号处理单元、图形压缩单元以及JPEG编码的位流支持,具备30万像素分辨率,帧速高达30帧/秒[5],符合项目要求。
3 系统软件设计
视频监控系统软件设计部分包含嵌入式操作系统和相应驱动程序等系统级的底层设计;另一部分包含系统主程序设计、各模块应用的设计、B/S模式下视频服务器的设计等等。
3.1 B/S架构开发模式
B/S模式即浏览器/服务器模式,它是对C/S模式应用的扩展和改进[6],主要包含3部分:客户端浏览器、Web服务器和数据库服务器。B/S模式最大的特点就是操作简便,用户的主要工作都是通过浏览器来实现。维护时也很方便,只需修改服务器端的页面,所有用户即可实现同步更新。
3.2 视频监控模块设计
视频监控软件可分为服务器端和客户端两部分。服务器端主要负责视频数据的采集、压缩、网络传输等功能;客户端负责对视频数据的接收和显示,并能对服务器端发出控制信息。具体实现过程如图3所示:
图3 视频监控实现流程图
首先,启动服务器端的服务程序,把从摄像头采集到的视频数据不断进行压缩处理,并等待监控端连接请求;当收到监控端的连接请求后,建立网络连接,并基于 TCP传输协议进行网络传输;随后,监控端即可不断获取视频信息,经过解码后即可显示出监控现场的视频画面。
3.2.1 视频采集技术
Linux内核针对各种视频设备提供了 V4L(VideoforLinux)接口函数,极大地方便了编程人员对视频设备的应用程序开发[7]。V4L采用两层式架构,下层是已封装好的视频设备的驱动程序;上层为 V4L驱动程序本身,为系统提供各种API,屏蔽了底层的驱动,可供用户直接调用。在Linux中视频设备被看作设备文件,可像操作普通文件一样进行访问,摄像头设备对应的文件是:/dev/video,视频采集流程如图4所示:
图4 视频采集流程图
3.2.2 视频压缩技术
所设计系统采用Linux下的libjpeg库完成图像压缩功能,能实现JPEG解码、编码及其他的JPEG功能。具体用int JpegCompress(char **buffer,char *data,int picWidth,int picHeight,int quality)函数来实现压缩功能[7],5个参数的含义分别为:buffer指针指向压缩后数据的起始地址,data是采集到的原始一帧视频数据的起始地址,picWidth和picHeight分别用于确定图像的宽度和高度,quality用于设定JPEG图像的压缩品质。
3.2.3 视频传输技术
所设计系统视频传输部分采用基于 TCP连接的流式套接字编程实现,客户端向服务器发送服务请求,服务器便根据请求提供相应的服务[8]。具体的通信示意图如图5所示:
图5 基于TCP 连接的socket编程流程图
该网络传输模块中,服务器端的功能主要是响应监控端的连接请求,然后发送采集到的视频信息,并及时响应监控端的控制信息。
4 系统集成测试
本系统嵌入式服务器采用三星公司的FS2410核心板,操作系统为移植的嵌入式Linux2.6.35版本。监控端使用PC机进行测试,操作系统是 WindowsXP。由于目标板没有显示终端,所以只能通过目标板的串口与PC机进行交互操作。在测试过程中,本系统采用增量集成法,所有模块测试无误后再对完整的系统进行系统测试。
客户端的操作非常简单,用户只需在浏览器地址栏输入服务器端的IP地址,即可通过网络访问监控系统的登陆页面。为了确保用户的安全,设置了用户登陆权限,用户输入正确的用户名和密码后,就可通过安全认证进入系统监控页面,点击视频采集下方的“PLAY”按钮即可通过嵌入式服务器去调用目标板上的USB摄像头进行工作。主要测试USB摄像头模块能否实时传输视频信息、是否出现丢帧现象、显示效果是否流畅等。由于JPEG的压缩效果较好,试验结果表明该监控模块每秒采集25帧数据,无丢帧现象,连续采集24小时所占的存储空间仅为3GB不到,且采集图像较清晰,视频显示流畅。该监控模块可以很好地实现对特定监控区域的实时监控,系统的交互性也较好,实现了远程监控的预期功能,具体如图6所示:
图6 B/S模式下的监控画面
5 总结
本系统扩展性强,可结合客户自身需求进行定制。由于基于B/S模式,用户端只需通过IE浏览器登陆监控机的主页面,就可对远端的视频信息进行查看或存储,以便将火灾、盗窃等安全隐患及时消灭在萌芽状态,因此广泛地适应于交通、小区、以及环境恶劣、无人值守等工作场合的监控。
[1]西刹子.安防天下—智能网络视频监控技术详解与实践[M].北京:清华大学出版社,2010.
[2]袁安富.基于ARM和Linux的DM9000网络接口设计及驱动实现[J].湖南:计算机工程与科学, 2011.
[3]DM9000A-DS-P03 Datasheet. DAVICOM Semiconductor[S], 2005.
[4]Samsung Electronic Corp.S3C2410A 32-bit RISC MicroProcessor User’s Manual[S].Revision 1.0,2004.
[5]Vimicro Corp.Digital Video Processor Manual Revision 1.0[S],2009.
[6]杨念.基于 B/S的嵌入式视频监控系统的设计与实现[J].北京:计算机工程与设计, 2008.
[7]孙纪坤, 张小全.嵌入式Linux系统开发技术详解—基于ARM[M].北京:人民邮电出版社,2006.
[8]W.Richard Stevens.UNIX网络编程 卷1:套接字联网API (第3版)[M].北京:人民邮电出版社,2010.