无人驾驶汽车技术之道路线识别

无人驾驶汽车技术之道路线识别

1引入:

无人驾驶技术近些年发展迅速。无人车若想实现自动驾驶,从视觉的角度上讲其要先学会观察道路,具体来说,就是检测车道线。包括识别车道线与车的位置关系,是实线还是虚线等。本文将通过简单的道路图片,检测识别车道线。
实验环境:Anaconda3(Python3.6)+Spyder+libopencv+WIN10

2原理:

首先读取图片,然后将图片转成灰度图片,高斯滤波,Canny边缘检测,划分ROI(Regine of Interest)区域,霍夫变换,道路线判断与重画,与原图叠加,最后输出图像。
流程

3步骤:

(1)读取图片
(2)灰度转换:将RGB图片转换成灰度图片,用来作为Canny Edge Detection的输入。
(3)高斯滤波:Gaussian Smoothing是对图片apply一个Gaussian Filter,可以起到模糊图片和消除噪声的效果。其基本原理是重新计算图片中每个点的值,计算时取该点及其附近点的加权平均,权重符合高斯分布。Gaussian Filter是一种低通过滤器,能够抑制图片中的高频部分,而让低频部分顺利通过。
(4)Canny边缘检测:Canny Edge Detection:John F. Canny在1986年发明了Canny Edge Detection技术,其基本原理是对图片中各个点求gradient,gradient较大的地方往往是edge。Canny Edge Detection精妙的地方在于它有两个参数:low_threshold和high_threshold。算法先比较gradient与这两个threshold的关系,如果gradient > high_threshold,就承认这是一个edge point;如果gradient < low_threshold,就断定这不是edge point;对于其他的点,如果与edge point相连接,那么这个点被认为也是edge point,否则不是。
(5)划分ROI区域:ROI Based Edge Filtering:经过了Canny Edge Detection,似乎东西有点儿太多了,还有一个重要的条件没有用:camera相对于车是固定的,而无人车相对于车道的左右位置也是基本固定的,所以车道在camera视频中基本保持在一个固定区域内。据此我们可以画出一个大概的Region of Interest (ROI),过滤掉ROI之外的edges。
(6)霍夫变换:Hough Transformation:目前看起来我们似乎已经得到了车道线了呢,因为最终目标是得到exactly两条直线!而目前现在图中不仅有多条线,还有一些点状和块状区域,Hough Transformation的目的就是找到图中的线。
(7)道路线判断与拟合:Lane Extrapolation:Almost there! 现在我们要根据得到的线计算出左车道和右车道,一种可以采用的步骤是:
1根据斜率正负划分某条线属于左车道或右车道
2分别对左右车道线移除outlier:迭代计算各条线的斜率与斜率均值的差,逐一移除差值过大的线
3分别对左右车道线的顶点集合做linear regression,得到最终车道。
(8)将结果和原图叠加。
(9)最后输出图像。

4识别过程:

读取图片
灰度变换
高斯滤波
canny边缘检测
ROI区域分割
霍夫变换
道路线判断与拟合
过程中的参数
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述