基于三帧间的移动障碍物背景目标提取算法

2016-04-08 02:22郭文俊常桂然
软件 2016年2期
关键词:计算机视觉

郭文俊++常桂然

摘要:为了减少交通事故的发生及降低因其而带来的危害,针对障碍物检测过程中出现的各种问题。受原有的两帧间差分法的启发,提出了一种基于三帧间快速匹配检测障碍物的方法,该算法利用移动障碍物这一特性进行障碍物的检测。其基本思想是利用相邻三帧图像两两差分,再将两个差分结果再次进行差分操作从而最终确定运动目标在图像中的位置,实现了对移动障碍物轮廓的检测。

关键词:移动障碍物检测;计算机视觉;帧间差分;道路识别

中图分类号:TP391

文献标识码:A

DOI:10.3969/j.issn.1003-6970.2016.02.015

引言

汽车产业的不断发展以及机动车价格的大幅度下跌导致了我国最近几年机动车的私人拥有量在不断的上升。这虽然给人们的生活和出行带来了很大的便利,但是交通事故的增加却也时刻威胁着人们的生命财产安全,表1是我国近几年交通事故的统计数据。

由此可见,道路交通事故已经严重危害人们的生命财产安全,故此,怎样最大程度的减少交通事故、降低交通事故所造成的损失成了我们关注的焦点。目前,在这方面所做的研究大都集中在机动车辆前后方运动目标的检测,而且在运动目标的检测与跟踪上已经取得了很多的成果,随着研究的不断深入,也伴随着一些新技术、新算法的产生。但是由于实际环境的影响如光照、气候的变化,往往会使得检测的目标物不太准确跟踪的效率也不是很高。因此,研究改进运动目标的检测与跟踪算法有很现实的意义和应用价值。

本文以基于机器视觉的道路识别技术与障碍物检测技术为研究对象,综合分析并采用了各种图像预处理技术有效的为行驶中的机动车提供各种环境下的状态信息。在两帧间差的基础上提出了三帧间的差分方法,该方法利用从视频序列中获取的相邻图像帧两两做差分,然后将得到的两个差分结果再次做差分并进行二值化处理,最终确定运动目标在图像中的位置。最后选用Intel公司开发的开源项目OpenCV,同时使用该库中的CvCapture()结构以及调用函数cvQueryFrame()来捕获视频中的每一帧用于后续的处理,并在在Microsoft Visual C++集成开发环境下进行了实验并得到比较理想的实验结果。

1 三帧间差分法

运动目标的检测即从视频图像中将变化的区域从背景中提取出来,根据目标与摄像机的关系分为静态背景目标物提取和动态背景目标物提取。其中,静态背景目标物提取中只有目标物在动摄像机则保持不动;而动态背景目标物中摄像机也发生了移动,该情况下产生了目标物与摄像机之间的相对运动,从而增加了目标物检测与跟踪的难度。

本文通过车载单目摄像机采集机动车辆周围的环境信息,对获得的图像信息进行相应的预处理,最后在预处理后的图像中进行运动障碍物目标的检测。该算法易于理解,程序设计复杂度也比较低,而且对光线等场景变化也不太敏感,能够适应各种动态环境。

1.1 算法介绍

三帧间差分算法是在两帧间差分的基础上的一种改进算法,该算法利用从摄像头中捕获的视频序列里提取出的具有一定时间间隔的三帧图像序列两两差分,然后再将得到的差分结果再次做差分,从而得到的目标物的轮廓如图11所示。由图可知利用三帧间差分检测障碍物避免了检测出的目标物出现重叠的现象,而且得到的目标物的轮廓也比较清晰,故三帧间差分对于慢速运动的目标物的检测有着很强的鲁棒性。

三帧间差分法的基本原理见图1.2所示。

设Pk-1,Pk,pk+l分别是从摄像机中捕获的视频序列里提取出的具有一定时间间隔的三帧图像,经函数cvCvtColor()处理后得到相应的单通道图像模型及灰度图像,利用cvAbsDiff()函数对灰度图做相应处理得到差分图像Dk与Dk+l。然后对差分图像Dk与Dk+l再一次进行差分,最终得到含有目标物的差分图,然后在对含有目标物的差分图做二值化处理最终分割出清晰的目标物。

1.2 图像分割

