APP下载

基于嵌入式技术的移动物体监控系统的设计与实现

2017-07-18刘鑫

山东工业技术 2017年14期
关键词:视频监控

摘 要:本课题采用的是OK6410开发板,用其作为Linux系统移植的一个硬件开发平台。课题采用频监控技术、运动目标检测技术、视频压缩技术以及CGI动态网页技术相结合的方式进行设计的,这样使得系统更加高效简洁。本课题设计并实现了包括声音报警子模块系统,摄像子系统模块、web服务器模块、移动监控系统主模块。系统首先通过USB摄像头来采集图片,然后将得到的图片送到运动目标检测模块中去进行检测,这里就要用到背景差分法来对运动的物体进行检测,如果检测模块检测到有移动物的体就通过声音报警模块来报警。将图像数据都发送到压缩模块中去进行压缩,压缩完了以后,图像就可以通过嵌入式Web服务器来让图像在pc机的浏览器之中能够得到显示,从而完成整个监控系统的实现。本次的监控系统采用模块化的设计方法,使系统的设计更加高效、简洁,并且也拥有了很好的实用性能。

关键词:视频监控;Linux;视频压缩

DOI:10.16640/j.cnki.37-1222/t.2017.14.219

1 绪论

由于半导体科学正在快速的发展以及信息技术还有数字化的产品的快速普及,现在各个领域都开始运用嵌入式系统。如今,像计算机网络领域、手持设备领域、安防领域还由自动控制领域等等这些领域有已经广泛的用到了嵌入式系统。本课题设计的是移动物体监控系统,所选的嵌入式系统主要应用于对可靠性,实时性要求较高的系统中。这样的监控系统在商场和银行还由其它一些公共场所用的比较多,用于防止偷窃的行为。视频监控系统所用到的技术有很多,比如说有通信技术、有自动控制技术、有计算机技术还有传感器技术等等,对想要监控的地方进行远程的监控,图像的处理和控制的管理,从而集成出整个系统。

随着社会的发展与进步,监控系统非常的重要,它对于治安,消防,小区安保,银行等等领域起到了很大的作用。在安全防范这一块显得格外的重要,在如今这个复杂的社会中,有着形形色色的人,其中不乏有一些动歪脑筋的人,他们会因为利益的诱惑做出一些偷窃,甚至是抢劫的行为,这个时候如果现场没有任何防护措施,那么这些人将会轻而易举的得手而不被抓捕,为了协助公安机关能够第一时间抓捕罪犯,我觉得移动物体监控系统已经是呈现现场情况的不二选择,同时它还有震慑不法分子的作用。

2 系统分析

2.1 可行性分析

本课题的可行性分析,针对本课题在内容和时间上可以做相应的规划。在系统模型上主要有四大块,分别是:SUB摄像头、音箱、web浏览器、移动物体监控系统,通过这四大块的模型来实现整个系统的功能。

2.2 需求分析

随着社会的发展与进步,安全防范这一块显得格外的重要,在如今这个复杂的社会中,有着形形色色的人,其中不乏有一些动歪脑筋的人,他们会因为利益的诱惑做出一些偷窃,甚至是抢劫的行为,这个时候如果现场没有任何防护措施,那么这些人将会轻而易举的得手而不被抓捕,为了协助公安机关能够第一时间抓捕罪犯,因为移动物体监控系统已经是呈现现场情况的不二选择,同时它还有震慑不法分子的作用,因此对于监控系统的研究成了当今一个重要的课题。

传统的监控系统没有报警的功能,因此本次的设计加入了报警的这一项功能,能起到更好的警示效果,从而达到保证社会安定的作用。而且采用嵌入式ARM平台作为系统的开发平台使得系统更加稳定、可靠、灵活,满足了用户在外观、成本、可靠性、以及功能等各方面的需求。

2.2.1 设计目标

对于移动物体监控系统应该具备如下的几点功能:

要能够及时的抓拍清晰的图像;

能够在特定地点对嫌疑人及时的发出警报声;

