智能车辆交通标志分割算法程序

合集下载

交通标志自动分割识别算法研究的开题报告

交通标志自动分割识别算法研究的开题报告

交通标志自动分割识别算法研究的开题报告1. 研究背景在智能交通领域,交通标志自动识别技术具有重要的应用价值。

交通标志识别可以应用于自动驾驶、交通规划和违规检测等方面。

交通标志自动识别包括交通标志的检测与分类两个主要的任务。

交通标志检测是指在道路场景中定位出交通标志的位置和边界框,而交通标志分类则是指将检测出的交通标志分到相应的类别中去。

目前,交通标志自动识别技术已经在工业生产中广泛应用,然而在实际应用中,交通标志的自动识别仍存在一些问题,例如不同条件下的光照、视角变化、遮挡等因素,都会对交通标志的自动识别造成影响。

2. 研究目标本研究旨在研究交通标志自动分割识别算法,针对交通标志的不同形状和大小,采用分割算法将交通标志分为不同的部分,以便更好地进行识别和分类。

具体研究目标如下:(1)研究交通标志的分割算法,将交通标志分为不同的部分,以便更好地进行识别。

(2)研究交通标志的特征提取与分类算法,针对不同的交通标志类别,提取不同的特征并进行分类。

(3)搭建交通标志识别系统原型,对识别算法进行实际测试和应用。

3. 研究内容与方法(1)交通标志的分割算法研究:目前,分割算法主要采用基于区域和基于边界的分割方法。

本研究将分别比较不同的分割算法,对比分析各方法的优缺点,选择合适的分割算法进行实验验证。

(2)交通标志特征提取与分类算法研究:针对不同的交通标志类别,采用不同的特征提取方法并进行分类。

常用的特征提取方法有颜色、纹理、形状等。

本研究将探讨不同特征提取方法在交通标志分类中的应用,并比较不同方法的分类效果。

(3)交通标志识别系统原型的设计与实现:本研究将针对研究结果搭建一个交通标志识别系统原型,使用C++编程语言实现算法,并将系统应用于实际交通场景中进行测试。

4. 预期成果和意义预期成果:(1)建立交通标志自动分割识别算法,并测试其效果。

(2)实现交通标志自动识别系统原型。

意义:本研究将在交通标志自动识别领域取得一定的进展,为实现智能交通系统提供技术支持,并具有一定的应用价值。

智能交通系统中的车牌识别算法及其实现

智能交通系统中的车牌识别算法及其实现

智能交通系统中的车牌识别算法及其实现智能交通系统已经成为现代城市交通管理的重要组成部分,为了实现交通的智能化和高效化,车牌识别技术作为其中的重要一环发挥着关键作用。

本文将介绍智能交通系统中常用的车牌识别算法及其实现方式,以帮助读者了解车牌识别技术的原理和应用。

一、车牌识别算法的原理车牌识别算法主要是将车牌图像进行处理、分割和字符识别等步骤,以得到正确的车牌信息。

以下是车牌识别算法中常用的一些原理:1. 图像预处理:对车牌图像进行去噪、增强和灰度化等处理,以提高图像的质量和模糊度,为后续的处理步骤提供更好的输入。

2. 车牌定位:通过图像处理技术和特征提取,将含有车牌的区域从整个图像中定位出来。

常用的方法包括边缘检测、颜色分割和形态学处理等。

3. 字符分割:将定位到的车牌进行字符分割,将每个字符分离出来,以便后续的字符识别。

字符分割是车牌识别算法中最关键的一步,通常需要通过统计特征、边缘检测和投影法来实现。

4. 字符识别:对分割出来的每个字符进行特征提取和模式识别,以识别出每个字符的内容。

常用的方法包括模板匹配、神经网络和支持向量机等。

二、基于深度学习的车牌识别算法实现近年来,基于深度学习的车牌识别算法在智能交通系统中得到了广泛应用。

以下是基于深度学习的车牌识别算法实现的一般步骤:1. 数据集准备:收集大量标注的车牌图像,并进行数据清洗和预处理,以确保训练模型的数据质量和多样性。

2. 模型选择:选择合适的深度学习模型,如卷积神经网络(CNN)或循环神经网络(RNN),用于车牌识别任务。

3. 模型训练:使用准备好的数据集对深度学习模型进行训练,通过反向传播算法不断优化模型参数,以提高识别准确率。

4. 模型评估:使用另外一组独立的测试数据对训练好的模型进行评估,统计准确率、召回率和F1-score等指标,以评估模型的性能。

5. 模型部署:将训练好的模型部署到智能交通系统中,对实时图像进行车牌识别。

