0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

利用摄像头图像的车道检测实用算法

新机器视觉 来源:决策智能与机器学习 作者:Ethon 2022-07-05 15:42 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

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

该算法包含以下步骤:

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

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

道路视角变换(Perspective transform)

车道线检测

车辆定位和车道半径计算

01 摄像头校准

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

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

32121006-fa0d-11ec-ba43-dac502259ad0.jpg

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

3226477e-fa0d-11ec-ba43-dac502259ad0.jpg

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

32357f78-fa0d-11ec-ba43-dac502259ad0.jpg

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是一种利用高斯平滑和微分运算来降低噪声影响的梯度滤波器。

3243e4aa-fa0d-11ec-ba43-dac502259ad0.jpg

03 视角变换

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

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

3250774c-fa0d-11ec-ba43-dac502259ad0.jpg

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

325c969e-fa0d-11ec-ba43-dac502259ad0.jpg

04 车道检测

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

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

3269eeca-fa0d-11ec-ba43-dac502259ad0.png

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

327d7012-fa0d-11ec-ba43-dac502259ad0.jpg

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

3293b5de-fa0d-11ec-ba43-dac502259ad0.png

05 车辆/车道线位置

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

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

32b4a6cc-fa0d-11ec-ba43-dac502259ad0.jpg

06 结果

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

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 汽车电子
    +关注

    关注

    3046

    文章

    9087

    浏览量

    173112
  • 摄像头
    +关注

    关注

    61

    文章

    5114

    浏览量

    103473
  • 自动驾驶
    +关注

    关注

    794

    文章

    14979

    浏览量

    181387

原文标题:自动驾驶 | 车道检测实用算法

文章出处:【微信号:vision263com,微信公众号:新机器视觉】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    摄像头可靠性EMC设计优化

    更好解决摄像头EMC问题。二摄像头工作原理摄像头模组通过镜头(LENS)将光学图像投射到图像传感器(Sensor)表面,转换为电信号后经过A
    的头像 发表于 04-07 11:34 128次阅读
    <b class='flag-5'>摄像头</b>可靠性EMC设计优化

    ESP32-S3在初始化摄像头检测摄像头模组型号不被支持

    你现在遇到的核心问题是:ESP32-S3在初始化摄像头检测摄像头模组型号不被支持(错误码0x106(ESP_ERR_NOT_SUPPORTED)),导致摄像头探测失败并触发设备重启
    发表于 02-11 06:38

    什么是汽车车载摄像头气密性检测仪-岳信仪器

    汽车车载摄像头气密性检测仪,是专门用于检测车载摄像头密封性能的专业设备,核心作用是通过模拟极端环境压力变化,精准识别摄像头是否存在微小泄漏,
    的头像 发表于 01-15 10:57 411次阅读
    什么是汽车车载<b class='flag-5'>摄像头</b>气密性<b class='flag-5'>检测</b>仪-岳信仪器

    Termux手机摄像头采集图像/视频流 部署 YOLO 模型推理

    Termux手机摄像头采集图像/视频流 部署 YOLO 模型推理
    的头像 发表于 12-14 07:26 3279次阅读

    实战指南:用摄像头模块实现多场景智能拍摄全流程!

    )中的集成与应用方法,快速完成项目落地。 一、演示功能概述   摄像头拍照功能通过光学传感器与图像处理算法,实现将现实场景转化为数字图像数据的技术。它允许设备捕捉静态画面,并支持实时预
    的头像 发表于 11-21 17:59 416次阅读
    实战指南:用<b class='flag-5'>摄像头</b>模块实现多场景智能拍摄全流程!

    车载双目摄像头如何“看见”世界?

    源自:网络 车载双目摄像头(也称立体视觉摄像头,Stereo Camera)模仿人眼的视觉机制,通过两个略有间距的摄像头同时拍摄同一场景,比较两幅图像之间的差异,从而计算出深度信息。
    的头像 发表于 11-13 09:17 1651次阅读
    车载双目<b class='flag-5'>摄像头</b>如何“看见”世界?

    决定自动驾驶摄像头质量的因素有哪些?

    和一条数据链路拼凑在一起,最后要得到的却是算法能稳定用、工程能长期维护的“可信图像”,那决定自动驾驶摄像头质量的因素有哪些? 摄像头质量的评价因素 讨论
    的头像 发表于 09-14 10:59 1325次阅读
    决定自动驾驶<b class='flag-5'>摄像头</b>质量的因素有哪些?

    创世SD NAND贴片卡:智能摄像头存储难题的完美解决方案 #人工智能 #智能摄像头 #摄像头

    摄像头
    深圳市雷龙发展有限公司
    发布于 :2025年08月05日 11:17:13

    不懂手机摄像头气密性检测仪?看完这篇就懂了-岳信仪器

    检测仪是一种专门用于检测手机摄像头密封性能的设备。它采用先进的传感技术和精密的检测算法,能够快速、准确地检测
    的头像 发表于 08-04 11:47 1075次阅读
    不懂手机<b class='flag-5'>摄像头</b>气密性<b class='flag-5'>检测</b>仪?看完这篇就懂了-岳信仪器

    红外摄像头模组是什么?科技时代的眼睛

    深入探讨红外摄像头模组的工作原理、应用领域以及选择红外摄像头时需要考虑的因素。什么是红外摄像头模组?红外摄像头模组是一种能够捕捉红外线图像
    的头像 发表于 07-31 10:07 1296次阅读
    红外<b class='flag-5'>摄像头</b>模组是什么?科技时代的眼睛

    迅为RK3576开发板摄像头实时推理测试-ppseg 图像分割

    迅为RK3576开发板摄像头实时推理测试-ppseg 图像分割
    的头像 发表于 07-11 14:31 1023次阅读
    迅为RK3576开发板<b class='flag-5'>摄像头</b>实时推理测试-ppseg <b class='flag-5'>图像</b>分割

    【VisionFive 2单板计算机试用体验】USB摄像头测试

    使用opencv测试USB摄像头。 一、检测USB摄像头 插入USB摄像头,执行命令,提示没有找到命令 root@starfive:~# lsusb 安装软件包 root@star
    发表于 07-06 23:14

    企业必看!手机摄像头气密性检测仪提升生产效益

    的准确性。它采用先进传感技术与精密算法,能精准检测摄像头微小的泄漏问题。相比传统检测方法,如人工目测或简单泡水测试,可大大减少误判与漏判,避免不良品流入下一道工序,
    的头像 发表于 06-04 14:03 705次阅读
    企业必看!手机<b class='flag-5'>摄像头</b>气密性<b class='flag-5'>检测</b>仪提升生产效益

    一文聊聊自动驾驶摄像头

    [首发于智驾最前沿微信公众号]自动驾驶车辆的摄像头是感知模块的重要组成,其成本低、分辨率高且能捕捉丰富的语义信息,使其在车道识别、障碍物检测、交通标志和信号灯识别等任务中不可或缺。不同类型的
    的头像 发表于 05-05 09:59 1483次阅读
    一文聊聊自动驾驶<b class='flag-5'>摄像头</b>

    天波解疑:IPC监控摄像头的低功耗特点及其优势

    智能算法识别,可以进行人脸抓拍、异常行为识别等,有效提高安防水平。但高清网络监控摄像头和AI视觉监控摄像头的高清画面及高算力也会带来能耗高或电池续航能力的问题。考虑到
    的头像 发表于 04-25 09:46 1432次阅读
    天波解疑:IPC监控<b class='flag-5'>摄像头</b>的低功耗特点及其优势