通过摄像头抓取的图像能够及时的上传的网络便于查看;

能够通过视频的形式观看现场已发生的情况。

2.2.2 性能需求

(1)实用性:系统的使用性很高,方便,经济,设计简洁,实现了很好的监控报警作用。

(2)可靠性:系统安全可靠,在系统运行期间很少发生故障的情况,在硬件良好的情况下,系统流畅的运行起来。

(3)实时性:当有移动的物体从摄像头下经过时,能够及时的发出警报声,并且可以通过浏览器及时的查看抓取的图片和视频,具有很高的实时性。

(4)安全性:可以采取必要的措施从而保障系统在運行时的安全稳定。

3 系统总体设计

3.1 系统硬件平台总体结构设计

本课题设计出来的系统采用的是ARM处理器+Linux操作系统+声音报警子系统模块+摄像头子系统模块+移动监控主系统模块+web服务器子系统模块的方案来解决的,首先我可以通过USB摄像头来采集到相应的图像,然后再把摄像头端采集到的图像进行从模拟到数字的转换,接下来对摄像头端采集到的图像进行检测,一旦发现有移动的物体就会报警,这一操作就需要用到背景差分法来对每一帧图像进行对比了,然后再通过视频压从而能够完成对视频数据的压缩功能,这里通过移植ffmpeg来完成对图像和视频的流化操作,最后通过WEB服务器来接受到客户端发过来的请求,从而实现网络视频数据传输的这一项功能;最后在客户端浏览器上显示监控所得到的图片以及视频。在本课题中,采用的硬件有OK6410的开发板,它上面带的是ARM11的处理器。一个USB摄像头,它是用来采集图像和视频数据。还有一个音箱,用来发出报警声。最后当然还需要pc机一台,这样能够通过浏览器查看图像和视频。系统总体设计方案如图1所示。

3.2 系统软件平台总体架构设计

在本次的系统中包括两个层面,分别是硬件层和和软件层,要设计软件平台首先要设计硬件平台设计,在此基础上来对进行软件平台的架构进行设计,在软件平台中主要包含以下几部分,分别是:交叉编译环境、BootLoader、Linux内核源代码、根文件系统、应用软件。整体流程如图2所示。

设计好了硬件和软件平台下面就是设计并实现了包括声音报警子模块系统,摄像子系统模块、web服务器模块、移动监控系统主模块。

4 系统详细设计与实现

4.1 Uboot简单分析

了解Uboot的启动流程对于后面的工作有很大的帮助,它一般分为两个阶段,第一个阶段程序大部分是用汇编语来编写的,它的任务是完成与体系结构相关的硬件的初始化工作,第二个阶段我们一般都是用C语言来进行代码的编写的,这样是为了能够去实现更加复杂的一些功能,从可读性与可移植性方面讲,用C语言也会更好。

(1)在移植Uboot之前首先要做的就是准备好源代码,要知道开发板的处理器是什么样子的类型的,还有要知道Uboot支持的开发板型号。本课题采用的ok6410开发板,因此从网上下载支持改版本Uboot,具体的Uboot一直过程如下:

1)将Uboot通过samba复制到linux中解压,然打开Makefile文件,找到smdk6410_config:这个配置项后进行配置。

2)输入如下命令:make forlinx_nand_ram256_config。

3)然后编译:make ARCH=arm CROSS_COMPILE=arm-linux- 之后会生成u-boot.bin文件。

4)将开发板设置为sd卡啟动,sd卡中事先要烧写好安装uboot的辅助软件,然偶通过usb下载线将uboot烧写到开发nandflash中,在linux下输入命令:/home/dnw u-boot.bin 5000000 之后等待uboot烧写成功就可以了。

(2)安装tftp服务器:

1)安装:rpm –ivh /mnt/Packages/tftp-server-0.49-7.e16.i686.rpm。

2)配置tftp服务器:vim /etc/xinted.d/tftp ,将Server_args的值设为-s /tftpboot,将disable的值设为no,保存并重启tftp服务器/etc/ init.d/xinted restart。

