高速路的车道检测与车辆跟踪①

2020-03-23 06:05刘金清陈存弟
计算机系统应用 2020年2期
关键词:灰度车道粒子

刘金清, 陈存弟

1(福州外语外贸学院, 福州 350202)

2(福建师范大学 光电与信息工程学院 医学光电科学与技术教育部重点实验室, 福州 350007)通讯作者: 刘金清, E-mail: 2060008441@qq.com

自动驾驶是智能交通的必然产物, 而机器视觉感知技术是自动驾驶中的“眼睛”, 它能够通过对无人驾驶车辆所在的路面车辆动态图像进行智能识别以实现安全驾驶.本文主要研究无人车所在路面的车辆动态图像的智能识别技术, 基于嵌入式平台选择适用于高速路的车道检测、车辆监测和跟踪算法.

近些年, 车道检测和车辆跟踪技术的进步得益于国内外学者广泛的关注与研究.车道检测技术有: 基于逆透视变换的方法[1,2], 基于Hough 变换的方法[3,4], 基于抛物线的方法[5], 基于B 样条曲线的方法[6,7].

适用于车辆检测的目标检测算法主要以深度学习算法为主, 如以CNN 结构为基础的AlexNet、GoogleNet、LeNet[8]、VGG、ResNet 等算法, 而这些算法需要高性能CPU+GPU 作为训练和运行载体, 因而并不适用于嵌入式平台上的实时性要求.基于Adaboost 分类器简单且运算量较小, 较容易移植到嵌入式平台.

基于动态背景下的车辆跟踪方法有: 基于卡尔曼滤波KF (Kalman Filter)的车辆跟踪[9,10], 基于扩展卡尔曼滤波EKF (Extended Kalman Filter)的车辆跟踪[11],基于均值漂移(Mean-Shift)的车辆跟踪[12], 基于粒子滤波PF (Particle Filter)的车辆跟踪[13,14], 基于核化相关滤波KCF (Kernelized Correlation Filters)的车辆跟踪[15],基于一种新的单目标长时间跟踪TLD (Tracking Learning Detection)的车辆跟踪[16], 基于多示例学习MIL (Multiple Instance Learning)的车辆跟踪[17,18].本文选用适用于多目标跟踪且非线性系统的粒子滤波算法来实现车辆跟踪.

1 车道检测

1.1 基于路面与分道线灰度级之差实现车道分割

车道经过摄像机成像后, 由原先三维空间中的客观物体投影在二维空间上, 车道线不可避免地在图像中出现透视效果.针对任意的分辨率图像, 如本文处理的路面图像大小为480×320, 在算法设计时先设置分道线最大宽度为 ML W=0.1×IW=48个 像素, 其中 IW表示图像宽度.假设路面的ROI 区域高度为 RO I_H, 那么从ROI 区域的底部到消失点所在的行数, 其分道线宽度的变化可用(1)表达式表示:ROI 区域内, 针对第i 行的LW, 计算坐标( c,r)点的灰度值与 (c- LW,r) 点灰度值之差diffL和坐标为( c,r)点和(c+LW,r)点的灰度值之差diffR, 再综合diffL和diffR的

利用式(1)和式(2)遍历原图I, 可表述为: 在差值来重定义原来的灰度图.

图1(a)为重新定义的灰度图F, 图1(b)为二值化的结果.

图1 自适应阈值二值化

1.2 基于路面与分道线灰度值之差的自适应阈值法

图2 中, 白色横线处的灰色分布如图3 所示, 分道线的灰度值与路面灰度值之差约为100.利用式(3)扩展得到式(4), 车道分割自适应阈值Th 就为:Th=I(c,r).data/2, 接下来使用Th 对图像F 进行二值化处理, 得到图1(b)结果.

图2 路面上白色横线

图3 白色横线路面灰度值

1.3 基于车道轮廓特征提取分道线

成像路面不但包含有真正的分道线, 而且还有伪分道区域, 要想拟合出正确的分道线, 就必须剔除伪分道线.如图4 所示, 分道线经过相机系统投影成像后,分道线表现有如下特征:

图4 车道最小矩形模型

(1)分道线是细长的连通域.

(2)求白色连通域的最小矩形, 可知道其与水平边的夹角控制在一定的范围内, 夹角范围为 θ ∈ [20,70].