可以使用GPU等硬件加速技术,以提高实时性能。

智能交通中的道路标志识别技术研究

智能交通中的道路标志识别技术研究

智能交通中的道路标志识别技术研究随着科技的不断发展,智能交通正在逐渐改变着人们的出行方式。

而道路标志作为交通规则的重要组成部分,也在智能交通技术的发展中起到了至关重要的作用。

目前,随着人工智能和计算机视觉技术的飞速发展,道路标志识别技术也逐渐成为了一个研究热点。

本文将从技术原理及应用前景两个方面,对智能交通中的道路标志识别技术进行深入研究。

一、技术原理道路标志识别技术主要依赖于计算机视觉技术。

其基本原理是通过采集车载相机的图像信息,将信息通过图片处理和模式识别算法进行处理,从而识别出道路标志。

常用的图像处理算法包括模糊滤波、灰度化、转换成二值化图像等。

而模式识别的算法则包括支持向量机、神经网络以及决策树等等。

这些算法中,支持向量机和神经网络的应用较为广泛。

支持向量机是一种基于统计学习理论的分类算法。

经过学习后,它可以将不同标志的模式进行区分,从而实现对道路标志的识别。

而神经网络则是通过构建多层感知器,模拟人类神经元的工作原理,从而实现对道路标志的高精度识别。

二、应用前景道路标志识别技术在未来的交通中有着广泛的应用前景。

具体来说,它具有以下优势:1、提升交通安全性通过对道路标志的识别,可以使车辆驾驶员更加清晰地了解道路限速、事故易发区域、交通信号灯等重要信息,从而降低道路事故的发生率。

2、提高交通效率通过识别交通信号灯、车道标志等,路况信息可以及时反馈给车辆前置智能驾驶系统,从而使得车辆行驶更加高效、自然。

3、节约能源减少排放通过将识别到的交通标志信息反馈给车辆,可以实现车辆自动调节速度,从而达到节约油耗、减少排放的目的。

不过,也需要注意到目前道路标志识别技术仍然存在的诸多问题。

如在复杂天气情况下,车辆行驶会受到识别率下降等现象的影响。

同时在标志形状或位置变化、遮挡、光线等诸多因素下,识别能力受到限制。

总的来说,道路标志识别技术是智能交通应用中的一项重要技术,具有极大的应用前景。

尽管目前仍存在许多问题,相信随着科技的不断发展,这些问题也将会得到解决。

自动驾驶中的多模态分割技术

自动驾驶中的多模态分割技术

自动驾驶中的多模态分割技术多模态分割技术在自动驾驶中的应用简介:自动驾驶是交通领域中一项具有潜力的新兴技术。

为了实现安全、高效的自动驾驶,多模态分割技术被广泛应用。

本文将介绍多模态分割技术在自动驾驶中的应用情况。

一、多模态分割技术的定义和原理多模态分割技术是指利用多种传感器获取的数据(如图像、点云、激光雷达等)进行分割和识别,从而对道路、障碍物等进行建模和理解的技术。

其原理是通过对不同模态数据进行融合和分析,提取特征并进行分类,从而实现对场景的理解和感知。

二、多模态分割技术在自动驾驶中的应用1. 道路分割多模态分割技术可以对道路进行分割,识别出车道线、交通标志等。

通过分割技术可以实现对道路自动驾驶的精确定位和路径规划,提高自动驾驶的安全性和效率。

2. 障碍物检测多模态分割技术可以识别和分割出道路上的障碍物,如其他车辆、行人、自行车等。

通过对障碍物的分割可以实现对其位置、形状和运动状态的理解,从而为自动驾驶决策提供重要的信息。

3. 环境感知多模态分割技术可以对道路周围的环境进行感知,识别并分割出道路上的各种物体和结构,如建筑物、道路标示、树木等。

通过对环境的感知可以提高自动驾驶的智能化水平,为自动驾驶提供更加精确的场景理解。

4. 导航辅助多模态分割技术可以对交通信号、交通标志等进行分割和识别,为自动驾驶提供导航辅助。

通过识别交通信号可以帮助自动驾驶车辆按时、合理地行驶,提高驾驶的效率和安全性。

三、多模态分割技术的优势和挑战1. 优势多模态分割技术具有较高的准确性和鲁棒性,能够对复杂的场景进行分割和识别。

同时,多模态分割技术可以充分利用不同传感器的优点,提高感知的全面性和精确度。

2. 挑战多模态分割技术在实际应用中仍面临一些挑战。

首先,不同传感器的数据融合需要解决数据不一致性和时空同步的问题。