3)测试tftp服务器:关闭防火墙: /etc/init.d/iptables stop ,关闭Selinux: setenforce permissive ,ping通linux,使用命令netstat –a |grep tftp查看服务器是否启动。

(3)配置开发板网络环境:

1)设置开发板nandflash启动,然后再通过对应的选项进入命令行模式。

2)设置uboot环境变量setenv ipaddr 192.168.1.102回车,setenv serverip 192.168.1.101回车,saveenv保存到nandflash中。

3)接下来我们设置一下开发板自动下载的功能,这样就能自己下载自己启动了。

4.2 Linux内核分析与移植

4.2.1 Linux内核分析

移植Linux内核其实一点都不简单,是很麻烦的,它涉及的知识面很广要深入的了解linux,因此需要开发者去学习和熟悉Linux内核的整个体系架构、源码的组织结构还有linux内核的启动流程是很有必要的,这对于接下来的移植工作有很大的帮助。

4.2.2 移植Linux内核

首先需要在网上下载能够支持ok6410开发板linux的内核源代码,然后复制到linux中并把它给解压了,移植linux内核的过程像下面这个样子:

(1)首先把原有的配置文件和中间文件给清除掉,要用到的命令是:

make clean和make distclean

(2)配置内核:从网上下载参考的内核配置文件config-file,将其复制到内核源码的目录中,并改名为.config ,使用命令 cp config-file ./linux-ok6410/.config ,然后使用命令 make menuconfig ARCH=arm检查配置文件是否正确。

(3)下载mkimage工具将其复制到linux的/bin/目录中。

(4)编译内核:命令make uIamge ARCH=arm CROSS_COMPILE

=arm-linux-之后将生成的uImage文件拷贝到根目录中事先创建好的的tftpboot目录中。

(5)启动开发板,然后会自动的下载内核文件到开发板。

4.3 根文件系统的创建

4.3.1 根文件系统的简介

实际上根文件系统是一种目录的结构,因为 Linux操作系统中的那些设备的存在的形式是文件形式,所以需要对这些文件要分很多的类去管它们,除此以外还要给它一个来用来与内核交互的接口,就这样目录的结构形成了。Linux它所支持得文件系统的种类是很多的,比如像常见的vfat文件系统、yaffs2文件系统、jffs2文件系统以及nfs文件系统等等这些文件系统。

4.3.2 安装nfs服务器

nfs意思是网络文件系统,它的作用是为两台linux主机之间的通讯,它提供了类似于windows上共享目录这样子的服务。并且嵌入式linux开发的过程中,linux的目标机经常采用nfs方式来访问linux宿主机上的文件。因此首先要做的是在linux的宿主机上搭建好一个nfs的服务器。

步骤如下:

首先要做的是配置nfs这个服务器 ,用到的命令是:vim /etc /exports 然后再里面加下面的这一些代码就好了:

/home/S4-ARM/part3/rootfs/ *(rw,sync,no_root_squash)

启动nfs服务器 /etc/init.d/nfs restart

通过命令netstat –a |grep nfs可查看nfs服务器是否启动

4.3.3 创建根文件系统

如何创建根文件系统呢?其实建立根文件系统就是在创建一些具有特定的功能的目录,然后把各种各样的文件放在里面,比如說像在/etc目录下面就会放一些与系统相关的一些重要的配置文件,又比如说在/bin目录下面放的文件是可以去执行的一些文件等等。开发者可以用Busybox这个强大的工具来为自己创建根文件系统,它可自动的创建所要的目录,这样使得整个创建的过程更加的简单便捷了,有助于提高开发的效率。

4.4 摄像头子系统模块设计

采集图像的主要操作流程如下:

(1)打开摄像头设备文件。

(2)获取驱动信息-VIDIOC_QUERYCAP;在此之后可以获取更多的信息,不仅仅是本程序中后面的获取设置图像格式,我们还可以获取摄像头所支持的图像格式等信息。

