张 涛,陈万培,乔延婷,陈舒涵
(扬州大学 信息工程学院,江苏 扬州 225009)
汽车作为人们的日常交通工具,其安全性是人们的首要关注点。汽车安全技术可分为主动安全技术[1-2]和被动安全技术[3-5]。传统的汽车安全保障措施如安全气囊是一种被动安全技术,即在发生事故时汽车才会做出相应处理,对驾驶员和乘客进行人身保护。相比被动安全技术,汽车主动安全以其对事故的预测能力及事故避免能力正在飞速发展。现如今,自动驾驶技术[6-7]已经成为汽车领域的大热话题,自动驾驶是汽车主动安全技术十分成熟的产物,没有汽车主动安全技术的保障,自动驾驶技术也不会存在。特斯拉公司作为世界著名的电动能源车制造商,其汽车自动驾驶技术的研发也走在了各车企的前面。同样,谷歌、百度等传统车企以及各高等院校也相继投入人力和物力进行自动驾驶汽车的研发。由中国汽车技术研究中心举办的智能车大赛就是自动驾驶技术的一次盛会。自动驾驶由前期的辅助驾驶[8-9],发展为半自动驾驶[10-11],并最终成为汽车完全自主控制的自动驾驶。本文讨论的Haar检测技术[12-13]是辅助驾驶中车辆检测的一种检测方法,Haar检测技术在目标检测中运用相当广泛,但同时也显露出检测速度慢、实时性差的弊端。本文对Haar检测进行简单介绍,并提出新的检测逻辑以改善Haar特征在车辆检测中的应用,对车辆检测速度进行一次较大的提升。
Haar检测前期工作集中于样本收集和分类器训练。样本收集分为正样本收集和负样本收集,正样本是像素清晰的车尾部图片,负样本是行车环境周围非车辆图片。样本收集的数量越多,质量越好,训练的分类器分类效果就越好。最终进行检测用的分类器是由多个强分类器级联组成的级联分类器,每一个强分类器又是由多个弱分类器组成。在进行车辆检测时,算法接收到输入的图片,用一个滑窗去遍历图像,每一次遍历都会进行一次分类器训练,分类器通过则代表该滑窗有车,不通过代表无车;若该尺寸滑窗遍历完整张图片都未找到车辆,则改变滑窗大小重新遍历检测,以此类推。车辆检测原理如图1所示。
图1 车辆检测原理
由图1可以看出,车辆检测算法运行缓慢的原因在于算法进行了大量的无效滑窗运算。车辆在图像中的大小受摄像头安装因素、车辆实际大小因素的影响,滑窗进行运算时由最小滑窗到最大滑窗进行遍历搜索,理想情况下如果存在车辆,算法可以较快给出检测结果。但是,假设一幅图中不存在车辆,那么算法需要运行所有滑窗,这段时间可达几十秒,足以带来很多的安全隐患。
本文设计的Haar检测提速方法,将车辆实际大小、车速以及安全距离列入算法考虑范围,对有可能发生碰撞的区域进行了特定滑窗运算,非碰撞区域不进行滑窗检测,这样将大大提高车辆检测速度。由于安全距离在图像中是以像素高度这一因素来体现,所以首先要建立实际坐标系与像素坐标系的映射关系,运用相机标定技术[14-16]在不同车速情况下快速定位到需要检测的图像高度范围;由相机标定参数可以得到需要检测的图像高度信息,在该区域内设定特定的图像检测框进行检测,实现车辆的快速定位。整个系统的运行流程如图2所示。
图2 系统流程
相机标定主要标定俯仰角、侧倾角、方向角和安装位置几个参数,在本文提出的系统中,只进行俯仰角的标定,其他参数在安装时按照安装要求进行操作,为已知参数。上文已经提到过车辆在行驶途中,安全距离这一因素在图像中体现在像素高度上,而摄像机的俯仰角对成像图中感兴趣区域的高度位置影响最大。
摄像机进行标定时,利用标定靶面进行俯仰角标定,标定模型如图3所示。设摄像头在车中的安装高度为H1,标定靶面距离摄像头安装位置纵向距离为L,如果摄像头安装位置相对地面水平,即俯仰角为0°,由标定靶面上标定线之间的实际距离与成像图中的像素距离可以得到图像坐标系与实际世界坐标系的比例关系k,由标定靶面与摄像头高度差结合比例k可以计算得到标定靶面上标定参考线理论上在图像中的像素坐标系位置。
图3 标定模型
若摄像头安装存在俯仰角,则标定靶面在成像中的像素坐标系位置就会改变,设俯仰角为0°时标定靶面参考线在图像坐标系中的高度为H,俯仰角为θ时标定靶面参考线在图像坐标系中的高度为h,如图4所示。根据H与h的差值Δh和比例k得到因俯仰角θ引起的高度偏差ΔH′,由ΔH′和标定靶面到摄像头距离L可以计算出俯仰角θ,其具体计算步骤见式(1)~式(3)。
(1)
ΔH′=Δh·k·δ,
(2)
(3)
图4 成像模型
其中,δ为摄像机镜头引起的畸变系数,本系统采用的相机畸变较小,参考线距离较近,结合实际应用中俯仰角误差对图像高度选取的影响,采用同一个畸变系数进行俯仰角标定。
2.2.1 滑窗尺寸设定
Haar检测的原始算法是从小尺寸滑窗到全尺寸滑窗依次遍历,例如一幅720*480的无车图像,需要在全图从24*24尺寸窗口到480*480尺寸窗口遍历检测一遍,这样完整的一幅图运算结束大约需要30 s的时间,严重影响了系统的性能。
从上述分析来看,要想提高算法的运行速度,最根本的方法是减少不必要的滑窗运算。法规规定,中国轿车标准宽度在1.6~1.8 m,极限情况下卡车宽度不大于2.4 m,轿车宽度不小于1.5 m。结合本系统的摄像头选型分析,对前方不同纵向距离区域的横向距离进行了像素分析,表1给出了不同距离时,根据法规规定的车宽实际需要检测的最小车宽与最大车宽滑窗尺。
表1 检测尺寸对照表
纵向距离/m横向距离/m像素间距最小车宽像素最大车宽像素87.8650125217157.850097167207.837673126257.831060104
对数据进行分析,如图5所示。可以看出横向距离与像素宽度近似线性结构。在进行滑窗检测时可根据具体行坐标,计算出该行应检测的最小最大滑窗尺寸,这样可大大减少不必要的运算。
图5 车宽车距关系
2.2.2 检测区域设定
上文已经利用减少滑窗窗口的办法对算法进行了提升,本节将从感兴趣区域选取上对算法再次优化,减少不必要的运算,提升系统的实时性性能。Haar原始检测算法针对全图进行遍历搜索,在车载相机的图像里,很大一部分为天空,这部分区域是不存在车辆的,如果仍然检测,将会耗费很长的时间;另一方面,车辆检测主要针对碰撞预警算法[17-18],而非本车道行驶的车辆是不存在与本车发生碰撞危险的,所以这部分区域也不列入感兴趣区域检测范围内。
考虑到相邻车道会有并入车道的倾向,将车辆检测的感兴趣区域设置为1.2倍车道宽度区域,即摄像头采集画面中,根据本车行驶车道的车道线信息,向左右两侧延伸一定像素距离,达到提前检测并入车道车辆的功能,实现提前预警。经改善后的Haar检测算法运行步骤如下:
① 获取车道线方程Line1,Line2;
② 设置感兴趣区域边界线方程Leftline,Rightline;
③ 获取本车车速Vcar;
④ 设置感兴趣区域上下边界Rowup,Rowdown;
⑤ 设置滑窗尺寸及比例系数;
⑥ 滑窗遍历感兴趣区域检测车辆。
为了证明所提方案的可行性,系统进行了实车测试,分别采集了50帧图像对相机标定精度和算法改善情况进行数据分析。图6为相机标定精度分析,图7为Haar检测算法改善前后对图像检测时间的分析。从数据折线图可以看出,相机标定满足精度要求,Haar改善算法也大大缩减了图像检测时间,由秒级降低到了毫秒级,满足系统对实时性的要求。
图6 测量标定数据对比
图7 算法时间提升验证
通过对滑窗尺寸的设定以及兴趣区域的合理划分,将车辆检测中Haar检测算法做了一定的优化,在不漏失有潜在碰撞危险车辆的前提下,将原始的每幅图30 s提升到约每幅图200 ms,大大提高了系统运行的实时性。但是,本次算法性能的提升只是针对训练好的分类器,如果分类器加入新样本重新训练,在分类器改变的情况下也许会有实时性的损失,有待后续进一步研究。