当前位置: 首页 > news >正文

自动驾驶中的交通标志识别原理及应用

自动驾驶中的交通标志识别原理及应用

image

附赠自动驾驶学习资料和量产经验:链接

概述

道路交通标志和标线时引导道路使用者有秩序使用道路,以促进道路行车安全,而在驾驶辅助系统中对交通标志的识别则可以不间断的为整车控制提供相应的帮助。比如禁止类标志可以帮助系统提前进行危险预判;警告类标志可以帮助系统提前进行在某些情况下进行提前避障处理;指示类标志可以帮助系统进行控制预处理,以确保行车遵循道路指示。故对于交通标示的正确识别及精准应用可以为驾驶辅助系统甚至自动驾驶提供更加完美的助攻。本文将从两方面进行描述,分别详述交通标志识别的原理及应用方法。

交通标志识别原理

交通标志识别又称为TSR(Traffic Sign Recognition)是指能够在车辆行驶过程中对出现的道路交通标志信息进行采集和识别,及时向驾驶员做出指示或警告,亦或者直接控制车辆进行操作,以保证交通通畅并预防事故的发生。在安装有安全辅助驾驶系统的车辆中,如果车辆能够提供高效的TSR系统,及时为驾驶员提供可靠地道路交通标志信息,有效提高驾驶安全性和舒适性。

image

image

如下将介绍一种典型的道路交通标志识别的方法。

TSR是根据人类视觉系统辨识物体的特性,其识别原理是利用道路标志丰富的颜色信息和固定的形状信息进行特征识别。具体可将识别过程分为“分隔”和“识别”两个步骤。其中分隔是指在获取的图像中发现候选目标,并进行相应的预处理,其次是交通标志识别,包括特征提取和分类等,最后进一步判定目标的真实性。

image

1、交通标志分隔

交通标志分隔实际是需要快速从复杂的场景图像中获取可能是交通标志的感兴趣区域。然后采用模式识别的方法对感兴趣区域进行进一步辨识,定位其具体位置。由于交通标志功能是起到指示性、提示性和警示性等作用,他们设置都具有醒目、颜色鲜明、图形简洁、意义明确等特点。因此感兴趣区域通常是利用其颜色和形状进行的。

如下举例说明利用颜色如何进行分隔。

交通标志的颜色无疑具有显著性特征,以颜色进行检测和识别的方法有很多,包括对颜色空间的各个通道或其组合进行阈值分割或聚类,区域分裂,颜色边缘检测等,用经过训练的人工神经网络作为分类器识别颜色,以颜色为索引,将目标在直方图与模板库中图像的直方图进行匹配,找出可能的若干模板,为下一步形状分析做准备。

目前,在交通标志识别中常用的彩色空间包括RGB、HIS、CIE几种,而RGB作为图像处理中常用的三基色,是构建其他各种颜色的基础,其他颜色表示方式可以用RGB变换得到。

image

image

我们知道,对于交通标志而言大都颜色比较单一、固定,比如红色标志一般表示禁令,蓝色标志一般表示指示类,黄色标志一般表示警告类,这里正好利用RGB的三基色红、黄、蓝加以识别匹配来表示,但由于对于驾驶辅助系统功能TSR通常是一个动态交互识别的过程,其对于光照、气候以及阴影等干扰的影响反应较为敏感,而RGB信息不仅代表色彩,也代表亮度,并且三基色之间存在着很大的相关性,因此,为了消除RGB颜色本身包含的亮度信息,可在RGB空间将颜色值R、G、B将在亮度上进行归一化,从而将一个三维空间降到二维空间表示的颜色信息,这样RGB三基色颜色之间的亮度相关性就减小了。

由于颜色空间更多的还包含了饱和度等信息,故为了更好区分颜色与亮度信息,研究人员更多采用适合人类视觉特性的色彩模型HSI模型来处理交通标志识别,H表示不同颜色,S表示颜色深浅,I表示明暗程度,HSI其最大的特点是H、S、I之间相关性极小,在HSI空间中的每个彩色图像都对应着一个相对一致的色调H。

image

2、交通标志识别

