用ARM9实现移动目标跟踪的视频监控系统
2018-01-04,,
,,
(兰州理工大学 机电工程学院,兰州730000)
用ARM9实现移动目标跟踪的视频监控系统
刘磊,余淑荣,吴明亮
(兰州理工大学 机电工程学院,兰州730000)
提出了一种基于ARM的无线视频监控系统,该监控系统使用S3C2440处理器作为主控制器,并使用UVC摄像头进行视频数据的采集,最后利用WiFi网卡发送视频数据。搭载Linux操作系统并利用Mjpg_streamer视频服务器发送视频数据,然后通过自己设计的客户端接收视频数据。最后在基于Mean-shift算法的基础之上,使用Opencv 2.4.12和VS 2010开发平台以及C/C++编程语言实现了运动目标跟踪。实验结果表明,该监控系统可以为用户提供实时的、稳定的、清晰的视频图像,并且成功实现了在运动背景不太复杂,运动目标慢速移动情况下的运动目标的跟踪。
视频监控;ARM;Linux操作系统;Mjpg_streamer;Mean-shift算法
引 言
随着计算机技术、互联网技术和通信技术的不断发展,视频监控应用也取得了巨大的进步与发展。目前嵌入式技术与图像处理技术的结合已经成为视频监控的主流研究方向。视频监控系统目前已被广泛应用诸多场合。早期的监控系统由于体积大、操作不方便、价格昂贵、功能单一而无法满足现代社会的需求,因此人们开始研究新一代的视频监控系统,数字化的视频监控系统逐步进入人们的视野。这种新型的视频监控技术以嵌入式技术为核心并结合热成像、云存储、人脸识别等先进技术,尤其是将图像处理技术应用在监控系统中来实现运动目标跟踪更加受到人们的青睐。基于嵌入式技术的智能图像监控系统必将有良好的应用与发展前景,由它代替当前普遍应用的基于PC的远程监控系统将成为必然趋势[1]。
1 系统整体方案设计
本文所设计的视频监控系统的整体方案包括硬件和软件设计方案。系统的总体结构框架如图1所示。
图1 系统总体结构框架
2 硬件平台设计
2.1 硬件结构设计
本视频监控系统使用JZ2440开发板作为控制器。CPU使用三星S3C2440A,该处理器拥有独立的16 KB指令Cache和16 KB数据Cache MMU,非常适合低功耗的场合;SDRAM存储器为64 MB,频率为133 MHz,用于Linux系统的加载以及应用程序中相关数据的存储。NAND Flash芯片为K9F1208,大小为256 MB,具有非易失性、电可擦除性、可重复编程以及高密度、低功耗等特点,用于存储操作系统的固有程序。有线网卡采用100 Mbps低功耗以太网DM9000A芯片,该芯片具有标准的RJ45插口,并集成了网络变压器。
2.2 视频采集模块设计
由于该视频监控系统是基于Linux操作系统设计的,而该操作系统中提供了视频设备的内核驱动框架(即V4L2框架),因此在硬件上必须使用符合UVC规范的摄像头,最终选用环宇飞扬6160摄像头作为视频采集模块。该摄像头的感光元件类型为CMOS,支持的最大分辨率是640×480,视频数据的输出格式为原始的YUV格式。
2.3 WiFi无线传输模块设计
该视频监控系统中利用WiFi模块将UVC摄像头采集到的视频数据通过Mjpg_streamer视频服务器发送到个人电脑或者手机终端,真正实现了无线监控的目的。其中所使用的WiFi模块采用RT3070芯片,该模块具有150 Mbps无线传输速率,具备强大的 WPA/WPA2、WPAPSK/WPA2PSK 安全机制。其工作原理为:系统需要发送数据包时,首先对网络进行侦听,如果网络繁忙,则进入等待状态,等到网络空闲时,立即发送数据。在接收数据的过程中,先对接收到的数据帧进行解码、去帧头、地址检验,然后将数据缓存到芯片内,等待CRC校验[2],通过校验后会将接收到的数据帧传送到系统存储器中。RT3070芯片与S3C2440的连接电路图如图2所示。
图2 RT3070芯片与S3C2440的连接电路图
3 软件部分设计
3.1 操作系统的环境搭建
嵌入式开发平台的搭建包括引导加载程序的移植、Linux内核的移植以及文件系统的烧写[3]。首先移植Bootloader引导加载程序,其作用是初始化硬件设备、分配内存空间,从而使系统的软硬件环境达到合适状态,为调用操作系统内核做好准备[4]。
本文的内核选用Linux-3.4.2版本,由于本监控系统中需要使用UVC摄像头和WiFi无线网卡,因此需要配置相应的内核驱动程序。要使内核支持UVC驱动,只需将MEDIA_USB_SUPPORT、USB_VIDEO_CLASS、USB_VIDEO_CLASS_INPUT_EVDEV、MEDIA_SUPPORT这4个配置项都配置为“Y”,即可将UVC驱动编进内核。要使内核支持WiFi网卡驱动,只需将RT2800USB、USB等配置项配置为“Y”,即可将WiFi网卡驱动编进内核。因此,首先使用 “make menuconfig”命令按照如上配置项进行内核的配置,其次使用“make uImage”命令来编译内核,最终就可以编译出支持相应驱动的内核。
最后使用BusyBox工具包制作文件系统fs_video_monitor。该文件系统中已经安装有libjpeg库、Mjpg_streamer服务器、hostapd应用程序和dhcpd 应用程序。dhcpd是Linux下的一个DHCP服务器,它的作用是使得WiFi网卡动态获取IP。hostapd 是一个用户态用于AP和认证服务器的守护进程,其作用是提供WiFi网卡的AP功能。
3.2 Mjpg_streamer视频服务器
图3 Mjpg_streamer的 主函数处理流程图
Mjpg_streamer是一款轻量级的视频流服务器软件,该软件有多个输入/输出组件,可根据功能的需要来选择要用的组件[5]。本系统中使用input_uvc.so输入组件和output_http.so输出组件。input_uvc.so组件的主要功能是获取UVC摄像头捕获的视频数据并将其压缩编码,最后将数据保存在缓存区中。output_http.so输出组件的主要功能是将存在缓存区中的数据以http视频数据流的方式输出到各类客户端。Mjpg_streamer的主函数处理流程如图3所示。
3.3 Mjpg_streamer客户端设计
Mjpg_streamer客户端Mjpg_streamer_client用来接收从服务器中发来的视频数据并进行处理,然后写入framebuffer中,最后刷新到LCD上显示出来。其主函数的流程分为四步。
第1步是做初始化工作,调用函数Init_display()注册framebuffer显示设备。紧接着调用Init_Video_channel()函数,该函数的作用是初始化视频获取的通道,随后继续调用Get_Video()函数,该函数的参数为"http" 字符串,意思是根据名字"http" 获得视频获取的通道。
第2步是启动摄像头设备并创建获取摄像头数据的线程。首先调用函数Connect_To_Server()来连接服务器并启动摄像头设备,紧接着调用pthread_mutex_init()函数,该函数的第一个参数是&global.db,其作用是初始化 global.db 成员,然后又调用pthread_cond_init( )函数,该函数的第一个参数为&global.db_update,其作用是初始化 global.db_update成员。最后调用函数pthread_create()来创建VideoThread 线程,该线程的作用是从服务器中获得一帧数据。
第3步是使用循环的方式从输入组件中不断获取一帧的视频数据并进行格式转换,最后写入framebuffer。当输入组件从UVC摄像头中获取一帧数据并存放在buf中之后,会调用 pthread_cond_broadcast()函数发送一个信号给输出组件来通知输出组件获取数据,当信号发出之后会调用函数pthread_cond_wait()来等待接收该信号。当接收到信号之后,会调用Convert()函数将接收到的原视频数据转换为RGB 格式的数据并存入ConvertBuf中,随后调用Merge_video()函数把新的视频数据合并进framebuffer中。紧接着调用video_save()函数录制视频。最后调用Disp_lcd()函数,该函数的作用是把framebuffer中的数据刷新到LCD上并显示出来。
第4步是等待线程结束,并回收它的资源,该功能由pthread_detach()函数完成。
4 基于Mean-shift算法的运动目标跟踪的实现
本文将图像处理技术中的运动目标跟踪应用在视频监控系统中,使得该系统的功能更加完善,应用也更加广泛。目标跟踪的算法大致可以分为均值漂移算法(Mean-shift算法)、Kalman滤波算法、基于粒子滤波的目标跟踪、基于对运动目标建模的方法这4类。由于Mean-shift算法具有很强的鲁棒性,并且计算量不是很大,因此本文选择Mean-shift算法作为运动目标跟踪算法。
4.1 目标模型描述
对第一帧图像中运动目标区域内的每个像素点计算其特征值的概率,这个过程即为目标模型的描述。设目标区域的中心为x0,假设其中有n个像素用{z}i=1,2,…,n表示,特征值的个数为m,则目标模型中的特征值u=1,2,…,m的概率密度函数为:
其中:
4.2 候选模型描述
候选区域即为运动目标在第二帧及以后的每一帧中可能包含目标的区域。在第s帧时,可以由前一帧的目标中心的位置f0得出候选目标的中心位置坐标是f,然后计算出当前帧的候选目标区域直方图,该区域的像素可以用{w}i=1,2,…,m来表示,因此可以求得候选模型的概率密度函数为:
4.3 相似度测量
相似性函数用来描述目标模型与候选模型的相似程度,在本文的算法中使用Bhattacharyya系数作为相似性函数,该函数为:
该函数值在0到1之间,其值越大表示两个模型越相似,通过对当前帧中不同候选区域的计算得到候选模型,在众多区域中相似函数值最大的候选区域即为目标区域。
4.4 运动目标的跟踪
为了使得相似函数的函数值最大,对相似函数进行泰勒展开,即可得到Bhattacharyya系数的近似表达式为:
该函数的极大化过程可以用下列的Mean-shift迭代方程完成:
(其中, gx=-K′(x) )
Mean-shift迭代方法的核心就是从fk开始向两个模型相比颜色变化最大的方向不断移动,直至移动距离小于阈值时即找到了目标位置,并以此作为下一帧的起始搜索窗口中心,如此不断循环进行。
5 实验结果与分析
5.1 无线视频监控的实现
首先在开发板的USB口依次接入UVC摄像头和USB WiFi网卡,然后成功接入网线,最后通过USB线和电脑主机进行通信。其次在PC中安装SecureCRT 8.0.4 终端仿真软件,并在虚拟机中安装Ubuntu 9.10。当测试平台搭建完之后即可启动开发板,然后通过命令来开启Mjpg_streamer服务器,最后在Ubuntu的文本模式下进入相应的目录中,通过命令来启动客户端,随后即可观看视频图像,运行效果如图4所示。视频监控系统实物图如图5所示,其可以很好地满足各种场合的视频监控需求。
图4 客户端效果图
图5 视频监控系统实物图
5.2 运动目标跟踪的实现
本文获取之前录制的一段视频进行测试运动目标跟踪的效果,该测试在CPU为Intel(R) Core(TM)2 Duo,运行内存为2 GB的Windows系统上进行,并在Opencv 2.4.10和VS 2010的开发平台上利用C/C++编程语言实现。视频序列中每帧图片的大小为320×240,视频中的运动目标水杯缓慢向左移动。测试发现,当运动目标缓慢移动并无明显尺寸变化以及无遮挡情况发生时,采用经典的Mean-shift算法对运动目标进行跟踪还是比较理想的。获取其中的第5帧、第20帧、第30帧的测试效果图如图6所示。
结 语
图6 运动目标跟踪测试效果图
[1] 杨勇.基于ARM的嵌入式远程视频监控系统的设计[J].微计算机信息,2008,24(11-2):1-2.
[2] 刘尘尘.基于ARM的远程视频监控系统的设计[J].计算机测量与控制,2012,20(8):1.
[3] 周鹏飞.基于MJPG-Streamer的移动视频监控系统的设计与研究[D].合肥:安徽理工大学,2013.
[4] 何少佳,史剑清.基于ARM的家居远程视频监控平台[J].计算机系统应用,2014,23(9):1-2.
[5] 陈宗成,邓华秋.基于ARM11的嵌入式视频传输系统的实现[J].电视技术,2013(9):2-3.
刘磊(硕士研究生),主要研究方向为嵌入式计算机及其应用、 物联网技术;余淑荣(教授), 主要研究方向为计算机控制、机械制造;吴明亮(教授), 主要研究方向为人工智能、计算机控制和复杂工艺过程制。
结 语
参考文献
[1] ZHANG C,BAI Z,CAO B.Study On regenerative braking of electric vehicle[C]//Proceeding of the 4th International Conference on Power Electronics and Motion Control,2004:836-839.
[2] 孙心华.三相直流无刷电机控制系统设计[D].广州:广东工业大学,2008.
[3] 谭建成.永磁直流无刷电机技术[M].北京:机械工业出版社,2011.
[4] ERTUGRUL N,ACARNLEY P.Indirect rotor position sensing in real time for brushless permanent magnet motor drives [C]//IEEE Ann PESC,1997:736-742.
[5] Lin ChengTsung.Position Sensorless Control for Four-Switch Three-Phase Brushless DC Motor Drives[J].IEEE Transactions on Power Electronics,2006,23(1):438-444.
[6] 吴强,熊浩,孟光伟,等.三相永磁无刷电机起动控制研究[J].船电技术,2011,31(9):6-10.
[7] 张相军,陈伯时.无刷直流电机控制系统中PWM调制方式对换相转矩脉动的影响[J].电机与控制学报,2003,7(2):87-91.
潘安乐(硕士),主要研究方向为嵌入式开发、数字信号处理、智能控制;陈小平(教授),主要研究方向为嵌入式系统应用、智能信息处理、虚拟仪器技术。
VideoMonitoringSystemforMovingTargetTrackingBasedonARM9
LiuLei,YuShurong,WuMingliang
(School of Mechanical And Electrical Engineering,Lanzhou University of Technology,Lanzhou 730000,China)
In the paper,a wireless video monitoring system based on ARM is proposed,which uses S3C2440 as the main processor,and uses UVC camera to collect video data,and finally sends the video data by using WiFi network card.The software platform is equipped with Linux operating system.The video data is sent by Mjpg-streamer video server and
by the client designed by myself.Finally,on the basis of Mean-shift algorithm,the moving target tracking is realized by using Opencv 2.4.10,VS 2010 development platform and C/C++ programming language.The experiment results show that the monitoring system can provide users with real-time,stable and clear video images.Furthermore,the moving target tracking is realized under the condition that the moving background is not too complex and the moving object is moving slowly.
video monitoring;ARM;Linux operating system;Mjpg_streamer;Mean-shift algorithm
TP311
A
薛士然
2017-08-23)
2017-09-06)