代表机械 计算机技术的颜色,基于机器视觉识别的交通灯控制系统

1、引言

机器视觉又称计算机视觉,是用计算机来实现人的视觉功能,也就是用机器代替人眼来做测量和判断。机器视觉技术包含光源照明技术、光成像技术、传感器技术、数字图像处理技术、机械工程技术、检测控制技术、模拟与数字视频技术、计算机技术、人机接口技术等相关技术,是实现计算机集成系统的基础技术。

对于交通灯的识别,将使世界上7~8%的色盲、色弱患者驾驶汽车成为可能,也为无人驾驶汽车在技术上前进一步。因而将为汽车工业以及汽车电子工业带来更大的经济效益,和更大的社会效益,并可在国际上填补该领域的空白。

2、基于机器视觉的交通灯识别方法

2.1、交通灯识别方法的流程图如下所示

b2b1946076cada4f1f621b4adb407c51.png

2.2、交通灯定位

当获取一张原始的图像时,考虑到背景的变化及其他物体对交通灯识别的干扰,我们需要将图像中交通灯的部分提取出来。在此本文用交通灯的形状及灰度值来定位交通灯在图像中的位置。

2.2.1、交通灯形状的矩形度与圆形度

可以通过交通灯的矩形度来找出交通灯一定的范围,在此采用一种简单的矩形度计算方法rectangularity算子,即将上述低灰度值的分散区域作为输入区域,当得到某一矩形和输入区域有相同的一、二阶矩时,计算出输入区域的面积和该矩形面积的比,即为矩形度rectangularity的值。显然当输入区域为矩形时,得到矩形度的最大值1;输入的区域越接近矩形,则矩形度越接近与1(无输入区域时矩形度为0)。

通过上述矩形度的算法,可以在低灰度值的区域中筛选出一定范围(包含交通灯轮廓)的类矩形,最后通过交通灯在图像中占据的面积定位出交通灯的轮廓。

8a81767d415aa5f3626c18cf626f09ff.png

图2-1通过形状定位出交通灯的位置

然后在上图的基础上,采用一种简单的Circularity算子,确定出包含有交通灯的轮廓。

具体的算法如下:

假设F是一个闭合区域的面积,max这个区域内中心点到边界或轮廓的最大距离,那么:

circularity=F/(max^2*π)(2-1)

根据式2-1可得圆的circularity为1。由此可知对于一个轮廓或多边形包围的区域如果其circularity接近与1,那么这个轮廓近似于一个圆。可以通过一个阈值选取出与圆的相似的轮廓,例如可以选取circularity在[0.8,1]范围内的轮廓。如果有多个轮廓符合,则将这些轮廓所对应的区域存放入一个数组之内。

2.3、颜色空间变化

当确认交通灯的位置后,我们需要通过颜色识别来确定交通灯的状态。

由于RGB颜色空间的相似不能代表颜色的相似,HSI颜色空间则没有这个方面的问题,它们很适合人们肉眼的分辨,较好地反映人对颜色的感知和鉴别能力。因此可以先将RGB颜色空间转化为HSI颜色空间。

RGB空间转化为HSI空间的一般公式如下:

f439c515fca50d2db11b2d6604403cc4.png

图2-2通过饱和度提取的交通灯信息

2.4、颜色识别

本文通过图像分割来识别交通灯的颜色。将图像通过选定的阈值分割后,找出所需要的图形。

2.4.1、基于阈值的分割

这是一种最常用的区域分割技术,阈值是用于区分不同目

标的灰度值。如果图象只有目标和背景两大类,那么只需选取一个阈值称为单阈值分割。这种方法是将图象中每个象素的灰度值和阈值比较,灰度值大于阈值的象素为一类,灰度值小于阈值的象素为另一类。如果图象中有多个目标,就需要选取多个阈值将各个目标分开,这种方法称为多阈值分割。阈值分割的结果依赖于阈值的选取,确定阈值是阈值分割的关键,阈值分割实质上就是按照某个标准求出最佳阈值的过程。

在背景和目标图像的先验概率相等这一特定条件下,最佳阈值是背景灰度均值与目标图像灰度均值之均值。即:

cf825287ebaec7d9a547f9aad660ca0b.png

通常阈值化分割方法根据某种测度准则确定分割阈值。如果仅使用象素的灰度级确定分割阈值,则阈值化是点相关的;如果由每个象素邻域的局部特性决定门限,则阈值化是区域相关的。基于点相关的阈值化方法有P-TIle方法,直方图凹形分析法,最大类间方差法,最大熵法以及矩不变门限法等。基于区域相关的分割方法有直方图转换法,基于二阶灰度统计的方法,松弛法以及基于过度区提取的分割方法等。

