前言
个人兴趣爱好,最近在学习一些无人驾驶相关的技术,便萌生了循序渐进的写一系列文章的想法,这是第一篇。文章主要会以Udacity为主线,综合自己在学习过程中搜集的各种材料,取其精华,补其不足,力求通俗易懂,理论明确,实战有效,即作为一个学习总结,potentially又可以帮助对无人驾驶有兴趣但是零基础的朋友们 —— 注意这里的零基础是指未接触过无人驾驶领域,本系列还是需要一些简单的数学和机器学习知识。
因为本文是从零开始的第一篇,这里的车道检测是基础版本,需要满足几个先决条件:(1)无人车保持在同车道的高速路中行驶(2)车道线清晰可见(3)无人车与同车道内前车保持足够远的距离。
TLDR (or the take-away)
一个基础版的车道检测步骤主要分为以下几点:
代码:
https://github.com/feixia586/zhihu_material/tree/master/car_lane_detection
最后的效果如下视频所示,其中红线表示自动检测到的车道。
从图片开始谈起
无人车往往配备有数个camera,常见的情况是有一个camera固定在车的前方,用来perceive前方道路情况,生成视频。计算机对该视频进行分析,综合其他sensor的信息,对车辆行为进行指导。视频是由图片组成,如果能够成功检测图片上的车道,那我们就几乎解决了车道检测问题。下面是一张车辆行驶过程中的图片,让我们动手吧!
import matplotlib.image as mplimg
img = mplimg.imread('lane.jpg')
Gray Scale Transformation
这个变换比较简单,是将RGB图片转换成灰度图片,用来作为Canny Edge Detection的输入。
import cv2
gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
# Note that if you use cv2.imread() to read image, the image will
# be in format BGR.
原文链接:
https://zhuanlan.zhihu.com/p/25354571?group_id=820292423715545088