matlab——红绿灯颜色及数字识别(一)
实验总结:红绿灯颜色以及数字识别(一):颜色识别
一、知识背景
颜色空间:通常拍摄的图像是RGB颜色空间,图片的像素点是由R、G、B分量来表示肉眼所看到的颜色。
比如:红色为(255,0,0),黄色为(255,255,0),查找颜色对应的RGB值可查阅相关资料。(个人jio得阔以理解为色彩由红绿蓝三种颜色调和)*
这里附上一个链接: 常用颜色的RGB值.
进行红绿灯识别时,需要转换到HSV空间:H(色调)、S(饱和度)、V(亮度)来进行信号灯识别。(个人认为转到HSV空间更便于由亮度对信号灯区域进行识别)
二、代码实现及注释
1.读入图像并将其从RGB空间转为HSV空间
代码如下:
%% 读入图像并将其从RGB空间转为HSV空间
src=imread('F:\王美丽\图片\红绿灯\6.jpg');light_hsv=rgb2hsv(src);% rgb2hsv:色调、对比度、亮度
H=light_hsv(:,:,1);
S=light_hsv(:,:,2);
V=light_hsv(:,:,3);figure;% 作图
subplot 221;
imshow(src);
title('原始图像');
subplot 222;
imshow(H);
title('H分量');
subplot 223;
imshow(S);
title('S分量');
subplot 224;
imshow(V);
title('V分量');
结果如下:
可以通过鼠标观察信号灯区域的HSV值(Index)
2.对红绿灯颜色设置HSV阈值范围
可以通过对H、S、V三个分量上设置阈值对红绿灯进行范围区分,信号灯的像素点在哪个范围的点最多,信号灯就为对应的颜色。
对于阈值的设置:可通过观察HSV分量或者查表得到(不同环境下的HSV分量的阈值有不同)
代码如下:
% 设置阈值范围
lightsrc0=zeros(size(src));% 设置lightsrc0来对三色范围像素点进行存储
[rowG,colG]=ind2sub(size(light_hsv),find(H>0.4 & H<0.55 & S>0.16 & S<1 & V>0.9));% 绿色阈值范围
[rowR,colR]=ind2sub(size(light_hsv),find(H>0.01 & H<0.2 & S>0.08 & S<1 & V>0.9));% 红色阈值范围
[rowY,colY]=ind2sub(size(light_hsv),find(H>0.09 & H<0.4 & S>0.16 & S<1 & V>0.8));% 黄色阈值范围lightcolor=[size(rowG,1),size(rowR,1),size(rowY,1)];%各颜色范围像素点if max(lightcolor)==size(rowG,1)% 找包含最多像素点的颜色阈值范围,输出结果for i=1:length(rowG)lightsrc0(rowG(i),colG(i))=src(rowG(i),colG(i));% 将对应颜色区域进行提取endfigure;imshow(src);title('信号灯为绿色');% 绿色范围像素点最多
elseif max(lightcolor)==size(rowR,1)for i=1:length(rowR)lightsrc0(rowR(i),colR(i))=src(rowR(i),colR(i));endfigure;imshow(src);title('信号灯为红色');elsefor i=1:length(rowY)lightsrc0(rowY(i),colY(i))=src(rowY(i),colY(i));endfigure;imshow(src);title('信号灯为黄色');end
end
结果如下:
三、作者有话说
1.这是本人第一次写,有许多不足的地方请温柔指出,交流促使进步;
2.悄咪咪说一句,这个格式是真的难调啊,我现在都不清楚如何段前空两格,sos;
3.红绿灯识别是我一门课的实验,在这里记录一个初学者的逼逼叨叨,应该还会有后续,佛系随缘更吧;
4.后续:matlab——红绿灯颜色及数字识别(二)
matlab——红绿灯颜色及数字识别(一)相关推荐
- matlab——红绿灯颜色及数字识别(三)
实验总结:红绿灯颜色以及数字识别(三):形状识别 一.知识背景 在matlab--红绿灯颜色及数字识别(二)中已经完成了对信号灯区域的裁剪,对信号灯形状的识别这里设置了三条辅助线来进行完成对笔画的 ...
- matlab——红绿灯颜色及数字识别(二)
实验总结:红绿灯颜色以及数字识别(二):提取信号灯区域 一.知识背景 这里放一些链接来供查阅参考: 1.连通量函数: Matlab中bwlabel函数的使用 2.膨胀.腐蚀: 形态学操作:膨胀 ...
- 【印刷字符识别】基于matlab OCR印刷字母+数字识别【含Matlab源码 1861期】
⛄一.OCR简介 OCR技术是光学字符识别的缩写, 是通过扫描等光学输入方式将各种票据.报刊.书籍.文稿及其它印刷品的文字转化为图像信息, 再利用文字识别技术将图像信息转化为可以使用的计算机输入技术. ...
- Matlab深度学习-手写体数字识别
Matlab深度学习 文章目录 Matlab深度学习 前言 一.MNIST手写体数字数据 二.用到的深度学习框架-LeNet5 2-0 LeNet5的网络架构 2-1 框架实现-通过Matlab GU ...
- Matlab基于颜色的车牌识别
%function carreco clc; clear all; %========================================================== %说明: % ...
- lenet5手写数字识别 matlab,LeNet5实现手写体数字识别(基于PyTorch实现)
import torch import torch.nn as nn import torch.nn.functional as F import torch.optim as optim from ...
- 基于FPGA的数字识别实现
前言 数字识别在我们生活中很常见,比如车牌识别.本篇博客就将介绍数字识别的方法,由于只是研究数字识别的方法,我们就不用硬件平台,而是用Modelsim和Matlab来仿真验证. 具体方法如下: 我们用 ...
- 手写数字识别问题(5)——完结
经过接近15周的艰苦努力,毕业设计(基于MATLAB的手写数字识别系统)已经完结. 设计过程中遇到的部分问题可查阅博客: 手写数字识别问题(1)--关于MNIST数据集 手写数字识别问题(2)--利用 ...
- matlab 职坐标,机器人之【机器视觉与图像处理】基于MATLAB的圆检测、颜色识别、数字识别...
本文主要向大家介绍了机器人之[机器视觉与图像处理]基于MATLAB的圆检测.颜色识别.数字识别,通过具体的内容向大家展现,希望对大家学习机器人有所帮助. 对产品中心的检测:设置好路径之后,包含关系是在 ...
最新文章
- 循环for语句 if语句
- 基于.net技术的代码高亮显示组件
- xshell使用命令总结
- matlab decomposition filters,MATLAB小波去噪求助(附算法和显示图片)!不知自己哪个地方出了问题,求指点! - 信息科学 - 小木虫 - 学术 科研 互动社区...
- 不简单的 SimpleDateFormat
- 记一次CPU占用率和load高的排查
- LeetCode 462 Minimum Moves to Equal Array Elements II
- 【前端Talkking】CSS系列-css3之box-shadow介绍
- 排得更好VS估得更准VS搜的更全「推荐、广告、搜索」算法间到底有什么区别?...
- 送出15个Google Wave邀请,需要的赶快
- html5作品分析报告,性能报告之HTML5 性能测试报告
- 单片机(ISIS 7 Professional):实现简易十字路口红绿灯代码项目
- 《CSS世界》(张鑫旭)pdf
- 修改IE浏览器点击右键“查看源文件”时的打开程序
- 51单片机使用超声波进行测距
- 常见遥感卫星基本参数大全
- 香河哪有学计算机编程,香河计算机程序设计员职业资格证书
- 联想K29昭阳K29笔记本联想K49A在dos下刷入bios教程
- 卷积神经网络系列之softmax,softmax loss和cross entropy的讲解
- 网页服务器版本,华为网页版本进云服务器