一种车道线自适应检测方法转让专利

申请号 : CN201811563209.3

文献号 : CN109785291B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张瑞全朱伟王寿峰马浩董小舒颜世博左岩

申请人 : 南京莱斯电子设备有限公司

摘要 :

本发明公开了一种自适应的车道线检测算法,首先针对摄像机采集图像进行预处理;其次对图像进行分割,判断环境状况,由判断结果自适应地采用不同阈值,利用soble边沿检测、HLS色彩空间对道路部分图像进行处理,获取道路部分的二值图像;提取车道线感兴区域,利用透视变换算法对感兴区域进行透视变换,得到车道线鸟瞰图;再利用二次函数拟合鸟瞰图中的车道线信息,得到车道线方程,进行车道线绘制,同时根据车道线方程对车辆偏离道路情况进行判断;最后将鸟瞰图中所绘车道线透视变换到原图像,即得到最终检测结果。本发明解决了传统车道线检测算法自适应能力较差、无法有效处理弯道信息等问题。

权利要求 :

1.一种车道线自适应检测方法,其特征在于,包括以下步骤:步骤1,摄像头采集数据,并对所得数据进行预处理;

步骤2,对处理后图像进行分割,判断环境状况,根据环境的不同,利用色彩空间转换和边缘检测算法,自适应选择相关阈值,生成道路图像的二值图像;

步骤2.1,根据摄像头在车内的摆放位置和角度,对图像进行分割,分割为路面部分图像和天空部分图像;

步骤2.2,针对天空部分图像,分别求取其在RGB色彩空间中R、G、B三通道像素的平均值,同时求取其在HLS色彩空间中H通道的像素平均值,根据R、G、B、H四通道像素平均值的大小关系,对环境状况作出粗略的判定;

步骤2.3,判定结果包括:多云天气、晴朗天气和树荫道路;

步骤2.4,根据判断结果,确定不同的阈值组合,同时计算图像的灰度图;

步骤2.5,根据阈值分别求取图像在x轴方向和y轴方向,即水平方向和垂直方向上sobel边缘检测结果的二值图像;选取sobel边缘检测的卷积内核大小为3,则图像与内核的卷积结果可表示为Gx,Gy:其中,I表示图像;

步骤2.6,根据步骤2.4所确定的阈值,求取图像sobel边缘检测结果的幅值大小和梯度方向,并对结果进行二值化处理;

幅值大小的计算公式可以表示为:

梯度方向的计算公式可以表示为:

步骤2.7,根据步骤2.4所确定的阈值,对图像RGB色彩空间中R通道的数据进行二值化处理;对图像HLS色彩空间中H通道和S通道的数据进行二值化处理;

步骤2.8,对步骤2.5至步骤2.7所获得的二值图像结果,综合利用与、或、非操作进行组合,获得清晰且噪点较少的路面部分图像的二值图像;

步骤3,提取车道线感兴区域,利用透视变换算法对感兴区域进行透视变换,得到车道线鸟瞰图;

步骤4,获取鸟瞰图中的车道线像素点,并利用二次函数拟合鸟瞰图中的车道线信息,得到车道线方程,进行车道线绘制;具体包括如下内容:步骤4.1,获取鸟瞰图中左右车道线的起始点位置:通过累加鸟瞰图中列方向像素和的方式,取左右两个像素和最大的点作为左右车道线的起始点;

步骤4.2,以左右车道线起始点为基础,通过迭代的方式,不断延长车道线,直到找到鸟瞰图中完整的车道线信息,并分别记录左右车道线上点的个数,作为后续计算的基准;

步骤4.3,根据左右车道线全部点的数据,利用最小二乘法拟合左右车道线的二次多项式,并将二次多项式的系数保存作为后续计算的基础;

步骤4.4,利用左右车道线的二次函数方程和全部y值,求与之对应的全部x值,并以此作为后续绘制车道线图像的坐标点;

步骤4.5,在鸟瞰图中绘制左右车道线掩模;

步骤4.6,对于下一帧图像的鸟瞰图,直接利用步骤4.5中所绘制的左右车道线掩模寻找左右车道线信息,若此时寻找到的左右车道线上点的个数大于预设的阈值,且计算获得的左右车道线二次多项式方程系数与4.3中计算获得的方程系数差值小于预设的阈值,则利用当前帧的车道线信息更新4.3中所保存的二次多项式基准系数,同时更新车道线掩模;

步骤4.7,若步骤4.6中利用前一帧车道线掩模所获取的车道线上点的个数不满足预设阈值或计算获得的二次多项式系数之差不满足阈值,则放弃当前帧的数据,保留上一帧的结果,进入到下一帧;

步骤4.8,基于车道线不会发生迅速、剧烈的变动的前提下,若连续多帧图像都不满足要求,则返回步骤4.1,重新起批,计算车道线掩模;

步骤5,将鸟瞰图中所绘车道线透视变换到原图像,得到检测结果。

2.根据权利要求1所述的车道线自适应检测方法,其特征在于,所述步骤1包括如下内容:步骤1.1,对摄像头采集的数据进行畸变矫正;

步骤1.2,对图像进行尺度缩放操作,将其缩小为640*480。

3.根据权利要求2所述的车道线自适应检测方法,其特征在于,所述步骤1.1包括:步骤1.1.1,使用黑白棋盘图标定板在不同位置、不同角度、不同姿态下,利用待矫正摄像头进行拍摄,得到15-25张标定图片;

步骤1.1.2,对每一张标定图片,使用findChessboardCorners()函数提取角点,所述角点为标定板上的内角点,该角点与标定板的边缘不接触;

步骤1.1.3,对每一张标定图片,使用cornerSubPix()函数进一步提取亚像素角点信息;

步骤1.1.4,使用drawChessboardCorners()函数,在黑白棋盘标定图上绘制找到的内角点;

步骤1.1.5,获取棋盘标定图的内角点图像坐标,使用calibrateCamera()函数进行标定,计算相机内参和外参系数;

步骤1.1.6,对标定结果进行评价,通过得到的摄像机内外参数,对空间的三维点进行重新投影计算,得到空间三维点在图像上新的投影点的坐标,计算投影坐标和亚像素角点坐标之间的偏差,偏差越小,标定结果越好;

步骤1.1.7,保存计算求得的内外参数据,并以此参数对后续该摄像头采集的图像数据进行畸变矫正。

4.根据权利要求1所述的车道线自适应检测方法,其特征在于,所述步骤3包括如下内容:步骤3.1,对步骤2生成的二值图像进行霍夫变换,求取可能的车道线信息;根据车道线的特性,设定左右车道线的斜率范围分别为[0.5,3.0]和[-3.0,-0.5];

步骤3.2,根据3.1求得的左右车道线情况,求取车道线的交汇点(xi,yi):yi=ry+rslope·(xi-rx)

其中,(lx,ly)表示左侧车道线上的点,(rx,ry)表示右侧车道线上的点,lslope表示左侧车道线斜率,rslope表示右侧车道线斜率;选取地平线的位置为(xi,yi-σ)所在水平位置,其中σ常数;

步骤3.3,根据地平线位置和车道线状况,确定感兴区域,只保留车道线部分的图像信息;

步骤3.4,对感兴区域图像进行透视变换,将图像透视到鸟瞰图中。

5.根据权利要求1所述的车道线自适应检测方法,其特征在于,步骤5包括如下内容:步骤5.1,利用透视变换,将满足要求的车道线掩模透视变换至原坐标系;

步骤5.2,将上述结果与步骤1得到的输入图像进行叠加,在摄像头采集的原图中显示检测结果。

说明书 :

一种车道线自适应检测方法

技术领域

[0001] 本发明涉及图像处理方法,尤其涉及一种车道线自适应检测方法。

背景技术

[0002] 低下的通行效率以及频发的交通事故已成为当前民众最为头疼的问题,从驾驶和拥堵中解放出来成为社会的新诉求。汽车则经过两百年的发展,逐步进入电子化的时代,但这还远远不够。随着人工智能的发展,智能化与自动化成为了汽车驾驶行业运行发展的新方向,智能驾驶已成为未来汽车行业核心竞争力,无人驾驶作为今后智能驾驶的发展趋势已初露端倪。而车道线检测技术作为车辆偏离预警和车道线保持功能的实现基础,是高级辅助驾驶乃至自动驾驶的重要组成部分。
[0003] 目前,车道线检测算法大多是基于传统的霍夫变换进行直线检测而实现的,该类算法虽然具有计算简单、实时性高的优势,但其易受光照等环境因素影响,且只能对直线进行检测,无法有效的处理弯道等信息,鲁棒性较差。因此,最终见检测结果往往不能有效的拟合真实的车道线情况。

发明内容

[0004] 发明目的:针对现有技术的不足,本发明的目的是提供一种车道线自适应检测方法:
[0005] 技术方案:一种车道线自适应检测方法,包括以下步骤:
[0006] 步骤1,摄像头采集数据,并对所得数据进行预处理;
[0007] 步骤2,对处理后图像进行分割,判断环境状况,根据环境的不同,利用色彩空间转换和边缘检测算法,自适应选择相关阈值,生成道路图像的二值图像;
[0008] 步骤3,提取车道线感兴区域,利用透视变换算法对感兴区域进行透视变换,得到车道线鸟瞰图;
[0009] 步骤4,获取鸟瞰图中的车道线像素点,并利用二次函数拟合鸟瞰图中的车道线信息,得到车道线方程,进行车道线绘制;
[0010] 步骤5,将鸟瞰图中所绘车道线透视变换到原图像,得到检测结果。
[0011] 具体的,所述步骤1包括如下内容:
[0012] 步骤1.1,对摄像头采集的数据进行畸变矫正;
[0013] 步骤1.2,对图像进行尺度缩放操作,将其缩小为640*480;
[0014] 其中,步骤1.1具体为:
[0015] 步骤1.1.1,使用黑白棋盘图标定板在不同位置、不同角度、不同姿态下,利用待矫正摄像头进行拍摄,得到15-25张标定图片;
[0016] 步骤1.1.2,对每一张标定图片,使用findChessboardCorners()函数提取角点,所述角点为标定板上的内角点,该角点与标定板的边缘不接触;
[0017] 步骤1.1.3,对每一张标定图片,使用cornerSubPix()函数进一步提取亚像素角点信息;
[0018] 步骤1.1.4,使用drawChessboardCorners()函数,在黑白棋盘标定图上绘制找到的内角点;
[0019] 步骤1.1.5,获取棋盘标定图的内角点图像坐标,使用calibrateCamera()函数进行标定,计算相机内参和外参系数;
[0020] 步骤1.1.6,对标定结果进行评价,通过得到的摄像机内外参数,对空间的三维点进行重新投影计算,得到空间三维点在图像上新的投影点的坐标,计算投影坐标和亚像素角点坐标之间的偏差,偏差越小,标定结果越好;
[0021] 步骤1.1.7,保存计算求得的内外参数据,并以此参数对后续该摄像头采集的图像数据进行畸变矫正。
[0022] 进一步的,所述步骤2包括如下内容:
[0023] 步骤2.1,根据摄像头在车内的摆放位置和角度,对图像进行分割,分割为路面部分图像和天空部分图像;
[0024] 步骤2.2,针对天空部分图像,分别求取其在RGB色彩空间中R、G、B三通道像素的平均值,同时求取其在HLS色彩空间中H通道的像素平均值,根据R、G、B、H四通道像素平均值的大小关系,对环境状况作出粗略的判定;
[0025] 步骤2.3,判定结果包括:多云天气、晴朗天气和树荫道路;
[0026] 步骤2.4,根据判断结果,确定不同的阈值组合,同时计算图像的灰度图;
[0027] 步骤2.5,根据阈值分别求取图像在x轴方向和y轴方向,即水平方向和垂直方向上sobel边缘检测结果的二值图像;选取sobel边缘检测的卷积内核大小为3,则图像与内核的卷积结果可表示为Gx,Gy:
[0028]
[0029] 其中,I表示图像;
[0030] 步骤2.6,根据步骤2.4所确定的阈值,求取图像sobel边缘检测结果的幅值大小和梯度方向,并对结果进行二值化处理;
[0031] 幅值大小的计算公式可以表示为:
[0032]
[0033] 梯度方向的计算公式可以表示为:
[0034]
[0035] 步骤2.7,根据步骤2.4所确定的阈值,对图像RGB色彩空间中R通道的数据进行二值化处理;对图像HLS色彩空间中H通道和S通道的数据进行二值化处理;
[0036] 步骤2.8,对步骤2.5至步骤2.7所获得的二值图像结果,综合利用与、或、非等操作进行组合,获得清晰且噪点较少的路面部分图像的二值图像。
[0037] 进一步的,所述步骤3包括如下内容:
[0038] 步骤3.1,对步骤2生成的二值图像进行霍夫变换,求取可能的车道线信息;根据车道线的特性,设定左右车道线的斜率范围分别为[0.5,3.0]和[-3.0,-0.5];
[0039] 步骤3.2,根据3.1求得的左右车道线情况,求取车道线的交汇点(xi,yi):
[0040]
[0041] yi=ry+rslope·(xi-rx)
[0042] 其中,(lx,ly)表示左侧车道线上的点,(rx,ry)表示右侧车道线上的点,lslope表示左侧车道线斜率,rslope表示右侧车道线斜率;选取地平线的位置为(xi,yi-σ)所在水平位置,其中σ常数;
[0043] 步骤3.3,根据地平线位置和车道线状况,确定感兴区域,只保留车道线部分的图像信息;
[0044] 步骤3.4,对感兴区域图像进行透视变换,将图像透视到鸟瞰图中。
[0045] 进一步的,所述步骤4包括如下内容:
[0046] 步骤4.1,获取鸟瞰图中左右车道线的起始点位置:通过累加鸟瞰图中列方向像素和的方式,取左右两个像素和最大的点作为左右车道线的起始点;
[0047] 步骤4.2,以左右车道线起始点为基础,通过迭代的方式,不断延长车道线,直到找到鸟瞰图中完整的车道线信息,并分别记录左右车道线上点的个数,作为后续计算的基准;
[0048] 步骤4.3,根据左右车道线全部点的数据,利用最小二乘法拟合左右车道线的二次多项式,并将二次多项式的系数保存作为后续计算的基础;
[0049] 步骤4.4,利用左右车道线的二次函数方程和全部y值,求与之对应的全部x值,并以此作为后续绘制车道线图像的坐标点;
[0050] 步骤4.5,在鸟瞰图中绘制左右车道线掩模;
[0051] 步骤4.6,对于下一帧图像的鸟瞰图,直接利用步骤4.5中所绘制的左右车道线掩模寻找左右车道线信息,若此时寻找到的左右车道线上点的个数大于预设的阈值,且计算获得的左右车道线二次多项式方程系数与4.3中计算获得的方程系数差值小于预设的阈值,则利用当前帧的车道线信息更新4.3中所保存的二次多项式基准系数,同时更新车道线掩模;
[0052] 步骤4.7,若步骤4.6中利用前一帧车道线掩模所获取的车道线上点的个数不满足预设阈值或计算获得的二次多项式系数之差不满足阈值,则放弃当前帧的数据,保留上一帧的结果,进入到下一帧;
[0053] 步骤4.8,基于车道线不会发生迅速、剧烈的变动的前提下,若连续多帧图像都不满足要求,则返回步骤4.1,重新起批,计算车道线掩模。
[0054] 进一步的,步骤5包括如下内容:
[0055] 步骤5.1,利用透视变换,将满足要求的车道线掩模透视变换至原坐标系;
[0056] 步骤5.2,将步骤5.1得到的结果与步骤1得到的结果进行叠加,在摄像头采集的原图中显示检测结果。
[0057] 有益效果:和现有技术相比,本发明具有如下显著进步:经多种场景性能测试显示,采用本发明车道线检测方法的准确率均大于90%,且具有较强的鲁棒性,算法的处理帧率可达25fps,满足实时性的要求,有效的解决了传统车道线检测算法自适应能力差、无法有效的处理弯道信息和鲁棒性差的缺点。