当在试车环境中分割出来交通标志信息的感兴趣区域后,需要采用一定的算法对其进行判别,以便确定它属于哪一种具体的交通标志,一般的判别方法包括模板匹配法、基于聚类分析法、基于形状分析方法、基于神经网络分析法、基于支持向量机的方法。

2.1 基于模板匹配法

模板匹配法是对交通标志建立相应的模板库,当系统分割出感兴趣区域时,通过像素遍历的方式与模板库中的形状进行匹配,通过统计校验误差值,选择误差值最小的模板库中的标志作为匹配到的实际交通标志,该方法简单,但运算量大、适应能力差、效果不一定如预期。

2.2 基于聚类分析法

聚类算法是一种建立在统计基础上的算法,抗噪声能力强,适用于自然场景的图像处理,聚类算法检测识别主要用在对颜色的识别上,由于交通标志的颜色是固定的,因此初始聚类中心是已知的,这就能达到很好的分类效果。也可通过对已经聚类完成的区域进行二次聚类,这样就能进一步去除噪声,达到更好的效果。

2.3 基于神经网络的方法

神经网络是模拟人脑神经细胞元的网络结构,由大量神经元相互连接而成的非线性动态系统,对于交通标志认知而言,利用该方法建议一个三层神经网络,分别对应于RGB空间三通道,另外通过建立一个控制单元,网络作为一个相关检测器,如果目标区域存在交通标志,网络输出相应的高频信号,否则输出低频信号。

2.4 支持向量机的方法

支持向量机是一种典型的前馈神经网络方法,用于解决模式分类和非线性问题,其主要思想是建立一个最优决策超平面,使得该平面两侧距平面最近的两类样本之间的距离最大化,为分类提供更好的泛化能力。对于非线性可分模式分类问题,需要将负责的模式分类问题非线性的投射到高维特征空间,因此只要变换是非线性的且特征空间维数够高,则原始模式空间能变成一个新的高维特征空间,在该空间中,其模式以较高的概率变得线性可分。其中变换过程要求生成一个核函数进行卷积,相应典型的核函数表示如下:

高斯函数:

image

用于径向集函数分类器

内积函数:

image

用于高阶多项式集分类器;

Sigmoid核函数:

image

用于实现一个单隐层感知器神经网络;

交通标志识别应用

目前交通标志的识别技术还无法做到较高的灵敏、稳定和准确性,特别是针对受到不同季节、天气条件影响下的光照条件有所不同导致采集到的图像复杂多样;而道路交通情况的复杂性可能造成交通标志污损、颜色、形状发生变化,而树木、建筑物的遮挡又可能导致其无法被及时的识别到位,同时在高速驾驶过程中,由于车辆行驶抖动等因素,可能造成图像帧匹配过程中出现误差,从而无法稳定地识别出相应的交通标志。因此交通标志识别目前在驾驶辅助领域还未能得到广泛的应用,较为成熟的应用方案有如下几种:

1、基于限速标志的自动限速

基于限速标志的自动限速主要是利用识别到的限速标志显示的限速值,自车提前进行预判,这里我们设置几种不同的速度值进行比较。

VReal表示本车当前实际巡航车速,Vtarget表示本车目标巡航速度,Vlim表示限速值信息,Vfront表示识别到的前车车速。

image

根据自身车速这一敏感信息进行如下不同程度的限速策略:

1.1 本车定速巡航:

  • 当检测到本车VReal>Vlim且Vtarget<Vlim时,系统自动根据目标巡航车速进行减速控制,此时需考虑限速值大小,发送较大的减速度确保本车减速到限速标志时,其速度不大于限速标志;

  • 当检测到本车VReal<Vlim且Vtarget>=Vlim时,系统自动根据识别到的限速值Vlim进行减速;

  • 当检测到本车VReal<Vlim<Vtarget时,系统控制本车加速度斜率,确保本车通过限速牌时其速度值不大于限速值;

  • 当检测到本车VReal<Vtarget<Vlim时,可按照正常的加速逻辑加速至目标车速,此时需考虑加速度斜率不能出现加速过猛引起的驾驶恐慌;

