热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

matlab点云中值滤波,基于车载激光雷达的车道线识别方法与流程

本发明属于自动驾驶的模式识别领域,涉及激光雷达点云数据处理及识别方法。背景技术:车道线检测在智能车辆辅助安全系统中起着关键的作用,车道偏离

本发明属于自动驾驶的模式识别领域,涉及激光雷达点云数据处理及识别方法。

背景技术:

车道线检测在智能车辆辅助安全系统中起着关键的作用,车道偏离警示系统在车道保持辅助系统以及车道换道辅助系统中有着广泛的应用;同时车道线检测是智能车自动导航系统的基础,车辆自动导航的最优行驶路径需要根据已获取的道路环境信息进行规划,车道线检测在具体的车道行驶中是非常重要的。

车道线检测的基本原理是使用传感器获取道路以及周边环境信息,然后经过复杂的分析获取车道线所在的具体位置,最终在车辆自主导航系统和智能车辆辅助安全系统中发挥作用。目前,车道线检测方法有三种:分别是基于雷达的车道线检测、基于视觉的车道线检测和雷达与视觉相结合的车道线检测。目前基于视觉的车道线检测技术已经比较成熟,它是通过相机获取道路信息,通过直接利用道路的视觉特征,这种方式有着很快的处理速度,因此被广泛的应用;但相机本身有个很大的缺陷就是易受外界环境的影响。由于雷达技术的发展使其具有及其不容易受外界环境的影响这一优势,基于雷达的车道线检测成为了研究热点。目前使用在车道线检测上的雷达主要是激光雷达和毫米波雷达,因为激光雷达有着强大的抗外界干扰能力和高分辨率优势,因此被广泛使用。激光雷达分为单线激光雷达、多线激光雷达和三维全向激光雷达。其中因为多线激光雷达探测距离更远、检测精确度更高、扫描范围更广并且返回信息量更大;三维全向激光雷达价格过高而备受青睐。

技术实现要素:

发明目的

本发明使用激光雷达传感器做车道线识别,解决了传统相机在夜晚、雾天等光照条件不好的情况下无法识别车道线的问题。

技术方案

一种基于车载激光雷达的车道线识别方法,其特征在于:步骤如下:

一、读取curb中间的道路点云数据:

使用32线激光雷达传感器,将此传感器竖直的安装在自车的车顶,以获取道路及其周围的环境点云数据;

(1)使用最小二乘算法分别拟合左、右curb的函数关系式yl=alxl+bl和yr=arxr+br,其中yl代表左边curb点云的纵坐标值,xl代表左边curb点云的横坐标值,al为左边curb函数式的系数,bl为左边curb函数式的截距,yr代表右边curb点云的纵坐标值,xr代表右边curb点云的横坐标值,ar为右边curb函数式的系数,br为右边curb函数式的截距;

(2)根据左、右curb的函数关系式yl=alxl+bl和yr=arxr+br使用Visual Studio平台中的C++编程提取curb中间的道路点云数据(x1,y1),(x2,y2)...(xn,yn),其中n代表提取的点云个数,为后续识别车道线做准备;

(3)取由激光雷达的1-22线束获取的点云数据;

二、排序:

首先对路面数据分开处理,以自车坐标为原点,分别将数据根据笛卡尔坐标系的纵坐标0点为基准,存成两类,分别为纵坐标值大于0和纵坐标值小于等于0,路面数据从小到大快速有序进行排列存储;

三、均值滤波:

使用均值滤波算法,对数据进行平滑操作;

四、寻找峰值:

对于通过激光雷达获取的点云数据的强度值,由同一个线束返回的多点云强度值就会出现局部峰值,此局部峰值点即为车道线的强度;

因为实际的数据处理中有噪声的干扰,因此多点云强度值局部会出现很多的峰值点,然而并不是所有的峰值点都是车道线的数据点,根据车道线的强度值要比路面点的强度值大很多这一信息,设置峰值点要比其峰谷点至少大5,才认为是有意义的车道线数据点;

五、车道线高度信息筛选:

车道线是在路面刷了一层涂漆,那么这层涂漆就会高出其周围的路面,根据此信息,我们选取强度峰值周围的点,并在这些点中,找出高度较其他点高的点,这些点就是组成车道线标识的点,这里需要使用均值滤波进行平滑处理;六、多线束联合筛选峰值:

因为车道线是具有线性特征的,那么每个线束提取的峰值如果是车道线标识点,那么其相对应的在其最邻近线束应该具有x轴方向横向距离不超过车道线标识宽度的峰值点;为了剔除噪声点的干扰,这个连续的峰值点还需大于一定数目,将此横向距离阈值设置为0.15m,连续的点数目阈值设置为10,即这个连续的点数目超过10,我们才认为它是组成车道线的峰值点;

由第一线数的峰值点找到第二线束的峰值点,再由第二线束的峰值点找到第三线束的峰值点,以此类推直到搜索到最后一个线束;然后判断找到的峰值点总数是否满足我们设置的阈值,满足则保留,否则丢弃;