(3)设置图像格式-VIDIOC_S_FMT;

(4)申请帧缓冲区-VIDIOC_REQBUFS; 在Linux 中一定要有帧缓冲区才能捕获到图像,当申请了帧缓冲区之后,我们就可以把帧缓冲区设置成一个输入的队列,通过驱动程序就可以把图像的信息全部都写到帧缓冲区里面,图像数据写进去之后帧缓冲区就会加入到输出的队列中去了, 用户空间的应用程序最重要取出输出队列的帧缓冲区, 然后读里面的内容, 最后将被读取数据以后的帧缓冲区再次放回到输入队列,如此循环完成视频监控功能。这里有一个值得注意的地方是,我们所申请到的帧缓冲区是在内核空间里面的,因此应用程序是无法直接去访问到帧缓冲区的,在这里可以通过映射等一些操作来完成。并且输入队列和输出队列都通过帧缓冲来构成的。

(5)获取帧缓冲的地址以及长度信息-VIDIOC_QUERYBUF;

(6)通过 mmap 来使得内核空间中的缓冲区能够映射到用户空间中去;

(7)帧缓冲入队列-VIDIOC_QBUF;

(8)开始采集图像-VIDIOC_STREAMON; 在此之后需要使用 select 函数等待输出缓冲有数据可读再进行下一步操作。

(9)取出帧缓冲(出队)-VIDIOC_DQBUF;

(10)访问帧缓冲读取数据-使用 write 等函数将数据写入到目标文件。

(11) 帧缓冲重新入队列-VIDIOC_QBUF;这里要把之前读取过的帧缓冲重新的放入队列中去。

(12)关闭相关设备和文件进行以及解除映射等扫尾工作。

4.5 监控主系统设计与开发

Mtion主程序是一个用于移动物体的监控程序,并且它的代码是开源的,因此我们将它移植过来进行系统的开发。步骤就下在下面:

将 resources/motion 目录中的源码包解压: tar xzf motion-3.2.12.tar.gz

编译、安装 motion:

①进入 motion 源码目录。

②使用命令:make,编译源码,使用命令:make install,将生成库和头文件安装到指定的./_install 目录下。

③拷贝./_install/bin/下的可执行程序 motion 到开发板根文件系统的/usr/sbin 目录下。

④复制 glibc 库到开发板的 /lib/ 目录。

⑤在开发板根文件系统目录中创建/var/run/motion/目录,在/motion/目录下创建 motion.pid文件用来存放motion的进程。

5 总结

传统的监控系统都没有报警的功能,本系统最大的特色就是能够对移动的物体进行判断并报警,而且可以通过浏览器随时查看摄像头端采集到的图像和视频。本课题设计的监控系统采用模块化的设计方法,使系统的设计更加高效、简单,并且也拥有了很好的实用性能。

参考文献:

[1]房芳,马旭东.基于嵌入式Web技术的监控系统设计与实现[J].计算机工程,2009,12(23):233-239.

[2]Stephen Prata著,云巅工作室译.C Primer Plus(第五版)中文版[M].北京:人民邮电出版社,2005.

[3]魏洪兴,谌卫军,康一梅,陈友东.嵌入式系统设计师教程[M].北京:清华大学出版社,2006.

[4]谭浩强.C++程序设计[M].北京:清华大学出版社,2004.

[5]张海藩,牟永梅.软件工程导论(第六版)[M].北京:清华大学出版社,2013.

[6]孙琼.嵌入式Linux应用程序开发详解[M].北京:人民邮电出版社,2006.

作者简介:刘鑫(1984-),男,内蒙古包头人,硕士,工程师,研究方向:网络通信。

猜你喜欢

视频监控
基于视频图像采集移动目标检测系统的设计
数字化监控系统的企业应用
基于嵌入式Linux的视频监控系统的设计与实现
基于HTML5的视频监控微课设计浅析
智能视频检索技术在校园安防建设中的发展应用