秦彬鑫,路 红,盛柳森,邱 春,万文明
(1. 南京工程学院机械工程学院, 江苏 南京 211167;2. 南京工程学院电气工程学院, 江苏 南京 211167)
随着社会发展水平的不断提升,汽车拥有量日益增多,道路拥堵、交通事故、能源大量消耗等情况频频出现[1].由于人口不断增加,仅仅增加基础交通设施投入的方法(如直接进行道路拓宽)无法从根本上解决问题[1-3].在这种背景下,建立智能交通管理体系是最好的措施之一[4].实时获取准确的交通信息是智能交通领域的研究重点,车辆实时计数也成为监测环境状态的一个重要部分[5].
经典的检测车辆方法有背景差分法、帧差法和光流法等.背景差分法[6]虽然能够提取较为完整的前景目标,但对背景模型的要求很高,当遇到特征相似的背景和目标时容易产生误检漏检;帧差法[7-8]原理简单且运算速度快,当连续两帧灰度信息相差不大时容易产生拖影,且易受车速影响;光流法[9]运算量大,不适用于实时的车辆检测和计数.文献[10]利用混合高斯法将背景形成分成不同的阶段,采用不同的学习率,但划分背景形成阶段较为困难,且计算复杂.总体来说,交通场景中的车辆检测大致可以分为基于目标跟踪和虚拟检测两大类[11].文献[12-13]对采集的视频图像序列一帧一帧进行检测,提取并匹配车辆的运动轨迹或状态,从而根据轨迹之间的差异性进行车辆计数;文献[14]根据匹配运动目标的边缘和轮廓信息进行跟踪,但在有阴影和多目标的场景中使用效果较差;文献[15]通过建立目标模型,进行模型匹配实现跟踪,该方法计算复杂、实时性差;文献[16] 基于特征匹配的跟踪方法提取目标几何等特征进行匹配,实现跟踪,但在遇到大特征集时跟踪效率会下降;文献[17-18]根据检测区域内运动目标灰度值的变化、采样点的亮度值和检测圈判断是否有车辆通过,该方法计算速度快,但受光照影响较大,且易产生噪声点.
针对实际视频监控场景下车辆检测和计数实时性等要求,本文设计一种基于团块分析法的车辆检测与计数方法.该方法不仅能够准确检测车辆并实现实时计数,而且能够通过人机交互界面(graphical user interface,GUI)显示出检测与计数的过程和结果,提高信息传递效率.
首先利用自动灰度世界算法进行图像预处理,去除灰度突变,接着通过改进的混合高斯法建立稳定的背景模型,利用选取视频帧的像素信息进行背景自适应更新,获取稳定的背景图像,利用五帧法将视频帧和建立的背景图像进行差分运算,提取准确的前景目标,解决了混合高斯法计算量大的问题,提高了检测的准确性、实时性和环境适应性,然后定义感兴趣区域(region of interest, ROI)并设置虚拟绊线检测,再用团块分析法对检测到变化的区域连通图像块进行跟踪分析,并用最小外接矩形标识运动目标,当目标车辆的团块面积符合设置的条件时进行计数,最后将试验过程及结果展示在GUI界面,能够更加直观地观察试验过程和结果.算法的具体流程如图1所示.
图1 本文算法流程图
混合高斯模型计算量大且对长时间不发生变化的场景敏感,但该方法建立的背景图像能较好表现实际场景;帧差法计算简单、快速,在有停留车辆或者车速较慢的情况下能够及时检测出变化,但容易出现空洞现象.本文将五帧差分法和混合高斯模型相结合进行目标检测.
首先对完成预处理的第t+6帧图像进行五帧差分运算得到当前帧的背景二值图像:
Bk(x,y)=ft(x,y)-ft+1(x,y)
(1)
式中,ft(x,y)、ft+1(x,y)分别为第t、t+1帧(x,y)位置处的像素灰度值.
接着利用高斯混合模型进行模型初始化:
(2)
式中:μk(x,y,1)、ω(x,y,1)分别为位置(x,y)的背景模型第一个高斯分布的均值和权值;σk(x,y,k)为第k个高斯分布标准差,一般取sd_init=6;p1为第1个高斯分布的概率.
当分布个数为ki时,求出其他高斯分布的均值和权值:
(3)
直到利用N个高斯分布完成背景模型的建立,数学式表达为:
(4)
式中,Bb为当前背景模型的图像帧.
为解决传统混合高斯法不能更新背景的问题,增加自适应的背景更新,选取当前帧实时更新背景模型:
Bd+1=hsBb+(1-hs)Bd
(5)
式中:hs为更新的系数,hs∈[0,1];Bd为当前图像帧.
采用传统混合高斯法和本文方法进行背景建模,试验结果对比如图2所示.由图2可见,传统混合高斯法建立的背景图像比较模糊,本文方法建立的背景图像清晰且与实际场景的背景相近.与传统高斯混合模型法相比,本文方法建立的背景图像更加准确、稳定,贴近实际场景.
(a) 传统混合高斯法
建立稳定的背景图像后,利用五帧差分法进行前景目标提取:
(6)
式中,ft(x,y)、ft+2(x,y)、ft+4(x,y)分别为第t、t+2、t+4帧(x,y)位置处的像素灰度值.
利用腐蚀、膨胀的形态学处理方法得出最终的前景运动目标区域,如图3所示,图像中白色区域为前景运动像素即运动目标区域,黑色区域为非运动像素即背景区域.由图3可见,帧差法提取的前景目标不清晰,在目标较小时容易产生漏检(如第76帧中左下角的黑色车辆,几乎检测不到),并且提取的前景目标容易产生空洞;本文方法不管在目标小、大还是较多的情况下都能准确提取前景运动目标,在对第76帧的黑色车辆检测中可以看出,其前景检测的精准度和准确度得到很大提升.
(a) 原始图像
1.4.1 ROI区域设定
本文利用ROI方法对特定区域对象进行处理和分析,对车辆计数更加具有针对性.感兴趣区域可以设置不同的形状,可通过获取左上角和右下角的坐标位置,利用rectangle()函数直接设置规则的矩形区域对视频进行针对性检测.图4中利用矩形框来标识感兴趣区域,对划定的区域进行车辆检测,从而节省存储空间和提高运行速率,提高检测效率和鲁棒性,为绊线检测和计数提供了良好的基础.
图4 划定感兴趣区域
1.4.2 基于团块分析法的运动目标跟踪
运动目标团块可以理解为提取到的前景区域运动目标,基于数学形态学处理得出二值图像(背景为0,前景为1),利用连通区域标记算法对ROI中连通的图像块进行标记并分析图像中单个或多个目标团块.首先对图像进行遍历,记录下每一行(或列)中连续的团块并对原始图像进行重新标记,给原始图像中的每个连通区域标记唯一编号,则输出图像中连通区域的所有像素值为该区域标注的编号,最后得出运动目标团块.
分析检测出的运动目标团块,提取其面积特征(本文设定,检测到的运动目标团块面积占整个变化区域面积的35%以上时便认为是车辆),利用最小外接矩形框标记跟踪的目标团块(见图5).该方法增强了目标团块检测的精确性和跟踪的鲁棒性.
(a) 原始图像
1.4.3 基于虚拟绊线检测的车辆计数
针对交通车辆检测的准确性、实时性等要求,本文设置虚拟绊线来统计区域内的车辆数.在划定的感兴趣区域设定一条白色虚拟绊线(见图6),根据不同视频场景中的实际情况,虚拟绊线的设置具有较大的随机性.为进一步提高检测的精确性,对刚跨过白色虚拟绊线的运动目标计数,超出划定ROI最下端的运动目标不计数,即当标识运动目标进入图6中细矩形框区域时,对ROI内检测到的车辆进行计数,并在左上角的计数器中实时显示出车辆数,若划定的ROI中没有车辆,则计数器清零.试验表明,该方法时效性高,增强了检测效率,减少车辆漏检的情况.
图6 虚拟绊线设置
GUI是使用者与计算机进行信息交流的平台,使用者可以直接通过界面执行指定的操作,GUI提供一个集成开发环境GUIDE(见图7),包括视频部分、控制区、视频信息、说明等.视频部分有三个显示区域,显示检测视频和结果.获取视频信息按钮可得到视频的总帧数、帧宽度、帧高度、时长等;提取前景目标和计数按钮是对视频进行处理并显示结果(图7给出的是视频序列中的第18帧检测结果);播放按钮可以控制视频的播放与暂停;停止按钮可以将界面上所有获取的视频、信息清零;截图按钮可以将感兴趣的一帧截图并且保存.试验结果显示,本文车辆检测和计数方法能够将相应功能在GUI上准确实现.
图7 GUI界面设计功能显示结果
本文所有试验都是基于Intel(R) Core(TM) i5-8265U CPU@1.60 GHz 1.80 GHz的硬件和Matlab 2016a的软件实现.为证明本文方法检测和计数的准确性、实时性,选取两种不同高速公路、不同拍摄角度、不同光照强度的视频场景Data1(共120帧)、Data2(共500帧)进行试验,Data1、Data2的分辨率分别为120×160、240×320.
选取Data1场景中不同的4帧图像(见图8),利用外接矩形框对检测到的目标进行标识,检测到的车辆数量在左上角的计数器中显示.由图8可见,当第13帧图像中的白色车辆没有完全驶入,其目标团块占划定的ROI和设定的虚拟绊线区域面积小于35%,则不认为是车辆,不进行计数;第37、72帧在划定区域内出现的车辆都可以准确检测并将数量在左上角计数器中显示出来,在第37帧中没有进入划定区域的车辆没有计数;第92帧中的白色车辆未达到划定区域面积的35%以上,不进行计数,符合计数的车辆只有1辆.
(a) 原始图像
选取Data2场景中不同的4帧图像(见图9),对目标利用外接矩形框进行标识,在左上角的计数器中显示检测到的车辆数量.由图9可见,本文前景提取的方法准确性较高,4帧图像中都有在虚拟绊线上的目标,当该目标团块的面积大于划定区域的35%时,认为是车辆,反之不认为是车辆,根据图9中第266帧的结果显示,本文方法不受车辆大小和车速的影响,可以准确检测出车辆并且准确计数.本文主要对视频中一个方向的车辆进行试验,因此在第494帧图像中对面道路出现的车辆没有进行计数.综上所述,本文方法能够对车辆进行准确检测和计数.
(a) 原始图像
图10为Data1和Data2场景中每秒的车辆计数情况,x轴为视频秒数,y轴为在对应秒数检测到的车辆数.
(a) Data1场景
由图10(a)可见,在5~6 s车辆数最多,在第1 s时车辆数最少,可以直观看出车流量最大的时间段.图10(b) Data2场景中,第1 s时的车辆数远大于Data1场景,在0~5 s的车辆数最多,在第28 s左右车辆数最少.
为更好评估车辆检测和计数方法的可行性和准确性,假设一共检测到N辆车,其中误检的车辆数为A,漏检的车辆数为B,则车辆计数检测精准率P有:
(7)
两个不同高速公路视频场景中车辆计数的精准率见表1.
表1 两个场景的车辆计数检测精准率
表1为两个场景车辆计数检测精准率情况.Data1场景的光照强度比Data2的大,光照使车辆产生阴影,但是本文方法未受太大影响;在Data2视频场景中存在较多反方向的车辆,当对面车道车辆团块较大时容易导致误检;车辆数较多时,由于车辆面积占划定区域面积较小,容易产生漏检,导致在Data2场景中的检测精准率有所下降.综合而言,本文提出的算法能够较为准确提取运动车辆,受光照强度影响不大,对相反车道车辆误检较少,保证了车辆检测和计数的相对准确性和适用性.
本文对在不同高速公路、不同拍摄角度、不同光照强度条件下视频场景中的运动车辆提出一种基于人机交互界面的车辆检测和计数方法,减少传统混合高斯法计算量大的同时,提高了车辆检测准确性和普适性.在实际视频场景试验中,本文方法具有较好的精准性、实时性和普适性,利用GUI可以更直观地展示试验过程和结果.下一步工作将在此基础上进一步提高检测和计数的准确性,将智能交通真正应用到实际生活中.