图像分割是图像处理与分析中的一个经典问题,研究者针对各种问题提出了许多方法。文献对图像分割进行了比较全面的概述,图像分割的目地是把图像空间分割成有意义的区域,常用的图像分割方法是阈值处理即阈值分割,其进行分割的基本理念是假设处在一定灰度值范围内的邻域像素可近似认为是属于同一类的像数。阈值分割分为全局分割和局部分割,全局分割在障碍物检测中的应用比较多,它是在整幅图像内采用固定的阈值来进行图像的分割;而局部分割是将原始图像划分为不同的块,并对每一个图像块选取相应的阈值。经过阈值化处理后的图像变成了黑白二值图,阈值化是灰度图转化为二值图的一种常用方法,进行阈值化只需给出阈值点即可。其常用的方法是把图像变成二值图像,设图像f(x,y)的灰度级范围是(R1,Rk),设T是(R1,Rk)之间的一个数,那么f'(x,y)可由下式表示:

其中f(x,y),f(x,y)分别为处理前后的图像在处像素的灰度值,T为阈值。文中用C++调用函数cvThreshold()对含有目标区域的灰度图像进行二值化,当差分图像中某一像素的值大于设定的阈值(本文中选用的阈值为T=35)时,则认为该像素是前景像素,反之认为是背景像素。

1.3 算法流程图

三帧间差分算法操作起来要比两帧间差分法复杂,但是其检测效果却要明显高于两帧间差分算法,有效避免了利用两帧间差分法检测的目标物会出现重叠的现象,而且其用范围也比两帧间差分法更广,对各种慢速运动的目标物的检测有着很强的鲁棒性。三帧间差分法的流程图如图1.3所示。

2 算法运行平台

文章提出的算法是在Windows XP操作系统的平台上,选用Intel公司开发的开源项目OpenCV库,在Microsoft Visual C++集成开发环境下完成的。实现该算法的整个系统需要的硬件包括:实验车辆、车载摄像机和计算机。

车载相机的属性:有效像素PAL: 752(H)x582(W)、NTSC: 768(H) x494(W),频率为:30f/s,可视角度为:57.8°(wide)t0 1.7°(tele),焦距35mm-115mm,水平范围:360℃连续旋转,垂直范围:-15℃-90℃自动翻转,距地面高度1.23m。

计算机的属性:系统型号:HP dx2708 MT(RC740AV).BIOS:Phoenix-Award BIOS v6.00 PG.处理器:Intel(R)Core(TM)Duo CPU T2300 1.86GHz,内存:2048MB RAM。

3 实验结果

在该算法中帧间间隔的选取对障碍物的检测有很大的影响,故此本次测试结果以两组图片作参考,第一组测试图片见图3.1a),选取的帧间差数为3帧;第二组测试图片见图3.2a),选取的帧间差数为7帧,其中第一组测试图片的检测效果见图3.1d)所示,经过二值化处理后的最终效果图见图3.1e)所示;第二组测试图片的检测效果见图3.2d)所示,经过二值化处理后的最终效果图见图3.2e)所示。

观察Fig.3.1.e)和Fig.3.2.e)不难发现选取适合的帧差数会得到较为理想得目标区域。

4 复杂度分析

文章主要针对机动车前后方Sx6㎡范围内,车速较低,视频序列中相邻三帧图像(实验中图像的大小为640x393),光照变化以及旋转变化小到可以忽略不计的情况下进行的研究。通过编程的比较,对图像处理中的一些基本运算的耗时有了一定的了解,其中与障碍物检测有关的主要有:图像获取、帧序列选取、灰度均匀化处理和二值化处理。由于实验条件和设备的缘故,其将最终信息反馈给驾驶员需要较长的时间,故此在这种情况下算法的实用性不是很高,算法各步骤的耗时如表2所示。

5 结束语

本文的检测算法主要是基于图像的检测,尽管也能应用于视频之中,但是图片检测的时间很难达到实时的目标,在今后的研究中可以考虑利用视频之间的运动关系来提高实时性能。由于时间和条件的限制,本文并没有提到基于视觉的车辆测距技术,在今后的研究中将会考虑到车辆测距技术的工作。

猜你喜欢
计算机视觉
基于深度卷积神经网络的物体识别算法
双目摄像头在识别物体大小方面的应用
危险气体罐车液位计算机视觉监控识别报警系统设计