1.通过vision+lidar求取3D车道线
1.1 lidar检测车道线原理
一般来说lidar点包含四个维度的信息,xyz坐标和intensity,其中intensity表征着障碍物表面对激光的反射率。车道线一般是使用具有高反射率特性的涂料绘制的,车道线区域lidar点intensity相对其他地面区域要高,如下图所示。其中地面区域都是低intensity点(绿色),车道线、curb和地面标识都是高intensity点(红色和白色)。利用深度学习或者传统方法可以很容易提取lidar车道线。
图1 lidar点云BEV视图,其中红色和白色为高反射率点,绿色为低反射率点 另一方面,从图1我们也可以发现,由于lidar点云在远处是稀疏的,lidar车道线的有效范围较短。总结起来,利用lidar可以获取范围较短但是定位精度较高的3D车道线。现在业内流行在BEV视角下提取lidar、vision特征,以便于后续的融合,我们也使用BEV的方法提取车道线。
1.2 来自图像拼接的启发
上文中我们提到使用lidar可以获取较短范围(40m以内),BEV视角下的高精度车道线,但是40的长度显然不太能满足控车需求。vision 2D车道线检测距离远,2D精度高,但是很难获取高精度的3D车道线信息。本文探讨一下如何使用vision高精度的2D信息和lidar距离受限的3D信息实现远距离的BEV车道线感知。
使用lidar获取BEV车道线后,可以获得一个稀疏的BEV图,用来表征车道线的位置,如图2所示。按(RentyZhu:自动驾驶系列3:一种简单的视觉3D车道线感知方法)提到的坐标系构建方法建立地面系。BEV视图可以等效为一个相机在距离地平面一米高度处俯视地平面,其投影方程为:
相机的光轴基本与地面平行,相机2D车道线成像和BEV视图可以视为在两个不同的视角下车道线的成像。如果我们能类比图像拼接的方法,将相机视图“拼接”到BEV视图下,理论上可以实现较好的3D车道线检测。
我们调研了一些图像拼接方法,其中 计算机视觉life:计算机视觉方向简介 | 图像拼接 一文中介绍了经典的图像拼接框架。典型的图像拼接可以分解为以下四步:
其中特征提取已经完成,即vision和lidar车道线检测结果;特征匹配即vision 2D车道线和lidar 3D车道线的匹配;视觉SLAM相关博文中介绍了很多基于特征点匹配的单应性矩阵计算方法,在本方法中不再适用。本方法使用线对线的匹配对求取单应性矩阵,具体方法在后续博文展开。在求取单应性矩阵H后,我们将视觉2D检测结果warp到BEV视角下,再和lidar BEV车道线做简单的加权拟合,即可完成3D车道线的感知。
1.3 结果
实验结果如下图所示,粉色为lidar车道线,距离较短。黄色为真值,红色为利用我们的方法求取的车道线。从结果看本方法在保证3D检测精度的情况下大大提升了车道线的感知距离。
图2 车道线BEV视图 粉色:lidar检测结果 黄色:真值 红色:本方法结果
2.BEVFusion
在上一篇博客(RentyZhu:自动驾驶系列3:一种视觉3D车道线感知&&地面重构方法)中提到了视觉可以无监督重构地面: