车道线检测是自动驾驶中的一个基础模块,车道保持,自适应巡航,自动变道;对于全自动驾驶汽车后续的车道偏离或轨迹规划决策也很重要。
目前车道线检测主要有两种方案:传统方法与深度学习。
1.传统方法
(1)边缘检测+霍夫变换
方法流程:彩色图像转灰度->模糊处理->边缘检测->霍夫变换
这种方法一般能够检测出简单场景下的车辆目前行驶的两条车道线,以及偶尔的相邻车道(依赖前视相机的角度)。该方法可以利用霍夫变换的结果(线的斜率),进一步过滤出左右车道线。不过同时,该方法也依赖于边缘检测的结果,所以调参(边缘检测、霍夫变换)以及其他的trick(ROI选取等)很重要。
(2)颜色阈值
方法流程:将图像转颜色空间(一般HSV),对新的color space中的各个通道设置阈值(大于阈值取值为1,小于取值为0),得到结果。
该方法依赖于各通道的阈值的选取,只需要调整几个阈值参数,但有时候鲁棒性会较差,例如当前车辆前方的车辆可能会被全部置1。
(3)透视变换(应用与交通拥挤,部分车道缺失较好。)
方法流程:获取透视变换矩阵->透视变换->车道线检测
该方法的优点是将前视摄像头抓拍的图像转为鸟瞰图,能够检测到多条线。其关键在于透视变换矩阵的准确性(不考虑转换后的车道线检测),对于转换后的鸟瞰图,可以通过上述两种方式检测车道线。
边缘检测、k-Means、高斯概率模型
(1)Udacity车道线检测
相机标定、openCV
原因:sensor制造误差、非线性径向畸变、切向畸变
ROI选取,图像透视变换,把图像转换为俯视图
二值化并且找到车道线
滑动窗口与多项式拟合
最小二乘法拟合中心点形成车道线
(2)基于投影的车道线检测
图片标定、ROI透视
2.1原图:
2.2 二值化:
2.3 把二值化的点投影到横坐标上
2.4 选取对应的最大值:
2.5 Ransac(随机抽样一致性算法)多项式拟合附近的点
2.6 结果:投影回原图效果
在实际场景中,传统方法的鲁棒性不好,除去光照和邻近车辆的影响外,车道中间的指示箭头和人行道也是此类算法很难处理的挑战。
边缘检测算法还包括 Sobel 算子、Candy 算子和 Roberts 算子
Reference:
1.车道线检测传统方法&深度学习方法概览+两篇论文领读LaneATT+LaneNet