目录

摘要

简介

实现

生成IPM

过滤和筛选

直线检测

曲线拟合

后处理

实验

结论

2008年的一篇基于传统图像处理方法的车道线检测算法。

摘要

作者提出一种针对街道场景的快速稳定的车道线检测算法,其处理流程为产生IPM图像——使用定制化的高斯核过滤——使用Ransac方法拟合贝塞尔曲线参数——后处理。算法能够每秒处理50帧图像,各种场景下的车道线都能检出,且相比以前的方法效果表现还不错。

简介

自动驾驶演进的一个目的就是降低车祸发生率,其中车道线检测是一项自20世纪80年代就备受关注的技术。使用的技术包括基于单目/双目,形态学操作,概率分组,B-snakes等。但这些算法大都针对高速公路,相比之下街道场景挑战更大,包括车辆、破碎的车道线、背景阴影、更弯曲的/奇怪的/相交的车道线、行人、光照环境等的影响,如下图所示。

本文提出一种快速鲁棒的检测街道场景中车道线的方法,其流程为使用IPM方法生成鸟瞰图——使用定制化的高斯滤波器检测竖线——二值化——霍夫变换提取直线——基于Ransac在原图中拟合曲线。

文章创新点如下:1)速度快,在Intel Core2 2.4GHz机器上使用640x480的图像运行帧率达到50Hz;2)不限制检测的直线数量;3)提出一种新的基于Ransac的曲线拟合方法;4)通过手动标注数据和建立自动评分方法来评估算法的实际效果。

实现

生成IPM

作者选择了先生成鸟瞰图,然后在鸟瞰图中做检测。这样做有两点优势:1)原图中由于透视投影的影响导致车道线并不互相平行,但是在鸟瞰图中会接近平行;2)可以生成指定大小的感兴趣区域的鸟瞰图,减小处理图像的尺寸。

其处理流程中需要用到相机的内外参,这里作者未考虑外参中roll和相机的畸变影响。 利用相机的成像模型可以建立鸟瞰图与原图之间像素的映射关系,再通过插值计算即可生成鸟瞰图,如下图所示。

过滤和筛选

IPM图像中车道线基本上竖直分布,且车道线相比两侧在水平方向上亮度更高;基于这个作者设计了一个沿x方向的滤波器,类似于高斯+sobel的组合,专门用于水平方向边缘的检测;同时假定图像中边缘的宽度像素值已知,来指定滤波器中的sigma值来控制模板的分布,是个技巧点。其kernel形状如下图左侧所示,中间是施加kernel后的运算结果,右侧是经过阈值化后的效果

上一步得到的阈值化图像中存在噪声,需要降低其影响。作者将图像像素值由大到小排列,选出前2.5%作为可能的边缘点进行后续计算,其余的像素点全部舍弃。

直线检测

首先将上述结果图像作为输入,假设车道线大致竖直分布;统计图像列方向上的像素值累积和并得到直方图,然后使用高斯滤波处理;得到直方图的局部极大值点,使用其相邻的两个点应用抛物线插值计算得到更精确的位置,作为直线的水平方向的初始坐标,如下图所示。

然后在上述坐标的附近应用一个矩形框,认为矩形框内的像素属于同一条直线,使用RANSAC方法拟合直线,如下图所示。

曲线拟合

上述直线拟合还只认为是初步结果,由于实际场景中车道线有可能是弯曲的,需要继续执行曲线拟合操作。作者这里选取了三阶贝塞尔曲线,有4个控制点,分为起始点、终止点和两个控制形状的点,其方程和示意图如下所示。

作者基于RANSAC的思想实现曲线拟合,计算流程如下图所示。

1)getRandomSample():输入图为直线检测的结果图,从直线拟合后得到的直线附近区域内选点,点的像素值越高被选中的概率越大

2)fitSpline():得到一些点之后,可通过最小二乘法求解得到贝塞尔曲线的四个控制点坐标,进而得到贝塞尔曲线方程

3)computeSplineScore():这里作者没有使用计算每个点到拟合的贝塞尔曲线的距离和作为评价指标,因为其计算量太大;而是提出新的评价标准,包括拟合曲线时使用的点的像素和(像素值越高越有可能属于车道线),曲线的长度(越长越好),曲线的角度(使用控制点的两个夹角计算,越接近竖直越好)。

拟合输出效果如下图所示。

后处理

为了获得更好的曲线拟合结果,作者提出如下操作,同时应用于鸟瞰图和原图中。

1)获得更好的边缘点

对上一步拟合得到的曲线做离散化得到一系列点,然后计算这些点的法线方向,沿着该方向寻找附近的像素值更大的点作为更新后的点,重新拟合曲线

2)扩展曲线长度

沿着1)得到的曲线的头尾部的方向尝试寻找符合像素值沿着其法向量为极值的点补充进来,来扩展曲线长度

3)结果校验

重新检查新得到的曲线,不能太弯曲,且长度不能太小,在IPM中方向要基本保持竖直

重新检测后的效果如下图所示。

实验

作者采集了一些街道场景的图像并手动标注了一些数据,将检测得到的曲线结果与标注的真实值进行比较,并定义了是否正确的评价标准,具体不再展开。

