我是靠谱客的博主 典雅耳机,最近开发中收集的这篇文章主要介绍基于MATLAB的红绿灯检测识别系统,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

课题介绍

红绿灯识别技术是智能交通系统一个重要方面,而且对无人驾驶以及智能车辆的辅助驾驶系统发展有积极推动作用。常用的红绿灯识别方法主要有两类:基于颜色方法和基于模板匹配的方法。基于颜色的方法对交通标志所处的外部环境要求高,且容易受噪声影响;基于模板匹配的方法对恶劣环境下的识别有较好的效果,但是其鲁棒性差。机器学习则是利用从已知的数据样本学习,根据某些特征通过某些特定的方法,来对未知的样本数据进行识别,做出正确判断。基于塔式梯度直方图(Pyramid Histogram of Oriented Gradients, PHOG)特征及支持向量机(Support Vector Machine,SVM)的红绿灯自动识别方法就是一种机器学习方法,不同于基于颜色和模板匹配的方法,此方法只需对图像进行特征提取,然后利用支持向量机对提取的特征进行学习形成分类模型,再利用该模型对红绿灯图像进行识别判断。

  1. GUI界面设计


58fb67431895040cf11dbc155cc13ee4.png




  1. 核心代码

%主要功能描述:实现对红绿灯检测功能,将图像从RGB转换到HVS空间, %避免了普通%RGB空间易于受到亮度影响判定结果的弊端。

 clear; close all;
Image_f=imread('pic.jpg');
figure(1),imshow(Image_f);title('检测图像'); %RGB TO HSV
hsv_f = rgb2hsv(Image_f); H = hsv_f(:,:,1)*255; S = hsv_f(:,:,2)*255; V = hsv_f(:,:,3)*255; figure,imhist(uint8(H)); [y,x,z]=size(Image_f); Red_y=zeros(y,1); Green_y=zeros(y,1); Yellow_y=zeros(y,1);
for i=1:y
for j=1:x
if(((H(i,j)>=0)&&(H(i,j)<15))||((H(i,j) >= 245) && (H(i,j) <=255))
&&(V(i,j)>50)&&(S(i,j)>30))
%(V(i,j)<255)
&&(V(i,j)>50)&&(S(i,j)>30)
Red_y(i,1)= Red_y(i,1)+1;%红像素点统计
elseif(((H(i,j)>=66)&&(H(i,j)<130))
&&(V(i,j)>50)&&(S(i,j)>30))
%(V(i,j)<255)
&&(V(i,j)>50)&&(S(i,j)>30)
Green_y(i,1)= Green_y(i,1)+1;%绿像素点统计
elseif(((H(i,j)>=20)&&(H(i,j,1)<65))
&&(V(i,j)>50)&&(S(i,j)>30))
%(V(i,j)<255)
&&(V(i,j)>50)&&(S(i,j)>30)
Yellow_y(i,1)= Yellow_y(i,1)+1;%黄像素点统计
end
end
end
Max_Red_y=max(Red_y) Max_Green_y=max(Green_y) Max_Yellow_y=max(Yellow_y)
if((Max_Red_y> Max_Green_y)&&(Max_Red_y> Max_Yellow_y))
Result =1;
elseif((Max_Green_y> Max_Red_y)&&(Max_Green_y> Max_Yellow_y))
Result =2;
elseif((Max_Yellow_y> Max_Green_y)&&(Max_Yellow_y> Max_Red_y))
Result =3; else
Result =4; end
if(Result==1)
disp('检测结果为红灯'); elseif(Result==2);
disp('检测结果为绿灯'); elseif(Result==3)
disp('检测结果为黄灯'); else
disp('检测失败'); end

最后

以上就是典雅耳机为你收集整理的基于MATLAB的红绿灯检测识别系统的全部内容,希望文章能够帮你解决基于MATLAB的红绿灯检测识别系统所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(63)

评论列表共有 0 条评论

立即
投稿
返回
顶部