9b5ef6e73ab3bf680100a5bc40c7b0c8.png

图2-3颜色识别的结果

2.5、数字识别

在本例中,OCR被用来识别出交通数字灯上的数字显示变化,使用OCR之前应先将图像的灰度值取反。

2.5.1、灰度值转换

灰度值转换是将图像的灰度值颠倒过来,其中图像的bite和cyclic类型的计算公式为g‘=255-g

图像的direcTIon类型转化公式为:

g’=(g+90)modulo180              ( 2-6)

d47c984c3b9809120d3ed59fef40a882.png

图2-4灰度值取反结果

2.5.2、OCR

OCR是英文OpTIcalCharacterRecogniTIon的缩写,意思为光学字符识别,通称为文字识别,它的工作原理为通过扫描仪或数码相机等光学输入设备获取纸张上的文字图片信息,利用各种模式识别算法分析文字形态特征,判断出汉字的标准编码,并按通用格式存储在文本文件中,由此可以看出,OCR实际上是让计算机认字,实现文字自动输入。它是一种快捷、省力、高效的文字输入方法。

1c50271202cdfea4d65650ccbbf7da62.png

图2-5  OCR识别数字结果

因OCR是通过检测暗的模式确定其形状,所以在上一步的灰度值转化过程中先将原图像的灰度值取反,把原本灰度值高的部分转换成灰度值低的部分,然后用字符识别方法将形状翻译成计算机文字,即对文本资料进行扫描,然后对图像文件进行分析处理,最后获取文字及版面信息。

3、结论

交通数字信号灯是指挥交通必不可少的、无人职守的公共交通设施,其重要性是人所共知的。本文建立的交通数字信号识别系统采用机器视觉技术,对交通信号灯的颜色及其数字进行自动识别。众所周知,色弱、色盲是一种遗传疾病。根据统计,全世界约有7%~8%的人患有不同程度的色盲、色弱疾病,这给患者的工作和生活带来了一定的障碍和困难,许多工作和专业都对色盲、色弱患者关闭了大门。在我国,色盲者从出生开始直至寿终正寝,驾驶机动车的权利就被硬性法规标准所剥夺!若能够运用机器视觉技术让色盲患者正确区分红绿等多种颜色,辨别彩色图像中的种种事物,赋予他们正常人的生活权利,意义深远。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/348866.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java开发者工具开源版_JArchitect对Java开源贡献者免费

java开发者工具开源版JArchitect是用于Java代码库的静态分析工具,它提供交互式GUI和HTML报告,用于查找代码中过于复杂或有问题的区域,执行分析以重构并比较随时间的变化。 在版本3中,添加了类似LINQ的查询语言,该工具使…

计算机上没有启动程序怎么办,Win7开机不加载启动项怎么办

现在的电脑为了受到更好的保护,往往在开机的时候就加载了一些启动项,如:杀毒软件,安全卫士等等。可有时候会发现,在Win7操作系统中,安装后发现不能开机加载启动项。在注册表中,在msconfig中&…

线程同步,线程不同步_重新同步多线程集成测试

线程同步,线程不同步我最近在Captain Debug的Blog上偶然发现了一篇文章“ 同步多线程集成测试 ”。 那篇文章强调了设计涉及异步运行业务逻辑的被测类的集成测试的问题。 给出了这个人为的示例(我删除了一些评论): public class ThreadWrapp…

无限滚动重置服务器,简单无限滚动的实现

在使用elementUI组件库的时候,用到了无限滚动这个功能。我没有看源码,直接在网上学习了下实现的思路,然后自己手动编码以下。在此总结下。假设页面上有一个盒子容器,容器内有一些子元素。容器的高度是固定的,有纵向滚动…

Fatjars,Thinwars以及为什么OpenLiberty很酷

法特哈斯 构建一个Fatjar(或Uberjar),其中包含将应用程序很好地打包在一起运行所需的一切,这意味着您可以: java -jar myapp.jar然后离开。 没有应用程序服务器。 没有类路径。 这种方法已经被诸如Springboot之类的微…

Spring Cloud Config Server简介

1.概述 在本教程中,我们将回顾Spring Cloud Config Server的基础知识。 我们将设置一个Config Server ,然后构建一个客户端应用程序 ,该客户端应用程序在启动时会消耗配置 ,然后刷新配置而不重新启动。 我们正在构建的应用程序与《…

