自动驾驶中进行车道线检测的实用算法

发布时间:2024-02-22  

车道识别是自动驾驶领域的一个重要问题,今天介绍一个利用摄像头图像进行车道识别的实用算法。该算法利用了OpenCV库和Udacity自动驾驶汽车数据库的相关内容。 该算法包含以下步骤:

摄像头校准,以移除镜头畸变(Lens distortion)的影响


图像前处理,用于识别车道线

道路视角变换(Perspective transform)

车道线检测

车辆定位和车道半径计算


01   摄像头校准    

摄像头输出的视频可以看做一系列图像的时间序列。镜头的结构特性造成利用针孔摄像机拍摄的图像容易发生径向畸变,导致根据物体与光轴的距离而导致不一致的放大。

以下图片展示了两种典型的径向偏差。

3eebd8fc-5f97-11ee-939d-92fbcf53809c.jpg

为了 正确的识别图像中的车道,首先需要消除图像中的径向偏差。计算机视觉专家们找到了一种有效的方式来修正径向偏差:首先将图像转换成棋盘模型,然后校正摄像头,使获得的图像中白色和黑色格子达到相同规尺度。 为了修正失真效应,需要识别棋盘的中心并利用期望的棋盘尺度来计算失真系数,并用其来消除图像的径向失真。

3f01a948-5f97-11ee-939d-92fbcf53809c.jpg

在上图中,最左边的图像显示了原始的失真图像,最右侧的图可以看出图像顶部的角度扭曲,中间的图像是经过摄像头校准后的未失真图像。 OpenCV的findChessBoardCorners和calibrateCamera函数可以用来实现以上的摄像头校准过程。 

 

02   图像预处理    

解决了摄像头图像失真问题后,我们继续探索检测车道的算法。在计算机视觉领域,分离和检测对象的一种常用方法是使用颜色变换和梯度来生成一个具有过滤阈值的二值化图像。

对于颜色变换,我们尝试了HSL、LAB和LUA三种颜色空间,以找出哪一种最适合于过滤在道路上的车道线的像素。 HSL:  通过对色相(H)、饱和度(S)、明度(L)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的 LAB:  由亮度(L)和有关色彩的A, B三个要素组成。L表示亮度(Luminosity),A表示从洋红色至绿色的范围,B表示从黄色至蓝色的范围 LUV:  由CIE XYZ空间经简单变换得到,具视觉统一性。L表示物体亮度,U和V是色度 经过试验,我们发现LAB的B道和LUV的L通道是识别车道线的最佳组合。 接下来,我们试验了Sobel梯度滤波器。图像梯度度量了颜色变化的方向强度。Sobel是一种利用高斯平滑和微分运算来降低噪声影响的梯度滤波器。

3f268416-5f97-11ee-939d-92fbcf53809c.jpg

03   视角变换    

车道检测的难点在于准确获得车道线的方向以及角度。在摄像头的默认视角下,远离摄像机的物体显得更小,同时车道线在远离汽车的方向逐渐相交,这和实际情况是不符的。解决这种视点扭曲的一种方法是改变图像的视角,比如可以从上往下看(鸟瞰图)。

OpenCV提供了 getPerspectiveTransform  和 warpPerspective函数,可用于进行图像的视角变换。首先,我们在图像中选择想要变换的区域,在下图中,我们选择了汽车前面的车道线部分。

3f387c98-5f97-11ee-939d-92fbcf53809c.jpg

接下来,选择代表目标空间的点集,在本例中,任何矩形内的点集都可以。我们可以使用warpPerspective函数将选定区域变换到我们选择的视角中。 下图显示了两条不同路段的车道线进行视角变换后的结果。

3f474ce6-5f97-11ee-939d-92fbcf53809c.jpg

04   车道检测    

下面,我们正式开始进行车道检测。在前面的各步骤中,我们进行了图像的二元阈值化和视角变换,最终获得一个黑白图像,其中白色的像素代表我们试图检测的车道线的部分。

接下来,我们需要找到一个最佳起始点来寻找属于左车道线的像素和属于右车道线的像素。一种有效的方法是生成图像中车道线像素的直方图。直方图应该有两个尖峰,各代表一条车道线,左边的尖峰是左边的车道线,右边的尖峰是右边的车道线。

3f578a0c-5f97-11ee-939d-92fbcf53809c.png

然后将两个峰值的位置作为起始点来搜索属于每条车道线的像素。我们采用了滑动窗口搜索技术,它从底部开始,迭代地扫描到图像的顶部,并将检测到的像素添加到列表中。如果在一个窗口中检测到足够数量的像素,那么下一个窗口将以它们的平均位置为中心,这样我们就沿着像素的路径寻遍整个图像。 在我们检测到每个车道线的像素之后,我们就可以通过这些点来拟合一个多项式,从而产生一条平滑曲线,从而实现车道线的最佳近似。 下面的图像展示了滑动窗口技术的作用,多项式曲线通过检测到的车道线像素拟合获得(红色为左车道像素,蓝色为右车道像素)。

3f698ac2-5f97-11ee-939d-92fbcf53809c.jpg

下面是滑动窗口搜索技术的另一个视图,高亮显示并填充搜索区域:

3f7969e2-5f97-11ee-939d-92fbcf53809c.png

05   车辆/车道线位置    

最后,利用两个检测到的车道线的位置,并假设摄像头位于图像的中心位置,可以计算出汽车相对于车道的位置。根据图像的分辨率,能够进行从像素到米的换算。

此外,利用尺度测量,我们还可以通过拟合一个新的多项式到物理空间来计算车道线的曲率,然后计算曲率半径。这条线的曲率半径就是这两个半径的平均值,下图显示了两条车道线的曲线半径和中心偏移量(图像中不可见)。

3f864356-5f97-11ee-939d-92fbcf53809c.jpg

06   结果    

以上介绍了自动驾驶中进行车道线检测的实用算法,我们通过一个多边形投影区域来显示检测结果,可以看到检测结果与实际非常吻合。

3f945d38-5f97-11ee-939d-92fbcf53809c.jpg


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>