基于OpenCV的前方车辆检测和前撞预警算法研究*

2017-07-12 17:02刘军高雪婷王利明晏晓娟
汽车技术 2017年6期
关键词:测距分类器坐标系

刘军 高雪婷 王利明 晏晓娟

(江苏大学,镇江 212013)

基于OpenCV的前方车辆检测和前撞预警算法研究*

刘军 高雪婷 王利明 晏晓娟

(江苏大学,镇江 212013)

针对汽车的追尾碰撞事故,提出了基于OpenCV的前方车辆检测和多信息融合预警的方法。该方法首先利用Haar-like+Gentle Adaboost实现前方车辆的快速识别,结合Kalman滤波原理跟踪车辆,实现前方车辆检测,然后基于几何模型实时计算前车与本车的横纵向距离,最后根据本车及前车车速、碰撞时间TTC、横向距离等信息与阈值进行比较,分级识别碰撞风险。试验结果表明,该检测方法平均耗时22 ms/帧,检测率达到96%,并能较准确地测量车距,实现可靠的前方避撞预警输出。

1 前言

汽车前方碰撞预警技术是先进驾驶辅助系统(Ad⁃vanced Driver Assistance Systems,ADAS)[1]的一个重要方面,它可以在预测到前方有行车危险时及时提醒驾驶员,以有效减少交通事故的发生。前方车辆检测和预警算法是前方碰撞预警系统的关键技术,对系统性能有很大影响。

相关学者在前方车辆检测领域做出了很多研究,如,Takashi Izumi等[2]提出了一种基于阴影检测的前方车辆跟踪策略,该算法检测速度较快,但对环境和光照的鲁棒性差;为了解决此问题,Jazayeri[3]提出了一种光流与隐马尔科夫模型相结合的车辆分类方法,但该方法计算量大且耗时;王海等[4]提出了一种两步法对车辆进行检测,该方法有利于提高检测率,但降低了实时性。目前,前方碰撞预警算法一般有基于安全时间判断和基于安全车距判断两种[5],如孙晓艳[6]提出基于避撞时间TTC的前撞预警算法,但该算法未考虑本车与目标车辆的横向距离,误警率较高;周松盛[7]提出基于临界安全距离模型的预警算法,但忽略了本车与目标车辆的相对速度,当相对速度较大时预警会有较大误差。

基于上述问题,本文在前人研究的基础上,提出一种基于OpenCV的前方车辆检测和前撞预警算法。该方法首先利用Gentle Adaboost级联分类器识别前车以及Kalman滤波跟踪前车,实现前方车辆的检测,然后基于几何模型实时计算前车与本车的横纵向距离,再将横向距离、碰撞时间TTC等信息与阈值进行比较,分级识别碰撞风险。该方法的检测效果和实时性优于经典算法,可有效提高预警准确率。

2 前方车辆检测算法

2.1 基于Gentle Adaboost算法的前方车辆识别

2.1.1 Gentle Adaboost算法介绍

根据样本权重更新方法的不同对应不同的Ada⁃boost算法,常见的有Discrete Adaboost、Real Adaboost和Gentle Adaboost算法[8]。其中Gentle Adaboost算法是在1998年由Friedman等人[9]提出的,它考虑了Discrete Ad⁃aboost算法对被划分成负样本的正样本的权值调整过高而导致效率下降的问题,而且文献[10]中的对比试验表明,Gentle Adaboost算法的结果优于其它两种算法,因此本文采用Gentle Adaboost算法训练分类器。

2.1.2 样本离线训练与前车在线识别

本文采用Gentle Adaboost算法训练得到识别前车的级联分类器,通过程序加载分类器实现前方车辆的在线识别。离线分类器是将正、负样本描述文件输入到opencv_traincascade.exe程序后获得的,实现步骤如下:

a.准备正、负样本图片。通过样本库及摄像采集共收集了1 450张各种车型的尾部图片作为正样本,4 380张不包含车辆的交通场景图片作为负样本。将正样本归一化成20×20像素的灰度图,并调整负样本尺寸使其大于正样本尺寸。

b. 生成正、负样本描述文件。通过opencv_cre⁃atesamples.exe可执行文件将正样本生成.vec文件,负样本使用.txt文件。

c. Gentle Adaboost级联分类器的训练。利用opencv_traincascade.exe程序训练基于Haar-like特征的Gentle Adaboost级联分类器,该程序中包含了Haar-like特征提取及Gentle Adaboost分类器训练过程。将正、负样本描述文件输入到opencv_traincascade.exe中,并设置minHitRate为0.995,maxFalseAlarm为0.5,boostType类型为GAB,即Gentle Adaboost。训练一段时间后,得到分类器配置参数文件(.xml)。

前车的在线识别是通过在VS2010开发平台上调用OpenCV开源视觉库并使用C++语言编程实现的,步骤如下:

a.利用CCD摄像头实时采集前方道路图像,并通过视频采集卡对信号进行A/D转换后传给PC机,获取大小为720×576像素的待检图像;

b. 利用threshold()函数对待检图像进行二值化处理,减少运算量,以便更好地提取Haar-like特征;

c. 利用cascade.detectMultiScale()函数对预处理后的待检图像进行多尺度识别,设置检测窗口放大比例为1.2倍,检测次数为4,检测目标的最小尺寸为48×42像素,最大尺寸为230×220像素;

d.加载分类器,利用训练好的分类器对步骤c中所有子窗口进行判决,并将目标车辆用矩形框框选出来。

2.2 基于Kalman滤波的前方车辆跟踪

基于Kalman滤波的前方车辆跟踪是指通过当前帧中前方车辆的位置预测下一帧前方车辆可能出现的位置。本文采用的CCD摄像头的帧率为25 fps,即相邻两帧的间隔时间为0.04 s,由于时间间隔短,当相邻两帧图像中同一车辆的位置变化不大时,可将其运动状态近似成匀速直线运动。而当前方车辆行驶方向或速度突然变化时,较短时间内仍可近似成匀速直线运动,所造成的误差可作为系统噪声处理[11],实现步骤如下:

a. 按前述的检测算法检测前方车辆,并利用rectangle()函数框选出目标车辆,记录矩形框的位置信息;

b. 如果连续三帧检测到车辆,则使用cvKalman⁃Predict()函数预测下一帧中车辆可能存在的位置;

c.在车辆可能存在的区域附近划定出搜索区域,用检测算法进行目标检测,并将检测值带入cvKalman⁃Correct()函数对预测的结果进行修正,更新当前帧车辆位置。

3 前撞预警算法

3.1 基于几何模型的前方车辆测距

基于几何模型的测距是指根据摄像机投影模型推导出路面坐标系与图像坐标系的关系,进而计算出两车之间距离的过程。

3.1.1 坐标系及坐标系转换关系

对于测量车辆与前方障碍物之间的距离,小孔成像模型(也称为线性摄像机模型)基本可以满足测量要求如图1所示。模型中涉及到图像坐标系、像素坐标系、摄像头坐标系和世界坐标系[12]等4个坐标系。

图1中,XWYWZW为世界坐标系,XCYCZC为摄像头坐标系,xO1y和uO0v分别为图像坐标系和像素坐标系,O1Oc为摄像头焦距,用f表示。假设空间中有某点A,依据小孔成像原理,点A′为点A在图像平面内的投影点。(XC,YC,ZC)为点A在摄像头坐标系下的坐标,(x,y)和(u,v)分别为点A的图像坐标和像素坐标。

图1 小孔成像模型

点A的图像坐标系(x,y)与摄像头坐标系(Xc,Yc,Zc)的转换关系为:

点A的图像坐标系(x,y)与像素坐标系(u,v)之间的关系为:

其中,(u0,v0)为图像坐标系原点O1在像素坐标系中的坐标;dx和dy为单位像素在图像坐标平面x轴和y轴方向上的物理尺寸,因为所使用的摄像头为线性CCD摄像头,其在x轴方向和y轴方向上刻度均匀相等,所以dx=dy。

世界坐标系即为路面坐标系,像素坐标系与路面坐标系之间的转换关系可以通过建立道路平面纵向、横向测距模型,利用几何推导并结合摄像头内参数求出。

3.1.2 建立道路平面纵向测距模型

图2为道路平面纵向测距模型[13]。图2中,XYZ为路面坐标系;图像坐标系原点O1的像素坐标为(u0,v0);摄像头安装高度为h;摄像头俯仰角为 α;PP′与地面的夹角为 β,与光轴的夹角为γ;点P为路面坐标系中Z轴上的一点,坐标为(0,0,Z),其在像平面上的投影点为P′,由图2可知,点P投影在图像坐标系的轴上,其图像坐标和像素坐标分别为(0,y)和(u0,v)。

图2 道路平面纵向测距模型

由图2的几何关系可得:

结合式(2)、式(3)和式(5)得:

式中,fy=f/dy为y方向的像素。

3.1.3 建立道路平面横向测距模型

图3为建立的道路平面横向测距模型。图3中,P(0,0,Z)和Q(X1,0,Z)为路面坐标系中两点且PQ平行于X轴,Q在像平面上的投影点为Q′,Q′在图像坐标系和像素坐标系下的坐标分别为(x,y)和(u,v)。

图3 道路平面横向测距模型

由图3中的几何关系可得:

式(11)中的h和α可通过直接测量得到;u0、v0和fy均为摄像头内参数,通过摄像头标定试验获得。

3.1.4 前方车辆测距功能实现

前方车辆与本车之间的距离包括纵向距离和横向距离,本文采用道路平面测距模型,结合摄像头内参数求出本车与前方车辆的横向距离和纵向距离,过程如下:

a.利用检测算法检测本车前方所有车辆,并利用rectangle()函数将前方车辆框选出来;

b.将同车道内距离本车最近的前方车辆作为需要测距的目标车辆,并读取其检测框底边中点的像素坐标(u2,v2)和(u3,v3),则检测框底边中点的像素坐标为

d.测量出摄像头与本车车体前端之间的距离d1(CCD摄像头安装在前挡风玻璃内侧中部),则本车与前车之间的纵向距离d为:

e.测量出本车的车宽W,计算出本车与前车的横向距离L:

3.2 基于多信息融合的前方碰撞预警算法

目前,前方碰撞预警系统主要通过计算碰撞时间TTC或纵向距离d来判断本车的安全状态。但此方法只考虑了车辆的纵向特征,没有考虑横向特征,如本车想超车,TTC或纵向距离超过了阈值,但只要横向距离没有达到阈值就是安全的,此时报警反而会影响驾驶员的正常操作,而且只有当本车车速V1大于前车车速V2时才可能发生危险。为解决此问题,必须在预警算法中引入多信息融合的思想。多信息融合是指从多个信息源获取数据和信息进行关联、相关和综合,以获得精确的状态估计。因此基于多信息融合的前方碰撞预警算法是指综合考虑本车车速V1、前车车速V2、TTC和横向距离L来判断本车的安全状态。

TTC计算式为:

式中,Vr为本车与前车的相对速度,可以由相对距离和帧间时间间隔求出。

本车车速V1可通过车速传感器测量得出,前车车速V2可通过Vr和V1求出。依据标准ISO 15623 Intelligent transportsystems-Forward vehicle collision warning systems-Performance requirements and test procedures,算法提供两种预警,即二级碰撞预警(1.1≤TTC<3.5 s)和一级碰撞警告(TTC<1.1 s),该预警算法流程如图4所示。

图4 基于多信息融合的预警算法流程

4 实车试验