其次,多模态分割技术需要处理复杂的场景和光照条件,对算法的鲁棒性提出了较高要求。

结论:多模态分割技术在自动驾驶中具有重要的应用前景。

智能网联汽车概论 课程设计3 交通标志识别

智能网联汽车概论  课程设计3  交通标志识别

课程设计——交通标志识别交通标志如图1所示,编写MATLAB程序,识别图1中的限速50标志。

图1 限速标志
解:本例交通标志识别步骤如下。

(1)读取原始图像。

(2)颜色空间转换。

(3)图像二值化。

(4)图像优化处理。

(5)图像特征提取。

(6)裁剪目标区域。

利用MATLAB编写交通标志识别程序如下。

输出结果如图2~9所示。

图2道路交通标志原始图像
图3 道路交通标志的Hsv图像
图4 道路交通标志提取亮度后的图像
图5 道路交通标志二值化图像
图6 道路交通标志膨胀后图像
图7 道路交通标志充填后图像
图8 道路交通标志待测目标图像
图9 道路交通标志识别结果。

基于免疫算法的交通标志分割

基于免疫算法的交通标志分割
( 广西工学院电子信息与控制工程系 ,广西 柳州 5 4 5 0 0 6 )
摘 要 :针 对现 有道路 交通标 志 图像 分 割 算法 中实 时性和 鲁棒 性 较 差 的 问题 ,提 出一种 基 于 免 疫 算法和 R G B颜 色空间的 交通标 志 图像 分割新 方法 。该方 法先用 R G B颜 色空 间将 交通标 志从 实 景 图 中定位 出来 ,利用免 疫算 法快速搜 索的机 理 ,对 已定位 的 图像 进行 阈值 T寻优 ,并 用该 阈 值 T分 割 图像 。 实验 结果表 明 ,该 算 法与基 于遗 传 算 法 的 图象 分割 算 法相 比较 ,具 有较 好 的鲁
Ab s t r a c t :S o me e x i s t i ng t r a f ic f s i g n s g r a p h i c s e g me n t a t i o n a l g o r i t hms a r e we a k i n p e r f o r m r e a l — t i me a n d
r o b us t . Ac c o r d i n g t o t ho s e p r o b l e ms,t h i s p a pe r p r e s e n t s a n e w a l g o r i hm t o f t h e t r a ic f s i g n s s e g me n t a t i o n b a s e d o n i mmu n e a l g o it r h m RGB c o l o r s p a c e .Th e me t h o d u s e s RGB c o l o r s p a c e t o l o c a t e t h e i ma g e o f t r a f f i c s i g n s f o r m he t t r a ic f s i g n s i ma g i n g ig f u r e,a nd u s e i mmu n e a l g o r i t h m t o s e a r c h f o r he t o p t i mi z a t i o n hr t e s h o l d T t o s p l i t he t l o c a t e d i ma g e .Th e e x p e ime r n t a l r e s u l t s s h o w t ha t ,c o mp a r e d wi h t t h e a l g o r i t h m o f g e n e t i c — b a s e d t r a f i f c s i g n s s e g me n t a t i o n, he t a l g o r i t hm p r e s e n t s p e r f o r m mo r e p e r f e c t l y i n r o b u s t a n d r e a l — t i me, a n d a p p l i e s t o t r a fi c s i g n s s e g me n t a t i o n i n v a r i e s l i g h t c o n d i t i o n s .

车牌识别算法流程

车牌识别算法流程
车牌识别是图像处理和模式识别中的一个重要应用领域。

以下是一个常见的车牌识别算法的流程:
1. 图像获取:首先,需要从图像源(如摄像头)中获取车辆图像。

2. 预处理:对获取的车辆图像进行预处理,以提升后续处理步骤的效果。

预处理步骤包括图像增强、去噪和灰度化等。

3. 车牌定位:通过车牌定位算法,将车辆图像中的车牌区域进行定位和提取。

常见的技术包括基于颜色、形状和纹理的特征提取,以及边缘检测和连通区域分析等。

4. 字符分割:对定位到的车牌区域进行字符分割,将每个字符分开。

字符分割算法通常基于连通区域分析、投影法和基于边缘的方法等。

5. 字符识别:对分割得到的每个字符进行识别。

常见的字符识别方法包括模板匹配、统计特征分析、神经网络和深度学习等。

6. 结果输出:根据识别结果,将车牌号码输出到指定的位置,如屏幕显示、数据库存储或其他应用程序中。

车牌识别算法的具体实现可能会因应用场景和需求的不同而有所差异。

不同算法和技术的选择也会影响车牌识别的准确性和效率。

因此,在实际应用中,可能需要进行参数调优和算法选择,以达到最佳的车牌识别效果。

