车流检测是智能交通系统的重要组成部分。车流检测环境包括白天和夜晚两大部分,在对白天车流的检测工作上,国内外已经做了大量研究;针对夜晚光照强度低、路面反光等复杂的车辆通行环境,目前还没有完善的车流检测研究成果。由于夜间车辆是开灯行驶,容易识别车辆的元素只有车灯,因此夜间车流检测目前一般使用车灯信息对车辆进行识别。本文主要研究基于虚拟线圈的夜晚车流检测技术[1]。
1 夜晚车流检测原理
夜晚,车灯是车辆被识别的最显著元素,本文以车灯为特征对车流进行统计[2]。在车灯被识别之前,需要在视屏中设置一个虚拟检测线圈作为感兴趣区域(ROI)[3]。以车灯作为研究对象,一辆车被识别有4个阶段,如图1所示。

(1)如图1(a)所示,车辆车灯第一次进入矩形框区域,由于是部分而非完全进入,因此没有被识别为车灯元素,故将其删除。
(2)如图1(b)所示,当车灯完全进入矩形框区域后,其被识别为车灯元素,当与其他车灯匹配成功,则对车灯对进行计数,车辆数加1,并对此对车灯进行跟踪,以避免在其他帧中重复对此车进行计数。
(3)如图1(c)所示,这对车灯元素仍然会出现在其他帧中,但是因为已经对其进行了跟踪,不作为新的车辆进行计数。
(4)如图1(d)所示,车灯离开矩形框区域,结束对这对车灯对的跟踪。
特别说明,当车灯对第一次匹配成功时便进行计数,是为了避免车辆突然转弯而在计数上有所减少。车辆的突然转弯和设置虚拟线圈的一些情况如图2所示。其中,图2(a)所示为汽车车灯完全进入了虚拟线圈,但是没有经过线圈的最下方(即图1(d)所示的情形),因此仍进行计数。

车流统计的完整流程图如图3所示。
2 夜晚车流检测的设计实现
在夜间车流量图像中,亮度最高的区域是车灯区域,其次是车灯在路面形成的反光区域。一般情况下,每辆车对应一对车灯,如果能够正确地进行车灯检测,就能够正确地检测到车辆数量。正常情况下,车灯区域亮度明显高于其他区域,夜间车流图像在使用了合理的阈值进行二值化后,得到的是车灯的连通域[4]。为了简化车灯提取过程,本文设置了一个虚拟线圈来减少噪声的影响。提取车灯后,进行车灯配对及车辆计数等后续过程,来完成车流量检测的整个过程。


2.2 虚拟线圈设置及更新
由图4可知,经过二值化和预处理以后,仍然有一些很难处理的噪声,如路灯以及路面反光所形成的连通区域,这些噪声给识别带来了麻烦。为简化过程,本文设置一个检测窗口,检测窗口只检测窗口内的车灯优化过程。由于检测窗口的选取对最后的结果有很大的影响,因此检测窗口中不能出现路灯的干扰[4]。
设置虚拟线圈要注意如下两个因素[6-7]。
(1)虚拟线圈的尺寸
宽度上,计数检测线应该包含整个车道;高度上,则应大于一个车灯直径,但并非越大越好,最优取值为两个车灯直径。检测线过宽会增加处理时间,过窄会漏检,影响实验数据正确性。检测线圈过宽、过窄和合适的情况分别如图2(b)、图2(c)和图2(d)所示。
(2)计数检测线的位置
计数检测线距离摄像机越近,图像所描述的细节越清晰。
检测完一帧图像后,将当前图像更新到下一帧继续检测,以得到整段视频的车流量。
2.3 车灯匹配及车辆计数等后续处理
检测窗口区域不仅有车灯连通域,有时也会出现噪声连通域。由经验可知,同一辆车的两个车灯满足以下3个基本条件[4,8]。


从表1可以看出,检测误差主要来自于漏检,没有发生误检。漏检的原因在于,有些车辆不开灯或者只开一只车灯。此例中漏检的13辆车中,有10辆没有开车灯,另外3辆只开了1个车灯。
根据上述实验数据对比分析可以看出,系统在各种情况下的检测精度都取得了较好的效果。除了算法本身对检测精度的决定性影响外,还有两个因素对系统精度有着重要影响,一是检测带位置和尺寸的设置,二是合理的检测线设置。
本文提出了一种基于虚拟线圈的夜间车流检测方法。首先设置一个虚拟线圈来标出感兴趣区域,降低车牌识别的复杂程度;然后在感兴趣区域内通过车灯识别和车灯匹配来统计车辆数量。此种算法在实际测试中取得了较好的效果,识别率超过95%。