APP下载

基于ARM的移动目标跟踪系统设计

2017-04-13刘昌华

软件导刊 2017年3期
关键词:卡曼开发板嵌入式

郭 琪,刘昌华

(武汉轻工大学 数学与计算机学院,湖北 武汉 430023)

基于ARM的移动目标跟踪系统设计

郭 琪,刘昌华

(武汉轻工大学 数学与计算机学院,湖北 武汉 430023)

基于ARM9-S3C2440AL处理器提出一种移动目标跟踪设计方案。研究如何将嵌入式平台与移动目标跟踪结合起来,并对系统关键技术和方法进行描述。系统包括软硬件平台设计,主要完成了Bootloader向导移植、Linux内核制作、USB摄像头驱动程序编写、声卡驱动设计、移动目标跟踪系统应用程序设计。在MATLAB软件平台上研究了基于卡曼滤波的单目标和数学形态连通区域的多目标移动跟踪算法,实现了移动目标跟踪,结果达到预期目标;将在MATLAB平台上运行的程序转化为适合开发板运行的C程序,实现ARM开发板采集图像并存储,可通过客户端Web浏览器对存储的图像和视频进行查看。

ARM9-S3C2440AL;移动目标跟踪;卡曼滤波;数学形态连通区域

0 引言

近年来,伴随着社会的快速发展,移动设备需求量不断加大,对其性能要求也愈加严格。移动目标识别和跟踪技术[1]是现代化视频监控领域一项非常重要的技术,发展十分迅猛,得到了社会各界的广泛关注。然而面向应用的目标跟踪系统[2]却不尽如人意,其指标性能不能很好地满足应用要求。移动目标跟踪系统基于PC机仅仅对视频进行采集、存储和回看,考虑到实时性的要求,传统的移动目标跟踪系统越来越不能满足实际需要,结合嵌入式技术可靠性高、成本低、体积小、实时性强等特点,基于ARM的移动目标跟踪系统具有广泛的应用前景。

1 系统整体方案

该移动目标跟踪系统整体结构主要由USB摄像头、嵌入式软硬件平台和移动目标跟踪系统的应用程序组成。USB摄像头用来采集视频信号,硬件部分以ARM9-S3C2440AL为核心,并扩展了SDRAM内存、Flash闪存等开发板外设,嵌入式软件平台为底层硬件提供驱动支持、内存管理、中断管理以及移动目标跟踪处理,应用程序主要实现移动目标跟踪系统所需的算法,保证移动目标跟踪系统的实现。

2 硬件设计

2.1 系统硬件总体设计

该系统硬件部分主体结构如图1所示,主要由ARM9处理器S3C2440AL、SDRAM、Nand Flash、Nor Flash、RTC电路,复位电路、USB摄像头和蜂鸣器等构成,客户端Web浏览器作为系统查看平台。

图1 系统硬件结构

2.2 S3C2440AL处理器

该移动目标跟踪系统采用S3C2440AL处理器,该处理器采用ARM9内核,ARM V4指令集,主频可达400MHZ,核心开发板配64MB内存、256MB Nand-Flash和2MB Nor-Flash。微处理器性能稳定、功能强大且支持多种操作系统,可以适应处理能力要求较高的应用。

2.3 USB摄像头

摄像头选用罗技720p高清USB摄像头,采用CMOS成像元件获取图像,最高速度可达30f/s,支持USB2.0接口。该USB摄像头不需要安装驱动,是一种支持UVC(USB Video Class,视频设备类)标准协议的摄像头,将这种摄像头连接到支持该标准的操作系统,系统会自动为其配置、安装驱动。

3 软件设计

3.1 软件主体结构

该系统软件主体结构如图2所示,主要包括Linux操作系统、内核驱动程序和应用程序3个部分。

图2 Linux系统架构

3.2 Linux操作系统移植

Linux操作系统移植主要包括Bootloader移植、Linux内核配置和根文件系统制作3个部分。系统使用Linux发行版红帽RHEL6.3作为软件开发平台,采用交叉编译方式,交叉编译器版本为arm-linux-gcc_4.3.2。