1.2 本车跟随前车行驶:

  • 当检测到本车VReal>VFront>Vlim时,系统在确保本车不与前车碰撞的情况下进行自动减速控制;

  • 当检测到本车VReal<Vlim<VFront时,系统在确保本车在识别距离内不超过限速值的情况下进行适当加速控制;

  • 当检测到本车Vlim<VReal<Vtarget时,系统控制本车在一定识别距离内减速到限速值,不跟随前车进行加速;

  • 当检测到本车VFront<Vlim<VReal时,本车既可以按照目标前车进行减速控制,也可以按照限速值进行控制,输出的减速度值大小需确保在一定距离处自动减速到限速值处;

1.3 通过限速牌后控制逻辑

以上本车进行自动限速后,当车辆行驶通过限速牌,同时识别到新的限速牌时需要重新进行速度控制,如新的限速牌限速值比当前值小,则根据1)2)中的逻辑进行进一步限速,如新的限速牌限速值比当前值大,则需要根据当前更新后的本车实际车速、前车车速、本车目标巡航车速进行加速度重分配,确保限速和碰撞优先考虑的同时进行适当控制。

2、 基于并道策略的提前并道

image

image

对于车辆行驶在高速路情况下来说,驾驶车辆需要考虑在不同场景下进行提前变道的问题,目前有两种可行方案:

  • 其一,当在一定距离前检测到前方有并道标志信息时,通过语音或仪表图像提前提示驾驶员对车辆进行变道控制将车辆变道至目标车道;

  • 其二,当在一定距离前如果系统接收高精度地图相关车道级别信息,则可以直接控制车辆变道至目标车道,期间需要检测目标车道线是否为虚线,目标车道是否变道安全等;

3、基于红绿灯识别的提前刹车

基于红绿灯标志识别的驾驶辅助系统,要求在系统基于识别到的红绿灯提前对车辆巡航及变道进行控制。

image

主要有以下几种控制场景策略:

3.1 识别到绿灯:

若本车处于跟随前车行驶状态,前车以较低速度行驶,本车在确保碰撞安全的前提下,继续跟随前车行驶,并同时实时监控车灯变化,一旦变成黄灯,则立即停止跟随策略,保持一定的减速至刹停;

若本车处于自车定速巡航模式,本车已达到定速值,则进行匀速控制,若本车未达到定速值,则根据定速值进行匀加速控制,期间需要实时监控信号灯变化,同时控制加速斜率;

3.2 识别到黄灯:

若本车识别到黄灯,则不管本车是否处于跟车状态,均需要控制本车减速之刹停,期间减速过程可进行舒适性减速,由发动机反拖转换为制动切入;

3.3 识别到红灯:

若已经识别到红灯,则根据前车停止状态,确保避撞的前提下,控制本车急减速至刹停,保持本车刹停状态下与前车1m以上的距离;

总结

自动驾驶需要保证在道路行驶中充分遵守驾驶规则,保证系统控制的驾驶过程符合法律规定,交通标志识别在自动驾驶系统开发过程中起着举足轻重的作用,不仅能够为系统提供各种引导和约束信息,如显示当前路段交通状况,提示前方驾驶环境危险和困难,为自动驾驶系统做出警告,同时做出为驾驶安全提供相应的指引策略。当前交通标志识别技术由于受到道路、环境、天气、光照及驾驶稳定性的影响,其识别效果鲁棒性无法得到相应的保证,这就使得该技术还无法大规模的市场普及应用。当然后续针对如上提到的对其性能的限制策略也可通过如下一些算法进行前瞻性研究:

  1. 开展去除实际道路复杂环境干扰的预处理算法研究;如可采用图像复原技术进行处理运动模糊,采用图像不变距理论分析处理图像旋转、扭曲等情况,利用几何分析、推理及模糊理论等处理图像遮掩问题;

  2. 发展多分辨率以及多分形技术;采用金字塔结构的多分辨率分割算法尽心图像分割;

  3. 发展信息融合技术;利用除摄像头这一直观检测的传感器外,系统还可利用地图信息,后续发展5G下的V2x信息仍旧可为本车交通标志识别提供辅助;

  4. 深入研究句法结构模式识别技术;利用结合传统统计学识别方法结合句法模式识别技术获得图像的结构信息,进一步深化对识别图像标志的理解。