结论

提出一种鲁棒、快速的基于传统图像处理的车道线检测算法,具体的:

1)在鸟瞰图中处理,使用定制化的高斯核滤波,之后进行直线拟合,并提出一种新的基于RANSAC方法的三阶贝塞尔曲线拟合方法,和后处理方法

2)不限制车道线检测数量,在PC端每秒最多可处理50张图像

3)通过实验表明算法的检测精度还不错

《Real time Detection of Lane Markers in Urban Streets》阅读笔记相关推荐

  1. trainer setup_Detectron2源码阅读笔记-(一)Configamp;Trainer

    一.代码结构概览 1.核心部分 configs:储存各种网络的yaml配置文件 datasets:存放数据集的地方 detectron2:运行代码的核心组件 tools:提供了运行代码的入口以及一切可 ...

  2. VoxelNet阅读笔记

    作者:Tom Hardy Date:2020-02-11 来源:VoxelNet阅读笔记

  3. Transformers包tokenizer.encode()方法源码阅读笔记

    Transformers包tokenizer.encode()方法源码阅读笔记_天才小呵呵的博客-CSDN博客_tokenizer.encode

  4. 源码阅读笔记 BiLSTM+CRF做NER任务 流程图

    源码阅读笔记 BiLSTM+CRF做NER任务(二) 源码地址:https://github.com/ZhixiuYe/NER-pytorch 本篇正式进入源码的阅读,按照流程顺序,一一解剖. 一.流 ...

  5. Mina源码阅读笔记(一)-整体解读

    2019独角兽企业重金招聘Python工程师标准>>> 今天的这一节,将从整体上对mina的源代码进行把握,网上已经有好多关于mina源码的阅读笔记,但好多都是列举了一下每个接口或者 ...

  6. “CoreCLR is now Open Source”阅读笔记

    英文原文:CoreCLR is now Open Source 阅读笔记如下: CoreCLR是.NET Core的执行引擎,功能包括GC(Garbage Collection), JIT(将CIL代 ...

  7. QCon 2015 阅读笔记 - 团队建设

    QCon 2015阅读笔记 QCon 2015 阅读笔记 - 移动开发最佳实践 QCon 2015 阅读笔记 - 团队建设 中西对话:团队管理的五项理论和实战 - 谢欣.董飞(今日头条,LinkedI ...

  8. 05《软件需求模式》阅读笔记

    剩下的两个阅读笔记写第二部分.各类需求模式,共八个领域和它的需求模式,这一次写前四个. 基础需求模式,它是所有种类的系统都可能需要的一些东西.系统间接口需求模式使用系统间接口需求模式定义被定义的系统和 ...

  9. [置顶] Linux协议栈代码阅读笔记(一)

    Linux协议栈代码阅读笔记(一) (基于linux-2.6.21.7) (一)用户态通过诸如下面的C库函数访问协议栈服务 int socket(int domain, int type, int p ...

  10. 大型网站技术架构:核心原理与案例分析阅读笔记二

    大型网站技术架构:核心原理与案例分析阅读笔记二 网站架构设计时可能会存在误区,其实不必一味追随大公司的解决方案,也不必为了技术而技术,要根据本公司的实际情况,制定适合本公司发展的网站架构设计,否则会变 ...

最新文章

  1. ModuleNotFoundError: No module named ‘pandas._libs.tslibs.base‘
  2. 批号数量调整单中批次数量和库存数量不一致
  3. c++反汇编与逆向分析
  4. IBM研究院计画5年改变人类生活创新预测
  5. 简单的自动更新程序实现
  6. ZZULIOJ 1123: 最佳校友
  7. jquery项目中一些常用方法
  8. mysql 返回几个组_MySQL – 控制由组返回的行
  9. 前端分页插件pagination
  10. java.util.ConcurrentModificationException: null at java.util.ArrayList$Itr.checkForComodification(A
  11. 计算机与食品科学与工程关系,计算机在食品科学与工程中的应用课程标准.doc...
  12. 计算机的神奇小游戏,电脑课我们常玩的13个小游戏
  13. 前端JS xxxx年xx月xx日转换成页面时间组件xxxx-xx-xx格式
  14. 操作系统概论【引入操作系统中的基本概念和操作】
  15. 现代C++教程1X读书笔记
  16. 推荐系统从入门到接着入门
  17. 访问国内网站提示无法访问
  18. 大学生如何学习Java
  19. 基于BootStrap仿淘宝星星商品评价案例
  20. 微服务架构中服务集成的主要技术

热门文章

  1. 读书随想2 - 格鲁夫给经理人的第一课
  2. mysql where 条件取反_MySQL搜索: WHERE 多条件
  3. WM_PIANT消息与窗口重画
  4. IT软件技术人员的职位路线(从程序员到技术总监) - 部门管理经验谈(转)
  5. 计算机软件系统举例,什么是系统软件应用软件举例说明
  6. 面试篇1:C/C++,Linux
  7. Linux-Shell脚本练习
  8. office 2016输入超过4阶矩阵
  9. Oracle 19c Grid Infrastructure安装
  10. 安卓手机屏幕分辨率怎么调整