前言
本课所讲的车道线检测来自于一个实际的项目,因为场景比较单一,而且硬件比较受限制,所以采用传统的图像处理方法来识别它们。
源图像
需求:要求识别出 黄色线道里外两条线, 一共有两根黄色车道线。
挑战性:黄色车道线有些模糊不清,一定程度上和其周围背景区分不是很明显;由于摄像头安装位置不是正中间,所以拍出来的黄色车道线有些扭曲畸变,不是严格的直线,而是有些向左弯曲的直线。
识别过程
一)由于场景比较单一,所以先做一个roi,来尽量排除背景的干扰。同时在roi各取4个点(蓝色圆圈和红色圆圈表示),并求得蓝色点变换到红色点的投影矩阵。
二)根据投影矩阵,将roi图像做一个透视变换,可理解为将倾斜视角拍的图片转换为鸟瞰图。鸟瞰图上黄色线道近似垂直线,从而可以大大提供识别准确度和鲁棒性,而且背景干扰部分进一步排除掉。
三) 综合采用前面所学到的图像处理知识:高斯模糊,自己构造卷积模板来求黄色线道边缘;根据颜色特征区分开黄色车道和背景;最后采用腐蚀形态学方法去噪点得到比较理想的边缘点。这部分的具体内容会在视频课程中详细讲解。
四)采用HoughLinesp来找直线,并且要求斜率近似于垂直。将多根挨在一起的直线上点进行直线拟合,得到四条最终的直线方程,并画在鸟瞰图上。
五)最后一步就是将上面的图进行透视逆变换,并作平移就能在原始图上画出黄色车道线了。
结论
本课所涉及新的理论知识点比较少,侧重于实践,主要是综合应用前面所讲的图像处理方法来进行车道线识别。当然,如果场景比较复杂 比如光线忽亮忽暗等,还可以考虑语义分割模型,比如mask-rcnn deeplabv3等来进行识别。在识别推理前,需要收集大量的样本数据,并进行标注和训练才能得到算法模型。此外跑这种复杂的模型,对硬件要求比较高,一般需要GPU才能达到推理时间在毫秒级。