深入浅出自动驾驶(一): 识别车道

这是自动驾驶的系列文章。
自动驾驶的第一步是什么呢?当然,是识别当前环境,具体来说就是识别自己的正确道路-车道线,入下图所示


1 转为灰度图
彩色的图是没法识别出车道线的,所以我们需要把他转化为黑白的图像,入下图所示

大家知道,我们的图像都是由RGB三原色组成的,分别是0-255,所以,我们只要对非白色的做出处理,把他变成黑色即可,用伪码表示
loop 读取图像中的每一个像素 像素RGB < 阀值 #纯白是255,255,255 该像素 = 黑色end loop

2 将车道线叠加原图



当然,简简单单的识别出道路是不行的,我们还需要在原图中叠加道路,如上图所示,主要是一些裁剪合并之类的动作了。

3 边缘发现
之前的车道线都是白的,所以挺好做的,但是很不幸的是,车道并非都是白的,我们很可能遇到其它颜色的,而且有时候并不完整,如下图所示,所以我们需要其它的方法,比如说“边缘发现”



python提供了一个包,openCV,我们可以使用这个包来协助开发,在开发过程中还需要进行一些处理,其伪码如下
1 将整个图像转为灰度图,毕竟不需要那么多丰富的颜色2 进行简单的高斯模糊:GaussianBlur,以减少照片噪声和细节3 进行边缘发现

最终我们会得出如下图所示的结果


4 使用Hough Transform辨别车道线
进行边缘发现之后识别出车道线,如何识别车道线呢?车道线实际上在图像中表现为一条直线,所以我们的目标就是识别出长直线,所以,我们的目标就是识别出长直线的模式。
我们会用到一种叫做Hough Transform的方法,它是在1962有Hough发明的,它会把 y=mx+b映射成 b=xm+y,将直线变换成点,然后进行识别,如下图所示,车道线是一条路



然后把这条路映射成点



以方便识别
进行Hough Transfom后会变成这个样子

而后我们进行优化,好了后会变成这样

这样,我们就成功的识别出了车道线
(完)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 不同图像灰度不同,边界处一般会有明显的边缘,利用此特征可以分割图像。需要说明的是:边缘和物体间的边界并不等同,边缘...
    大川无敌阅读 13,977评论 0 29
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,663评论 25 708
  • 有时候花点儿时间~做点儿好吃的~做出来的那一刻觉得生活还是很有意义的~ 红豆卷 请点击此处输入图片描述 原料:鸡蛋...
    Jennifer爱生活阅读 344评论 0 2
  • 昨日夏, 转瞬秋。 前时繁花凋落, 黄叶牵挂在枝头。 身凭雕栏,双泪漫流。 归雁离心,更疼声声啾。 天色黄昏后。 ...
    Z0001阅读 167评论 0 0
  • 寒山雨 弄别离 且把酒 伊人独醉 红颜娇嗔 梦中繁花树 冷画阁 清寂寥 丹青误 错点朱砂 相思红豆 画中人依旧
    青青陌儿阅读 213评论 0 0