(3)白色连通域所含的像素数不可能很小.

(4)分道线质心所在的行不小于图像高度的2/3.

本文使用Suzuki S 提出的轮廓提取算法[19]寻找二值图的轮廓, 首先提取二值图连通域轮廓, 接着提取每个轮廓的最小矩形, 同时计算每个连通域最小矩形的质心, 根据以上的4 点特征, 过滤掉多余的伪分道线.结果如图5 所示.

1.4 拼接断裂的分道线

高速结构路面上同向车道经常被分成几条车道,由虚线、实线、虚实线和双实隔开.为了避免在分道线拟合时同一车道错误识别为多条车道, 有必要对断裂的车道线进行合并.图6 为合并示意图.

图5 车道分割结果

图6 车道拼接示意图

(1)断裂的分道线或虚线分道线, 其连通域之间是上下关系, 加上相机系统投影成像后出现透视效果的原因, 行间距相差不大: | y1-y2|<T1.

(2)最小矩形与水平线的角度θ 相差不大:|θ1-θ2|<

(3)根据最小矩形的质心和t anθ求得的直线表达式能以最短的距离交于彼此的最小矩形区域.如图6(b)中 L1和 L2的延长线彼此相交于最小矩形.

(4)针对虚实分道线或者双实分道线, 依据两个连通域最小矩形与水平线的夹角不大15°的规则:|θ1-θ2|≤15, 提取斜边最长的连通域作为最终的分道线.

如图7 所示, 分别是断裂分道线的连接结果和多余分道线连接结果.

1.5 基于线性方程和样条曲线的分道线拟合

针对车道中的直线分道线部分, 用直线方程拟合,而对于车道中曲线分道线部分, 采用的是基于Catmullrom[6]的样条曲线拟合.

(1)斜截式:y=kx+b

(2) Catmull-rom splines

Catmull-rom 样条曲线实质上是三次多项式(式(5)).假设有两点 pi和 pi+1, 且已知两点对应的导数为和 pi+1′, 根据 pi、 pi+1、 pi′和 pi+1′计算处多项式的系数 aj, j=0,1,2,3 , 便可拟合两点的曲线.本文将 pi和pi+1相 邻两点的斜率作为 pi′和 pi+1′导数, 得到样条曲线的表达式(6).从式(6)可以看出, 如果要拟合两点之间的曲线, 则须知道4 个坐标点.

(3)直线方程拟合车道

车道上用于Catmull-Rom 拟合的点模型如图8 所示.取接近图像底部的两点计算出直线方程, 并延伸到车道图像的底边缘.拟合结果如图9 所示, 延长直线即是以直线方程拟合的结果.

图7 分道线提取结果

图8 曲线拟合点模型

图9 车道直线部分

(4) Catmull-spline 拟合曲线车道

取 p1, p2,p3,pv作为Catmull-spline 算法的拟合坐标点, pv是 p2和 p3的线性方程延长点, 因此拟合出来的样条曲线能经过 p1, p2,p33 点, 如图10 所示.

图10 弯曲车道拟合

1.6 基于HSV 空间和Sobel 边缘提取的单车道分割

针对无人车在高速路上不变更车道或者不超车的情况下, 只检测当前行驶车道, 既能降低路面车道检测算法的复杂度, 又能提高运行速度和检测的准确度.本文基于HSV 颜色空间和Sobel 梯度设置一定的阈值范围来分割单车道.

1.6.1 路面图像二值化

如图11 为车道图像的RGB 空间图像和HSV 空间图像.图12(a)是Sobel 水平方向边缘图.根据HSV颜色空间特性和Sobel 边缘特性, 各自设定特定的阈值, 便可以得到分割出路面的二值图.经过大量的实验数据比较, 本文设定S 通道灰度值在 S g ∈[170, 255],V 通道灰度级设定在 Vg∈[30,255], Sobel 图灰度值转成 [0, 255] 范围后设定的灰度阈值为 S bg∈[65,100], 如果满足关系则认为是分道线.如图12(b)所示即是分割后的路面二值图.

图11 HSV 颜色空间各通道图

图12 车道二值化图像

1.6.2 基于透视变换提取分道线坐标点

基于透视变换提取分道线坐标点的步骤如下:

(1)车辆的视觉传感器安装后位置方向均固定不变, 因此, 可以根据拍摄到的路面图像, 预先设定车道的ROI 区域.如图13(a)所示.

图13 寻找透视空间车道点

(2)设定ROI 区域主要是用在二值图中, 对ROI区域透视变换, 如图13(b)所示.

(3)在透视空间寻找分道线的坐标点.将透视空间分成左右两半, 分别以小矩形滑动窗口的方式遍历出左右分道线的坐标点.滑动窗口自下往上计算在滑动窗口中的投影值, 取投影值最大的列和窗口底边所在的行作为透视空间中的分道线坐标点, 如图13(b)的红点.

1.6.3 基于二次多项式拟合分道线

选用二次多项式来拟合分道线.对于多项的求解,可定义为对给定的一组数 (xi,yi),i=0,1,···,m, 求次数不超过m 的多项式(7)且满足差平方之和最小式(8):

根据式(8)求得系数 ai得到 Pn(x)即是最小二乘拟合的多项式.如图14(a)所示, 红点表示原来提取到的点, 蓝点所示二次多项式拟合后的点.将透视空间的坐标点逆变换到原图像上, 其结果如图14(b)所示.

图14 单车道透视结果

2 车辆检测

2.1 基于Gentle-Adaboost 的车辆检测

本文检测车辆是基于HOG+Adaboost[20]分类算法和基于车底阴影特征相结合的方法.

车辆检测框图如图15 所示.

图15 车辆检测框图

HOG 相关参数:

① cell 单元为8×8 像素;

② [ 0,2π]划分成9 个bins;

③ 设置block 大小为16×16 像素, 滑动步长为4×4.

每个cell 的特征矢量维度为9, 2×2 个cell 组成block 对应的特征矢量维度为36.所有待训练的车辆图像均尺度缩小为32×32, 且block 的滑动窗口步长为4,因此一幅图像的HOG 特征维度为36×7×7=1764.将特征向量输入由多个强分类器组成的Cascade[21]分类器,得到最终的分类结果.车辆检测结果图16 所示.

图16 车辆检测结果

2.2 车辆校验

为了过滤Adaboost 算法的误检区域, 引入车底阴影的方法作为车辆的校验, 同时能找到车辆底部与路面的交线, 有助于建立三维模型精确计算车距.

2.2.1 提取车辆区域子图并二值化

对2.1 节得到的车辆矩形框放大一倍得到车辆区域子图 Fbw, 接着依据结构路面上分道线与路面的灰度级分布近似呈正态分布的规律, 计算出相应的阈值来二值化车辆区域子图.本文二值化方法如下:

(1)高速路面上的安全车距一般保持在50 米以上,因此在图像底部设定一个ROI 区域能够确保仅包含有路面而不会包含其他车辆, 称该子图为 Fl, 如图17 所示.

图17 F l 子图

(2)灰度化 Fl, 计算灰度均值μ 和路面方差 σ:

(3)统计路面像素点: gσ(x,y)∈[μ-σ,μ+σ], 然后求像素点的均值 μσ和方差σσ:

图18 二值化

2.2.2 提取车底阴影与路面的交线

本文根据以下规则来提取车底阴影与路面交线:

(1)在图 Fbw下半区域寻找车底阴影块.如图19(a)所示, 车底阴影的上下线分布关系为:

(2)遍历所有独立阴影区域的最小列 mi n_L、最大列 ma x_R 和最大行 ma x_D, 两两比较独立阴影区域的最大行y 间距, 满足式(12)关系则合并为一个阴影区:

(3)计算 ma x_R 和 mi n_L之差, 如式(13), 其差值大于 Fbw宽1/4 的阴影区域可初步设定为车底阴影.

(4) max_R 和 mi n_L之差最大时作为阴影与路面的交线, 如图19(b).

(5)对于不能在(1, 2, 3, 4)验证规则中找到阴影区域的矩形框认定为非车辆区域.结果如图19(c)和图19(d)所示.

图19 检测结果

3 基于粒子滤波的车辆跟踪

