基于OpenCV的交通视频运动目标检测与跟踪

2012-07-12 12:29张建飞
电子测试 2012年1期
关键词:灰度滤波像素

张建飞

(中北大学 信息与通信工程学院, 山西太原 030051)

0 引言

智能交通系统是目前世界各国交通领域竞相研究和开发的前沿研究课题和热点。它是将先进的信息技术、数据通讯传输技术、电子控制技术、传感器技术以及计算机处理技术等有效地综合运用于整个交通体系,从而建立起的一种在大范围内、全方位发挥作用的实时、准确、高效的交通综合管理系统。运动目标检测与跟踪是智能交通系统的一个重要组成部分,因此该课题的研究就显得尤为重要[1]。

1 视频图像预处理

1.1 图像灰度化

图像灰度化就是将彩色图像中的彩色信息剔除,只包含亮度信息。计算机中表示灰度图是把亮度值进行量化等分成0~255共256个级别,0最暗(全黑),255最亮(全白),而在RGB模型中,如果R=G=B,则颜色(R,G,B)就表示灰度色。考虑到图像的合理性,本文选用下面的公式进行灰度转换:

其中Gray表示图像中像素的灰度值,R表示该像素的红色分量,G表示绿色分量,B表示蓝色分量。在opencv函数库中,图像的灰度化可以通过cvCvtColor(const CvArr*src, CvArr* dst, int code)函数实现的。

1.2 中值滤波

中值滤波是由Tukey首先提出的一种基于排序统计理论,能有效抑制噪声的非线性信号处理技术。它也是一种邻域运算,类似于卷积,但是计算的不是加权求和,而是把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替,让周围像素灰度值的差比较大的像素改取与周围的像素值接近的值,从而可以消除孤立的噪声点。它能减弱或消除傅立叶空间的高频分量,但影响低频分量。因为高频分量对应图像中的区域边缘的灰度值具有较大较快变化的部分,该滤波可将这些分量滤除,使图像平滑。标准一维中值滤波器的定义为:

式中med 表示取中值操作,中值滤波的滤波方法是对滑动窗口2N+1内的像素做大小排序,滤波结果的输出像素值规定为该序列的中值。

1.3 图像二值化

图像分割是图像处理和计算机视觉中基本而关键的技术之一,它是将目标与背景分离,为后续的分类、识别和检索提供依据。图像分割方法通常包括阈值法、边缘检测法、区域跟踪法等。在图像分割的诸多方法中,二值化技术是一种简单有效的方法。图像的二值化按下述公式进行:

式中,G(x,y)是原图像中位于(i,j)处像素的灰度;Gb(i,j)是二值化后该处的像素值,它只能取O或l,将上式所得二值图像中数值为0的部分表示背景,数值为1的部分表示对象图形。T为用于二值化处理的闭值。二值化的过程本身比较简单,关键问题就是闽值的选取。本文采用了大津法(OTSU)进行了阈值的选取。

在OpenCV中,图像的二值化是由函数void cvTheshold(const CvArr* src,CvArr*dst, double threshold,double max_value, int threshold_type )

1.4 数学形态学处理

在数学形态学处理中采用了闭运算、开运算和孔洞填充等操作[3],定义形式如下。

(a) A被B的形态学闭运算记做A·B,是先膨胀再腐蚀的结果,用数学公式表示为:

(b) A被B的形态学开运算记做A◦B,是先腐蚀再膨胀的结果,用数学公式表示为:

(c)假设一幅标记图像fm,该图像的边缘部分的值为1-f,其余部分的值为0。

则填充图像f中的孔洞的公式为:

2 运动目标的检测与跟踪

2.1 运动目标检测

视频图像中运动目标的检测主要有帧间差分、光流法和背景差分等3种方法[5]。由于前两种方法存在提取的目标不精确、实时性差和抗噪性弱等缺点,对后期的分类识别不利,因此本文采用surendra背景更新算法实现对运动目标的检测。具体的过程如下:

(a) 将第一帧图像I0作为背景B0

(b) 选取阈值T,该阈值根据背景变化情况进行噪声选择。

(c) 求当前帧的帧间差分图像Ri(x,y),span为帧抽取间隔:

(d)用二值图像Ri(x,y)控制更新背景图像Bi(x,y):

式中:Bi(x,y),Ri(x,y)为背景图像和差分二值图像在(x,y)的灰度值,Ii为输入的第i帧图像,为迭代速度系数。