自动驾驶技术中的交通标志识别算法

自动驾驶技术中的交通标志识别算法随着科技的不断进步,自动驾驶技术正逐渐成为现实。

在自动驾驶汽车的运行过程中,交通标志识别算法起着至关重要的作用。

本文将探讨自动驾驶技术中的交通标志识别算法的原理和应用。

一、交通标志识别算法的原理交通标志识别算法是通过计算机对摄像头拍摄到的道路交通标志进行识别和理解的过程。

其原理主要包括以下几个方面:1. 图像获取:交通标志识别算法首先需要获取道路上的图像信息。

通常情况下,自动驾驶汽车会搭载多个摄像头,这些摄像头会实时拍摄道路的图像,并将其传输给交通标志识别算法进行处理。

2. 图像预处理:获得图像信息后,交通标志识别算法会对图像进行预处理。

这包括图像的降噪、灰度化和图像增强等操作,以提高后续算法对图像的处理效果。

3. 特征提取:在预处理后的图像中,交通标志识别算法会寻找图像中的特征点。

这些特征点可能是交通标志的边界、颜色、形状等。

通过提取这些特征点,算法能够更准确地判断图像中是否存在交通标志。

4. 分类与识别:识别算法基于已经提取的特征点,将图像进行分类和识别。

这一过程通常采用机器学习的方法,通过建立分类模型、训练和优化模型,最终判断图像中的交通标志种类。

二、交通标志识别算法的应用交通标志识别算法在自动驾驶技术中有着广泛的应用。

以下是几个相关领域的具体应用案例:1. 路况监测:交通标志识别算法可以帮助自动驾驶汽车实时监测道路上的交通标志,例如限速标志、禁止通行标志等。

通过及时识别这些标志,自动驾驶汽车可以做出相应的行驶决策,保证车辆行驶的安全性。

2. 路线规划:交通标志识别算法可以协助自动驾驶汽车进行路线规划。

通过识别道路上存在的交通标志,算法可以判断出道路的限速要求、道路类型等信息,并根据这些信息来选择最合适的行驶路线。

3. 行驶决策:交通标志识别算法还可以帮助自动驾驶汽车做出行驶决策。

例如,在识别到禁止左转标志时,算法可以立即将车辆的行驶策略调整为靠右行驶,以确保车辆的安全行驶。

智能交通系统中的智能交通识别算法讲解(四)

智能交通系统中的智能交通识别算法讲解随着城市化的进程和交通流量的不断增加,传统的交通管理方式已经无法满足现代社会的需求。

在这样的背景下,智能交通系统应运而生,并逐渐成为城市交通管理的重要工具。

其中,智能交通识别算法作为智能交通系统的核心技术之一,起到了至关重要的作用。

智能交通识别算法通过对交通工具、行人及交通标志等进行自动识别,实现了交通数据的采集、分析和管理,成为了现代交通系统中不可或缺的一环。

这一算法基于计算机视觉技术,借助图像处理和模式识别等方法,能够对交通场景中的各种目标进行准确的检测和识别。

在智能交通系统中,智能交通识别算法可以通过图像采集设备(如摄像头)获取交通场景图像信息,然后通过图像处理和特征提取等方法,对车辆、行人、交通标志等进行检测和识别。

其中,最常用的算法之一是基于深度学习的目标检测算法,如卷积神经网络(CNN)和循环神经网络(RNN)等。

卷积神经网络是一种前馈神经网络,其主要特点是具有局部感知和权值共享的特性。

这使得卷积神经网络能够高效地处理图像数据,对交通场景中的车辆、行人等目标进行准确的检测和识别。

通过多层卷积和池化等操作,卷积神经网络能够逐渐提取图像的特征信息,并通过全连接层将这些特征映射到目标类别,实现目标检测的目的。

而循环神经网络则适用于处理序列数据,如视频序列。

在智能交通系统中,循环神经网络可以采用时间序列的方式对交通场景中的运动目标进行识别。

它通过自反馈机制,能够保留先前的状态信息,从而对交通目标的运动轨迹进行建模和预测。

这使得循环神经网络在交通监控和安全预警等方面发挥了重要作用。

除了深度学习算法,还有其他的智能交通识别算法,如支持向量机(SVM)和决策树等。

这些算法可以克服深度学习算法在数据量较小或计算资源较有限时的一些局限性,并在某些特定场景中表现出更好的性能。

总的来说,智能交通识别算法是智能交通系统中的关键技术之一,通过对交通场景中的车辆、行人及交通标志等进行自动识别,实现了交通数据的采集、分析和管理。

