单目视觉的前车位置识别及安全车距监测

2022-06-16 00:31张欣魏志恒王兵
关键词:虚线车速坐标系

张欣,魏志恒,王兵

(1.河北大学 电子信息工程学院,河北 保定 071002;2.河北大学 数学与信息科学学院,河北 保定 071002)

在自动驾驶系统中,为了让汽车能够安全行驶,避免追尾事故的发生,需要对前车以及前车所在位置进行识别,判断其是否为监测车辆;再对本车与前方监测车辆之间的车距进行检测,并结合当前的车速与交通法规判断本车与前方监测车辆之间是否为安全距离.这些问题是自动驾驶领域中的研究热点之一.

针对车距检测,主要基于单目视觉[1-2]、双目视觉[3]、多目视觉[4]、雷达[5-6]等方案.程瑶等[1]根据车牌在图像中像素的数量实现车距的测量.梁炳春等[2]根据摄像机的小孔成像原理,通过坐标变换的方式,将平面图中的位置关系换算为真实距离.马朝阳等[3]基于双目视觉获取目标物的深度信息对车距进行检测.佘彩云等[4]基于多目视觉,相比于双目视觉提升了精度,增强了对不同环境的适应能力.张海焕等[5]基于超声波雷达进行测距.黄智勇[6]基于毫米波雷达进行测距.针对车速检测问题,主要基于单目视觉[7]、双目视觉[8]、定位技术[9-10]等.顾柏园[7]基于单目视觉,通过检测一段车道线通过特定区域所需时间来计算车速.张书佩[8]基于双目视觉,利用双目相机的图像进行三维还原,并计算其运动速度.祁昊等[9]应用了GPS定位技术进行测速.孙培嘉等[10]应用了北斗定位技术进行测速.

本文针对前车位置识别及安全车距监测提出了一种单目视觉下的解决方案,相比于双目视觉、多目视觉以及雷达和定位系统等方案,更简单方便,成本低.首先,通过单目摄像机拍摄的视频图像中前方所有车辆的轮廓与本车道及同向车行道分界线是否相交确定是否为监测车辆.其次,依据国家标准规定的可跨越同向车行道分界线(以下简称白色虚线)长度及间隔,根据白色虚线的两端点在像素坐标系及空间坐标系中的长度,构建转换模型,计算前方监测车辆与本车的真实车距.最后,根据白色虚线在视频图像帧中的位置变化计算本车的行驶速度,并依据交通法规判断本车与前方最近的一辆监测车辆之间是否为安全距离.

单目视觉下的前车位置识别及安全车距监测系统分为4个主要部分:系统校准、前车位置识别、车距检测、车速检测.系统流程如图1所示.

图1 安全车距监测系统流程Fig.1 Safety distance monitoring system flowchart

1 算法描述与分析

1.1 前车位置识别

识别前车与本车是否处于同一车行道或压线位置.首先在如图2a所示的单目视频帧图像中,使用车道分界线识别算法[11]提取本车所在车道的同向车行道分界线二值图,如图2b所示;然后使用车辆识别算法[11]识别前车,并使用Canny算子提取前车轮廓,如图2c所示;最后设本车道及车道分界线像素点坐标集合为Φ1,前车轮廓像素点坐标集合为Φ2,当Φ1∩Φ2≠Ø时,前车为监测车辆.监测车辆判定标准如表1所示.

a.原图;b.同向车道分界线二值图;c.提取前车轮廊.图2 前车位置识别过程Fig.2 Vehicle ahead position recognition process

表1 监测车辆判定标准Tab.1 Monitored vehicle determination criteria

1.2 车距检测

车距检测即从图像中的像素车距计算出真实空间的车距.因此,需要构建图像的像素坐标系与道路空间坐标系的对应关系转换模型.图3b为像素坐标系示意图,采用图像视角,y轴的单位为与原点之间的像素数量;图3c为空间坐标系示意图,采用三维空间俯视视角,Y轴的单位为与原点之间的空间实际距离.以本车参考点作为两坐标系的共同原点.

a.原图;b.像素坐标系示意;c.空间标系示意.图3 白色虚线在不同坐标系中的示意Fig.3 Diagram of the white dotted line in different coordinate systems

从原点开始将图像中本车道右侧(左侧同理)每一条白色虚线的两端点的y坐标分别记为A、B、C、D、E、F、G、H.根据国家标准GB5768.3—2009《道路交通标志和标线 第3部分:道路交通标线》[12]中的白色虚线在空间坐标系中的实际距离(设计速度小于60 km/h的道路为2 m,不小于60 km/h的道路为6 m),以及白色虚线各端点在像素坐标系中的坐标,拟合得到空间实际距离与像素坐标系的纵坐标近似为指数函数关系,如图4所示,由此得到像素坐标系与空间坐标系的模型转换经验公式为

图4 实际距离与像素坐标系纵坐标对应曲线Fig.4 Curve of the real distance and the Y-coordinate of the pixel coordinate system

Y=iy-1,

(1)

其中,Y为空间坐标系中纵坐标;y为空间坐标系中的点在像素坐标系中的纵坐标;i为待拟合参数,与摄像机的安装角度有关.

1.3 车速检测

根据交通法规规定,不同的车速下要保持不同的安全车距.因此在获得本车与监测车辆的车距基础上,要对本车进行车速检测.

单目视觉图像中可以持续作为车速检测参照物的只有白色虚线,而在只有白色实线(不可跨越同向车行道分界线)的情况下,按定速巡航处理.以图像最底端白色虚线的上端点为参考点,如图5中点S1、S2所示,通过2相邻图像帧中参考点在像素坐标系中的纵坐标变化,结合2帧间隔时间t,代入公式(2)中计算本车在单位时间内的平均车速近似瞬时车速v.