然后从第一线数的其余峰值点继续按照上述方法往下找,直到遍历完所有峰值点,已经遍历过的点不再参与遍历操作;

以上多线束联合,将基于自车坐标的y轴上、下部分分开操作;

如此,为了减小计算量和无用信息的干扰,首先通过curb限制,提取了道路信息点,然后根据车道线的强度特征,使用峰值法粗筛选车道线点,最后根据车道线的线性特征,使用多线束联合法筛选掉干扰点,进而将自车前方和后方的车道线识别出来。

上述步骤二-步骤六的数据分析均采用单线束独立分析。

优点及效果

本发明的识别方法通过使用激光雷达获取的点云数据进行车道线识别,很好的克服了传统视觉算法检测的缺点,即使在下雨、大雾等天气不好的情况下也能很好的进行车道线检测。并且激光雷达分辨率高,扫描范围广,通过复杂的数据分析和多帧联合能够快速且精确的检测出车道线。

附图说明

图1、原始点云数据图;

图2、单线束自车上半部分强度趋势图;

图3、均值滤波之后的强度数据趋势;

图4、原数据高度趋势;

图5、均值滤波后数据高度趋势;

图6、原图;

图7、平滑后的数据图;

图8、多线束联合;

图9、识别效果图1;

图10、识别效果图2;

图11、识别效果图3;

图12、耗时统计。

具体实施方式

下面结合附图对本发明做进一步的说明:

基于车载激光雷达的车道线识别方法,步骤如下:

一、读取curb(curb即为马路牙子)中间的道路点云数据:

本实施例中,使用32线激光雷达传感器,将此传感器竖直的安装在自车的车顶,以获取道路及其周围的环境点云数据;

(1)首先为了限制道路分析区域,使用最小二乘算法分别拟合左、右curb的函数关系式yl=alxl+bl和yr=arxr+br,其中yl代表左边curb点云的纵坐标值,xl代表左边curb点云的横坐标值,al为左边curb函数式的系数,bl为左边curb函数式的截距,yr代表右边curb点云的纵坐标值,xr代表右边curb点云的横坐标值,ar为右边curb函数式的系数,br为右边curb函数式的截距;

(2)根据左、右curb的函数关系式yl=alxl+bl和yr=arxr+br使用Visual Studio平台中的C++编程提取curb中间的道路点云数据(x1,y1),(x2,y2)...(xn,yn),其中n代表提取的点云个数,为后续识别车道线做准备;

缩编程序代码:

(3)根据数据统计结果以及雷达线束扫描方式,发现并不是雷达所有线束都能打到地面获取数据,取由激光雷达的1-22线束获取的点云数据;

以下步骤二-步骤六的数据分析均采用单线束独立分析;

二、排序:

为了更好的使用强度信息进行车道线和道路分离,首先对路面数据分开处理,以自车坐标为原点,其坐标系如图1坐标线所示,分别将数据根据笛卡尔坐标系的纵坐标0点为基准,存成两类,分别为纵坐标值大于0和纵坐标值小于等于0,路面数据从小到大快速有序进行排列存储(即如图1虚线箭头所示,从左到右的方向);

三、均值滤波:

对排序好的数据,观察其强度变化趋势如图2所示,从图2我们可以发现数据并不平滑,不利于寻找峰值,于是这里使用本技术领域的均值滤波算法,对数据进行平滑操作,滤波后的数据趋势如图3所示;

四、寻找峰值:

对于通过激光雷达获取的点云数据的强度值,物体材质不同返回的强度数据是不一样的,通常车道线的强度值要大于道路强度值;那么,由同一个线束返回的多点云强度值就会出现局部峰值,此局部峰值点即为车道线的强度,如图3中代表的点(圆圈里的值);

因为实际的数据处理中有噪声的干扰,因此多点云强度值局部会出现很多的峰值点,然而并不是所有的峰值点都是车道线的数据点,根据车道线的强度值要比路面点的强度值大很多这一信息,设置峰值点要比其峰谷点至少大5,才认为是有意义的车道线数据点;

五、车道线高度信息筛选:

车道线是在路面刷了一层涂漆,那么这层涂漆就会高出其周围的路面,根据此信息,我们选取强度峰值周围的点,如图4所示,并在这些点中,找出高度较其他点高的点,如图5所示圆圈里的点,这些点就是组成车道线标识的点,因为在实际道路中车道线会有磨损等一些外力的干扰,其呈现的数据趋势并不是我们理想中很明显的找出有高度特征的趋势,如图6原始数据和图7使用均值滤波处理后的数据对比所示,所以这里需要使用均值滤波进行平滑处理;

六、多线束联合筛选峰值:

因为车道线是具有线性特征的,那么每个线束提取的峰值如果是车道线标识点,那么其相对应的在其最邻近线束应该具有x轴方向横向距离不超过车道线标识宽度的峰值点;为了剔除噪声点的干扰,这个连续的峰值点还需大于一定数目,我们才认为它是构成车道线的峰值点;根据《道路交通标志和标线》国家标准(GB5768-1999)的规定,我国现行的道路交通指示标线宽10-20cm,并且分析现在处理的数据后,我们将此横向距离阈值设置为0.15m,连续的点数目阈值设置为10,即这个连续的点数目超过10,我们才认为它是组成车道线的峰值点;