(e)迭代次数m=m+1,当迭代次数m=MAX_STEPS时结束迭代,此时Bi(x,y)在一定程度上可以视为背景图像。

(f)当前帧与背景进行差分得到运动目标的前景F(x,y):

Surendra 背景更新算法有效降低运动目标对背景的干扰,能够提供更好的运动目标检测结果[6]。

2.2 运动目标跟踪

运动目标的跟踪是把运动的物体检测出来后,对目标编号并获取其运动轨迹。为了实现该功能,本文基于Kalamn滤波[7]的MeanShift[8]目标跟踪算法将整个过程分成如下几个模块实现:前景检测模块、新团块检测模块、团块跟踪模块、轨迹生成模块和轨迹后处理模块,最后由跟踪流程模块CvBlobTrackAuto将这5个模块连接起来,构成一个完整的跟踪流程。下面对各模块简单介绍一下:

(a)前景检测模块:对每一个像素判断其是前景还是背景。

(b)新团块检测模块:使用前景检测的结果检测新进入场景的团体。

(c)团块跟踪模块:使用新团块检测模块的结果初始化该模块,并跟踪新进入的团体。

(d)轨迹生成模块:主要是保存操作。收集所有团块的位置,并在每条轨迹结束时将其保存到硬盘上。

(e)轨迹后处理模块:进行轨迹的平滑操作。

(f)跟踪流程模块:将前面提到的5个模块连接起来,形成一个处理流程。

3 实验结果和分析

根据本文的算法用VC++6.0软件编写实现,采用OpenCV对视频进行读取和显示。其程序是一个基于对话框的MFC应用程序,对话框上3个按钮分别实现打开视频、目标检测和目标跟踪的功能。如图1所示。

图1 程序界面

点击对话框上的‘打开视频’按钮,选择‘yas12.avi’,点击打开。如图2所示。

图2 程序读取视频

打开视频后,点击对话框上的‘检测处理’按钮,可实现对运动目标的检测。如图3~5所示。

图3 视频播放

图4 提取背景

图5 检测出运动目标

点击对话框上的‘跟踪处理’按钮,可实现对运动目标的跟踪。运动车辆都被跟踪上,并分配好了ID号码实现了计数,该程序还能标记跟踪状态的好坏,红色环圈住的区域中显示了一个abnormal,表示该目标跟踪异常,绿色则表示稳定跟踪,如图6所示。

图6 跟踪运动目标

4 结论

本文结合了Surendra背景更新算法和动态阈值自动提取的OTSU算法,稳定地提取了背景图像,实现了运动目标的检测。采用了基于Kalamn滤波的MeanShift目标跟踪算法进行了运动目标的跟踪。最后在OpenCV开发平台下验证了算法的可行性,实验取得了较好的效果。

[1]STEFANO MESSLODI,CARLA MARIA MODEN.Vision-based bicycle and motorcycle classification[J].Pattern Recognition Letters,.2007(28): 1719-1726.

[2]马桂珍,朱玲赞,段丽.基于OpenCV 的视频应用程序的开发方法[J].现代电子技术,2007(4):78-79.

[3]Serra J.Introduction to Mathematical Morphology[J].Computer Vision, Graphics and Image processing,1998,35(1):283-305.

[4]Jen-Chao Taj,Shung-Tseng.Real time Image Tracking for Automatic Traffic Monitoring and Enforcement Applications Visual track in[J].Image and Vision Computing ,2004,22(6):640-649.

[5]杨学超,刘文萍.视频图像序列中的运动目标检测技术[J].计算机应用与软件,2008(1):215-217.

[6]张伟,鲍旭东.基于自适应卡尔曼滤波的运动车辆检测[J].电脑知识与技术,2008(9).

[7]王建文,税海涛,马宏绪.卡尔曼体系下的滤波算法计算框架[J].数据采集与处理,2009(1).

[8]尹彦,耿兆丰.基于背景模型的运动目标检测与跟踪[J].微计算机信息,2008(1):298-300.

猜你喜欢
灰度滤波像素
采用改进导重法的拓扑结构灰度单元过滤技术
像素前线之“幻影”2000
Bp-MRI灰度直方图在鉴别移行带前列腺癌与良性前列腺增生中的应用价值
“像素”仙人掌
ÉVOLUTIONDIGAE Style de vie tactile
基于最大加权投影求解的彩色图像灰度化对比度保留算法
基于灰度线性建模的亚像素图像抖动量计算
高像素不是全部
基于自适应Kalman滤波的改进PSO算法
RTS平滑滤波在事后姿态确定中的应用