(1)Bootloader移植。Bootloader遵循GPL公约,支持ARM处理器和Linux操作系统,具有较高的可靠性和稳定性,是Linux执行前的一段初始化程序。将编写好的Bootloader文件移植NANDflash中,启动后配置环境变量,确定Linux系统启动方式。

(2)Linux内核配置、编译及下载。本系统选用Linux2.6.3版本的内核,执行make menuconfig ARCH=arm命令,通过菜单选项对Linux的功能进行选择和配置,配置完后,保存退出,执行make uImage命令进行编译,生成内核镜像文件uImage,就可移植到开发板运行。

(3)构建Linux根文件系统。

3.3 移动目标跟踪系统搭建

在MATLAB平台上搭建移动目标跟踪的基本框架,对图像目标的背景进行提取,将传统帧差法加以改进后,对视频图像中的移动区域进行检测,实现了移动目标的检测以及移动目标的位置提取。对单目标的移动,运用卡曼滤波[3]实现了其跟踪算法,能对单目标的移动路线进行跟踪,针对多目标的跟踪,基于数学形态连通区域的特征[4]实现其跟踪算法。跟踪效果可以用矩形框跟踪的形式进行演示,实验结果验证了该算法的有效性,结果也达到了预期目标。

嵌入式平台移动目标跟踪系统搭建如下:

(1)声音报警子系统开发。包括声卡驱动开发,声卡驱动架构采用ALSA-OSS封装[5],声卡驱动集成通过make menuconfig ARCH=arm进入配置菜单Device Drivers ---><*>Sound card support ---><*> Advanced Linux Sound Architecture ---><*> OSS Mixer API<*> OSS PCM (digital audio) API[*] OSS PCM (digital audio) API - Include plugin system后,移植madplay应用程序。

(2)摄像头子系统开发。包括摄像头驱动开发,摄像头软件架构是当前最流行的V4L2架构[6],进入配置菜单中配置摄像头驱动使能Device Drivers --->Multimedia devices --->[*] Video capture adapters --->[*] V4L USB devices ---><*> GSPCA based webcams ---><*> ZC3XX USB Camera Driver,保存配置并编译内核后,进行摄像头驱动测试。

(3)移动监控主系统设计。将摄像头采集的视频转换成avi格式的文件进行存储,首先进行Ffmpeg移植[7],然后进行Motion主程序移植[8],Motion是一个开源的移动图像监控程序,配置motion参数使motion能使用Ffmpeg录制视频的功能,配置成功后通过命令motion -c /etc/motion.conf开启motion直至成功启动,通过samba进入开发板的根文件系统目录中发现有摄像头采集的图像,当有物体在摄像头前移动时会报警。

(4)嵌入式Web服务器开发。包括BOA嵌入式服务器[9]移植,首先编译解压源代码,配置boa.conf文件,配置选项Port、User、Group、ErrorLog等,复制已经存在的Web目录到开发板根文件系统目录中,之后启动boa程序,在PC浏览器输入开发板的IP地址就可看到存储的图像;然后是CGIC库移植,CGI就是通用网关接口,实际上是一个应用程序,运行在Web服务器上,可通过浏览器端的用户输入而触发,提供与客户端HTML页面的接口。它能让网络用户访问和运行远程服务器系统所在主机的应用程序,进一步控制相关硬件,并将结果格式化输出为HTML格式,最终反馈到浏览器端。这样就完成了HTML静态页面和WEB服务器的动态交互,boa和CGIC移植成功后,接下来就是CGIC程序的编写,CGI程序在浏览器能被调用,是通过表单来完成的,表单中标识着表单的开始和结束,C语言编写CGI程序时不能用main函数作为主函数,因为main函数在CGIC的库文件中已经被定义了,基于前面所述的C语言编写CGI程序的知识,可以很快编写出显示图片的CGI程序。实际上,显示图片的还是HTML页面文件,只不过通过CGI将HTML页面的内容输出而已,其基本格式如下:

首先添加必要的头文件,然后int cgiMain()

