许 庆,高 峰,徐国艳
(北京航空航天大学交通科学与工程学院,北京 100191)
道路上的实时前车识别与跟踪是智能交通系统领域中的重要研究任务之一[1]。随着近年计算机处理能力的提高和视频技术的发展,基于视觉的实时车辆识别技术崭露头角。与其他方法相比,机器视觉具有信息来源广,信息量大,属于非接触测量等优点。其缺点是复杂环境下的识别算法有待提高,运算量大、实时性差[2],相关设备价格昂贵等。
目前,在智能交通中常见的单目视觉检测方法有差分法、光流法和特征检测法等。其中,差分法实现简单,运算速度快,帧间差分法对于动态环境自适应性很强,对光线的变化不十分敏感。但其缺点是,对于帧间差分来说,灰度均匀的对象难以准确识别,甚至会在图像内部形成空洞[3]。
光流法对光照强度的变化非常敏感,无须预先知道场景信息。但由于前车与摄像头相对运动的方向、速度和背景与摄像头相对运动的速度都是不定的,故难以在前车识别中应用。文献[4]中提出可用光流法识别对面车辆。
特征检测法在智能交通中的应用常见于静止的监控摄像头,近年来国内外相关论文又多利用车辆底部阴影特征实时识别前车。但阴影特征对于环境光照要求较高,且难以分辨车辆与其他物体,故相对局限性较大。本文中重点研究了基于Haar特征的车辆识别算法。该方法最早在文献[5]中提出并用于人脸识别。在前车识别中,由于一般来说两车的相对运动不大,具有清晰的特征,故引入此方法依据车尾特征识别前方车辆。
Haar特征是基于灰度图像的弱特征。该特征用于表述图像某一位置附近矩形区域的图像强度,并计算其强度差别。图1中所示矩形块表示了3类Haar特征。这些方块特征的大小不固定,但灰色与白色方块的形状和大小总是相同的。其中,双矩形特征(又名边缘特征)用来计算水平(或垂直)两个矩形块之间的强度差,3矩形特征(又名线性特征)用来计算两侧与中心的强度差,4矩形特征(又名对角线特征)用来计算两对角线对的强度差[6]。若检测出其差值大于阈值,则判定为特征。相对其他特征检测算法,计算速度是使用积分图像的Haar特征检测算法的显著优点。
文献[5]中提到,即便是24×24的图像,其特征的总量也相当大(过完备的特征共有45 396个)。故须使用积分图像以提高运算速度,如图2所示。对区域的强度求和,即
式中:I为强度,S为对应点在积分图像中的值。
由此可计算图像的特征,并提高检测速度。例如,对于图2所示的区域D而言,其强度为
Boosting是一个将弱学习算法融合为强学习算法的方法[7]。AdaBoost(Adaptive Boosting)为 Boosting算法中的一种。AdaBoost算法根据每次训练中每个样本的分类是否正确,以及上次的总体分类的准确率,来确定每个样本的权值。而后,将每次训练得到的分类器融合起来,作为最后的决策分类器。只要满足一个特征的错误率比猜测的错误率低(e<0.5),该特征即可被用作一个弱分类器。AdaBoost训练分类器的方法见文献[7]。
级联分类器的构造如图3所示。样本的特征被分为数个分类器。分类器串联时,将由重要特征构成的结构相对简单的分类器放在前面,可快速排除大量样本。依此划分下去,最后一个分类器留下来的就是检测到的目标[5,8-9]。
本文中提取训练样本的Haar特征,得到基于车辆尾部特征的弱分类器。并由AdaBoost训练,加权将弱分类器构造为强分类器,级联得到40×40的汽车尾部分类器。
用于训练样本的车辆尾部图片共有1 152张。其中,选用CALTECH的cars1999中的图片126张,cars2001中的图片526张,本文中拍摄图片500张。另选取道路、建筑等图片932张,作为背景样本。
使用MIT CBCL CAR DATBASE中的汽车尾部图片共172张(复杂背景),测试训练出的汽车尾部分类器。测试结果表明,分类器可较有效地捕捉车辆尾部特征,对于车辆的正确识别、漏检和误检的概率分别为81.4%、18.6%和8.14%。
利用训练出的车尾分类器,分别测试了在停车场与实际道路上的实时前车识别(图4)。同时,使用OpenCV中提供的David Bradley人体分类器识别行人(图5),作为对比验证。初步对比试验表明,训练得到的车尾分类器已基本达到研究要求,能够较好地识别车辆。但试验也暴露出实际使用中的一些问题,如位于远处的车辆或行人,都因图像分辨率低而无法被识别、存在误检等。针对这些问题和实际道路的特殊条件,本文中提出算法的改进方案。
3.1.1 重复识别的处理
初步试验中,对同一待识别目标,有时会出现重合的矩形框。对此,通过计算矩形框覆盖的重合度来合并重复识别的目标,并给定重合度阈值。试验中定义的重合度阈值为85%,即如果一个矩形框的85%与另一矩形框重合,则判定它们为同一目标。
3.1.2 误检噪声的消除
增加假设验证模块,利用先验知识(如由于车辆近大远小,很远的地方不会存在很大的矩形框等),消除查找区域中的误检矩形框。利用Hough变换与摄像头中心位置找到灭点,矩形框位置纵坐标与灭点纵坐标之差限制着矩形框大小。若矩形框与预估值大小之差的绝对值大于阈值,则判断为误检。
3.1.3 远距离目标的识别
初步试验发现,在320×240分辨率下,上述的方法对于前方2.5~20m的车辆识别效果良好;但对于20m以外的车辆,由于特征不明显,效果不佳;在640×480的分辨率下,因分辨率的提高,可以增加可识别的距离,但识别速度相对较慢。
假设当前车辆只对道路前方一定范围内的车辆感兴趣,依此建立感兴趣区域,仅查找该区域中的车辆;并每隔数帧使用高分辨率视频(试验中采用2帧/s),查找位于视频中部感兴趣区域中的远端车辆。此外,建立了简单道路车辆模型,采用卡尔曼滤波[10]预估车辆位置。
3.1.4 检测的判定
采用多帧过滤的方法来判定前方是否有车。令:
在第k帧时,查询先前的n帧:
式中f为预设的判定为有效像素点的概率。如果矩形框内P=1的点数占总点数的百分比大于目标判定阈值(试验中定为70%,视漏检概率而定),则判定为有车。
依上述算法改进程序并在真实道路上再次试验,发现先前测试中出现的重复识别和误检基本消除,漏检得到改善。使用针对画面中心较远目标建立的感兴趣区域,配合道路车辆模型与基于Cam-Shift的图像跟踪后,算法识别的有效距离增加,图4右图中未能识别出的车辆在图6中已被识别。但仍存在被遮挡目标难以识出的问题。虽尝试采用车道识别等一些方法减弱其影响,但效果均不理想。可考虑配合激光测距或GPS定位与车车通信等手段,将各类传感器信息融合,建立出更完善的实时的道路车辆模型。
在前人对Haar特征的研究基础上,提取车辆尾部Haar特征,将所得弱分类器由AdaBoost训练,级联后得到基于Haar特征的车尾级联分类器。在复杂背景试验中,分类器的识别率约为81.4%。针对户外实时测试中暴露的不足改进了算法。定义矩形框重合度阈值消除重复识别,利用先验知识减少误检噪声,使用多帧过滤捕捉漏检目标;隔帧使用高分辨率视频查找感兴趣区域内车辆增加识别距离。基本消除了车辆的重复识别和误检,漏检与远距离目标不易被识别的情况得到改善。
[1]Bensrhair A,Bertozzi M,Broggi A,et al.A Cooperative Approach to Vision-based Vehicle Detection[C].Proc.IEEE Conf.on Intelligent Transportation System,Oakland,CA,2001:207-212.
[2]高峰,等.基于模糊神经网络的车辆碰撞预警算法[J].江苏大学学报(自然科学版),2006(5):211-215.
[3]李平,等.自适应背景恢复差减算法[D].长春:长春理工大学,2008.
[4]Baker S,Scharstein D,Lewis J P,et al.A Database and Evaluation Methodology for Optical Flow[C].Proc.ICCV,2007.
[5]Viola Paul,Jones Michael J.Robust Real-time Object Detection[R].Cambridge Research Laboratory,2001.
[6]Jaesik Choi.Realtime On-Road Vehicle Detection with Optical Flows and Haar-like Feature Detector[R].Illinois:UIUC,2007.
[7]刘瑞祯,等.OpenCV教程[M].北京:北京航空航天大学出版社,2007:385-386.
[8]林莉凤.快速行人侦测基于AdaBoost和样板比对法的驾驶辅助系统[D].台湾:国立中央大学,2007.
[9]Florian Adolf.How-to Build a Cascade of Boosted Classifiers Based on Haar-like Features[R].America:2003.
[10]黄宇辰.以视觉为基础的车对车侦测及追踪系统[D].台湾:国立中央大学,2005.