相机以30 f/m 的速度采集, 且车辆在高速路上行驶的最高速度为120 km/h, 最低速度为60 km/h, 故可计算出帧间车辆行驶的距离为(0.55-1.11) m, 可引入跟踪算法.粒子滤波是一种基于蒙特卡洛方法, 其核心思想是从后验概率中抽取随机状态粒子来近似蒙特卡洛积分, 进而估计出下一个跟踪状态.该方法切合于所有能用状态空间模型表示的非线性系统, 滤波过程中抽取的随机状态粒子可以逼近最优估计的精度.

3.1 目标模型描述

将车辆的粒子模型定义为:

其中, x、y 是最优估计中心位置, s 是尺度因子, xp、yp是 前一帧的最优估计中心位置, sp是前一帧的尺度因子, x0和 y0保 存 检 测 到 的 车 辆 原 始 坐 标; w idth和height 分别是车辆区域的宽和高, w是粒子的权重.histogram是维度为110 的HSV 颜色直方图, 本文的提取规则为式(15)所示:

提取规则中, H、S 和V 为HSV 空间中的3 个通道像素值, 认为分量 V 或者 S的值小于0.2 为无色块, 则将无色块的直方图分配在下标为 [10 0,109]之间, 否则将 S 和 V分量值各分成10 个区间, 组合成维度为100 的特征矢量, 因此, 基于HSV 的颜色直方图采集每个车辆的特征矢量维度为110.

3.2 循环跟踪车辆目标

计算前一帧车辆所有粒子的状态转移预测, 实质上是在获取车辆目标后, 在目标附近场景中按照高斯分布的规则分撒粒子来搜索目标对象.本文在动态二阶自回归模型中融入高斯分布规则来实现粒子更新,如式(16)所示:

得到本帧的所有粒子状态转移结果, 粒子的属性有:

A1与A2系数分别表示相邻帧跟踪结果的信任度和间隔帧的信任度.粒子滤波的观测概率密度函数以第n 个粒子的归一化颜色直方图与前一帧最优状态估计的归一化颜色直方图的相似度来衡量.颜色直方图归一化为式(17)所示:

计算两个归一化颜色直方图的巴氏距离作为该粒子的权重值, 权重值越大的粒子, 说明该粒子与上一帧的最优估计车辆区域越相近.假设前一帧的归一化颜色直方图为 Hp[i], 当前帧归一化颜色直方图为 H[i], 其巴氏距离 pw的计算公式为式(18):

计算完一个车辆目标的所有粒子权重后, 归一化权重以更好地衡量每个粒子的相对作用度, 归一化后最大权重的粒子可以被视为本次跟踪的最优状态评估.车辆长时间跟踪过程中总会出现粒子退化现象, 传统的重采样方法是直接删除与目标对象不相似的粒子,依据权重大小复制与目标对象相似度高的粒子.传统的重采样方法:

① 大到小的顺序对预测的粒子权重排序如下:

② 假设每个跟踪目标的粒子数为 Nu m个, 按权重大小顺序复制粒子数为:

③ 循环②步, 根据权重顺序累加 npi个权重为pwi的粒子, 直到累加数量达到N um个则停止复制粒子.

传统重采样方法尽管能够解决粒子退化问题, 但缺陷是粒子的多样性缺失问题被引入.本文设置跟踪目标的粒子数为 Nu m=50 个, 当有效粒子数 Neff少于30 个时则认为粒子退化.消除退化的粒子, 也就是对粒子重采样, 同时确保粒子不失多样性.本文改进的重采样方法如下:

(1)计算有效粒子数 Neff, 若则进入步骤(2), 否则跳到步骤(3).

① 随机选取粒子 , 找到距离 最小的m=6 个粒子.

② 求m+1 个粒子的加权平均值:

④ 循环①~③步, 利用 Uj产生新的粒子来代替原来权重大于 wph的粒子, 并且补充原来剔除掉小于wpl的粒子, 直到粒子数达到 Nu m则停止粒子的产生.

⑤ 重置每个粒子的权重为: w pj=1/Num.

图20 为粒子退化图, 可看出粒子散布很散乱且范围大, 这是由于随着迭代次数的增加, 大部分粒子的权重会缩小, 少部分的粒子权重变得极大, 导致粒子间的权重方差会随着迭代次数而不断增大产生的.图21 是采用传统的重采样法更新的粒子图, 由图可看出按照权重排序来复制粒子时, 权重越大的粒子被复制的数量越多, 导致显示在图像上的粒子数量越少, 继而引进粒子多样性降低问题.如图22 所示, 为了既能克服粒子退化问题又能解决传统重采样方法导致粒子多样性缺失问题, 本文改进的粒子重采样方法, 不但提高了粒子分布的多样性, 而且粒子能够均匀地分布在车辆区域中.

