APP下载

基于嵌入式系统的运动检测算法的设计及实现

2013-01-31范文兵常伯乐

电视技术 2013年9期
关键词:像素点队列像素

邓 博,范文兵,常伯乐

(郑州大学 信息工程学院,河南 郑州450001)

在生活中,大部分有意义的视觉信息是包含在运动物体中的,所以运动物体的检测在机器视觉应用领域是一个重要的课题。运动物体检测主要是对摄像头获取的动态序列图像进行运算分析的过程,要处理的数据量通常很庞大,现有的算法在一般处理器上实现起来处理速度较慢,实时性有所不足,而对于许多用户来说,需要的是一种体积小同时具备智能化,而且实时性很强的基于嵌入式的智能监控系统产品。因此,对基于嵌入式的运动检测算法的研究具有很强的实际意义。

现有的运动目标检测方法主要有三种:光流法、帧差法和背景差法。

光流法[1]利用图像序列中的像素强度数据的时域变化和相关性来确定各像素点位置的运动,缺点是计算方法复杂,处理速度慢,达不到实时处理的要求。

帧差法[2]是将相邻两帧图像相对应像素点的灰度值相减,然后将差值二值化,得到的图形区域就是有运动物体经过区域。缺点是该方法容易产生空洞,影响检测结果。

背景差法[3]是先计算出一幅背景的参考图像(或者模型),然后将其与新获取的帧做比较,得到一幅标记出运动目标区域的二值图像。常用的建立模型方法有均值法、中值法、W4法、高斯法、核密度估计法等。这几种建模法共同的缺点就是建模的过程需要几十帧进行学习,实时性不高。基于此,Olivier Barnich等人于2009年提出一种ViBe(Visual Background Extractor)[4-6]背景模型的运动检测算法,其算法实时性较高,适用于嵌入式系统。

本文介绍了新型背景建模算法ViBe的算法思想及其在嵌入式视频处理系统TMS320DM6437上实现的具体流程,并引入帧级更新策略,以弥补原算法对突变背景更新较慢的不足。随后对算法得出的前景目标进行二值化、中值滤波、连通域捕捉,最终实现对运动目标的捕捉。

1 ViBe运动检测算法

1.1 ViBe算法描述

ViBe算法用同一帧图像中像素点作为样本点来对像素建模,并使用随机的方法建立、更新背景模型。实验表明[5],该算法运算复杂度低,抗噪声性好,在灰度图像空间建模时不需要浮点运算[4],适合在嵌入式系统上实现。

1.2 ViBe算法背景建模及对像素点分类

首先将t时刻x点位置的像素值定义为pt(x),并在该像素点的某个邻域Nt(x)内有放回的随机取N次像素点,记为样本集合

再把颜色空间中与pt(x)欧几里德距离小于R的像素点集合定义为

然后取两个集合交集的势,公式为

如图1所示,坐标轴C1和C2表示某二维的颜色空间,SR(pt(x))范围内包含Bt(x)元素的个数即是count的取值。

图1 像素点背景分类

这样,对任意时刻t,任意像素点pt(x),可以取定一个阈值#min,使得pt(x)的概率足够大,公式为

集合Bt(x)即是t时刻x像素点的背景模型[4]。由此完成对像素点分类。

1.3 ViBe算法背景模型更新

如果x位置像素点被判定为背景,系统生成一个随机函数来判定这个像素是否被用来更新背景模型,如果判定为要更新,则系统用该点像素值pt(x)随机的去替换背景模型Bt(x)中的某一个元素[4],如图2所示。

图2 像素点背景模型更新

除此之外,还要考虑到该像素点的邻域Nt(x),由于图像中相临近位置的像素点在颜色空间的相关性很强,因此其邻域像素为背景像素的可能性就很大。使用该点像素值pt(x)来更新邻域Nt(x)内随机某位置xi像素点的背景模型Bt(xi),能够将背景中突然停靠并长时间逗留的前景目标去除,使其不被检测成为前景目标。具体算法过程,在后面详细介绍。

2 实验平台介绍及方案流程

2.1 TMS320DM6437系统平台介绍

