基于传统边缘算子的车道线识别研究
2024-04-02李志远王光辉
李志远,王光辉
(湖北汽车工业学院汽车工程学院,湖北十堰 442002)
0 引 言
近年来,随着汽车工业的进步和无人驾驶技术的兴起,各种级别的辅助驾驶技术[1-3]已经在司机的日常驾驶中得以运用。其中,车道线检测作为辅助驾驶技术中最为基础的一项技术,其主要目的是准确地检测和提取车道线的边缘信息。能否实现车道线的精准检测对于实现安全、高效的自动驾驶至关重要,但这项技术在实际应用中面临着各种挑战,如光照条件的变化,当在强烈阳光照射下或者暗光环境中,车道线的边缘信息可能会变得模糊不清,以及复杂道路环境的干扰,在拥挤的城市道路中,车道线可能被其他车辆或者行人遮挡,导致检测结果不准确。因此,汽车制造商正致力于攻克这些问题,以确保汽车能够安全可靠地检测出车道线。
常用来识别车道线的方法是利用车道线与道路路面及其周边之间的灰度值差异,根据车道线明显的灰度值得到车道线的信息[4],但对环境适应性较差。此领域的一些学者对车道线检测提出了各自相应的检测算法和不同的解决方案,文献[5]通过对摄像机进行一系列的标定,以此消除图像的畸变,但其在ROI 区域的选取上不够清晰明了,可能会对检测结果造成误检。文献[6]基于Hough 变换提取车道线,此算法对直线车道有不错的效果,但可能会识别出一些与车道线无关的线段。文献[7-8]研究车道线与道路路面之间的梯度差异,如Sobel[9]、Roberts[10]、Canny 等检测算子,这种方法对于非连续的车道线可能无法有效的识别。文献[11]利用了传统图像处理算法中的滤波算法,但在道路环境障碍物较多时容易导致误检,对外界的抗干扰能力比较差。
针对上述问题,本文提出一种基于霍夫变换改进的Canny 算法,对输入的结构化道路图像进行预处理,其中包括灰度滤波等操作,并对预处理后的图像进行了不同算子的车道线图像边缘检测对比实验,以得到较优的检测算子。本文使用ROI 感兴趣区域选取和改进霍夫变换对预处理之后的图像进行车道线拟合,为了确保检测效果,通过调整不同的图像平滑度,选取最佳的阈值作为边缘检测的标准。同时,根据大多数情况得到的车道线图像,对车道线角度和识别区域进行限制,用以提高车道线检测的精确性。
1 传统边缘算子
1.1 Roberts 算子
在边缘检测中,传统Roberts 算子是一种简单而高效的算子,它采用2×2 模板,利用图像中对角线方向相邻像素差值近似梯度幅值来检测目标图像边缘。传统Roberts 算子模板如图1 所示。
图1 Roberts 算子模板
式中:f′x(i,j)为x方向上的灰度变化;f′y(i,j)为y方向上的灰度变化。计算梯度幅值R(i,j),同时适当选取一定的阈值,如果计算的梯度幅值大于阈值则认为其是边缘点。
1.2 Sobel算子
Sobel 算子可以从水平和垂直的方向上依次检查边界,原理是使用像素值在上下、前后邻点处的灰度加权算法,通过在边界点处达到极值进行边界检查。Sobel算子中有如下一些关键点:笛卡尔网格;距离反比的4 个方向对梯度加权;城市距离。
笛卡尔网格和城市距离如图2 所示。
图2 笛卡尔网格和城市距离
Sobel 算子采用的像素距离是城市距离,而不是欧氏距离或棋盘距离,其规定对角方向相邻像素之间的距离值为2。接着选取4 个方向矢量分别为(a,i)、(b,h)、(c,g)、(f,d),然后沿着这4 个方向求得梯度矢量和,得到像素e的平均梯度估计G为:
这里人为规定右上角为原点,以c点为例,由c到a为x轴的正方向,由a到g为y轴的正方向,因此,由c到g的单位向量就是[1,1],同理得由a到i的单位向量为[-1,1]。计算4 个方向矢量并将其x方向和y方向分别相加,可得:
经约分化简后,将2 个方向字母的各自系数代入即可得到Sobel 算子水平和垂直梯度模板,分别如图3所示。
图3 Sobel算子
1.3 Canny 算子
Canny 边缘检测是高斯函数的一阶导数,具有高精度和低误检率的特点。该算法的步骤如下:
1)使用高斯滤波器对目标图像进行滤波平滑处理。σ为高斯函数的标准差,其大小的变化可以改变图像的平滑程度。高斯函数如公式(6)所示:
高斯函数与目标图像的卷积公式为:
式中:R(x,y)为卷积运算之后的图像;f(x,y)为输入图像;“*”代表卷积运算。
2)计算图像中每个像素的梯度
接着计算图像上(i,j)点上的边缘强度M:
3)对梯度幅值进行非极大值抑制,也就是在每个梯度方向上找到局部极大值点,并将其作为边缘点。
4)双阈值检测。这里把边缘点分为三种:强边缘点、弱边缘点和非边缘点,同时根据高低阈值对它们进行分类。非边缘点将其删除,强边缘点作为真正的边缘点,对于弱边缘点需要再次判断是否为真正的边缘点。
2 车道线检测流程
图像预处理是图像处理的一部分,包括灰度转换、去噪滤波、边缘检测等[12-13]。后期的车道线检测包括ROI 提取和Hough 变换等操作,其主要目的是锁定目标车道线所在的图像区域,快速、高效地检测出构成车道线的小线段,建立车道线特征数据点集,拟合出车道线并显示出来。
2.1 图像预处理
一般来说采集到的原始彩色图像一般包含R、G、B三个通道的深度信息,三个通道的取值均在0~255 之间。彩色图片的信息含量过大,进行图片预处理时,只需要使用灰度图像中的信息就已足够,所以为了提高运算效率,往往将R、G、B 三个通道组成的彩色图像转化为单通道的灰度图像[14]。图像的灰度化处理算法为:
图4、图5 分别为灰度图和灰度图像的直方图,可以看到总体灰度分布较为均匀。在对图像进行灰度化后,得到了一张像素值在0~255 范围内的灰度图,为了降低噪声影响,得到相对清晰的车道线特征,接下来对灰度之后的图像进行降噪,除去无关噪声,防止影响车道线的有效识别。对去噪之后的图像进行滤波处理,常用的滤波方法有均值滤波、高斯滤波等,本文采用均值滤波方法对目标图像进行滤波处理。
图4 灰度图
图5 灰度直方图
在Matlab 平台下编程实验。利用结构化道路条件下车道线图像作为原图像,将预处理后的图像作为输入,并使用传统边缘处理算法进行边缘检测实验,对检测效果进行分析。在同样预处理的条件下,对比三种传统算子的边缘提取效果,如图6 所示。由图6 可以发现Canny 算子检测的车道线图像边缘信息更加清晰完整,因此最终选取Canny 算子对车道边缘提取算法进行后续的车道线检测。
图6 传统边缘算子检测比较
2.2 ROI 提取
ROI 是指目标图像中最能吸引兴趣、最能表现图像主要内容的区域。在图像中选择所需要检测的重点区域,使用ROI 圈定目标,可以减少处理时间。在车道线检测中ROI 区域选取可以快速确定车道线区域,为下一步检测车道线提供基础。
ROI 图如图7 所示。
图7 ROI 图
由于车载相机所采集的图片存在行驶车辆、目标车道线、路边树木、天空等各种影响判断的因素,这会对接下来的拟合车道线带来不必要的操作,因此需要通过设置ROI 区域对检测区域进行提取,避免因环境因素导致的误检及错检。
2.3 霍夫变换
车道线图像经过边缘检测及ROI 区域提取后,已经能够直观地展现出车道线的边缘特征,但是仍然需要对车道线边缘进行绘制,本文采用Hough 变换将检测出来的边缘特征进行提取,绘制出直线、曲线车道线[15]。Hough 变换原理是将图像映射至参数空间,在参数空间进行选取,最后回到二维图像中绘制所选取的图像。
在笛卡尔坐标系中,直线通常可以表示成y=kx+b,当直线垂直于x轴时,k为无穷大,不利于后续的处理与计算。因此,要先把笛卡尔坐标系进一步转换为极坐标系,得到直线的极坐标表达式为:
式中:ρ为极径;θ为极角。这里将ρ和θ作为两条轴以构建霍夫空间,假如直线的ρ和θ为已知条件,则有极坐标系中的一条直线与霍夫空间里的一个点相对应。如果极坐标系中有若干个点,那么每个点可以画无数条直线,每条直线对应一对ρ和θ,从而对应霍夫空间里的一条曲线。如果要从极坐标若干点中寻找一条直线使其尽可能包含最多的点,则可以在霍夫空间里寻找最多曲线相交的点。Hough 变换原理如图8 所示。
图8 Hough 变换原理图
在实际应用中为避免无关因素对道路拟合效果造成的干扰,根据大部分情况下得到的车道线图像信息,选取进一步对图像进行裁剪处理,仅保留输入图像下方1 3 区域,同时车道线拟合检测角度限制在-60°~60°,对裁剪后的目标道路信息进行霍夫变换拟合。
本文利用结构化道路下采集到的车道线图像进行模拟实验,利用Matlab R2022b 在CPU 为3.2 GHz,RAM为16.0 GB 的Windows 操作系统上进行实验模拟。实验结果如图9 所示,最终识别检测到的车道线信息用黑色实线拟合,通过最终拟合效果来看,目标车道线被清晰识别出来,对后续的车道线检测技术研究有一定参考价值。
图9 拟合效果图
3 结 语
本文基于图像处理技术,首先对采集到的道路图像进行灰度化处理,同时为了减少噪声对车道线识别的影响,对灰度化后的图像进行了滤波处理。使用不同传统边缘检测算子分别对车道图像进行边缘检测,发现利用霍夫变换改进的Canny 算子边缘检测方法在相同条件下具有较高的检测精度,能够清晰地检测出车道线信息。然而,本文也存在一些不足之处,例如未考虑光照和地面干扰等因素的影响,雨天或雪天可能会影响车道线的识别效果。因此,需要进一步改进算法以提高算法的识别精度。
注:本文通讯作者为王光辉。