附图说明

[0058] 图1是本发明的系统算法流程示意图。

具体实施方式

[0059] 下面结合附图及实施例对本发明的技术方案做进一步说明。
[0060] 如图1所示,一种自适应车道线检测算法,包括以下步骤:
[0061] S1:对摄像头采集的图像进行预处理:
[0062] 图像预处理包含图像畸变矫正和图像缩放两部分。通过对输入图像进行畸变矫正,可以有效的解决由硬件固有原因导致的图像失真、变形等问题,显著提高图像质量;其次,通过图像缩放,可以将较大的输入图像缩放到合适的大小;目前是根据摄像头采集图像大小进行的缩放操作,综合考虑了缩放后图像中车道线和车辆的可识别度进行确定,大小为640*480,原图的二分之一,以在保证检测效果的前提下,有效地降低输入数据量,提高算法的处理速度。
[0063] 具体而言,首先使用黑白棋盘图标定板在不同位置、不同角度、不同姿态下,利用待矫正摄像头进行拍摄,得到15-25张标定图片;对每一张标定图片,使用findChessboardCorners()函数提取角点,所述角点为标定板上的内角点,该角点与标定板的边缘不接触;使用cornerSubPix()函数进一步提取亚像素角点信息,以降低相机标定偏差;再采用drawChessboardCorners()函数,在黑白棋盘标定图上绘制找到的内角点;接着获取棋盘标定图的内角点图像坐标,使用calibrateCamera()函数进行标定,计算相机内参和外参系数;再对标定结果进行评价,通过得到的摄像机内外参数,对空间的三维点进行重新投影计算,得到空间三维点在图像上新的投影点的坐标,计算投影坐标和亚像素角点坐标之间的偏差,偏差越小,标定结果越好;最后保存计算求得的内外参数据,并以此参数对后续该摄像头采集的图像数据进行畸变矫正。
[0064] S2:生成道路信息的二值图像:
[0065] 首先根据摄像头摆放位置,对预处理后图像进行图像分割,获取道路部分图像和天空部分图像;针对天空部分图像,分别求取其在RGB色彩空间中R、G、B三通道像素的平均值,同时求取其在HLS色彩空间中H通道像素的平均值,根据R、G、B、H四通道像素平均值的大小关系,对光照、天气等做粗略的判定;根据判断结果,自适应的采用不同的阈值组合,综合利用x方向soble边沿检测结果、y方向sobel边缘检测结果、sobel边缘检测幅值信息、sobel边缘检测方向信息、HLS色彩空间信息以及RGB色彩空间信息等,对道路部分图像进行有机的组合,获取清晰的道路部分二值图像;
[0066] S3:透视变换得到鸟瞰图
[0067] 首先利用Hough变换对左右车道线进行简单的检测,根据左右车道线斜率等信息,求出在图像中地平线所在位置,即两条车道线交汇点;进而根据地平线位置和左右车道线上的点位置,确定感兴区域;为了更好的利用左右车道线信息,将感兴区域透视变换到鸟瞰图中;具体步骤如下:
[0068] 首先对步骤2生成的二值图像进行霍夫变换,求取可能的车道线信息;根据车道线的特性,设定左右车道线的斜率范围分别为[0.5,3.0]和[-3.0,-0.5];其次,根据求得的左右车道线情况,求取车道线的交汇点(xi,yi):
[0069]
[0070] yi=ry+rslope·(xi-rx)
[0071] 其中,(lx,ly)表示左侧车道线上的点,(rx,ry)表示右侧车道线上的点,lslope表示左侧车道线斜率,rslope表示右侧车道线斜率;由于两条线交汇点表示无穷远处,因此为了更好的处理图像,选取地平线的位置为(xi,yi-σ)所在水平位置,其中σ常数。本实施例中,选取σ为30。
[0072] 根据地平线位置和车道线状况,确定感兴区域,只保留车道线部分的图像信息;最后对感兴区域图像进行透视变换,将图像透视到鸟瞰图中。
[0073] S4:车道线拟合
[0074] 若输入图像为第1帧图像或车道线检测准确度为0,则首先获取鸟瞰图中左右车道线的起始点位置:通过累加鸟瞰图中列方向像素和的方式,取左右两个像素和最大的点作为左右车道线的起始点;以左右车道线起始点为基础,通过迭代的方式,不断延长车道线,直到找到鸟瞰图中完整的车道线信息,并分别记录左右车道线上点的个数,作为后续车道线检测准确度的判别基准之一;利用最小二乘法拟合左右车道线的二次多项式,并将二次多项式的系数保存作为后续车道线检测准确度的判别基准之一;利用所求二次函数,在鸟瞰图中绘制左右车道线掩模,并利用该掩模寻找下一帧车道线上的点;若下一帧寻找到的左右车道线上点的个数大于预设的阈值,且计算获得的左右车道线二次多项式方程系数与基准方程系数差值小于预设的阈值,则利用当前帧的车道线信息更新二次方程基准系数和车道线掩模;若下一帧寻找到的左右车道线上点的个数不满足预设阈值或计算获得的二次多项式系数之差不满足阈值,则放弃当前帧的数据,保留上一帧的结果,进入到下一帧,继续判断;基于车道线不会发生迅速、剧烈的变动的前提下,若连续20帧图像都不满足要求,则将车道线检测准确度置为0,重新起批,计算车道线掩模;
[0075] S5:显示车道线检测结果
[0076] 再次利用透视变换,将满足要求的车道线掩模透视变换至原坐标系;并将其与输入图像进行叠加,即可得到在输入图像上显示的车道线检测结果。