matlab

您所在的位置:网站首页 红绿灯标志牌图片手工制作 matlab

matlab

2024-06-02 01:30| 来源: 网络整理| 查看: 265

实验总结:红绿灯颜色以及数字识别(一):颜色识别 一、知识背景

颜色空间:通常拍摄的图像是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)原图以及HSV分量图 2.对红绿灯颜色设置HSV阈值范围 可以通过对H、S、V三个分量上设置阈值对红绿灯进行范围区分,信号灯的像素点在哪个范围的点最多,信号灯就为对应的颜色。

对于阈值的设置:可通过观察HSV分量或者查表得到(不同环境下的HSV分量的阈值有不同) 代码如下:

% 设置阈值范围 lightsrc0=zeros(size(src));% 设置lightsrc0来对三色范围像素点进行存储 [rowG,colG]=ind2sub(size(light_hsv),find(H>0.4 & H0.16 & S0.9));% 绿色阈值范围 [rowR,colR]=ind2sub(size(light_hsv),find(H>0.01 & H0.08 & S0.9));% 红色阈值范围 [rowY,colY]=ind2sub(size(light_hsv),find(H>0.09 & H0.16 & S0.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));% 将对应颜色区域进行提取 end figure; imshow(src); title('信号灯为绿色');% 绿色范围像素点最多 else if max(lightcolor)==size(rowR,1) for i=1:length(rowR) lightsrc0(rowR(i),colR(i))=src(rowR(i),colR(i)); end figure; imshow(src); title('信号灯为红色'); else for i=1:length(rowY) lightsrc0(rowY(i),colY(i))=src(rowY(i),colY(i)); end figure; imshow(src); title('信号灯为黄色'); end end

结果如下: 图片的标题为信号灯的颜色

三、作者有话说

1.这是本人第一次写,有许多不足的地方请温柔指出,交流促使进步;

2.悄咪咪说一句,这个格式是真的难调啊,我现在都不清楚如何段前空两格,sos;

3.红绿灯识别是我一门课的实验,在这里记录一个初学者的逼逼叨叨,应该还会有后续,佛系随缘更吧;

4.后续:matlab——红绿灯颜色及数字识别(二)



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3