陆愿基++张龙
DOI:10.16660/j.cnki.1674-098X.2017.14.209
摘 要:我国智能设备正处于发展的初级阶段,嵌入式平台在传统的硬件设施上的应用还有很大的发展空间。由于嵌入式系统拥有可靠、便携等特点,因此可以应用于家庭监控、智能交通等各个方面,而且近年随着ARM芯片性能的不断提高和计算机视觉算法的突破,使得图像分析技术应用到嵌入式平台。该次主要针对应用于传统视频的高速公路的车辆目标跟踪系统的研究与开发。主要研究内容及工作有:(1)高速公路的车辆目标检测跟踪系统的总体设计及软硬件平台的搭建。根据对嵌入式平台的性能和成本考虑,最后选择tiny210作为开发板,摄像头采用罗技C210,通过裁剪和移植Android系统使其适用于开发板。系统的软件框架主要分为驱动层、驱动服务层、图像分析层、应用层。利用NDK包结合C/C++和Java进行混合开发,以C/C++高性能贴近硬件的特点去写驱动层、驱动服务层、图像分析层。应用层主要使用Android的UI框架。(2)高速公路的车辆目标检测跟踪的理论基础与相关算法的实现。针对硬件平台的特性和应用在高速公路的情景下,我们采用存储空间小、计算量小、实时性好的vibe检测算法并详细介绍运动目标跟踪框架,在最后,对vibe检测算法实现并分析结果。
关键词:嵌入式 目标跟踪与检测 vibe算法 高速公路
中圖分类号:TP39 文献标识码:A 文章编号:1674-098X(2017)05(b)-0209-07
Based on Embedded in the Research and Implementation of Moving Object Detection and Tracking
Lu Yuanji Zhang Long
(The College of Computer and Information Engineering of Tianjin Agriculture University,Tianjin, 300384,China)
Abstract:Smart devices in our country is in the primary stage of development, the embedded platform application in the traditional hardware also has the very big development space.Due to the characteristics of embedded system with reliable, portable, so can be applied to many aspects, such as family monitoring, intelligent transportation, and in recent years, with the constant improvement of the performance of ARM chips and computer vision algorithm, makes the image analysis technology is applied to embedded platform.This mainly aimed at the application of traditional video of highway vehicle tracking systems research and development.The main research contents and work are: (1)Highway vehicle target detection tracking systems overall design and construction of the hardware and software platform. Based on embedded platform of performance and cost considerations, the final choice tiny210 as development board, the camera USES the logitech C210, by cutting and transplant the Android system is suitable for the development board. Software of the system framework consists of: driver layer, service layer, the image analysis layer, application layer. Using the NDK package of mixed with C/C + + and Java development, with high performance close to the hardware characteristics of C/C + + to write driver layer, service layer and image analysis. The application layer mainly using Android UI framework. (2) the highway vehicle target detection tracking theoretical basis and related implementation of the algorithm. According to the characteristics of hardware platform and application in highway scenario, we use storage space is small, small amount of calculation, good vibe real-time detection algorithm and detailed movement target tracking framework. (3) highway vehicle target detection analysis of the results of tracking system. After the results of vehicle target detection and tracking of the vehicle trajectory error analysis.
Key Words:The embedded; Target tracking and detection; Vibe algorithm; The highway
当今社会,随着车辆增多,交通安全已经成为了必不可少的需要关注的问题。虽然传统的视频监控通过摄像头采集视频信息,但需要大量人工检测和分析其中的内容。为此人们希望能有自动检测目标并跟踪目标、智能云存储视频信息、随时抓拍违规行为、并对异常情況能自动报警的智能监控系统的实现。嵌入式目标检测与跟踪系统需要完成对视频的实时采集、背景建模、前景检测与跟踪算法的实现。精确性高,实时性强的目标检测与跟踪系统可以应用于很多方面,例如智能交通系统需要对车辆进行检测与跟踪,识别车牌号码,判断有无超速、闯红灯等违法行为的发生,并根据前方道路拥堵情况给出正确的交通诱导信号。
该文采用嵌入式图像分析技术,将图像分析技术和嵌入式开发板相结合,提出了基于嵌入式的运动目标检测与跟踪的系统,原因是嵌入式开发版有实用性强、便携带、性能稳定等特点。由于图像分析技术计算量大,需要的存储空间大,所以如果是分析高清实时性差、运行摄像头移动的情况下,要做到背景建模迅速,分析实时性好。为完成以上功能,要求嵌入式设备需要有支持摄像头读取、显示视频信息、图像处理等功能。Cortex A8嵌入式处理器满足上述要求,故该文选择Cortex A8嵌入式作为系统的载体。
1 系统的总体设计
1.1 系统总体框架
基于嵌入式的目标跟踪系统总体框架如图1所示,系统包括由视频采集、目标跟踪与检测算法,应用程序与android操作系统构成的软件层和基于Cortex A8架构的友善之臂公司tiny210开发板与罗技c210USB摄像头构成的硬件层两部分组成,Cortex A8嵌入式处理器具有多个 USB接口、一个显示模块、并且支持多个操作系统、处理运算速度较快的特点。
1.2 硬件层构成
硬件层由罗技c210USB摄像头与Tiny210开发板两部分构成。USB摄像头获取实时的视频信息,并将视频传输给处理器处理。由友善之臂开发的Tiny210采用三星S5PV210作为处理器,运行主频可达1GHz,S5PV210内部集成PowerVR SGX540高性能图形引擎,并且可以流畅运行Android,Linux和WINCE6等高级操作系统,非常适合开发高端物联网终端,智能家居,智能监控等。可以完成对视频的采集以及目标跟踪结果的显示。
1.3 软件层构成
软件层的操作系统需要支持多用户、多任务、多线程编程以及具有可裁剪、可定制、可移植的操作系统,所以采用基于Linux内核的android系统,一方面能完美使用android开发包的UI库并且能够完成对系统资源的统一管理,为用户编程提供统一的API接口等功能。软件层的应用程序为完成视频图像采集与目标跟踪的功能,引入基于OpenCv视觉库的图像编程方法,其中OpenCv视觉库具有跨平台与可移植性的优点,为视频图像编程提供了统一API编程接口,方便用户直接调用。通过对系统的主要功能分析以及软硬件层构成介绍,可知系统的工作流程为:罗技c210摄像头采集视频图像,tiny210开发板中的处理器实时读取USB接口中的视频信息,并由软件层中ViBe算法进行前景检测并使用团块跟踪算法完成对目标的跟踪处理,然后生成轨迹,将处理后的结果显示到LCD显示屏中。
2 目标检测与跟踪系统的平台搭建及算法的实现
2.1 软硬件平台的搭建
该文打算将嵌入式技术与图像分析技术相结合,提出了基于嵌入式的目标检测跟踪系统研究,为了能使计算机视觉技术这种计算量大的算法在嵌入式开发板上进行运算。为此该结合了系统的功能需求,先详细地叙述设计出系统的总体框架,在后面分别叙述能够实现的系统框架软硬件平台,并且详细介绍系统软硬件平台的搭建与把OPEN CV库移植到tiny210上。
2.2 系统硬件平台
2.2.1 处理器选择
虽然嵌入式处理器种类很多,但各自有特点与适用场合。Cortex-8处理器具有体积小、成本低等特点。该文的研究对智能交通系统中部分功能能够实现。对开发板的定位为:安装方便、功耗小、运行速度快、支持图像处理操作、实时性与稳定性较好、并且价格便宜。
该文选择基于Cortex-A8架构的Tiny210开发板作为系统的硬件平台,开发板上已经集成了除微处理器之外的存储系统、总线接口以及常用的外围设备。Tiny210由Samsung S3C2440微处理器、LCD显示屏、以及多种外围设备构成。同时它具有支持万能USB摄像头、支持USB烧写更新Linux系统的优点,这将大大地缩短开发人员的学习与开发周期。开发板硬件配置与接口外观如图2所示。
2.2.2 存储系统
Tiny210开发板的存储系统分为两部分:一部分由两块大小为32M bytes的芯片组成SDRAM存储系统(内存);另一部分为FLASH存储系统,分为NOR FLASH与NANDFLASH,Tiny210支持这两种Flash启动系统,通过拨动开关S2,可以选择从NOR还是从NAND启动系统。NAND Flash型号为K9F1G08,大小为128M。
2.2.3 USB 摄像头
该系统的车辆追踪功能需求中要求对图像进行采集,将采集后的图像传处理器处理,从而完成对目标的跟踪与显示。Tiny210开发板支持万能USB摄像头,相比于其他支持拍摄效果极差的中星微摄像头的开发板,性价比要高很多。该文的图像采集单元,选择具备自带完整驱动程序的ZC0301PL摄像头作为解决方案。摄像头内部芯片集图像采集压缩、传输、JPEG译码等功能于一体,为用户提供流畅、清晰的视频图像信息;同时支持15帧/sVGA和30帧/sCIF/SIF视频显示。
2.3 系统软件平台
2.3.1 操作系统选择
在确定采用基于Cortex-8架构的tiny210开发板作为硬件平台的载体后,需要在开发板上移植一个能对硬件资源进行管理、具备提供给开发人员操作底层驱动的API接口以及可以通过加载或者卸载模块的操作方式实现系统的扩展功能的嵌入式操作系统。
嵌入式操作系统可分为实时与非实时操作系统,在操作系统的选择过程中,我们应综合考虑操作系统的兼容性与稳定性,版权费用与软件开发难易程度等几个问题。因此需选择实时性操作系统,下面对几种常见的实时操作系统进行介绍。
(1)Windows CE操作系统:主要应用于智能手机、PAD 等电子设备中。但该操作系统具有版权许可,其源码并未公开,不方便对其进行二次开发。
(2)linux操作系统:由一批操作系统编程爱好者自由编写而成的。具有源码公开性、免费使用、对硬件平台依赖较小、内核可裁剪定制等优点。具有支持多用户、多任务、多线程和多CPU的功能。广泛应用于嵌入式领域,在开发成功的嵌入式系统中,其市场占有率约达50%,这使其成为主流的嵌入式操作系统。
(3)Android操作系統是基于linux内核,等于uboot+ linux kernel+android(包含文件系统,虚拟机,UI),所以使用android系统就站在了linux这个巨人的肩膀上,通过使用HAL,JNI实现底层的开发,使用android的SDK做程序的应用。
2.3.2 Opencv的使用
该文中的目标跟踪算法等应用程序都从头开始编写代码,则无法满足软件开发敏捷思维与快速迭代思想的要求。所以该文决定采用OpenCv图像处理开源库,里面封装了很多常用的处理图像的函数和数据结构,包括图像变换,轮廓的匹配,图像矩阵数据类型等,极大地提高了开发人员的效率,使得开发人员按照理论依据使用库函数即可实现图像处理算法。但为了适应选择的硬件平台和操作系统,需要将库移植到平台上,使用交叉编译可将库在平台上进行编译。
2.4 相关理论
嵌入式目标检测与跟踪的核心基础在于如何定义运动对象,然后记录对象的轨迹。只有完整、精确地提取了运动物体的前景图像并对行为与轨迹进行记录,才能进行更高级的语义分析及行为判断,应用于更多场景。所以,叙述系统采用运动检测跟踪框架的各个部分组成,然后对核心的前景提取算法进行研究和分析。
2.4.1 运动目标检测与跟踪框架
完整的运动检测与跟踪系统大致流程可以分为:前景提取、团块检测、团块跟踪、轨迹生成。流程图如图3所示。
2.4.2 前景检测模块
前景检测模块输入的数据为当前帧,输出的数据为与视频帧具有相同大小的二值图,将当前帧与已经建立好的背景进行比较,得出的运动前景将置像素点为1,其余为0。
前景检测算法主要分为帧差法,平均背景法,光流法,前景建模法,背景非参数估计,背景建模法等,运动目标检测的算法依照目标与摄像机之间的关系可以分为静态背景下运动检测和动态背景下运动检测。先简单从视频中的背景类型来讨论。
静态背景下的目标检测,就是从序列图像中将实际的变化区域和背景区分开了。在背景静止的大前提下进行运动目标检测的方法有很多,这些方法比较侧重于背景扰动小噪声的消除,如:
(1)背景差分法。
(2)帧间差分法。
(3)光流法。
(4)混合高斯模型(GMM)。
(5)码本(codebook)。
运动背景下的目标检测,相对于静态背景而言,算法的思路就有所区别了,一般会更加侧重于匹配,需要进行图像的全局运动估计与补偿。因为在目标和背景同时运动的情况下,是无法简单根据运动来判断的。运动背景下的运动目标检测算法也有很多,如:
(1)块匹配。
(2)光流估计。
但该文希望结合嵌入式开发板,决定采用使用存储空间少,计算量少的ViBe算法。
ViBe是一种像素级视频背景建模或前景检测的算法,效果优于所熟知的几种算法,对硬件内存占用也少,很简单。该算法将在下一小节进行讨论。
2.4.3 团块检测模块
团块检测模块的作用是检测前景提取出来的团块,监控它们的位置和大小,并且处理噪点和筛选不符合规定的团块。模块的输入是当前帧的前景图像,输出的结果是检测到的团块列表,简要的处理流程为:首先从前景帧进行扫描,记录像素点为1的点,最后把有连续像素点为1的团块保存下来,然后再将较小的模块和已经被跟踪记录有重叠的团块丢弃,并对剩下的团块进行排序,最后利用特定规则筛选掉不符合的团块,将真正的团块保存到列表里。
2.4.4 团块跟踪模块
该模块的作用就是对检测出来的团块进行跟踪,此模块的输入为当前帧的前景图像和团块列表。首先提取出所有的团块,计算团块的质心,高度和宽度。然后对每一个已被跟踪的轨迹,利用kalman算法预测该轨迹在当前帧的团块位置和大小,最后对每个跟踪的轨迹进行处理,寻找离上一帧里团块最近的当前帧模块,将次团块加入到跟踪轨迹。
为了讲述如何预测轨迹,下面是对卡尔曼滤波的理论进行探讨:
对于一个动态系统,我们首先定义一组状态空间方程
状态方程:
测量方程:
xk是状态向量,zk是测量向量,Ak是状态转移矩阵,uk是控制向量,Bk是控制矩阵,wk是系统误差(噪声),Hk是测量矩阵,vk是测量误差(噪声)。wk和vk都是高斯噪声,即:
整个卡尔曼滤波的过程就是个递推计算的过程,不断地“预测——更新——预测——更新……”
预测:
预测状态值:
预测最小均方误差:
更新:
测量误差:
测量协方差:
最优卡尔曼增益:
修正状态值:
修正最小均方误差:
2.4.5 轨迹生成模块
该模块的作用是将团块的轨迹数据本地化,以特定的形式保存下来。该模块的输入为当前帧各个运动目标的团块,输出结果是存储特定位置下的轨迹文件。它主要负责收集所有团块的轨迹和特征,在每个团块结束运行轨迹时保存。
2.5 ViBe前景检测算法
ViBe是一种基于随机像素级视频背景建模的算法,效果不弱于基于概率密度的背景建模算法,具体的思想就是采用邻域像素来创建背景模型,通过比对背景模型和当前输入像素值来检测前景,然后将每一个新的像素值和样本集进行比较来判断是否属于背景点。这样对硬件内存占用也少,非常适用与嵌入式开发。
2.5.1 背景模型的初始化
初始化就是建立背景模型的过程。常见的检测算法的初始化需要一定长度的视频序列来完成,这样就造成了一定程序的延遲性,而ViBe的初始化只通过一帧图像。ViBe初始化就是填充像素的样本集的过程但是由于在一帧图像中不可能包含像素点的时空分布信息,我们利用了相近像素点拥有相近的时空分布特性,具体来讲就是:对于一个像素点,随机选择它的邻居点的像素值作为它的模型样本值。M0(x)={v0(y|y∈NG(x))},t=0初始时刻,NG(x)即为邻居点。每一个像素模型都可以用其邻域中的像素来表示。为了保证背景模型符合统计学规律,邻域的范围要足够大。当输入第一帧图像时,即t=0时,像素的背景模型为:其中,表示空域上相邻的像素值,表示当前点的像素值。在N次的初始化的过程中,中的像素点被选中的可能次数为L=1,2,3,…,N。
2.5.2 背景模型的更新策略
背景模型的更新就是使得背景模型能够适应背景的不断变化,比如光照的变化,背景物体的变更等等。Vibe采用的是随机的子采样,在更新在时间和空间上都具有随机性。具体的更新方法。
(1)时间上的随机性:在多个背景模型中随机抽取一副图像N,图4表示了图像N的x位置及其八邻域内的像素。当我们得到新的一帧图像T时,如果图像T中的x位置对应的像素被判断为背景,则需要被更新。这个抽取的过程体现了时间上的随机性。
(2)空间上的随机性:在Nx的八邻域中随机抽取一个像素NR,用的来替换掉Tx。随机选取一个样本值进行更新,这样可以保证样本值的平滑的生命周期由于是随机的更新。
ViBe实验效果如图5所示。
3 应用
该文将嵌入式目标检测与跟踪系统应用于高速公路上目标车辆的路径跟踪和大小检测以及车速跟道路路况相关数据的准确记录,如图6所示。
在输入车辆视频的位置输入3个视频检测,点击开始检测即可实现对视频中单个视频摄像头视野下断面实时车速、每两个视频摄像头为“路段”的最小单元,分别计算每个路段的平均车速、以及正确识别大车和小车(小于6 m为小车,大于等于6 m为大车),并按上下行车道分别对大小车进行计数等功能,准确数据,如图6所示。
4 结语
该平台在整个运动目标检测与跟踪的核心在于检测前景团块,只要实时性好,检测精确度高,并且计算量少,那么后续进行团块跟踪的差错率就会降低。传统的基于概率密度的背景建模算法计算量太多,实时性差,并不适用于嵌入式目标跟踪。所以该文采用了背静差算法—ViBe。首先,它只需要一帧图像即可完成初始化,而其他的算法通常需要等待数秒去完成初始化,而且它的更新策略是随机采样点建模,将ViBe算法使用在嵌入式目标检测与跟踪系统中具有计算量小、内存占用少、处理速度快、检测效果好等特点。很好解决了嵌入式开发板性能不足的问题,又能实时地进行区域的监控,并且适应环境的变化,可以运用在不同的场合,比如具有相同原理的图像分析体系里,可以运用到更好的系统检测中,不仅是轨迹分析中,动态分析亦是如此,此处为该平台最大优势。该文仅运用在高速公路的场景举例,为新一代智能交通提供有力充分支持,现实中的图像识别更多是动态的,只有把运动目标更准确地检测出来并且进行跟踪和提取特征,那么才能为动态的图像分析提供有力的支撑,下一步将不断尝试不同领域的开发和测试。
参考文献
[1] GARY BRADSKI.学习opencv[M].北京:清华大学出版社,2009.
[2] TCP/IP网络编程[M].北京:人民邮电出版社,2014.
[3] C++Primer中文版[M].北京:人民邮电出版社,2006.
[4] VisualC++数字图像处理技术详解[Z].2013.
[5] 倪旭翔,计春雷.ARM嵌入式开发与实践[M].北京:中国水利水电出版社,2011.
[6] Background Subtraction:Experiments and Improvements for ViBe, M.Van Droogenbroeck and O. Paquot. In Change Detection Workshop (CDW), Providence, Rhode Island[Z].2012.
[7] Background Subtraction: Experiments and Improvements for ViBe. In Change Detection Workshop (CDW), Providence, Rhode Island[Z].2012.