自动驾驶(十四)---------车道线检测

       目前车道线检测主要有两种方法:传统方法,深度学习,本文主要从传统方法出发来介绍车道线检测,毕竟Mobileye也没有用到太多的深度学习(以前和Moblieye有交流)。

       再者,一直以来我们传统汽车行业对深度学习都是嗤之以鼻,Case by case 我们怎么就low了。你们能量产辅助驾驶吗?你们奉为神明的深度学习能跳出dome吗?当然需要拥抱新事物,我也在学习深度学习,只是不喜欢吹嘘,自动驾驶需要一步一个脚印,不要上来就想摘桃子,无异于空中花园,纸上谈兵。

       下面介绍几种方法给大家思考,

       特别的本人最恨的一种方法是 :二值化后,用Hough直线检测,我真想骂人,谁告诉你车道线一定是直线,光线变化各种问题中间出来的边缘怎么办,车道线边缘不光滑怎么办,你能找到直线!简直是搞笑,幼儿园水平。

       本文介绍的是单帧检测,多帧之间肯定要用Kalman滤波优化,车辆运动学是基础,这里就不介绍了,楼主一直有一个想法:利用车辆常见的传感器参数,搞出一套系统:

      感知:车辆运动学做预测,视觉单帧检测做观测,无极kalman滤波的多帧车道线检测算法。

      规划:通过当前车道线中心线,融合运动目标避让,求出规划最优解:

                                   min \sum_{i=0}^{m}[A+E+F+G]

                其中A为:   {\sum_{i=0}^{m}}\omega _{i}(x_{i} - X_{i})^2  即规划的轨迹与车道中心线距离较小;

                其中E为:\left | angle1- angle2 \right |保证运动学要求,满足舒适性,两帧跳变较小.

                其中F为:检测目标避让,特别的目标是运动的,避让要考虑辆车之间的相对速度,即避让目标不是目标当前的位置,是对目标和本车做kalman滤波,运动过程中的避让。使得运动过程中离目标最小距离最大化。

                其中G为预留,还没想好。。。。
        控制:目前没有太多了解,基于MPC就好。

1 Udacity车道线识别:

  1. 毫无疑问相机标定,这里我就不详述了,总之相机标定是很基础的知识了,opencv有一套很现成的函数;
  2. ROI选取,图像透视变换,把图像转换成俯视图,也可以用opencv的函数:warpPerspective
  3. 二值化并且找到车道线是核心,这里步骤我展开如下:

                      自动驾驶(十四)---------车道线检测_第1张图片自动驾驶(十四)---------车道线检测_第2张图片

 

 

 

 

         滑动窗口与多项式拟合:将图片中的像素沿y轴累加,找出图片中间点左右的峰值,即为车道线可能的区域,然后自底向上使用滑动窗口,计算窗口内的不为0的像素点,如果像素点的数量大于某个阈值,那么就以这些点的均值作为下一个滑动窗口的中心。这里是从下往上找,每一个窗口的位置是由下一窗口内点的中心决定的。

        4. 最小二乘法拟合这些中心点,拟合成车道线,车道线的拟合我有一篇专门介绍了,不记得可以去翻看。

2 基于投影的车道线检测:

        1. 与上面类似,图片经过标定,ROI透视,二值化:

                     原图-> 自动驾驶(十四)---------车道线检测_第3张图片 卷积(卷积核:) —》自动驾驶(十四)---------车道线检测_第4张图片

                     二值化—>自动驾驶(十四)---------车道线检测_第5张图片 

          2. 把二值化的点投影到横坐标上,列向量投影:

                   自动驾驶(十四)---------车道线检测_第6张图片 选取对应的最大值自动驾驶(十四)---------车道线检测_第7张图片

            3. Ransac多项式拟合附近的点:

                        自动驾驶(十四)---------车道线检测_第8张图片   投影回原图效果:自动驾驶(十四)---------车道线检测_第9张图片
       找遍网上相关资料,我基本陷入绝望,看到深度学习已经可以搞定前车遮挡的场景,我真的很惭愧,很想有一种识别率很高的传统VC的方法,可惜事与愿违,我也无能为力,明天继续学习深度学习吧。

        

          

 

          

 

你可能感兴趣的:(自动驾驶)