4.1 实车试验效果图

选择在白天正常光照条件下的城郊和城市道路上进行实车道路试验。系统硬件平台为Intel(R)Core(TM)i7-4720HQ CPU@2.60 GHz,8 GB RAM的计算机,软件环境为VS2010开发平台下OpenCV 2.4.8,实车试验效果如图5所示。

图5 实车试验效果图

图5a中TTC>3.5 s,此时本车处于安全状态,前方车辆已被检测出,但预警系统不报警;图5b中TTC在1.1~3.5 s之间,且横向距离较小,启动二级碰撞预警。

4.2 试验及结果分析

4.2.1 前方车辆检测试验

从城郊和城市道路上采集的视频中各截取400帧图像数据用来测试车辆检测的效果。将车辆检测率(Detection Rate,DR)和车辆误检率(False Positive Rate,FPR)[14]作为评价前方车辆检测算法优劣的准则。DR和FPR的表达式为:

式中,TP为实际被检测出的车辆数;FN为实际没被检测出来的车辆数;FP为实际被误检为车辆的数量;TN为实际未被误检成车辆的数量。

两种道路上前方车辆检测结果如表1所列,其中GT为实际车辆总数。

表1 两种道路上前方车辆检测结果

为验证所提出的前方车辆检测算法的先进性,将该算法与几种经典的车辆检测算法进行对比,结果如表2所列。由表2可知,前3种检测算法虽然检测率较高,但检测速度太慢;后4种算法虽然实时性很好,但检测率或误检率达不到要求。对比可知,本文所提出的前方车辆检测算法的综合性能最优。

表2 不同检测算法试验结果对比

4.2.2 测距试验

考虑到实时视频的测距过程能够等效成数帧静态图像的测距过程,因此采用静态测距试验来验证基于几何模型的前方车辆测距算法的可行性,表3为静态试验获得的测距结果。由表3可知,横、纵向距离的测量误差都不超过5%,达到了较高的测量精度。

表3 静态测距试验结果

4.2.3 前方碰撞预警试验

为验证所提出的前方预警算法的可靠性,利用所有实车试验数据对基于多信息融合的前方碰撞预警算法进行验证。以接近前车时驾驶员释放加速踏板和制动动作的数据为基础,计算每次接近前车的过程中每一时刻的碰撞时间TTC,再通过前撞预警算法得到两级报警时刻,将算法得出的报警时刻与车载设备记录的驾驶员实际动作时刻进行对比[17]。表4为基于多信息融合的前方碰撞预警算法与基于TTC的前方碰撞预警算法的试验结果对比。由表4可知,基于多信息融合的前撞预警算法的报警率高于TTC预警算法,且误警率和漏警率都低于后者,尤其是误警率降低很多。

表4 两种前撞预警算法试验结果对比 %

5 结束语

本文提出了一种基于OpenCV的前方车辆检测和碰撞预警算法,通过提取Haar-like特征和GAB级联训练得到分类器识别前方车辆,并利用Kalman滤波跟踪前方车辆,结合多种信息提出了多信息融合的前方碰撞预警算法。试验结果表明,所提出的前方车辆检测算法的综合性能优于多种经典算法,前撞预警算法的判断准确性较高,能够满足实际道路上防撞预警的要求。

1 马钧,曹静.基于中国市场特定需求的汽车先进驾驶辅助系统发展趋势研究.上海汽车,2012,4(9):36~40.

2 Izumi T,Kikawa M,Hase S,et al.Forward vehicle tracking based on shadow detection.Proceedings of the SICE Annual Conference,2007:1449~1453.

3 Jazayeri A,Cai H,Zheng J Y,et al.Vehicle detection and tracking in car video based on motion model,IEEE Trans.Intell.Transp.Syst,2011,12(2):583~595.

4 Wang Hai,Zhang Weigong,Cai Yingfeng.Design of a road detection system based on monocular vision.Journal of Southeast University(English Edition),2011,27(2):169~173.