图20 粒子退化

图21 传统的重采样法粒子图

图22 改进的重采样粒子图

4 实验结果

4.1 多车道检测实验结果

6 种不同性质路面上的多车道检测实验结果如图23所示.

4.2 单车道检测实验结果

3 种不同性质路面上的单车道检测实验结果如图24所示.

4.3 车辆检测与跟踪结果

不同帧次的车辆视频跟踪实验结果如图25 所示.

4.4 实验结果说明

本文使用多个视频流来检验算法的检测结果.4.1 节中使用两个路段上的路面视频测试多车道算法,截取6 张正常光照路面、减速标志路面、隧道路面、弯曲路面和上坡路面上的车道检测结果; 4.2 节是单车道在有阴影、强光和花白路面的结果; 4.3 节截取的是第1、10、40、60、70、90、100、150、200 帧的跟踪结果.通过实验结果可看出, 本文检测结果良好, 有助于进一步地移植在嵌入式平台并实现车道偏离报警和前向防撞系统.

对于车辆检测, 检测集200 张图片, 有248 个车辆,采用不同算法实验统计检测到的车辆识别率和误检区域个数如表1 所示.采用传统的单独使用Hog+Gentle-Adaboost 算法, 检测到的车辆有239 个, 误检区域52 个;采用Hog+Gentle-Adaboost 算法结合车底阴影校验算法检测到的车辆有239 个, 误检区域只有2 个, 大大减少误检的区域个数, 进而避免跟踪算法不必要的跟踪运算, 提高跟踪效率.实验表明采用本文检测算法效果良好.

5 结论与展望

本文车道检测与车辆跟踪算法[22]能较好地检测高速路段车辆行驶的分道线和前方车辆, 可靠性和准确性较高, 较容易移植到嵌入式平台.尽管目前的深度学习算法对目标检测精度较高, 但是难以在嵌入式平台得到运用, 而且本文的算法是针对视频流处理, 所采用的Hog+Adaboost 算法检测到车辆后则使用跟踪算法实现车辆的跟踪, 能在嵌入式平台内存和运算能力有限的情况下得到可靠的运用.

针对车道检测, 本文将车道分为单车道和多车道来检测, 对于正常光照路面、减速标志路面、隧道路面、弯曲路面和上坡路面均能得到较好的结果.

图23 多车道检测实验结果图

图24 单车道检测实验结果图

针对车辆跟踪, 采用动态二阶自回归模型的方法预测车辆的状态.对于粒子滤波固有的粒子退化问题,创新性地引入Thompson_Taylor 算法改善了粒子退化和低多样性的缺陷.

针对车辆检测, 首先使用Hog+Gentle-Adaboost 分类算法实现无人车前方路面车辆的检测, 接着基于车底阴影的特征对车底阴影进行检测以验证学习算法检测到的车辆区域的真伪性, 同时提高了车辆的跟踪效率.

图25 车辆检测与跟踪结果图

表1 采用不同算法的车辆识别率和区域误检数对比表

不足之处是车道检测和车辆检测算法过于繁琐,接下来的研究工作是优化算法, 进一步结合嵌入式平台实时运行本文算法, 同时根据车道提取和车辆检测反馈的结果, 基于机器视觉建立车距检测模型, 不但要检测出前方车辆与本车的距离, 还要计算出前方车辆相对于摄像机光轴的偏转角度, 以实现车道偏离的及时报警.

猜你喜欢
灰度车道粒子
智慧收费机器人在高速公路车道上的应用
航空滤光片阵列多光谱图像条带灰度调整算法
采用改进导重法的拓扑结构灰度单元过滤技术
基于OpenCV的直道车道线识别技术研究
碘-125粒子调控微小RNA-193b-5p抑制胃癌的增殖和侵袭
北斗+手机实现车道级导航应用
基于Matlab GUI的云粒子图像回放及特征值提取
天津港智慧工作平台灰度发布系统和流程设计
Arduino小车巡线程序的灰度阈值优化方案
一种用于抗体快速分离的嗜硫纳米粒子的制备及表征