智能交通系统中的智能交通识别算法与技术讲解(八)

智能交通系统中的智能交通识别算法与技术讲解智能交通系统是基于现代信息技术的交通管理系统,它的核心是智能交通识别算法与技术。

智能交通识别算法与技术通过对交通场景中的车辆、行人、交通标识等进行识别和分析,能够实时监测交通状况,提供交通管理决策支持,改善交通流量,提高交通安全性。

一、图像处理技术智能交通识别算法与技术主要利用图像处理技术对交通场景中的图像进行分析和处理。

其中,图像预处理是必不可少的一步,其目的是消除图像中的噪声,提高后续处理的准确性。

在图像预处理过程中,常用的技术包括图像去噪、图像平滑、图像增强等。

二、车牌识别技术车牌识别是智能交通系统中的重要应用之一,其主要目的是通过对车牌字符的识别,实现对车辆的自动识别和管理。

车牌识别技术通常分为两个步骤:车牌定位和字符识别。

车牌定位通过图像处理技术将车牌从图像中提取出来,字符识别通过文本识别算法对车牌上的字符进行识别和提取。

在车牌识别技术中,常用的算法包括SVM、深度学习等。

三、行人检测与跟踪技术智能交通识别算法与技术还可以应用于行人检测与跟踪。

行人检测是指通过分析图像或视频中的目标,自动地检测出行人的位置和姿态。

行人跟踪是指在目标检测的基础上,通过连续多帧图像的分析,实现行人的运动轨迹预测和跟踪。

行人检测与跟踪可以广泛应用于城市交通流量统计、行人安全监控等领域。

四、交通标识检测技术交通标识检测技术是智能交通识别算法与技术中的一个重要环节。

交通标识检测主要通过图像处理技术和模式识别算法来自动检测交通标识的位置和内容。

通过交通标识检测技术,可以实现对交通标识的自动识别和管理,提高交通规范性和交通安全性。

五、智能交通识别算法与技术的应用前景随着智能交通系统的不断发展和完善,智能交通识别算法与技术的应用前景也越来越广阔。

首先,智能交通系统可以提供实时的交通信息,帮助驾驶员选择最优的行驶路线,减少交通堵塞。

