基于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

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值