TMS320DM6437(简称DM6437)是专为高性能、低成本视频应用开发的,主频600 MHz,32位定点,采用达芬奇(DaVinci)技术。该器件采用TI第3代超长指令集结构(VelociTI.3)的TMS320C64x+DSP内核,主频可达600 MHz。除此之外,DM6437内部集成一个视频处理子系统(VPSS),包括视频处理前端(VPFE)和视频处理后端(VPBE)两部分,从硬件上完成必要的视频预处理和后处理[6]。

DM6437的软件系统是基于DSP/BIOS实时操作系统构建的。在DM6437的软件结构中,系统通过调用相应的API接口,建立了6个通道句柄,包括3个视频采集通道和3个视频显示通道,并为各通道分配对应的缓存区。这样,系统建立了2个队列:一个是由CCD控制器维护的视频采集队列;另一个是由应用层维护的视频显示队列。2个队列各包含3个缓存区,对于队列的数据操作可以通过调用FVID_exchange函数来完成[7]。对视频采集队列的句柄执行FVID_exchange函数,CCD控制器把摄像头新采集到的一帧数据填充到队列顶部的缓存区,并把该缓存区排到视频显示队列的底部,以待显示(如图3所示);对视频显示队列执行FVID_exchange,应用层会把队列顶部的缓存区数据显示出来,并把该缓存区送还给视频采集队列的底部,等待重新填充数据(如图4所示)。第2次执行该函数,会完成一个数据“采集—显示”的过程,因此,对于视频图像的处理,就应该在第2次执行该函数之间完成。

2.2 程序流程

考虑到ViBe背景建模相对较低的运算量以及DM6437的运算能力,本文设计了一种基于DM6437平台的运动目标检测程序,以实现在嵌入式系统中完成对运动物体的侦测和捕捉。

在DM6437视频系统中,首先通过视频预处理,把图像的颜色空间设置为YUV格式,以便于和灰度空间的转换。这样,对图像灰度值得操作即为对图像Y分量的操作。下面论文中对图像的背景模型建立以及更新都是在灰度空间进行的。

基于系统软件的框架,设计的程序结构如图5所示。

图5 程序结构图

程序流程主要分下面几个步骤:

1)建立背景模型

取视频的第一帧数据,用ViBe算法对所有像素点建立背景模型,然后将原图像数据送交屏幕显示。

在第1.2节介绍过,对像素点建模先要选取该点某个的领域,在确定邻域覆盖的范围时,选择应该适中[5],实验结果表明,对于实验平台所用的分辨率为720×480的图像,选择八邻域能得出满意的结果。将像素点pt(x)的八邻域内所有点的像素值所组成的集合记为

这里用上标i表示元素序号。在Nt(x)中有放回的随机选取N次,所选到的像素值组成一个新的集合,计算像素点pt(x)的背景模型,记为

实验的结果显示,在灰度图像空间,取值R=20,N/#min=10效果较好,本文取N=20,#min=2。

2)对当前帧像素点分类

取视频的第n(n≥2)帧数据,与背景模型对比以确定各像素点是不是前景类型。由于在灰度空间,颜色的维度是1,因此式(2)等价于

所以,判断x位置像素pt(x)是否为前景目标的准则是对该点背景模型Bt(x)进行如下运算

对式(8)重复计算N=20次,如果背景候选点个数大于等于#min,则x位置像素pt(x)判定为背景点,否则为前景点。

3)随机的对各像素点背景模型更新,具体过程如图6所示。

图6 像素点背景模型更新流程图

其中,步骤②和步骤④判断结果要具有随机性,可以设定生成随机整数r∈[0,φ-1]作为判定依据,φ代表背景模型的更新和传播频率,当r=0时,判定为真,否则判定为假。步骤⑤是对八邻域像素点的背景模型进行随机更新,这样可以去除摄像头或者运动目标的微动所引起的误差以及重影,还可以逐步消除前一帧背景模型的伪前景目标[5]。

4)对ViBe模型更新算法进行改进,加入帧级更新。

由于ViBe算法对背景模型的更新策略是对像素点背景模型的更新,而且这种更新还具有随机性,那么如果因为光照变化或者其他特殊原因使得视频图像出现突变,就会导致很长一段时间内背景模型与当前实际视频图像相差较大,以致不能正确检测出前景目标。为此,在视频图像发生突变的情况下,引用帧级更新的策略,对当前帧图像重新建立背景模型。由于在视频图像没有突变的情况下,每帧图像的像素点背景模型更新的个数是相近的,对这一数据进行统计,记为NR,与前一帧更新的像素点数NR'做比较,公式为

