当前位置:   article > 正文

matlab——红绿灯颜色及数字识别(一)_matlab中运用hsb帮助红绿灯

matlab中运用hsb帮助红绿灯

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

一、知识背景

颜色空间:通常拍摄的图像是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分量');
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

结果如下:
可以通过鼠标观察信号灯区域的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 & 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));% 将对应颜色区域进行提取
    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
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

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

三、作者有话说

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

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

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/425026
推荐阅读
相关标签
  

闽ICP备14008679号