基于虚拟线圈的夜晚车流检测
2014-11-10吴晓红沈清波
钱 凯,吴晓红,沈清波
(四川大学 电子信息学院,四川 成都 610065)
车流检测是智能交通系统的重要组成部分。车流检测环境包括白天和夜晚两大部分,在对白天车流的检测工作上,国内外已经做了大量研究;针对夜晚光照强度低、路面反光等复杂的车辆通行环境,目前还没有完善的车流检测研究成果。由于夜间车辆是开灯行驶,容易识别车辆的元素只有车灯,因此夜间车流检测目前一般使用车灯信息对车辆进行识别。本文主要研究基于虚拟线圈的夜晚车流检测技术[1]。
1 夜晚车流检测原理
夜晚,车灯是车辆被识别的最显著元素,本文以车灯为特征对车流进行统计[2]。在车灯被识别之前,需要在视屏中设置一个虚拟检测线圈作为感兴趣区域 (ROI)[3]。以车灯作为研究对象,一辆车被识别有4个阶段,如图1所示。
(1)如图 1(a)所示,车辆车灯第一次进入矩形框区域,由于是部分而非完全进入,因此没有被识别为车灯元素,故将其删除。
(2)如图 1(b)所示,当车灯完全进入矩形框区域后,其被识别为车灯元素,当与其他车灯匹配成功,则对车灯对进行计数,车辆数加1,并对此对车灯进行跟踪,以避免在其他帧中重复对此车进行计数。
(3)如图 1(c)所示,这对车灯元素仍然会出现在其他帧中,但是因为已经对其进行了跟踪,不作为新的车辆进行计数。
(4)如图 1(d)所示,车灯离开矩形框区域,结束对这对车灯对的跟踪。
图1 识别一辆车的过程
特别说明,当车灯对第一次匹配成功时便进行计数,是为了避免车辆突然转弯而在计数上有所减少。车辆的突然转弯和设置虚拟线圈的一些情况如图2所示。其中,图2(a)所示为汽车车灯完全进入了虚拟线圈,但是没有经过线圈的最下方(即图 1(d)所示的情形),因此仍进行计数。
车流统计的完整流程图如图3所示。
图2 车辆的突然转弯和设置虚拟线圈的一些情况
图3 车流统计流程图
2 夜晚车流检测的设计实现
在夜间车流量图像中,亮度最高的区域是车灯区域,其次是车灯在路面形成的反光区域。一般情况下,每辆车对应一对车灯,如果能够正确地进行车灯检测,就能够正确地检测到车辆数量。正常情况下,车灯区域亮度明显高于其他区域,夜间车流图像在使用了合理的阈值进行二值化后,得到的是车灯的连通域[4]。为了简化车灯提取过程,本文设置了一个虚拟线圈来减少噪声的影响。提取车灯后,进行车灯配对及车辆计数等后续过程,来完成车流量检测的整个过程。
2.1 基于OTSU分割的车灯提取
阈值的选取对最后的识别效果有非常大的影响,观察夜晚车流视频可以发现,车灯等比较明亮的区域与周围比较暗淡的区域在灰度上有很明显的差异。为了达到自适应的效果,本文采用OTSU算法[5],算法如下。
(1)设一幅灰度范围为 0~255的M×N大小的灰度图像,其中灰度级为k的像素出现个数为n(k),出现概率为 p(k)=。图像的平均灰度为 μ=k×p(k)。
(2)设以灰度级m为分割阈值 (小于此值为背景,大于等于此值为前景),把图像分成前景和背景。则背景灰度均值为 μb=k×p(k),背景点数占图像比例为 ωb=前景灰度均值为,前景点数占图像比例为。
(3)前景和背景方差为 σ=ωb×(μb-μ)2+ωf×(μf-μ)2。若m的某个取值mopt使得σ的值最大,则mopt为最佳分割阈值。
基于OTSU算法二值化的结果如图4所示。
图4 基于OTSU算法二值化的实验结果
2.2 虚拟线圈设置及更新
由图4可知,经过二值化和预处理以后,仍然有一些很难处理的噪声,如路灯以及路面反光所形成的连通区域,这些噪声给识别带来了麻烦。为简化过程,本文设置一个检测窗口,检测窗口只检测窗口内的车灯优化过程。由于检测窗口的选取对最后的结果有很大的影响,因此检测窗口中不能出现路灯的干扰[4]。
设置虚拟线圈要注意如下两个因素[6-7]。
(1)虚拟线圈的尺寸
宽度上,计数检测线应该包含整个车道;高度上,则应大于一个车灯直径,但并非越大越好,最优取值为两个车灯直径。检测线过宽会增加处理时间,过窄会漏检,影响实验数据正确性。检测线圈过宽、过窄和合适的情况分别如图 2(b)、图 2(c)和图 2(d)所示。
(2)计数检测线的位置
计数检测线距离摄像机越近,图像所描述的细节越清晰。
检测完一帧图像后,将当前图像更新到下一帧继续检测,以得到整段视频的车流量。
2.3 车灯匹配及车辆计数等后续处理
检测窗口区域不仅有车灯连通域,有时也会出现噪声连通域。由经验可知,同一辆车的两个车灯满足以下3 个 基 本 条 件[4,8]。
(1)同一辆车的车灯的面积大小相差在一定的范围之内,几乎相等,不会出现同一辆车的一个车灯远远大于另一个车灯的情形(一个车灯没有开不算在此种情况内)。本文设置两个车灯的面积大小比在2/3~1.5之间。
(2)同一辆车的两个车灯的质心纵坐标差、高度差在一定的范围之内。本文认为同一辆车的两个车灯,一个车灯的质心的纵坐标可以与另一个车灯有交集。
(3)同一辆车的两个车灯的距离在一定的范围内,一般要比半个车道宽,比一个车道窄。
设两个车灯目标lamp1和lamp2,其面积分别为area1和area2。其质心横坐标分别为x1和x2,纵坐标分别为y1和y2。两个车灯区域的纵坐标最小值和最大值分 别 为 (lamp1·ymin,lamp1·ymax)和 (lamp2·ymin,lamp2·ymax)。一个车道的长度为L。对应上述3个基本条件,若lamp1和lam2相互匹配需满足以下3个条件:
(2)lamp1·ymin≤y2≤lamp1·ymax且 lamp2·ymin≤y1≤lamp2·ymax。
满足以上3个条件的连通域还不能完全确定是同一辆车的两个车灯,本文车灯匹配方法如下:
(1)设定一个面积为S的区域,车灯元素要大于此值,因此,此值可以设定得稍微小一点。将所有大于S的连通域加入一个车灯队列lamp_quene。
(2)对lamp_quene的车灯进行测试,在与之匹配过程中,对不能满足上述3个基本条件的车灯元素进行删除。
(3)将 lamp_quene的元素从左到右进行排序,如果lamp_quene的元素个数为奇数,则删除对其他车灯全部匹配毫无影响的车灯;如果lamp_quene元素个数为偶数则不作处理。
(4)对 lamp_quene车灯元素进行一一配对,配对后作一个矩形框,矩形框宽度刚好包含两个车灯,高度则与检测矩形框重合。如果有矩形框包含在另一个矩形框内,则删掉较小的矩形框[9]。
(5)显示剩下的矩形框,表示匹配成功。
设置矩形框的目的在于当同一车辆有4个车灯同时开启时,只算两个车灯。如图2(a)所示,同一辆车在开了4个车灯的情况下通过设置矩形框,识别为同一辆车。
车灯匹配流程图如图5所示。
图5 车灯匹配流程图
3 实验结果及误差分析
在对误差的分析上,最简单的方法是利用程序计数和实际数目相差的大小来度量,但此方法过于粗糙,原因在于车辆检测过程中,可能出现漏检和误检相互抵消的情况。考虑上述因素,本文采用式(1)所示的车辆检测计数的正确率来度量检测的精准度高低。
其中,extra_count为误检数,miss_count为漏检数,actua1_count为实际车辆数目。
本文测试视频为AVI格式,帧率为25 f/s,宽度为320像素,高度为240像素。视频中一共出现车辆297辆。识别结果如表1所示。
表1 车流检测识别结果
从表1可以看出,检测误差主要来自于漏检,没有发生误检。漏检的原因在于,有些车辆不开灯或者只开一只车灯。此例中漏检的13辆车中,有10辆没有开车灯,另外3辆只开了1个车灯。
根据上述实验数据对比分析可以看出,系统在各种情况下的检测精度都取得了较好的效果。除了算法本身对检测精度的决定性影响外,还有两个因素对系统精度有着重要影响,一是检测带位置和尺寸的设置,二是合理的检测线设置。
本文提出了一种基于虚拟线圈的夜间车流检测方法。首先设置一个虚拟线圈来标出感兴趣区域,降低车牌识别的复杂程度;然后在感兴趣区域内通过车灯识别和车灯匹配来统计车辆数量。此种算法在实际测试中取得了较好的效果,识别率超过95%。
[1]KAMINSKI L, ALLEN J, MASAKI I, et al.A sub-pixel stereo vision system for cost-effective intelligent vehicle applications[C].ProceedingsofIEEE IntelligentVehicle Symposium, 1995:7-12.
[2]魏武,张起森,王明俊,等.计算机视觉和图像处理的交通参数检测[J].信息与控制,2001,3(30):257-261.
[3]郭怡文,袁飞虎.基于背景差分的多车道车流量检测系统[J].电光与控制,2010,17(9):90-93.
[4]沈清波.基于线圈的交通参数检测[D].成都:四川大学,2010.
[5]SAHOO P K, OLTANI S, WONG A K C, et al.A survey of thresholding technique[J].Computer Vision,Graphics and Image Processing,1988(41):233-260.
[6]刘莉,潘晓露,李一民.基于视频的夜间车流量统计[J].微处理机,2012,33(1):67-70.
[7]张帅,崔本亮,黄学达.视频检测技术在公路车流量检测系统中的应用[J].实验室研究与探索,2012,31(10):64-66.
[8]陈琳.智能交通中视频车辆检测技术研究[D].武汉:华中科技大学,2012.
[9]刘汉艳.基于视频的车辆检测与跟踪算法的研究与实现[D].南京:南京邮电大学,2012.