如图8所示,由第一线数的峰值点1找到第二线束的峰值点2,再由第二线束的峰值点2找到第三线束的峰值点3,以此类推直到搜索到最后一个线束N;然后判断找到的峰值点总数是否满足我们设置的阈值,满足则保留,否则丢弃;

然后从第一线数的11点继续按照上述方法,往下找,直到遍历完所有峰值点,注意,已经遍历过的点不再参与遍历操作;

因为考虑到车道线标识有错开的情况,所以以上多线束联合,将基于自车坐标的y轴上、下部分分开操作;

如此,为了减小计算量和无用信息的干扰,我们首先通过curb限制,提取了道路信息点,然后根据车道线的强度特征,使用峰值法粗筛选车道线点,最后根据车道线的线性特征,使用多线束联合法筛选掉干扰点,进而将自车前方和后方的车道线识别出来。

识别效果如图9、图10和图11所示,图中圆点即为识别出来的车道线的点。

选取高速路上的200帧数据的耗时进行分析,如图12所示,平均耗时为37ms。



推荐阅读
  • “你永远都不知道明天和‘公司的意外’哪个先来。”疫情期间,这是我们最战战兢兢的心情。但是显然,有些人体会不了。这份行业数据,让笔者“柠檬” ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • 本文介绍了Python语言程序设计中文件和数据格式化的操作,包括使用np.savetext保存文本文件,对文本文件和二进制文件进行统一的操作步骤,以及使用Numpy模块进行数据可视化编程的指南。同时还提供了一些关于Python的测试题。 ... [详细]
  • 腾讯安全平台部招聘安全工程师和数据分析工程师
    腾讯安全平台部正在招聘安全工程师和数据分析工程师。安全工程师负责安全问题和安全事件的跟踪和分析,提供安全测试技术支持;数据分析工程师负责安全产品相关系统数据统计和分析挖掘,通过用户行为数据建模为业务决策提供参考。招聘要求包括熟悉渗透测试和常见安全工具原理,精通Web漏洞,熟练使用多门编程语言等。有相关工作经验和在安全站点发表作品的候选人优先考虑。 ... [详细]
  • 人工智能推理能力与假设检验
    最近Google的Deepmind开始研究如何让AI做数学题。这个问题的提出非常有启发,逻辑推理,发现新知识的能力应该是强人工智能出现自我意识之前最需要发展的能力。深度学习目前可以 ... [详细]
  • python计算数据包校验和(python接口数据校验)
    本文目录一览:1、怎么用python算p值和t检验 ... [详细]
  • 深度学习与神经网络——邱锡鹏
    深度学习与神经网络——邱锡鹏-一、绪论人工智能的一个子领域神经网络:一种以(人工))神经元为基本单元的模型深度学习:一类机器学习问题,主要解决贡献度分配问题知识结构:路线图:顶 ... [详细]
  • 聊聊 中国人工智能科技产业 区域竞争力分析及趋势
    原文链接:聊聊中国人工智能科技产业区域竞争力分析及趋势最近看了一个关于国内AI的报告《中国新一代人工智能科技产业区域竞争力评价指数(2021ÿ ... [详细]
  • 通过 JFR 与日志深入探索 JVMTLAB 原理详解
    什么是TLAB?TLAB(ThreadLocalAllocationBuffer)线程本地分配缓存区,这是一个线程专用的内 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • JVM 学习总结(三)——对象存活判定算法的两种实现
    本文介绍了垃圾收集器在回收堆内存前确定对象存活的两种算法:引用计数算法和可达性分析算法。引用计数算法通过计数器判定对象是否存活,虽然简单高效,但无法解决循环引用的问题;可达性分析算法通过判断对象是否可达来确定存活对象,是主流的Java虚拟机内存管理算法。 ... [详细]
  • VSCode快速查看函数定义和代码追踪方法详解
    本文详细介绍了在VSCode中快速查看函数定义和代码追踪的方法,包括跳转到定义位置的三种方式和返回跳转前的位置的快捷键。同时,还介绍了代码追踪插件的使用以及对符号跳转的不足之处。文章指出,直接跳转到定义和实现的位置对于程序员来说非常重要,但需要语言本身的支持。以TypeScript为例,按下F12即可跳转到函数的定义处。 ... [详细]
  • 3年半巨亏242亿!商汤高估了深度学习,下错了棋?
    转自:新智元三年半研发开支近70亿,累计亏损242亿。AI这门生意好像越来越不好做了。近日,商汤科技已向港交所递交IPO申请。招股书显示& ... [详细]
  • 应用场景当遇到数据分类,聚类,预测等场景问题,普通的SQL方法无法解决,需要借助算法这件武器,比如聚类算法,分类算法,预测算法等等,但是手动去研究一个算法比较吃力,有没有那种工具, ... [详细]
author-avatar
271216608_5d6eab
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有