5 徐豪.汽车主动防撞预警系统规避控制研究:[学位论文].长春:吉林大学,2012.

6 孙晓艳.基于单目视觉的夜晚汽车前撞预警系统研究:[学位论文].西安:西安工业大学,2013.

7 周松盛,何天明,张明涛,等.简易安全车距和高速公路安全视距计算模型.北京汽车,2009(2):35~38.

8 陈益如.基于视觉的行人检测算法研究及系统设计:[学位论文].杭州:浙江大学,2014.

9 Friedman J,Hastie T,Tibshirani R.Additive logistic regres⁃sion:a statistical view of boosting.The Annals of Statistics,2000,28(2):337~407.

10 Lienhart R,Kuranov A,Pisarevsky V.Empirical Analysis of Detection Cascades of Boosted Classifiers for Rapid Object Detection.Lecture Notes in Computer Science,2003,2781:297~304.

11 张玲增.基于多特征的前方车辆检测与跟踪方法研究:[学位论文].镇江:江苏大学,2010.

12 Yoshikawa N.spatial position detection of three-dimension⁃al object using complex amplitude derived from Fourier transform profilometry.Meeting on Information Photonics,2005:1~3.

13 王牛,李祖枢,武德臣,等.机器人单目视觉定位模型及其参数辨识.华中科技大学学报,2008,36(10):57~60.

14 Wu C,Cao X,Lin R,et al.Registration-based Moving Vehicle Detection for Low- altitude Urban Traffic Surveillance.lntclligcnt Control and Automation(WCICA),2010,20(1):373~378.

15 Wang CCR,Lien JJJ.Automatic Vehicle Detection Using Local Features-A Statistical Approach,IEEE Transactions on Intelligent Transportation Systems,2008,9(1):83~96.

16 Ali S,Shah M.A supervised learning framework for generic object detection in images,Proc.IEEE CVPR,San Diego,CA,USA,2005,2:1347~1354.

17 Gall J,Lempitsky V.Class-Specific Hough Forests for Object Detection,Proc.IEEE CVPR,Miami,Florida,USA,2009,1022~1029.

(责任编辑 文 楫)

修改稿收到日期为2016年12月20日。

Research on Preceding Vehicle Detection and Collision Warning Method Based on OpenCV

Liu Jun,Gao Xueting,Wang Liming,Yan Xiaojuan
(Jiangsu University,Zhenjiang 212013)

A preceding vehicle detection and multi-information fusion warning method based on OpenCV was proposed for the rear-end collision accident,that utilized Haar-like+Gentle Adaboost to detect preceding vehicles rapidly,and used the Kalman filter principle to track these vehicles.Geometric model was used to calculate the lateral and longitudinal distances in real-time with the preceding vehicle,then vehicle speed and the preceding vehicle speed,collision time TTC and lateral distance,etc.,were compared with threshold value to identify the risk of collision.The experimental results show that the proposed detection method can detect preceding vehicles in about 22 ms per frame with an accuracy of 96%,and can measure the vehicle distance accurately to realize reliable front collision warning output.

Preceding vehicle detection,Collision warning,Kalman filter,Multi-information fusion

前方车辆检测 碰撞预警 Kalman滤波 多信息融合

U461.91

A

1000-3703(2017)06-0011-06

江苏省高校自然科学研究重大项目(13KJA580001)。

猜你喜欢
测距分类器坐标系
基于RSSI测距的最大似然估计的节点定位算法
学贯中西(6):阐述ML分类器的工作流程
独立坐标系椭球变换与坐标换算
基于朴素Bayes组合的简易集成分类器①
基于动态分类器集成系统的卷烟感官质量预测方法
一种自适应子融合集成多分类器方法
基于单片机的超声波测距导盲杖设计
直流系统行波测距的误差分析
基于VMD和TEO的高压输电线路雷击故障测距研究
坐标系背后的故事