朴素贝叶斯算法实现分类以及Matlab实现

开始 其实在学习机器学习的一些算法,最近也一直在看这方面的东西,并且尝试着使用Matlab进行一些算法的实现。这几天一直在看得就是贝叶斯算法实现一个分类问题。大概经过了一下这个过程: 看书→算法公式推演→网上查询资料→进一步理解→搜…

位操作基础篇之位操作全面总结

转载自 http://blog.csdn.net/morewindows/article/details/7354571 Title: 位操作基础篇之位操作全面总结 KeyWord: C/C 位操作 位操作技巧 判断奇偶 交换两数 变换符号 求绝对值 位操作压缩空间 筛素数 位操作趣味应用 位操作笔试面试 位操作篇共分为基础篇和提高…

机器学习中的算法-支持向量机(SVM)基础

机器学习中的算法-支持向量机(SVM)基础 版权声明: 本文由LeftNotEasy发布于http://leftnoteasy.cnblogs.com, 本文可以被全部的转载或者部分使用,但请注明出处,如果有问题,请联系wheeleastgmail.com。也可以加我的微博: leftnotea…

算法题:输入aaaabbbcccccc输出a4b3c6。

今日在地铁上浏览今日头条的时候看到这么个小题目,说是输出一长串字符串,输出字母串类别并且统计其出现次数,然后按照顺序将其输出来。例如输入aaaabbbcccccc,输出a4b3c6。 最近也一直在学习,所以就想着就Matlab来试了…

Java World中的GraphQL简介

许多人认为GraphQL仅适用于前端和JavaScript,它在Java等后端技术中没有定位,但事实确实如此。 还经常将GraphQL与REST进行比较,但是这种比较是否合理? 首先,让我开始回答其中最重要的问题。 什么是GraphQL&#xff1…

算法题:在一个字符串中找到只出现一次的字符。如输入abaccdeeff,则输出bd。

今天的算法学习还是和字符串有关,这个题目据说是以前的某公司面试的笔试题目。题目意思就是说,在一个字符串中找到只出现了一次的那些字符,并且输出来。 作为非IT的我,平时使用Matlab比较多。不是科班出身,对于这个题…

Kafka的Spring Cloud Stream

总览 该示例项目演示了如何使用事件驱动的体系结构 , Spring Boot ,Spring Cloud Stream, Apache Kafka和Lombok构建实时流应用程序。 在本教程结束时,您将运行一个简单的基于Spring Boot的Greetings微服务 从REST API获取消息 …

常见的股票技术因子学习以及计算

最近在看《量化投资数据挖掘技术与实践(MATLAB版)》。学习了其中的常见的股票衍生变量,并且利用WIND金融数据终端的matlab借口windmatlab导出一些数据进行了一个简单的学习。特此记录。 下面是我对于书中提到的几个因子的学习总结&#xff1…

Java – HashMap详细说明

HashMap基于哈希算法工作,根据Java文档HashMap具有以下四个构造函数, 建设者 描述 HashMap ​() 构造一个空的 具有默认初始容量(16)和默认加载因子(0.75)的HashMap 。 HashMap ​(int initialCapaci…

Python实现石头-剪刀-布小游戏

近日在学习Python的一些基础知识,觉得还是很有趣的一个一门语言!就目前的学习的一些知识,编写了一些一个简单的石头剪刀布的游戏。主要是熟悉一些Python的一些控制语句。 import random while 1:sint(random.randint(1,3))print(s)print()if…

Python:递归输出斐波那契数列

今天学习Python的时候做一道练习题,题目是这样的: 题目 导入 问题 有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总对数为多…

排序算法二:快速排序算法原理以及MATLAB与Python实现

今天继续学习排序算法。今天的主角是快速排序算法。 1. 快速排序基本原理 快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod)。 该方法的基本思想是: 1.先从数列…

排序算法三:堆排序基本原理以及Python实现

1. 基本原理 堆排序就是利用堆的特性进行一个无序序列的排序工作。 堆的特点 堆分为最大堆和最小堆,其实就是完全二叉树。 最大堆要求节点的元素都要不小于其孩子最小堆要求节点元素都不大于其左右孩子。 两者对左右孩子的大小关系不做任何要求,其实…

spring jms 消息_Spring JMS,消息自动转换,JMS模板

spring jms 消息在我的一个项目中,我应该创建一个消息路由器,就像所有路由器一样,它应该从一个主题获取JMS消息并将其放入另一个主题。 该消息本身是JMS文本消息,实际上包含XML消息。 收到消息后,我还应该添加一些其他…