项目介绍:交通信号灯是智能车辆在城市环境中行驶的主要指示信号,在城市交通安全中发挥了不可或缺的作用。交通信号灯通常设在交叉口,能够供应智能车辆的方位信息,查看和辨认交通信号灯的情况是智能车辆感知的重要任务。红绿灯识别技术是智能交通系统一个重要方面,而且对无人驾驶以及智能车辆的辅助驾驶系统发展有积极推动作用。常用的红绿灯识别方法主要有两类:基于颜色方法和基于模板匹配的方法。在简单工况下,可在各种颜色空间中利用信号灯颜色的先进行分割得到兴趣区域,然后再通过信号灯所特有的形状特征等进行进一步的判定。本代码通过对红绿灯设置HSV阈值范围;对提取的部分信号灯颜色进行二值化、膨胀、腐蚀处理;连通域判断提取;信号灯部分截取,图像分割等,最终实现红绿灯的识别。
项目依赖环境及库:support package for usb webcams、image acquisition toolbox
图1、图2 项目需安装附加功能资源
硬件设备安装:连接USB摄像头(如图1)
图3 摄像头的连接
(摄像头直接连接即可、可以不连摄像头直接读取电脑图片\视频或使用笔记本自带摄像头)
项目工程文件使用方法:
- 打开MATLAB,将MATLAB路径调整到代码所保持的文件路径(我的是D/实验室/红绿灯/MATLAB的红绿灯检测/代码)
图4 文件路径
2.双击打开file1.m文件,点击编辑器中的运行
图5 运行
将出现如下界面,根据图片存放的路径,找到图片即可
图6 运行后界面
图7 选择图片
3.点击打开,即可进行红绿灯的检测
图8 检测结果
4.双击打开file2.m,运行步骤与file1相同,但file2.m比file1.m多了对红绿灯的区域分割、二值连通分量等
图10 file2.m的结果
5.在连接好USB摄像头后打开USB1.m,将红绿灯照片放在摄像头面前(尽量把手机亮度调高)。点击运行
图11 摄像头与红绿灯
图12 运行结果
6. 运行USB2步骤与USB1相同,但USB2.m比USB1.m多了对红绿灯的区域分割、二值连通分量等
注:
1.两种代码均可运行其中 1 为精简版
2. file为读取电脑上的图片代码
3.USB为读取外接摄像头代码
可能会遇到的问题、即解决办法:
- 摄像头连接不上(可能是matlab之前打开了摄像头没有关闭,关闭matlab重新打开或者命令行窗口输入clc clear)
- 使用USB摄像头检验时黄灯检测成红灯(由于色域的相近,有一定概率会检测错误, 可以调高手机/信号灯亮度或者将信号灯靠近摄像头,这种解决方法也可以解决红绿灯检测出错的情况)
- 检测结果混乱(这是由于工作区未清空引起,可以在代码开头加入clc clear,也可以在工作区输入)