计算机视觉—车道线检测
- 一、 方案设计目标
- 二、 技术要求
- 三、 主要研究内容
- 1. 检测过程
- 2. 视频分解
- 3. 分割图像
- 4. 筛选轮廓、计算中心
- 5. 拟合车道线近似曲线
- 6. 在图像帧上绘制曲线并输出坐标数组
- 四、 技术创新
- 五、 方案优化展望
一、 方案设计目标
使用计算机视觉方法和技术,识别、检测提供视觉数据中的车道线目标。
二、 技术要求
使用OpenCV、深度学习等方法(自选),识别提供视频中的车道线;
输出车道线中点在每帧图像中的坐标数组。
三、 主要研究内容
1. 检测过程
对车道线检测采用OpenCv方法实现,整体思路采用连通域思想,提取车道线的蓝色区块信息,拟合近似车道线曲线。如图3-1,检测过程共分为五部分:
① 视频分解为图像帧
② 对每一帧图像提取车道线蓝色部分
③ 提取车道线轮廓信息,计算轮廓中心
④ 使用轮廓中心拟合近似曲线
⑤ 绘制拟合曲线并输出车道线中点的坐标数组
图3-1 车道线检测整体流程图
2. 视频分解
读取视频文件后,循环读取视频帧,将每一帧图像保存至已创建的文件夹,以备后续调用。视频分解过程和视频分解成图像帧结果分别如图3-2和3-3所示。
图3-2视频分解
图3-3 视频分解成图像帧
原车道线视频共分解为750帧图像,新车道线视频(采用1.mp4视频文件)共分解为240帧图像。
3. 分割图像
为了提高处理图像效率,将原始图像分辨率减半。提取车道线目标区域需要将图像按颜色分割,在OpenCv中默认的色彩空间是RGB颜色空间。人眼能识别不同的颜色是由于人的感官系统所致,与人的生理系统有关,RGB格式更适合于人的肉眼区分不同的颜色,事实上按颜色分割图片在HSV通道上分割效果要远远优于在BGR通道上分割,所以先将BGR格式的图像转换到HSV空间,划定感兴趣的颜色区间后,将不在区间的图像值变为0,而在区间内的值变为255,由此便可得到按颜色分割的二值化图像。如图3-4所示:
图3-4图像分割程序段
划定好要提取的颜色阈值后经过运算便可得到图片中所有的蓝色区块,如图3-5所示。
图3-5 提取指定阈值内的蓝色区块(左为新视频,右为原视频)
观察到分割后的图像,车道线均在图像的下半部分,即只需要截取图像的车道线部分图像即可。截取图像如图3-6和图3-7所示。
图3-6 图像分割处理结果(新)
图3-7 图像分割处理结果(原)
可以看到截取后的图像中仍有一些不属于车道线的部分,需进行下一步的处理筛选掉无关部分。
4. 筛选轮廓、计算中心
通过图像分割处理后得到一个含蓝色车道线的二值化图像,但仍有一部分不属于车道线,需要通过计算各区域面积来筛选无关区域,首先计算每一帧图像中所有区域的轮廓,将没有轮廓和图像中最大轮廓面积不超过150的图像过滤掉。
符合要求的图像中再将面积大于30的轮廓依次取出(这样可以筛掉那些距离车道线主体较远的杂点),得到了该轮廓的一系列坐标信息,将其存入变量中。再将这些坐标信息转置处理,其目的是为了将轮廓的横纵坐标信息分开归类(即其中一列为单个轮廓的所有横坐标,另一列为该轮廓的所有纵坐标)。
得到分开的坐标信息后即可更进一步的筛选和计算。首先要筛选掉横坐标最大差值小于15或纵坐标最大差值小于10的轮廓,(这里是筛选掉距离过远的车道线轮廓),其次要筛选掉面积过大的轮廓(主要是筛选掉如图3-8所示部分)。
图3-8 需要筛选掉的部分
图3-9 筛选无关轮廓
至此,所需要的车道线蓝色区块的轮廓已经得到,接下来计算轮廓中心即可,但是如果使用像素坐标绘制拟合曲线会产生一个x对应多个y的情况(如图3-10像素坐标系所示),因此为了拟合的曲线更符合实际,将自行建立坐标系,以图像的高为x轴,图像的长作为y轴(如图3-10自建坐标系所示)。
取上述轮廓的像素坐标系的x的中位数为自建坐标系的纵坐标;像素坐标系的y的中位数为自建坐标系的横坐标。
自此可以得到每一帧图像,部分车道线蓝色区块的中心坐标,于是可以通过这些车道线中心坐标拟合出近似曲线。
图3-10 像素坐标和自建坐标示意图
5. 拟合车道线近似曲线
依次将图像帧中所得轮廓的中心点进行曲线拟合,实验表明除没有轮廓的图像外,其余图像的车道线蓝色区块轮廓均大于3(即基本每帧图像都能采集到3个蓝色箭头块),于是采用三次多项式拟合曲线。
相较于二次多项式拟合,三次多项式拟合在曲线近似程度上要更接近实际的车道线,但在靠近镜头的车道线部位效果较差,其拟合的曲线与实际相差甚远,仍需改进。
通过轮廓中心点使用三次多项式拟合的曲线如图3-11所示(以其中一帧图像作为例子)。
图3-11 显示拟合曲线
6. 在图像帧上绘制曲线并输出坐标数组
该部分为主函数,使用循环依次对所有图像帧完成上述操作。而后将图像分辨率减少一半以便与前期处理后的图相匹配,再分别计算分割后图像与降低分辨率图像的长和高。
截取拟合曲线的一段进行绘制,循环中将图像的高作为横坐标带入拟合曲线计算拟合曲线的纵坐标,该纵坐标即为像素坐标系的横坐标。由于分割的图像是截取自图像的下半部分,所以要把两者高的差值加上横坐标才是像素坐标系的纵坐标。该循环在一帧图像上不断绘制点,得到一条近似曲线,实现车道线的检测。
拟合曲线虽然是近似车道线中线,但匹配车道线的精度还有待提高,故只截取与车道线中线极为相近的一段作为车道线的中点进行输出。
将所有车道线点保存到变量中,并输出对应帧和对应坐标数组,如图3-12所示。
图3-12 输出对应图像帧和其坐标数组
四、 技术创新
车道线识别采用连通域思想,提取车道线蓝色区块进行分析,将蓝色区块的中心点做曲线的拟合,实现车道线识别。
算法上对每一帧图像的蓝色区块进行进行不断筛选、过滤得到目标车道线区块。
并且面对像素坐标可能会产生一个x对应多个y的问题上,采用自行构建坐标系的解决方法来规避上述问题,完成车道线近似曲线的拟合。
五、 方案优化展望
目前车道线识别上采用的只是传统的OpenCv方法,后续有条件时会尝试使用深度学习方法进行训练,对比两种方法的优劣。
目前运用的检测思想是使用连通域,该方法的识别效果受到图像的亮度、车道线的曲度等因素的影响,后续有条件会尝试图像逆透视方法对车道线进行识别,该方法有助于更精确的车道线识别,在视觉上有更直观、易理解的图像结构。