【红绿灯识别】基于matlab GUI红绿灯识别【含Matlab源码 1908期】

✅博主简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,Matlab项目合作可私信。
🍎个人主页:海神之光
🏆代码获取方式:
海神之光Matlab王者学习之路—代码获取方式
⛳️座右铭:行百里者,半于九十。

更多Matlab仿真内容点击👇
Matlab图像处理(进阶版)
路径规划(Matlab)
神经网络预测与分类(Matlab)
优化求解(Matlab)
语音处理(Matlab)
信号处理(Matlab)
车间调度(Matlab)

⛄一、红绿灯识别简介

截至2015年,世界范围内盲人的患病率为0.49%,约有3600万盲人,我国50岁以上的盲人有532万。盲人出行困难重重。目前市面上针对盲人出行识别红绿灯的研究并不多,识别红绿灯的图像识别技术往往应用于无人驾驶技术上。本文设计了一种使用直方图阈值分割以及HSV颜色识别的红绿灯识别方法。

阈值分割是较常见的一种图像处理方法,由于其计算速度快、实现简单,因此被广泛应用在图像处理中。该方法主要是依据直方图的概率分布计算相应的准则函数,同时运用智能优化算法加快阈值搜索速度,从而选取合适的阈值进行分割。其中,直方图阈值法是依据图像的直方图,对其进行分析来实现对图像的分割。HSV颜色空间的3个分量具有相对独立性,而H和S分量受光照及阴影遮挡的影响很小。使用HSV色彩空间,利用不同颜色的阈值进行红绿灯颜色识别,排除大部分外界环境干扰,精确可靠。

1 预处理
摄像头自然拍摄的街景图像包含的图形复杂繁琐,并且外界光线的变化对图像的清晰度、分辨度有一定影响。街景图像的预处理主要包括图像增强等工作,简单预处理的方法包括灰度化、图像增强等步骤。韩征等提出基于蒙特卡洛模拟的图像二值化增强算法。现阶段,机器视觉的准确性不足。在工业实际应用上,机器视觉的准确性远低于实验的测试结果,当测量的环境发生改变后,得出的结果会发生较大的偏差,对环境的适应性较差。外界环境的变化影响街景图像的拍摄效果,对红绿灯的定位识别具有干扰。为了减少外界环境因素无关因素的干扰,对图像进行灰度化、锐化及增强降噪处理。预处理流程如图1所示。
在这里插入图片描述
图1 预处理流程
2 红绿灯的定位
对于一张灰度图像,图像的直方图[8]可以看作是像素灰度值概率密度分布函数的一个近似。假设一张图像里仅包括目标物体和背景,那么此图像的直方图分布可看作是仅有目标物体与背景的像素概率密度分布。
假设一张灰度图像的直方图灰度级范围为i=0,1,2……k,则此图像的总像素为:
在这里插入图片描述
灰度级i出现的概率为:
在这里插入图片描述
使用直方图阈值分割算法实现图像的分割,提出双曲线二维Otsu阈值分割算法,使用模糊直方图模型进行运动目标追踪,本文使用直方图阈值分割法,适用于简单的红绿灯分割。依据灰度图像的直方图可分析出图像的分割阈值,对于具有明显波峰波谷的灰度图,此方法分割准确。红绿灯分割定位结果如图2所示。图2中第一张图为首次分割后的图像,可见其轮廓模糊,不利于后续准确定位。对其进行腐蚀操作,轮廓较之前清晰。可以看到,在第二张二值图像中存在零零星星的噪点,使用中值滤波进行降噪处理,得到最终二值化图像。红绿灯的底盘颜色均为黑色,且在实时拍摄的图像中,红绿灯的位置通常位于图像的中间偏上位置,在所得到的图像中,找出图像矩阵中最小的元素,它所对应的行即为该二值图像中黑色像素点最多的行。因为在日常生活中,无论是横向红绿灯或竖向红绿灯,红绿灯的长度、宽度以及面积是固定不变的,由此可确定红绿灯在图像中的位置。

