《武汉工程大学学报》  2012年7期 66-70   出版日期:2012-07-30   ISSN:1674-2869   CN:42-1779/TQ
家庭安防系统中的多摄像头视频采集与网络传送



0引言随着社会物质生活的不断进步,人们的家庭安防意识也不断增强,家用以及社区安防系统是否完备已成为社会日益关注的问题.所以,开发功能完善、运行平稳、使用方便、费用低的家庭安防系统具有重要的现实意义.以LabWIEW2010为开发平台,开发家庭智能安防系统,对包括多个摄像头的现场视频监控子系统进行了研究和试验.视频监控是家庭安防系统的重要组成部分,主要用于出现警情时完成现场的视频采集、存储等操作,并通过Internet网与保安终端进行远程实时报警和数据通信.视频监控不仅为保安终端提供处警的信息,而且真实记录事件经过,具有不可替代的法律效力,是任何一个安防报警系统必不可少的功能.LabVIEW软件功能强大、编程灵活,适宜作为家庭安防报警系统的开发平台.在此平台上准确无误地完成多个摄像头的视频采集、数据存储和即时网络传输过程.1系统简介整个家庭安防报警系统的硬件组成在文献中\[1-3\]有详细介绍,这里仅做简要叙述.系统的客户端硬件主要由控制主机、数据采集卡、探测器、遥控器等组成;保安终端由PC机和警报设备等构成.客户端PC机主要监控各传感器的报警指令以及各功能模块的设防与撤防,并进行现场数据的采集与处理.传感器有USB接口红外摄像头、拾音器、多光束红外栅栏和门磁检测器等.用户使用遥控器控制报警器,通过按键设置报警器的设防、撤防,紧急求助等状态.整个系统的硬件连接图参见文献\[1\].遥控接收装置通过USB接口与控制主机相连,门磁门缝开关及红外栅栏等的信号线分别连接数据采集卡的DI和GND引脚.USB红外摄像头以及GPRS彩信猫,直接插入系统的USB HUB口.摄像头采集现场数据,送到主机处理,然后通过网络与保安终端远程传送信息.系统的开发以LabVIEW2010软件为中心,利用其强大的功能和计算机的资源使一些需要硬件实现的技术软件化,最大限度的降低系统成本.在必需的硬件环境下尽可能发挥软件功能,完成信号采集、处理、存储、显示以及网络传输等工作.系统软件分为用户端和保安终端两大部分.用户端主要有四大模块:即防骗子模块、紧急报警模块、晚间休息或离家模块以及紧急求助模块,各模块可通过遥控器或语音进行操纵控制.在各模块处于设防的条件下,若某传感器被触发,则该传感器通过采集卡的数字IO向PC机发送报警信息.或者当用户通过遥控器向计算机发送紧急报警指令时,系统通过相应的模块启动相应的探测器进行现场声音与图像采集,将采集到的数据进行处理后通过网络传送到保安终端.也可以彩信的形式将数据发往用户的手机.同时用户也可通过其它远程终端或手机进行现场实时浏览.其中的紧急报警模块同时还具有语音发送报警信息的功能.而紧急求助模块是针对家里有老人、病人等需要帮助时,利用遥控器发出求助指令,并把现场的视频等数据传送给小区保安中心及设定的手机.第7期王会清,等:家庭安防系统中的多摄像头视频采集与网络传送
武汉工程大学学报第34卷
保安端主要是实时检测用户端的报警指令,显示和处理相应的报警用户信息.一旦有报警信息,就闪烁灯光和发声报警.此时可调出报警用户的信息,并在地图中进行定位.也可利用NI的DataSocket技术进行现场数据的远程读取、保存等操作.同时预先设定的手机也可接收到现场的图片及声音文件的结构资源彩信.在保安端的主界面中,可实时显示10个报警用户的视频及其相应的历史信息.如果有更多户,则采用列表方式显示,以选择方式显示报警用户信息.为了避免被动出警,还可利用界面的打印功能为出警人员提供报警用户的具体信息;点击“视频保存”按钮对现场信息保存.作为接警终端可以是小区保安中心,用户办公室等地方和用户手机等.2现场视频监控程序设计2.1USB接口检测程序设计在计算机系统中,控制主机对USB外设的使用是随机记录的,即首先插入的USB摄像头硬件描述符如果设为“camera0”时,拔下后重新插入另一个口上就可能为“camera 3”等.为此,编写了USB视频设备硬件描述符检测程序,用来确定所插的每一个摄像头的序号,以避免出现某一探测器出现报警指令而另一个摄像头采集图像的错误.程序界面如图1所示,图2是其相关的处理程序.图1USB硬件设备描述符检测界面
Fig.1Front panel detecting descriptor of USB device
图2用户菜单选择事件及显示摄像头硬件描述符程序
Fig.2Block diagram selecting event of user’s menu and displaying descriptor of camera每当有一个摄像头安装到系统,检测程序在设置的数组中确定其硬件描述符,显示相应的序号,使各个摄像头与相应的传感器一一对应.使用时,摄像头直接插在与控制主机相连的USB HUB上USB母口,运行USB口检测程序,当插上一个摄像头时,通过数组显示控件可看到其硬件描述符及其所对应的序号.程序中的具体实现是,先调用相关的子VI获得系统中全部摄像头具体的信息,使用数组索引函数等取得其中每一个摄像头的详细信息.将得到的每个摄像头的信息元素接线端子连接数组插入函数的新元素/子数组接线端子,采用数组插入函数创建输出控件,显示每个摄像头的标识符,通过排序得到各摄像头的序号,使之与连接数据采集卡的相应探测器匹配.2.2现场视频和图片采集与传送在用户端主界面中\[1\],当用户点击读取图片、读取视频按钮时,则程序跳转到相应的采集数据保存目录,按预设或默认方式进行浏览,或者通过界面中的视频窗口进行在线浏览.如果系统是由探测器被触动而发生报警指令时,则110布尔全局变量被赋予真值,其相关的while程序赋予相应的条件结构为真值,利用目录上传子VI将现场数据发送到接警终端.在主程序中间while循环中,事件结构的第2帧是处理用户点击“读取采集图片”按钮事件,通过LabVIEW平台的库与其执行系统命令函数进入采集的图片存放目录,以默认方式打开图片.在点击“读取采集视频”按钮时,通过调用LabVIEW的子VI动态的启动与控制DataSocket server,自动运行DataSocket函数浏览视频\[3-6\].在目录上传子程序中,先运行系统命令函数检测本机MAC地址,使用FTP Open SessionFTP、Login FTP、FTP MKD三个函数在设定的FTP站点目录中以其MAC地址和用户姓名为目录名创建目录.并在此目录中再使用FTPMKD函数创建目录用以存放上传的信息,运行FTP PUT FILE子程序将上传的现场数据存储到设定的目录中.当非法入户者触动了探测器发送报警指令时,视频采集是通过数据采集卡上的DI号控制所对应的USB摄像头采集图像,子程序如图3所示.
图3视频和图片采集程序
Fig.3Bloch diagram of video and image acquisition triggered by sensor首先,处理摄像头的子程序将系统中的全部摄像头标识符按数字递增顺序排序,再由索引数组函数与发出报警指令的传感器对应的DI序号确定其索引号.运行Imaqdx open camera函数打开报警探测器所对应的摄像头;通过Imaqdx函数面板中的相关函数执行视频采集.由Imaqdx Configure Grab 子VI对图像采集参数实现动态设置;Imaqcreat子VI为图像的采集动态的分配存储空间;Imaqdx Grab 函数对图像进行采集.通过条件结构中的拍相片子VI把采集的图像以jpg格式保存,通过DataSocket技术进行视频保存.对于用户手机,在保存前,需对采集的图像数据重新处理,使其分辨率为320×240,以便于手机浏览.当非探测器触动模块有报警指令时,程序为非110布尔变量赋真值,接着While循环也为相应的条件结构赋予真值,调用目录上传子VI在线传送数据.当浏览采集图片的按钮或浏览采集视频的按钮被点击时,中间while循环中的事件结构执行相应的处理.在左侧的While 循环检测到两个布尔变量110或非110中任一为1,且用于控制五个While循环同步的布尔变量为0条件下,采用一个全局变量为用户显示现场视频图像.在报警指令是通过遥控器或紧急报警语音密码发送情况下,其视频采集、图片子VI是非触动的,由多个摄像头循环采集数据,其程序代码如图4所示.其中while循环的控制循环次数变量i和摄像头的个数决定了具体是由哪个摄像头来采集图像.如果i加1后与摄像头的个数相除余数为0,则用摄像头的个数减1后作为索引号调用对应的摄像头工作;若i加1后与摄像头的个数相除余数非0,则用余数减1后作为索引号调用对应的摄像头采集图像.图4非触动视频采集程序
Fig.4Block diagram of video capture started
by remote control or voice在客户端主程序中,紧急报警程序下面的while循环里等待集合点的任务执行是由遥控器按钮或语音密码控制.当用户按下需紧急报警的按钮,或者有关函数在wordout全局变量中搜索到语音密码时,都将触发顺序结构第1帧中的等待集合点函数,从而在第2帧通过文本播报,该模块启动语音提示.然后在第3帧判断紧急报警指令是否取消.若是误报后取消,则可在第3帧检测到该信息已取消,并运行文本播报子程序提示.没有取消,则通过条件结构的真分支,为后面的条件结构及110布尔变量赋真值,运行程序采集视频以及运行图片Email子程序.值得一提的是在这个while循环里用了沿检测概念.沿检测分为上升沿和下降沿,由FALSE变成TRUE称之为上升沿,由TRUE变为FALSE称之为下降沿,利用这个编程技巧实现了用常闭探测器代替比之贵五六倍的常开探测器.接警端程序主要是接收客户端发送的报警信息,并通过LabVIEW中的DataSocket技术实时获取报警用户端采集的数据.其主界面程序\[1\]中的.vit子面板模板程序由四个while循环组成.其中的右上方while循环用于控制视频的采集与存储.布尔3、4、5、6用来控制程序中四个循环之间的同步.当该循环程序检测到布尔5为1时,执行读取视频的操作.点击保存按钮,需在弹出的对话框中设置存储位置,设定好保存位置后调用IMAQ AVI Creat子VI创建AVI文件,将采集的视频图像写入AVI文件.当同时有多位用户报警时视频的带宽受到限制,可采用手动保存视频.当用户手机设定为报警终端时,可按照客户端应用程序发布的网页域名在手机浏览器中输入其网址完成对客户端的实时浏览.3结语本系统开发是基于LabVIEW2010软件,在该平台下系统中的大部分硬件可用软件虚拟化代替.利用软件解决了用常闭型的探测器代替常开型探测器的问题,采用while循环移位寄存器和多态的是否小于函数来判断下降沿发生,用以确定数据采集卡中各DI引脚具体连接的探测器以及哪一个探测器产生下降沿,进而控制对应的摄像头采集图像.考虑到系统的存储容量有保证,视频是以avi文件格式保存,即不需进行数据压缩等处理.整个系统经过反复测试,其结果是性能稳定可靠,各功能模块与每个探测器之间的组合理想,达到实时视频等数据采集、存储及网络传送等功能,并将传感器采集的信息以手机短信方式发送用户,未出现误报、漏报等现象;系统操作简便,功能完善,具有较高的性价比,符合预期的效果.