{ cgiHeaderContentType("text/html");fprintf(cgiOut," ");

fprintf(cgiOut," ");fprintf(cgiOut,"");

fprintf(cgiOut,"");fprintf(cgiOut," ");

fprintf(cgiOut," ");return 0;}

将编译好的CGI程序放到开发板根文件系统目录中,修改该目录下的.html文件。这里主要是修改“查看图片”菜单,,让其索引到一个超链接,也即.cgi,这样在点击查看图片时就可以执行.cgi程序,在cgi程序中还可以嵌入视频,在HTML页面中嵌入多媒体可以通过embed标签实现,与之前显示图片的实现原理一样,参考前面代码修改即可,将编写好的显示视频的.c文件编译成cgi文件后,还需要修改相应的.html文件,给“显示视频”菜单加上超链接以访问该cgi文件,显示存储目录下的所有视频,最终整个移动目标跟踪系统搭建完成。

4 系统测试

在MATLAB平台上,对单目标图3和多目标图4跟踪基本实现预期效果。完成Linux系统搭建和移动目标跟踪系统搭建后,启动开发板,摄像头把采集到的图像和视频进行存储,给显示视频和图像菜单加上超链接以访问该cgi文件,显示了存储目录下的所有视频和图片,查看存储的视频和图像没有明显的失真和抖动,画质清晰流畅。总体而言存储效果良好。

图3 卡曼滤波后的结果

图4 多目标连通区域结果

5 结语

在MATLAB代码设计中,对于单目标跟踪和多目标跟踪采取了不同的设计,单目标识别是基于卡曼滤波实现,多目标跟踪是采用数学形态学实现的,遗憾的是没能利用卡曼滤波算法实现多目标识别跟踪,需后期进一步完善。该移动目标跟踪系统具有实时性高、成本低、体积小,且运行稳定、可靠等高特点,在Linux-arm平台上,通过PC浏览器可以看到存储的图像和视频,但是界面不太美观,一些后期功能也需继续完善。

[1] 余静,游志胜.自动目标识别与跟踪技术研究综述[J].计算机应用研究,2005(1):12-15.

[2] 潘广林,梁彦,刘宝霆,等.目标跟踪系统性能评估研究[J].系统仿真学报,2007,19(24):5773-5777.

[3] 王宝荣,杨华,王一程,等.基于卡曼滤波与均值偏移算法的目标跟踪[J].激光与红外,2009,39(11):1233-1236.

[4] 谭伟,方超,杜建洪,等.基于数学形态学的集装箱箱号分割改进算法[J].计算机工程与应用,2011,47(13):174-177.

[5] 胡伟.Android系统架构及其驱动研究[J].广州广播电视大学学报,2010(4):96-101.

[6] 曹占中,周余,王自强,等.基于s3c2440的Linux摄像头驱动开发[J].电子测量技术,2009,32(2):108-111.

[7] 刘红,卢程.FFmpeg开源项目移植到Android的研究[J].价值工程,2016(4):166-169.

[8] 康乐.基于ARM11的移动图像检测与监控系统的研究[J].电视技术,2013,37(15):52-56.

[9] 陆永健,王萍.嵌入式Web服务器Boa的移植及其应用[J].河海大学常州分校学报,2005,19(4):44-47.

(责任编辑:孙 娟)

郭琪(1992-),男,湖北仙桃人,硕士,武汉轻工大学数学与计算机学院硕士研究生,研究方向为嵌入式技术;刘昌华(1963-),男,湖北武汉人,武汉轻工大学数学与计算机学院副教授、硕士生导师,研究方向为计算机网络及应用、嵌入式FPGA设计。

10.11907/rjdk.162644

TP319

A

1672-7800(2017)003-0094-03

猜你喜欢

卡曼开发板嵌入式
伊朗版“死神”首秀
搭建基于Qt的嵌入式开发平台
Microchip最新推出两款PIC32 Curiosity开发板
浅析单片机开发板的设计与制作
嵌入式软PLC在电镀生产流程控制系统中的应用
Mouser为您呈上开发关键之STMicroelectronics Nucleo开发板
Arduino和Atmel发布Arduino Zero开发板
Altera加入嵌入式视觉联盟
倍福 CX8091嵌入式控制器