California大学的LaneDetection是California大学的一个开源项目,其官方网址为:http://www.vision.caltech.edu/malaa/software/research/caltech-lane-detection/
这里提供了一个Caltech-Lane-Detection-Software的软件包,这个软件包报刊了C/C++以及Matlab的源代码,其中C/C++的源代码是在Linux系统上基于Opencv做的LaneDetection,而Matlab代码主要用于LaneDetection的结果显示和验证。
这个识别系统基于贝塞尔曲线拟合的方法,实现了一个针对单一图像的实时车道线检测系统。它可以检测道路中所有的车道线,以及当前车道线上的车道标识。
这个识别系统可以以40-50Hz的识别速度来识别街道上所有的车道线。
这个系统的实现效果见下图1:
图1
California大学在提供这个车道线检测系统源码的同时,还提供了测试用的Dataset,其下载地址为:http://www.vision.caltech.edu/malaa/datasets/caltech-lanes/
1. 对图像进行了IPM(InversePerspective Mapping)处理,获得了图像的鸟瞰图。这个操作基于车道线在摄像头的视角内是平行线的假设,主要目的是获得车道上的平行线,即车道线。
2. 图像中像素坐标系和平面道路中的坐标系(地平面坐标系)的转换,这里主要做的是我们看到的三维空间里的像素和二维图像中的像素相互投影的过程。
3. 高斯卷积滤波
4. RANSAC直线拟合
5. RANSAC贝塞尔样条拟合
6. hough直线、线段检测
7. 交叉点检测
8. 贝塞尔曲线光栅绘图
9. Bresenham画线算法
后面文章会对上面提到的几条主要实现方法从原理和代码详细的分析。