简介
Udacity是硅谷的一个在线教育网站,主要以介绍AI技术为主,除了基本的课程录像还会有专业老师进行代码review,通过课程会颁发nano degree。其中最为火爆的一门课程就是自动驾驶课程CarNd,这门课程由简入繁分了三个term,第一个term主要是以机器视觉识别道路、交通标志为主,需要掌握基本的深度学习和机器视觉知识;第二个term是介绍传感器以及使用卡尔曼滤波进行定位和速度控制;第三个term主要是路径规划以及系统集成,据说最后会把学员的代码放入真车进行实际测试。Ucacity的课程质量很高,但是有些小贵,出于无奈只好从网上搜集资料,开源的资料包含了前两个term,学完可以对无人驾驶有基本的了解,感兴趣的同学可以试试。
处理流程
无人驾驶车辆的基本功能之一就是检测车道,之前参加过飞思卡尔智能车竞赛的同学对这个项目应该并不陌生,与摄像头组识别赛道的原理类似,可惜当时我在红外组,没有深入了解相关原理。
先简单说下利用图像处理技术识别车道的基本流程
p1相对来说比较简单,使用opencv的一些操作函数即可实现检测功能。下面详细介绍每个步骤的实现
读入图像
首先读入图像
//导入opencv
import cv2
//读取图像
image = cv2.imread("./test_images/solidYellowCurve.jpg")
//展示图像
cv2.imshow('lane',image)
//等待键盘按键
cv2.waitKey()
//销毁图片展示窗口
cv2.destroyAllWindows()
效果如下
二值化处理
opencv对于彩色图像的存储使用GBR格式,与一般RGB格式顺序不太一样,据说是为了做硬件兼容。二值化处理是把读入的彩色图像转成灰度图,方便后续计算。
//彩色图像转化为灰度图
gray_image = cv2.cvtColor(image,cv2.COLOR_GBR2GRAY)
效果如下