专栏名称: 新机器视觉
最前沿的机器视觉与计算机视觉技术
目录
相关文章推荐
陕西商务  ·  2月1日至2月7日陕西生活必需品市场运行分析 ·  22 小时前  
陕西商务  ·  2月1日至2月7日陕西生活必需品市场运行分析 ·  22 小时前  
西安头条  ·  陕西一学校拟晋升 ·  2 天前  
西安头条  ·  陕西一学校拟晋升 ·  2 天前  
896汽车调频  ·  陕西今年将建成1条高铁线! ·  3 天前  
陕西省文化和旅游厅  ·  老陕专享!少华山冬日免票狂欢!一键穿越冰雪秘境→ ·  4 天前  
陕西省文化和旅游厅  ·  老陕专享!少华山冬日免票狂欢!一键穿越冰雪秘境→ ·  4 天前  
51好读  ›  专栏  ›  新机器视觉

自动驾驶 | 车道检测实用算法

新机器视觉  · 公众号  ·  · 2024-12-18 20:55

正文

作者 | Ethon
来源 | 决策智能与机器学习
车道识别是自动驾驶领域的一个重要问题,今天介绍一个利用摄像头图像进行车道识别的实用算法。该算法利用了OpenCV库和Udacity自动驾驶汽车数据库的相关内容。
该算法包含以下步骤:
  1. 摄像头校准,以移除镜头畸变(Lens distortion)的影响
  2. 图像前处理,用于识别车道线
  3. 道路视角变换(Perspective transform)
  4. 车道线检测
  5. 车辆定位和车道半径计算
0 1

摄像头校准


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

以下图片展示了两种典型的径向偏差。
为了 正确的识别图像中的车道,首先需要消除图像中的径向偏差。计算机视觉专家们找到了一种有效的方式来修正径向偏差:首先将图像转换成棋盘模型,然后校正摄像头,使获得的图像中白色和黑色格子达到相同规尺度。
为了修正失真效应,需要识别棋盘的中心并利用期望的棋盘尺度来计算失真系数,并用其来消除图像的径向失真。
在上图中,最左边的图像显示了原始的失真图像,最右侧的图可以看出图像顶部的角度扭曲,中间的图像是经过摄像头校准后的未失真图像。
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是一种利用高斯平滑和微分运算来降低噪声影响的梯度滤波器。
03

视角变换


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

OpenCV提供了 getPerspectiveTransform
和 warpPerspective函数,可用于进行图像的视角变换。首先,我们在图像中选择想要变换的区域,在下图中,我们选择了汽车前面的车道线部分。
接下来,选择代表目标空间的点集,在本例中,任何矩形内的点集都可以。我们可以使用warpPerspective函数将选定区域变换到我们选择的视角中。
下图显示了两条不同路段的车道线进行视角变换后的结果。
04

车道检测


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

接下来,我们需要找到一个最佳起始点来寻找属于左车道线的像素和属于右车道线的像素。一种有效的方法是生成图像中车道线像素的直方图。直方图应该有两个尖峰,各代表一条车道线,左边的尖峰是左边的车道线,右边的尖峰是右边的车道线。
然后将两个峰值的位置作为起始点来搜索属于每条车道线的像素。我们采用了滑动窗口搜索技术,它从底部开始,迭代地扫描到图像的顶部,并将检测到的像素添加到列表中。如果在一个窗口中检测到足够数量的像素,那么下一个窗口将以它们的平均位置为中心,这样我们就沿着像素的路径寻遍整个图像。
在我们检测到每个车道线的像素之后,我们就可以通过这些点来拟合一个多项式,从而产生一条平滑曲线,从而实现车道线的最佳近似。







请到「今天看啥」查看全文


推荐文章
西安头条  ·  陕西一学校拟晋升
2 天前
西安头条  ·  陕西一学校拟晋升
2 天前
896汽车调频  ·  陕西今年将建成1条高铁线!
3 天前
爱健身  ·  臀型不美观,请练臀中肌
8 年前
笑点研究所  ·  韩国最敬业的女星,应该颁个劳模奖
8 年前
古典古少侠  ·  春节幸福践行课之 8 :宜善行
8 年前