其次,智能交通系统可以通过对交通场景的分析和识别,发现交通隐患,提高交通安全性。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1三色分差程序clear;I=imread('4.jpg');[chang,kuan,gao]=size(I);for i=1:changfor j=1:kuanIR(i,j)=I(i,j,1);IG(i,j)=I(i,j,2);IB(i,j)=I(i,j,3);endendIR=double(IR);IG=double(IG);IB=double(IB);for i=1:changfor j=1:kuanif 1.6*IB(i,j)-IG(i,j)-IR(i,j)<0CA(i,j)=0;elseif 1.6*IB(i,j)-IG(i,j)-IR(i,j)>255CA(i,j)=255;elseCA(i,j)=1.6*IB(i,j)-IG(i,j)-IR(i,j);endendend%IGRAY=rgb2gray(I);%{for i=1:changfor j=1:kuanif CA(i,j)<200&IGRAY(i,j)<200CA(i,j)=0;endendend%}yuzhi=otsu(CA);for i=1:changfor j=1:kuanif CA(i,j)<=yuzhi;CA(i,j)=0;elseCA(i,j)=255;endendendCA=uint8(CA);imshow(CA);for i=1:changfor j=1:kuanif CA(i,j)==0I(i,j,1)=0;I(i,j,2)=0;I(i,j,3)=0;endendendfigure;I=uint8(I);imshow(I);2 二值分割程序function [k1]=otsu(f)%是otsu的分割算法,在论文基于三分量色差法的交通分割阀值分割那一块,所以要对照那块内容来看这个算法[a,b]=size(f);%获取图片f的长和宽N=a*b;%计算图像的总像素,长a和宽b的乘积for i=1:256n(i)=sum(sum(f==(i-1)));%统计像素值为i的像素个数,保存到n里面,n(i)就是像素值为i的像素个数p(i)=n(i)/N;%统计每个像素值在该图像中的比例,也就是概率endfor k=1:256w0(k)=0;w1(k)=0;u0(k)=0;u1(k)=0;u(k)=0;dx(k)=0;end%上面是初始化,全部是0for k=1:256for i=1:kw0(k)=w0(k)+p(i);%w0里面保存的是像素值为k的像素概率之和,也就是CO产生的概率endfor i=1:ku0(k)=u0(k)+((i*p(i))/w0(k));%求CO加权平均值,看公式10 endfor i=(k+1):256w1(k)=w1(k)+p(i);%C1产生的概率endfor i=(k+1):256u1(k)=u1(k)+((i*p(i))/w1(k));%求C1的加权平均值endu(k)=w0(k)*u0(k)+w1(k)*u1(k);dx(k)=w0(k)*w1(k)*(u0(k)-u1(k))^2;%公式13 看论文end[c,k]=max(dx);%求出最大值c1=c;k1=k;%我们只要k就可以了,就是我们的阀值k=(k-1)/255;y=k;end3 系统的主程序function varargout = jiaotong(varargin)% JIAOTONG MATLAB code for jiaotong.fig% JIAOTONG, by itself, creates a new JIAOTONG or raises the existing % singleton*.%% H = JIAOTONG returns the handle to a new JIAOTONG or the handle to % the existing singleton*.%% JIAOTONG('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in JIAOTONG.M with the given input arguments.%% JIAOTONG('Property','Value',...) creates a new JIAOTONG or raises the % existing singleton*. Starting from the left, property value pairs are% applied to the GUI before jiaotong_OpeningFcn gets called. An% unrecognized property name or invalid value makes property application % stop. All inputs are passed to jiaotong_OpeningFcn via varargin.%% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one% instance to run (singleton)".%% See also: GUIDE, GUIDATA, GUIHANDLES% Edit the above text to modify the response to help jiaotong% Last Modified by GUIDE v2.5 20-May-2011 15:59:05% Begin initialization code - DO NOT EDITgui_Singleton = 1;gui_State = struct('gui_Name', mfilename, ...'gui_Singleton', gui_Singleton, ...'gui_OpeningFcn', @jiaotong_OpeningFcn, ...'gui_OutputFcn', @jiaotong_OutputFcn, ...'gui_LayoutFcn', [] , ...'gui_Callback', []);if nargin && ischar(varargin{1})gui_State.gui_Callback = str2func(varargin{1});endif nargout[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); elsegui_mainfcn(gui_State, varargin{:});end% End initialization code - DO NOT EDIT% --- Executes just before jiaotong is made visible.function jiaotong_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn.% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to jiaotong (see VARARGIN)% Choose default command line output for jiaotonghandles.output = hObject;% Update handles structureguidata(hObject, handles);% UIWAIT makes jiaotong wait for user response (see UIRESUME) % uiwait(handles.figure1);% --- Outputs from this function are returned to the command line. function varargout = jiaotong_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)% Get default command line output from handles structurevarargout{1} = handles.output;% --- Executes on button press in pushbutton1.function pushbutton1_Callback(hObject, eventdata, handles)global tuglobal tu1%全局变量axes(handles.axes1)%在窗口1显示图片[filename,pathname]=uigetfile({ ...;'*.*','All Files(*.*)';},...'选择文件');%if isequal([filename,pathname],[0,0])returnelse%读取图片pic = fullfile(pathname,filename);b = imread(pic);imshow(b);%显示图片tu=b;tu1=b;title; (’原图’)%handle.axes1=b;end% hObject handle to pushbutton1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% --- Executes on button press in pushbutton2.function pushbutton2_Callback(hObject, eventdata, handles)global tuI=tu;flag1=get(handles.radiobutton1,'value');flag2=get(handles.radiobutton2,'value');flag3=get(handles.radiobutton3,'value'); %获取单选按钮的值,看是选取哪种类型的交通标志if flag1==1%如果选了红色警示牌的话[chase,erzhi,zuizhong]=biaozhifengeR(I);%调用红色分量计算函数axes(handles.axes2)imshow(chase);title(’红色分量效果图’);axes(handles.axes3)imshow(erzhi)title(’二值分割效果图’);axes(handles.axes4)imshow(zuizhong)title(’最终分割效果图’);endif flag2==1 %如果选了蓝色指示牌的话[chase,erzhi,zuizhong]=biaozhifengeB(I);%调用蓝色分量计算函数axes(handles.axes2)imshow(chase);title(’蓝色分量效果图’);axes(handles.axes3)imshow(erzhi)title (’二值分割效果图’);axes(handles.axes4)imshow(zuizhong)title (’最终分割效果图’);endif flag3==1%如果选了绿色指示牌的话[chase,erzhi,zuizhong]=biaozhifengeG(I); %调用蓝色分量计算函数axes(handles.axes2)imshow(chase);title (’蓝色分量效果图’);axes(handles.axes3)imshow(erzhi)title (’二值分割效果图’);axes(handles.axes4)imshow(zuizhong)title(’最终分割效果图’);end% hObject handle to pushbutton2 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% --- Executes on button press in pushbutton3.function pushbutton3_Callback(hObject, eventdata, handles)global tuI=tu;flag1=get(handles.radiobutton1,'value');flag2=get(handles.radiobutton2,'value');flag3=get(handles.radiobutton3,'value');if flag1==1%和上面是一样的,另外这里的函数又和biaozhifengeR的函数一样,具体解释看该函数文件,这里不再解释axes(handles.axes2)[chang,kuan,gao]=size(I);for i=1:changfor j=1:kuanIR(i,j)=I(i,j,1);endendimshow(IR);title(’红色分量效果图’);endif flag3==1axes(handles.axes2)[chang,kuan,gao]=size(I);for i=1:changfor j=1:kuanIG(i,j)=I(i,j,2);endendimshow(IG);title (’绿色分量效果图’);endif flag2==1axes(handles.axes2)[chang,kuan,gao]=size(I);for i=1:changfor j=1:kuanIB(i,j)=I(i,j,3);endendimshow(IB);title(’蓝色分量效果图’);end% hObject handle to pushbutton3 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)% --- Executes on button press in pushbutton4.function pushbutton4_Callback(hObject, eventdata, handles) global tuI=tu;flag1=get(handles.radiobutton1,'value');flag2=get(handles.radiobutton2,'value');flag3=get(handles.radiobutton3,'value');if flag1==1axes(handles.axes3)[chang,kuan,gao]=size(I);for i=1:changfor j=1:kuanIR(i,j)=I(i,j,1);IG(i,j)=I(i,j,2);IB(i,j)=I(i,j,3);endendIR=double(IR);IG=double(IG);IB=double(IB);for i=1:changfor j=1:kuanif 1.6*IR(i,j)-IG(i,j)-IB(i,j)<0CA(i,j)=0;elseif 1.6*IR(i,j)-IG(i,j)-IB(i,j)>255CA(i,j)=255;elseCA(i,j)=1.6*IR(i,j)-IG(i,j)-IB(i,j);endendendyuzhi=otsu(CA);for i=1:changfor j=1:kuanif CA(i,j)<=yuzhi;CA(i,j)=0;elseCA(i,j)=255;endendendCA=uint8(CA);imshow(CA);title (’二值分割效果图’);endif flag3==1axes(handles.axes3)[chang,kuan,gao]=size(I);for i=1:changfor j=1:kuanIR(i,j)=I(i,j,1);IG(i,j)=I(i,j,2);IB(i,j)=I(i,j,3);endendIR=double(IR);IG=double(IG);IB=double(IB);for i=1:changfor j=1:kuanif 1.6*IG(i,j)-IR(i,j)-IB(i,j)<0CA(i,j)=0;elseif 1.6*IG(i,j)-IR(i,j)-IB(i,j)>255CA(i,j)=255;elseCA(i,j)=1.6*IG(i,j)-IR(i,j)-IB(i,j);endendendyuzhi=otsu(CA);for i=1:changfor j=1:kuanif CA(i,j)<=yuzhi;CA(i,j)=0;elseCA(i,j)=255;endendendCA=uint8(CA);imshow(CA);title(’二值分割效果图’);endif flag2==1axes(handles.axes3)[chang,kuan,gao]=size(I);for i=1:changfor j=1:kuanIR(i,j)=I(i,j,1);IG(i,j)=I(i,j,2);IB(i,j)=I(i,j,3);endendIR=double(IR);IG=double(IG);IB=double(IB);for i=1:changfor j=1:kuanif 1.6*IB(i,j)-IR(i,j)-IG(i,j)<0CA(i,j)=0;elseif 1.6*IB(i,j)-IR(i,j)-IG(i,j)>255CA(i,j)=255;elseCA(i,j)=1.6*IB(i,j)-IR(i,j)-IG(i,j);endendendyuzhi=otsu(CA);for i=1:changfor j=1:kuanif CA(i,j)<=yuzhi;CA(i,j)=0;elseCA(i,j)=255;endendendCA=uint8(CA);imshow(CA);title(’二值分割效果图’);end% hObject handle to pushbutton4 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)% --- Executes on button press in pushbutton5.function pushbutton5_Callback(hObject, eventdata, handles)global tuI=tu;flag1=get(handles.radiobutton1,'value');flag2=get(handles.radiobutton2,'value');flag3=get(handles.radiobutton3,'value');if flag1==1[chase,erzhi,zuizhong]=biaozhifengeR(I);axes(handles.axes4)imshow(zuizhong)title(’最终分割效果图’);endif flag2==1[chase,erzhi,zuizhong]=biaozhifengeB(I);axes(handles.axes4)imshow(zuizhong)title(’最终分割效果图’);endif flag3==1[chase,erzhi,zuizhong]=biaozhifengeG(I);axes(handles.axes4)imshow(zuizhong)title(’最终分割效果图’);end% hObject handle to pushbutton5 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)4 警示牌标志的分割程序function [chase,erzhi,zuizhong]=biaozhifengeR(I)%是按照论文基于三色分差的交通标志分割所得[chang,kuan,gao]=size(I);%获取图片I的长和宽for i=1:changfor j=1:kuanIR(i,j)=I(i,j,1);%提取图片的红色分量IG(i,j)=I(i,j,2); %提取图片的绿色分量IB(i,j)=I(i,j,3); %提取图片的蓝色分量endendIR=double(IR);IG=double(IG);IB=double(IB); %将提取的分量转换为双精度型,方便计算for i=1:changfor j=1:kuanif 1.6*IR(i,j)-IG(i,j)-IB(i,j)<0%论文中式5,目的是为了是提取的红色分量颜色更亮,其他的颜色更暗,下面两个一样,其他两个函数文件是相应的功能CA(i,j)=0;elseif 1.6*IR(i,j)-IG(i,j)-IB(i,j)>255CA(i,j)=255;elseCA(i,j)=1.6*IR(i,j)-IG(i,j)-IB(i,j);endendendchase=uint8(IR); %将红色分量图保存在chase变量中yuzhi=otsu(CA); %通过调用otsu来得到红色分量图的阀值yuzhifor i=1:changfor j=1:kuanif CA(i,j)<=yuzhi;CA(i,j)=0;elseCA(i,j)=255; %低于阀值的都变为0也就是黑色,高于阀值的都变味白色,这样就成了二值图了endendendCA=uint8(CA); %将处理后的红色分量图转换为8位图像类型的图%imshow(CA);erzhi=CA;for i=1:changfor j=1:kuanif CA(i,j)==0I(i,j,1)=0;I(i,j,2)=0;I(i,j,3)=0; %对照处理过的红色分量二值图,如果是黑色的话,就使原彩色图变为黑色,如果是白色的地方,就让原始色彩图保留元色彩色endendendI=uint8(I);zuizhong=I; %将处理后的彩色图赋值给zuizhong%imshow(I);5 蓝色指示牌标志的分割程序function [chase,erzhi,zuizhong]=biaozhifengeB(I)[chang,kuan,gao]=size(I);for i=1:changfor j=1:kuanIR(i,j)=I(i,j,1);IG(i,j)=I(i,j,2);IB(i,j)=I(i,j,3);endendIR=double(IR);IG=double(IG);IB=double(IB);for i=1:changfor j=1:kuanif 1.6*IB(i,j)-IG(i,j)-IR(i,j)<0CA(i,j)=0;elseif 1.6*IB(i,j)-IG(i,j)-IR(i,j)>255CA(i,j)=255;elseCA(i,j)=1.6*IB(i,j)-IG(i,j)-IR(i,j);endendendchase=uint8(IB);yuzhi=otsu(CA);for i=1:changfor j=1:kuanif CA(i,j)<=yuzhi;CA(i,j)=0;elseCA(i,j)=255;endendendCA=uint8(CA);%imshow(CA);erzhi=CA;for i=1:changfor j=1:kuanif CA(i,j)==0I(i,j,1)=0;I(i,j,2)=0;I(i,j,3)=0;endendendI=uint8(I);zuizhong=I;%imshow(I);6 绿色指示牌标志的分割程序function [chase,erzhi,zuizhong]=biaozhifengeG(I) [chang,kuan,gao]=size(I);for i=1:changfor j=1:kuanIR(i,j)=I(i,j,1);IG(i,j)=I(i,j,2);IB(i,j)=I(i,j,3);endendIR=double(IR);IG=double(IG);IB=double(IB);for i=1:changfor j=1:kuanif 1.6*IG(i,j)-IR(i,j)-IB(i,j)<0CA(i,j)=0;elseif 1.6*IG(i,j)-IR(i,j)-IB(i,j)>255CA(i,j)=255;elseCA(i,j)=1.6*IG(i,j)-IR(i,j)-IB(i,j);endendendchase=uint8(IG);yuzhi=otsu(CA);for i=1:changfor j=1:kuanif CA(i,j)<=yuzhi;CA(i,j)=0;elseCA(i,j)=255;endendendCA=uint8(CA);%imshow(CA); erzhi=CA;for i=1:changfor j=1:kuanif CA(i,j)==0I(i,j,1)=0;I(i,j,2)=0;I(i,j,3)=0;endendendI=uint8(I); zuizhong=I;%imshow(I);。

相关文档
最新文档