相关文章:

自动驾驶中的交通标志识别原理及应用

自动驾驶中的交通标志识别原理及应用 附赠自动驾驶学习资料和量产经验&#xff1a;链接 概述 道路交通标志和标线时引导道路使用者有秩序使用道路&#xff0c;以促进道路行车安全&#xff0c;而在驾驶辅助系统中对交通标志的识别则可以不间断的为整车控制提供相应的帮助。比如…...

数据挖掘入门项目二手交易车价格预测之建模调参

文章目录 目标步骤1. 调整数据类型&#xff0c;减少数据在内存中占用的空间2. 使用线性回归来简单建模3. 五折交叉验证4. 模拟真实业务情况5. 绘制学习率曲线与验证曲线6. 嵌入式特征选择6. 非线性模型7. 模型调参&#xff08;1&#xff09; 贪心调参&#xff08;2&#xff09;…...

【Java】Java使用Swing实现一个模拟计算器(有源码)

&#x1f4dd;个人主页&#xff1a;哈__ 期待您的关注 今天翻了翻之前写的代码&#xff0c;发现自己之前还写了一个计算器&#xff0c;今天把我之前写的代码分享出来。 我记得那会儿刚学不会写&#xff0c;写的乱七八糟&#xff0c;但拿来当期末作业还是不错的哈哈。 直接上…...

MC9S12DJ64微控制器

这份文件是关于Freescale的MC9S12DJ64微控制器的用户指南&#xff0c;包含了关于该设备的详细信息和使用说明。以下是核心内容的整理&#xff1a; 产品信息: 产品信息详细描述如下&#xff1a; 1. **产品名称**:- MC9S12DJ64微控制器单元&#xff08;MCU&#xff09;2. **核心…...

小程序打开空白的问题处理

小程序打开是空白的&#xff0c;如下&#xff1a; 这个问题都是请求域名的问题&#xff1a; 一、检查服务器域名配置了 https没有&#xff0c;如果没有&#xff0c;解决办法是申请个ssl证书&#xff0c;具体看这里 https://doc.crmeb.com/mer/mer2/4257 二、完成第一步后&#…...

langchain + azure chatgpt组合配置并运行

首先默认你已经有了azure的账号。 最重要的是选择gpt-35-turbo-instruct模型、api_version&#xff1a;2023-05-15&#xff0c;就这两个参数谷歌我尝试了很久才成功。 我们打开https://portal.azure.com/#home&#xff0c;点击更多服务&#xff1a; 我们点击Azure OpenAI&#…...

【JVM性能调优】- GC调优实操思路

1、GC调优实操思路 前面几点所提及的都是GC调优的一些方法论以及衡量指标&#xff0c;但在真正需要处理GC调优时&#xff0c;上面几点只能给你提供辅导&#xff0c;并不能建立完善的调优思路&#xff0c;因此&#xff0c;接下来再一同论述GC调优的具体实操思想。 GC调优时&…...

四川教育装备行业协会考察团走访云轴科技ZStack共话技术创新应用

近日&#xff0c;四川省教育装备行业协会高等教育技术专业委员会组织了一次深入的考察活动&#xff0c;旨在加强与其他省市高校及企业之间的交流与合作&#xff0c;学习借鉴先进的教育装备与管理经验&#xff0c;以提升本省的高等教育技术水平。考察团一行先后走访了武汉理工大…...

KIVY 学习1

环境 python 3.6 3.7 对应Kivy 1.11.1版本各依赖 python -m pip install docutils pygments pypiwin32 kivy_deps.sdl20.1.22 kivy_deps.glew0.1.12 这是一个用于安装Python包的命令&#xff0c;它会安装一些特定的包。具体来说&#xff0c;这个命令会安装以下包&#xff1a; …...

在Go语言中使用select和channel来期待确定性行为

