基于帧差法的夜间城市道路车辆检测
2011-02-09李从生周广禄
李从生,柏 军,周广禄
(哈尔滨工业大学(威海)嵌入式系统试验室,威海 264209)
0 引言
智能交通系统(ITS)作为一种实时、高效、准确的管理系统是世界公认的面向交通拥堵的有效解决方案[1]。在智能交通系统的研究中,车辆检测方法的研究占有很重要的地位。目前,车辆检测方法主要有超声波检测、雷达检测、红外检测、地感线圈检测、视频检测方法等。较其他方法而言,基于视频图像处理的检测技术具有明显的优点,如装修灵活、成本低廉、应用范围广、可提供大量全面的交通管理信息等[2]。
由于白天光照强度大,光照均匀,车辆轮廓清晰,在基于视频的车辆检测中无论采取背景差分法,还是帧差法都可以十分准确的检测出运动车辆。然而夜间环境复杂,光强变化大,同时受到车灯光晕和地面反光等影响,夜间条件下的车辆检测一直是视频车辆检测技术的难点。目前,国内外在这方面的研究很少,尤其国内相关研究更少[3]。本文提出了一种将相邻帧差和隔帧帧差相结合的累积帧差方式来检测夜间运动车辆的方法,经过对视频图像的一系列预处理和后处理,消除了图像噪声影响,提取出了完整的运动车辆轮廓,取得了令人满意的车流量和车型分类检测结果。
1 夜间运动车辆检测
1.1 梯度滤波方法的图像预处理
夜间车辆检测由于受到摄像机抖动、车灯光晕、路面反光以及数字化过程产生的噪声,使得原始图像并不能直接使用,必须在早期阶段对原始图像进行灰度校正,噪声过滤等图像预处理。预处理是视频图像检测中最基础也是最重要的一步,后续的图象分析、图像检测和图象理解等高层操作都是建立在它的基础之上。不同的环境和光照条件下,产生不同类型的噪声。根据噪声类型的不同,选取的噪声滤波器也不同[4]。针对夜间光照环境复杂,车体和路面对比度小和地面反射光及环境光线噪声较大的特点,本文通过多次试验,采用了一种梯度滤波的预处理方式。
梯度滤波常数K,与夜间城市路灯照明强度有关,一般取110到150之间就可有效消除路面反光噪声的影响,改善图像质量,增强帧差计算时的效果。
1.2 相邻帧差和隔帧帧差相结合的目标检测
针对白天的车辆检测方法,通常采用背景差分的方法。夜间整体照度低,光强变化大,无论采取中值法、均值法、还是采用基于高斯分布和Kalman滤波的方式都无法有效的建立背景模型,且车辆检测的误差率大。
传统两帧帧差法是直接比较连续两帧图像对应像素点的灰度值,得到两帧图像亮度差的绝对值,然后判断它是否大于某个固定的阈值,公式
如下所示。
其中fk(x,y)是当前帧像素点(x,y)的亮度分量,fk+1(x,y)是下一帧对应像素点的亮度分量,dk(x,y)是两帧差的绝对值,T0是阈值。大于阀值T0的像素点作为运动目标被保留下来。然而传统的两帧差分不能检测出静止或运动速度过慢的车辆,且不能很好的提取出夜间运动车辆的轮廓,为此本文采用一种相邻帧差和隔帧帧差相结合的累积帧差来检测夜间运动车辆的方法。
首先计算相邻两帧的帧差和隔帧的帧差。其中fk+2(x,y)是第k+2帧对应像素点的亮度分量。
然后将亮度差绝对值分别进行累加,n表示选取的组合帧数。
最后在累计帧差基础上消除背景噪声的影响。
阀值u的选取非常关键,若阀值过大就会将运动缓慢车辆的大部分区域误判为噪声,使提取的运动目标不完整[5]。若阀值的选取过小,将保留大部分的背景,后续将无法完整提取运动车辆的轮廓。因此,阀值u的选取需要根据实际路灯的光照条件来进行调整。
1.3 基于连通域阀值的图像后处理
由于受到噪声的干扰,二值化后得到的图像中往往会含有许多孤立的点、小区域、小间隙和车体内部孔洞。这些均会干扰后续车辆的检测,需要将孤立的点、小区域去除,而将小间隙和车体孔洞填充。本文采用的后处理方法主要包括:
1)采用形态学中的膨胀与腐蚀技术。首先对二值化后的图像进行膨胀,填补小孔洞;为了滤除运动车辆边缘噪声,以及图像中的其他噪声,再对二值图像进行腐蚀操作。
2)车体内部空洞填充。通过第一步形态学处理后,大部分孤立的小点和小孔洞已经消除,但是有些情况下车体内部还存在空洞。首先计算图像中各个连通的黑色区域的面积,当某一黑色区域(车体空洞)的面积小于给定的阈值时,就将该区域改为白色区域(车体部分)。
3)连通域阀值面积去噪法。首先运用区域生长法将图像中各白色连通区域(面积大的白色连通区域为车辆,面积小的连通区域是噪声)进行标记。然后根据各连通区域的面积与连通域阀值面积S0进行比较,如果面积小于连通域阀值面积S0,将此连通域的所有像素置零。否则认为是检测到的运动车辆。
最终图像处理结果:
图1 原始图像
2 夜间车辆检测算法实现
图2 图像处理后
2.1 实现车流量的检测
车流量的检测要具有实时性、准确性特点。鉴于夜间运动车辆检测的特点,本文利用虚拟线圈内车辆产生的数据流变化规律来进行对车辆的计数。虚拟线圈内的数据流只可能出现以下的4种情况和3种结果:
1)上一帧没检测到运动车辆,当前帧差也没检测到运动车辆:0减0,结果为0;
2)上一帧检测到运动车辆,当前帧差也检测到运动车辆:1减1,结果为0;
3)上一帧检测到运动车辆,当前帧差没检测到运动车辆:0减1,结果为-1;
4)上一帧没检测到运动车辆,当前帧差检测到运动车辆:1减0,结果为1。
每次检测都存入检测数据流。结果分类描述如下,1表示有新的运动车辆通过虚拟线圈;0表示没有新车辆通过虚拟线圈;-1表示车辆离开虚拟线圈。对数据流中的‘连续1的段’进行计数,统计有多少段数就表示有多少辆车通过虚拟线圈[6]。
具体车流量检测方法如下:首先设计一个循环计时器(初始值为0)和一个循环计数器(初始值为0),计时器开始计时,通过上面车辆检测方法每检测到一个有效的‘连续1的段’,将计数器的值累加1,以此类推,计数器的值不断累加,当计时器的值到达一个设定的阀值T0后,计算车流量,并将计时器和计数器的值重新置0,开始新一轮的车流量循环检测。
2.2 实现车型的判定
目前,基于视频的车型检测方法主要分为两类:一是直接利用车辆的轮廓线或像素的空域分布特征进行分类,如模板匹配算法等;另一类是利用某种分类器对特征进行分类,以实现车型分类的目的,如神经网络学习分类器。但是,夜间车辆的检测由于受到环境照度低,车体轮廓线不明显,无法直接运用上述两类方法。本文设计了一套运算量小、实时性好的车型检测方法,即利用车辆的固有属性和检测出的运动目标的参数相匹配的检测方法。
本文选取车辆外接矩形宽与车道宽的比值以及车辆外接矩形的长宽比两个参数。由于目前豪华轿车的宽度和某些大型车的宽度相差不大,且形态学的处理更有可能放大车辆的宽度,因此不能单单依靠宽度参量来判断车型。判断方法如下:
1)首先求取运动目标的外接矩形的宽度与车道宽的比值R1。当R1<H0时,认为是摩托车等微型车,当R1>H0时,判定为汽车。
2)对(1)判定为汽车的运动目标计算其外接矩形的长宽比R2。当R<H1时,认为是小型车,当R>H1时,认为是大型车。
3 结束语
本文针对夜间城市道路的光照条件,通过梯度滤波方法,在图像预处理阶段消除了路面反光噪声的影响;利用累计帧差和隔帧帧差相结合的方法,在图像差分阶段有效地提取出了运动目标;运用形态学和连通域面积阀值法,在图像后处理阶段消除了差分图像中的大小噪声,使运动车辆轮廓完整地提取出来;最后运用虚拟线圈内的数据流实现了车流量的检测,运用简单的车型分类法实现了车型的自动分类。实验结果表明,该法能有效的提取夜间运动车辆,车流量检测正确率95%以上,车型判断准确率92%左右,具有较明显的优势,能满足视频车辆检测实时性和准确性的要求。
[1] 刘东.ITS中的车辆检测技术.公安大学学报(自然科学版),2000,20(4):35-39.
[2] 王鹏,黄凯奇.基于视频的夜间高速公路车辆事件检测.中国图形图像学报2010,15(2):300-307.
[3] 谭荣伟等.夜间运动车辆检测.计算机工程与应用2005,13:227-232.
[4] 陈柏生,陈锻生.采用梯度滤波方法的夜间车辆检测.华侨大学学报(自然科学版) ,2009,30(1):42-43.
[5] 张玉荣,涂铮铮.基于帧差和小波包分析算法的运动目标检测.计算机技术与发展2008,18(1):137-138.
[6] 张玲等.基于视频的改进帧差法在车流量检测中的应用.重庆大学学报2004,27(5):32-34.