如果式(9)成立,则判定图像发生突变,系统对当前帧重新建立背景模型,在其后的第二帧就可以提取前景了。由于ViBe算法建模简单快速,所以重新建立背景不会降低系统的实时性。

5)完成像素点背景分类后,按式(10)做二值化

这样按照步骤1)至步骤5),对整帧图像所有像素遍历一遍后得到前景二值化图像数据,如果把数据送屏幕显示,得到图像如图7a所示(图像中,手是运动物体)。

6)对前景二值图像进行中值滤波[8],用3×3的滑动窗口遍历整帧图像,消除孤立像素点,滤波后图像效果如图7b所示。

7)对前景二值图的连通区域标号,并用矩形框标注前景目标。本文使用扫描标记法[9],对一帧图像从上到下、从左到右逐点扫描遍历,对前景像素点进行连通域标号,扫描过后可能存在同一连通域内像素点标号不统一的情况,为此,进行第二轮扫描,查看并统一各相邻的前景点的连通域标号,使得同一连通域内所有像素点标号统一,同时得出连通域的范围坐标,画矩形框标注该连通域,效果如图7c所示。

8)将步骤7)画出的矩形框等坐标叠加到这一帧的原始图像上,标注出运动目标的区域,结果如图7d所示。至此,预期目标达成。

3 总结

本文针对ViBe背景建模的低运算量的特性,设计了一种实时性很强的基于ViBe背景建模算法的运动检测方案,并在DM6437嵌入式视频系统平台上实现该方案。在ViBe背景模型更新环节,本文在原算法的策略基础上引入了一种帧间更新的机制,使得系统能更快地适应背景的突变。然后通过与背景模型对比完成对图像前景的分类,最后对前景二值图像的连通域标号操作以完成对运动目标的捕捉。实验结果表明,本文提出的基于ViBe背景建模的运动检测方案在嵌入式实时系统中具有很强的实用性。

图7 实验平台上实现方案效果

[1]BARRON J L,FLEET D J,BEAUCHEMIN S S.Performance of optical flow techniques[J].International Journal of Computer Vision,1994,12(1):43-47.

[2]梁国山,朱秀昌.用于人体检测的改进的帧差法[J].电视技术,2009,33(S1):133-135.

[3]李泽峰,朱凌云.基于改进背景差法的运动目标检测[J].仪表技术,2012(1):34-36.

[4]BARNICH O,DROOGENBROECK M V.ViBe:a powerful random technique to estimate the background in video sequences[C]//Proc.IEEE Int.Conf.Acoustics Speech and Signal Processing(ICASSP).[S.l.]:IEEE Press,2009:945-948.

[5]BARNICH O,DROOGENBROECK M V.ViBe:a universal background subtraction algorithm for video sequences[J].IEEE Trans.Image Processing,2011,20(6):1709-1724.

[6]Texas Instrument.TMS320DM6437 digital media processor[EB/OL].[2012-08-20].http://www.ti.com/lit/ds/symlink/tms320dm 6437.pdf.

[7]Texas Instrument.DSP/BIOS VPFE device driver user’s manual[EB/OL].[2012-08-20].http://www.ti.com/lit/an/spraap3a/spraap3a.pdf.

[8]苏礼坤,陈怀新.中值滤波的视频背景更新[J].光电工程,2010,37(1):131-135.

[9]齐美彬,鲜柯,蒋建国.一种基于车辆遮挡模型的车流量统计算法[J].仪器仪表学报,2010,31(6):1335-1341.

猜你喜欢

像素点队列像素
像素前线之“幻影”2000
基于局部相似性的特征匹配筛选算法
队列里的小秘密
基于多队列切换的SDN拥塞控制*
“像素”仙人掌
在队列里
基于5×5邻域像素点相关性的划痕修复算法
基于canvas的前端数据加密
ÉVOLUTIONDIGAE Style de vie tactile
丰田加速驶入自动驾驶队列