Go开发人员在使用channel时常犯的一个错误是,对select在多个channel中的行为方式做出错误的假设。错误的假设可能会导致难以识别和重现的细微错误。假设我们要实现一个需要从两个channel接收消息的goroutine: 我们可能会决定像下面这样处理优先级: for {select {case v := &…...

【MATLAB源码-第19期】matlab基于导频的OFDM系统瑞利信道rayleigh的信道估计仿真,输出估计与未估计误码率对比图。

1、算法描述 正交频分复用&#xff08;英语&#xff1a;Orthogonal frequency-division multiplexing, OFDM&#xff09;有时又称为分离复频调制技术&#xff08;英语&#xff1a;discrete multitone modulation, DMT&#xff09;&#xff0c;可以视为多载波传输的一个特例&am…...

坚持十天做完Python入门编程100题第三天加班

坚持十天做完Python入门编程100题第三天加班 第24题 扫描文件列表第25题 如何将字典转换成JSON并写入json文件&#xff1f;第26题 JSON转换成字典 第24题 扫描文件列表 如何扫描当前目录下的文件列表&#xff1f;解析&#xff1a;可以使用python内置的glob模块&#xff0c;用法…...

MSOLSpray:一款针对微软在线账号(AzureO365)的密码喷射与安全测试工具

关于MSOLSpray MSOLSpray是一款针对微软在线账号&#xff08;Azure/O365&#xff09;的密码喷射与安全测试工具&#xff0c;在该工具的帮助下&#xff0c;广大研究人员可以直接对目标账户执行安全检测。支持检测的内容包括目标账号凭证是否有效、账号是否启用了MFA、租户账号是…...

uos安装lxml避坑记录

环境&#xff1a;紫光电脑uos系统 python&#xff1a;系统自带3.7.3 条件&#xff1a;已打开开发者模式&#xff0c;可以自行安装应用商店之外的软件 一、pip3 install lxml4.8.0可以正正常下载&#xff0c;但出现如下错误 另&#xff1a;为什么是4.8.0&#xff1f;因为这个…...

518. 零钱兑换 II(力扣LeetCode)

文章目录 518. 零钱兑换 II题目描述动态规划一维数组为什么不能交换两个for循环的顺序&#xff1f; 二维数组 518. 零钱兑换 II 题目描述 给你一个整数数组 coins 表示不同面额的硬币&#xff0c;另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数…...

01串的熵(蓝桥杯)

文章目录 01串的熵问题描述答案&#xff1a;11027421题意解释暴力枚举 01串的熵 问题描述 对于一个长度为n的01串 S x 1 x 2 x 3 x_{1}x_{2}x_{3} x1​x2​x3​… x n x_{n} xn​&#xff0c;香农信息熵的定义为 H(S) − ∑ 1 n p ( x i ) l o g 2 ( p ( x i ) ) -\sum _{1…...

Rust 基础语法和数据类型

数据类型 Rust提供了一系列的基本数据类型&#xff0c;包括整型&#xff08;如i32、u32&#xff09;、浮点型&#xff08;如f32、f64&#xff09;、布尔类型&#xff08;bool&#xff09;和字符类型&#xff08;char&#xff09;。此外&#xff0c;Rust还提供了原生数组、元组…...

【Java SE】10 String类

目录 1. String类的重要性 2.常用方法 2.1字符串构造 2.2 String对象的比较 2.3字符串查找 2.4转化 2.5字符串替换 2.6字符串拆分 2.7字符串截取 2.8其他操作方法 2.9字符串的不可变性 2.10字符串修改 3. StringBuffer和StringBuilder 3.1StringBuilder的介绍 4.…...

web蓝桥杯真题:新鲜的蔬菜

代码&#xff1a; .box {display: flex; } #box1 {align-items: center;justify-content: center; }#box2 {justify-content: space-between; } #box2 .item:nth-child(2) {align-self: end; }#box3 {justify-content: space-between; } #box3 .item:nth-child(2) {align-self…...

超声波清洗机能洗哪些东西?洗眼镜超声波清洗机推荐

在现代生活中&#xff0c;人们对清洁卫生的要求越来越高&#xff0c;尤其是对一些细小物件的清洁。眼镜作为我们日常生活中不可或缺的物品&#xff0c;清洁保养更是至关重要。传统的清洗方式可能无法完全清洁眼镜表面的细菌和污垢&#xff0c;于是超声波清洗机成为了很多人的选…...

[C++][算法基础]走迷宫(BFS)

给定一个 nm 的二维整数数组&#xff0c;用来表示一个迷宫&#xff0c;数组中只包含 0 或 1&#xff0c;其中 0 表示可以走的路&#xff0c;1 表示不可通过的墙壁。 最初&#xff0c;有一个人位于左上角 (1,1)(1,1) 处&#xff0c;已知该人每次可以向上、下、左、右任意一个方…...

C语言字符串左旋

一、前言 这个题目的完整题目是这样子的。 二、我们实现这个编程的思路 2.1暴力破解思想 假如有一个数组里面的字符串为”abcdef“&#xff0c;我们这时候就这样先将字符”a“移到最后再将其余的字符前移。 2.2三步移动法 同样我们还是假设一个数组里面存的是字符串”abcd…...

Linux 中断会产生嵌套吗?

文章目录 1. 前言2. Linux 中断是否会嵌套&#xff1f;2.1 分析背景2.2 中断处理抢占、嵌套可能性分析2.3 中断处理抢占、嵌套小结 3. 参考资料 1. 前言 限于作者能力水平&#xff0c;本文可能存在谬误&#xff0c;因此而给读者带来的损失&#xff0c;作者不做任何承诺。 2. …...

嵌入式ARM版本银河麒麟操作系统V10SP1安装OPenGauss数据库

前言&#xff1a; 官网提供了非常完整的openGauss安装步骤。 https://opengauss.org/zh/download/archive/列举一下个人的使用环境&#xff1a; 麒麟V10 rk3588工控板&#xff08;ARM&#xff09; openGauss-3.0.5&#xff08;极简版&#xff09;浏览一下官网&#xff0c;可以…...

深度学习八股文

Bert旨在通过联合左侧和右侧的上下文&#xff0c;从未标记文本中预训练出一个深度双向表示模型。因此&#xff0c;BERT可以通过增加一个额外的输出层来进行微调&#xff0c;就可以达到为广泛的任务创建State-of-the-arts 模型的效果&#xff0c;比如QA、语言推理任务。Bert的构…...

jquery 自整理

echarts官方&#xff1a;Documentation - Apache ECharts 1、CheckBox复选框 //选中事件&#xff08;页面点击&#xff09; $(#operateExit).on(ifChecked, function(){ $(input[name"operateExit"]).val(1); }); //非选中事件&#xff…...

MySQL | 加索引报错

报错信息 1170 - BLOB/TEXT column user_name used in key specification without a key length解决方案 分析 这个错误通常是因为尝试在一个包含BLOB或TEXT类型列的列上创建索引时没有指定键的长度。MySQL要求在使用BLOB或TEXT类型列作为索引键时&#xff0c;必须指定键的长…...

前端:自制年历

详细思路可以看我的另一篇文章《前端&#xff1a;自制月历》&#xff0c;基本思路一致&#xff0c;只是元素布局略有差异 ①获取起始位startnew Date(moment().format(yyyy-01-01)).getDay() ②获取总的格子数numMath.ceil(365/7)*7,这里用365或者366计算结果都是一样的371 …...

9.手写JavaScript大数相加问题

一、核心思想 找到两个字符串中最长的长度&#xff0c;对两个字符串在头位置补0达到相等的长度&#xff0c;相加时注意进位和类型转换&#xff0c;特别考虑当相加到第一位是如果仍然有进位不要忽略。此外&#xff0c;js中允许使用的最大的数字为 console.log("最大数&qu…...

FPGA开源项目分享——基于 DE1-SOC 的 String Art 实现

导语 今天继续康奈尔大学FPGA课程ECE 5760的典型案例分享——基于DE1-SOC的String Art实现。 &#xff08;更多其他案例请参考网站&#xff1a; Final Projects ECE 5760&#xff09; 1. 项目概述 项目网址 ECE 5760 Final Project 项目说明 String Art起源于19世纪的数学…...