3 红绿灯颜色识别
RGB色彩空间:RGB色彩模式是工业界最常用的一种模式,其中包括红色(R)、绿色(G)和蓝色(B)。一幅图像由这3个通道组成。HSV色彩空间:HSV模型中颜色的参数是色调(H)、饱和度(S)和亮度(V)。

RGB模型是人们最熟悉的彩色模型,但RGB 3个分量的相关性高,不能用于分离两个颜色相近区域。HSV模型同样属于彩色模型,HSV(hue,saturation,value)分别表示色调、饱和度和明度,HSV模型比RGB模型更接近人们对色彩的感知;HSV模型消除了3个分量之间的相关性,在处理颜色相近的图像时有更好的效果。

对于HSV图像进行颜色识别,通过红绿红3种颜色的HSV值不同,判断红绿灯此刻亮起的颜色是何种颜色。首先,将RGB色彩转换成HSV模型,使用两个模型之间的差值进行数值转换。红黄绿3种颜色的HSV各不相同,根据红色的HSV数值,分别设置红色、绿色、黄色HSV值的上下限。除此之外,考虑到各地红绿灯颜色可能有些许差异,如某些红绿灯的红灯更偏于橙色,绿色更偏于为青色,而且在强光弱光的环境下灯光还显现出白色,在设置HSV数值时,将橙色青色白色的HSV上下限值加入到算法中。提取分割后的红绿灯图像中HSV三通道的值,依据所设置的HSV阈值,判断图像中何种颜色的分量占据多数,即可判断出此刻红绿灯的状态。

⛄二、部分源代码

function varargout = Maindeng(varargin)
% MAINDENG MATLAB code for Maindeng.fig
% MAINDENG, by itself, creates a new MAINDENG or raises the existing
% singleton*.
%
% H = MAINDENG returns the handle to a new MAINDENG or the handle to
% the existing singleton*.
%
% MAINDENG(‘CALLBACK’,hObject,eventData,handles,…) calls the local
% function named CALLBACK in MAINDENG.M with the given input arguments.
%
% MAINDENG(‘Property’,‘Value’,…) creates a new MAINDENG or raises the
% existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before Maindeng_OpeningFcn gets called. An
% unrecognized property name or invalid value makes property application
% stop. All inputs are passed to Maindeng_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 Maindeng

% Last Modified by GUIDE v2.5 21-Jun-2022 22:14:12

% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct(‘gui_Name’, mfilename, …
‘gui_Singleton’, gui_Singleton, …
‘gui_OpeningFcn’, @Maindeng_OpeningFcn, …
‘gui_OutputFcn’, @Maindeng_OutputFcn, …
‘gui_LayoutFcn’, [] , …
‘gui_Callback’, []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});

end
% End initialization code - DO NOT EDIT

% — Executes just before Maindeng is made visible.
function Maindeng_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 Maindeng (see VARARGIN)

% Choose default command line output for Maindeng
handles.output = hObject; %下面全部为设定作图区域属性
handles.cd0 = cd;
handles.Color = 0;
handles.I = [];

axes(handles.axes1);
set(gca,‘Xtick’,[]);
set(gca,‘Ytick’,[]);
box on;

⛄三、运行结果

在这里插入图片描述
在这里插入图片描述

⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]桂欣悦,李振伟,吴晨晨,李彦玥.基于MATLAB的红绿灯识别系统研究[J].电子设计工程. 2020,28(16)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

🍅 仿真咨询
1 各类智能优化算法改进及应用

生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化

2 机器学习和深度学习方面
卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM、XGBOOST、TCN实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断

3 图像处理方面
图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知

4 路径规划方面
旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划、天线线性阵列分布优化、车间布局优化

5 无人机应用方面
无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配

6 无线传感器定位及布局方面
传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化

7 信号处理方面
信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化

8 电力系统方面
微电网优化、无功优化、配电网重构、储能配置

9 元胞自动机方面
交通流 人群疏散 病毒扩散 晶体生长

10 雷达方面
卡尔曼滤波跟踪、航迹关联、航迹融合

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海神之光

有机会获得赠送范围1份代码

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值