图5 白色虚线参考点在两相邻图像帧中的位置变化Fig.5 Reference point of the white dotted line in two adjacent image frames

v=(iyS1-iyS2)/t.

(2)

1.4 系统校准

在上述车距检测和车速检测的过程中,需要确定本车原点O和参数i,而单目摄像机在不同的汽车上的安装角度都会导致本车参考点的位置和图像比例发生变化,因此在安装后必须要进行系统校准.

系统校准方法是汽车在有白色虚线的公路上以一个固定车速匀速行驶,为了与25帧/s的视频帧率匹配,建议车速为40 km/h或80 km/h.首先根据图像底部的本车边缘确定本车原点;然后确定当前道路的白色虚线长度;再根据白色虚线上下端点在像素坐标系中的坐标求得i值.具体步骤如下所示:

步骤1确定本车原点.从绝对安全的角度考虑,要保证检测距离小于或等于实际距离,因此将图像底部本车边缘的上端点作为本车原点,如图6中点O所示.这就要求设备在安装的过程中必须要在图像底部露出一部分本车边缘,才能够保证系统的正常校准,否则无法确定本车原点的位置.

图6 本车参考点位置Fig.6 Position of this vehicle reference point

步骤2确定当前道路的白色虚线长度d.国家标准[12]中规定白色虚线的长度只有6 m或2 m 2种情况,因此假设当前道路的白色虚线长度为6 m,输入当前的估值车速,计算以该车速行驶6 m所需的时间,经过该时间之后若白色虚线的上端点位于之前下端点的位置附近,则当前道路的白色虚线长度为6 m;如果位于之前下端点位置以下一段距离,则当前道路的白色虚线长度为2 m.

步骤3计算i值.根据白色虚线的两端点A和B在像素坐标系中的纵坐标,结合步骤2得到的当前道路白色虚线的长度d,代入公式iyB-iyA=d,求得i值.

2 实验分析

实验数据共选取了50段用同一车载单目摄像头拍摄的短视频,每段视频中本车都以不同的车速匀速行驶,每段视频的时长在10 s左右,视频格式为avi,分辨率为960*540.实验硬件为Intel(R) Core(TM) i5处理器,2.50 GHz主频,8 G内存,操作系统为Windows10,软件环境为Matlab R2016a,编程语言为Matlab.

2.1 前车位置识别实验

根据《中华人民共和国道路交通安全法实施条例》[13]第八十条规定,机动车在高速公路上行驶,车速超过100 km/h时,应当与同车道前车保持100 m以上的距离,车速低于100 km/h时,与同车道前车距离可以适当缩短,但最小距离不得少于50 m.因此至少要对距离本车100 m以内的前车位置做出准确的识别.考虑到不同距离的前车位置识别准确率会有所不同,因此分别对50 m以内、50~80 m、80~100 m的前车位置识别准确率进行统计,如表2所示.

表2 前车位置识别结果Tab.2 Position recognition results of the vehicle ahead

2.2 车距检测实验

采用本文方法检测车距的结果如图7a所示,当i值固定时,随着车距的增大,测量结果与实际距离之间的误差也在加大.因此在实际应用当中,依据实测数据对式(1)进行分段校正,将像素坐标系中公路所在区域依照实际距离平均分成5段,每段确定一个平均i值,最终的检测结果如图7b所示.为了保证绝对安全的车距,要对车距计算结果进行修正,在校准阶段计算每段的最大绝对误差作为该段的修正值,如表3所示.在实测过程中用计算结果减去该段的修正值,使得检测的距离一定小于等于实际距离.

a.固定i值检测结果;b.分段i值检测结果.图7 车距检测结果Fig.7 Detecting results of vehicle distance

表3 各段最大绝对误差Tab.3 Maximum absolute error of each segment

2.3 车速检测实验

由于在公路上行驶车辆的车速通常是渐变的,故利用短时间内的平均车速代表瞬时车速.本文算法中的最小时间单位是视频中相邻2帧图像的拍摄间隔时间,每1帧图像计算1次车速;每计算1次车速后,将车速值放入一个集合中,当集合中的元素累计达到5时,计算集合中所有元素的平均值作为当前的瞬时车速;清空集合,再将下一帧测得的车速放入集合中,如此循环.使用本文方法检测得到的车速与实际计算车速的最大绝对实验误差约为2.70 km/h .为使检测结果有益于安全驾驶,对计算结果进行修正,使检测车速大于等于实际车速,计算得到的车速值均为正误差.

3 结论

本文为使用单目视觉进行前车位置识别、车距检测及车速检测提供了一种新的解决方案.通过实验分析,该解决方案可以有效地识别前车位置、监测安全车距并降低系统成本,并且由于能够根据视频图像中白色虚线端点在像素坐标系和空间坐标系中的位置拟合模型参数i值,解决了单目视觉系统对不同车型及摄像机不同安装角度的适应性问题.接下来的主要工作目标是改进算法,进一步提高系统的实时性和精度.

猜你喜欢
虚线车速坐标系
独立坐标系椭球变换与坐标换算
某轻卡定速巡航车速稳定性优化设计
极坐标系中的奇妙曲线
基于纯电动汽车平台的定速巡航系统设计与研究
轻度火力
三角函数的坐标系模型
跑跑卡丁车
求坐标系内三角形的面积
《早安,威利先生》拼装图