基于Matlab交通信号标志识别

        汽车保有量增加会带来交通隐患,其部分原因是 因为驾驶员及车辆未能良好地识别交通标志信息。通 过一些技术手段为驾驶员提供良好的交通信息并辅助 其做出判断,可降低交通事故率;同时,作为环境感知 的重要部分,交通标志识别能为行驶车辆提供良好的 交通标志信息,并提升驾驶体验。基于这 2 点,研究交 通标志的识别是具有现实意义和理论意义的。可将交 通标志识别技术分为二大类,分别为传统检测方法与 基于深度学习的方法。扣扣:"1341703358";即可获取详细资源

1.1 颜色分割

常见的颜色空间有 RGB、LAB、HSV 等。RGB 模 型与人的视觉系统密切相关,即所有颜色都是 R 红、 G 绿和 B 蓝不同比例的组合,优点是直观、易理解,但 其变量之间相关性太强;LAB 模型更侧重于感知均匀 性,L 代表亮度,A 的正负代表红色与绿色,B 的正负代 表黄色与蓝色,特点是可以分别调整色彩和明度信息; HSV 为非线性模型 ,H 代表极角,S 代表饱和度,V 代 表明度,在机器视觉和图像处理领域运用较多的是 HSV 颜色空间,能更直观地表达色调、鲜艳程度和明暗 程度,更有利于进行颜色对比。此外,各种模型之间可 进行相互转化。

1.2 形状检测

        对经过颜色分割后的图像进行边缘检测,以获取 每个连接通道的边缘轮廓特征,再利用针对交通标志 自身所具有的形状特点所设计的算法,用以检测具有 该特征的轮廓,同时把检测到的区域定义为感兴趣区 域,以便于特征提取与分类器分类。1 张图片中像素灰度值发生急剧变化的区域称之 为图像边缘。简单来说,边缘检测就是将图像中的边缘像素点连接起来以构成封闭区域,从而使标志易于从 背景中区分出来。

1.3 特征提取和分类器

        交通标志及其他图像识别的关键就在于用快速且 具鲁棒性的算法或模型将图像中有效描述检测目标的 信息提取出来,并且利用该信息与其他图像进行区分, 此过程就是特征提取。如 2010 年和 2011 年在 ImageNet Large Scale Visual Recognition Challenge 赛事中的 获胜团队,使用 SIFT、LBP 等算法手动提取特征,再将 其用于分类器分类,取得了 28.2%的错误率。传统特征 提取的方法有 HOG、LBP、SIFT 等。SIFT(尺度不变特 征变换)用物体上存在着的一些与物体相关且与大小及 旋转方向无关的局部点表征物体,可以减少光照、噪声 等对物体识别的影响;HOG(方向梯度直方图)利用梯 度描述局部目标的形状,同时使用此特征捕获图片的 轮廓信息;LBP(局部二值模式)以中心像素的灰度值作 为阈值而得到对应的二进制编码来表示局部纹理特 征。特征提取后,利用分类器对其进行分类。如贝叶斯 分类器、支持向量机、神经网络分类器和 Adaboost 等。

1.4 代码实现


% 在Traffic_Iden变得可见之前执行
function Traffic_Iden_OpeningFcn(hObject, eventdata, handles, varargin)
% .此函数没有输出args,请参见输出FCN
% hObject    图的句柄
% eventdata  保留-在未来的MATLAB版本中定义
% handles    具有句柄和用户数据的结构(参见GUIDATA)
% varargin   Traffic_Iden的命令行参数(见VARARGIN)


% 选择Traffic_Iden的默认命令行输出
handles.output = hObject;
handles.cd0 = cd;
handles.Color = 0;
handles.I = [];

axes(handles.axes1);
set(gca,'Xtick',[]);%去除x轴的刻度
set(gca,'Ytick',[]);%去除y轴的刻度
box on;

axes(handles.axes2);
set(gca,'Xtick',[]);
set(gca,'Ytick',[]);
box on;

axes(handles.axes3);
set(gca,'Xtick',[]);
set(gca,'Ytick',[]);
box on;

axes(handles.axes4);
set(gca,'Xtick',[]);
set(gca,'Ytick',[]);
box on;

% 更新句柄结构
guidata(hObject, handles);


%UIWA IT使Traffic_Iden等待用户响应(参见UIRESUME)
% uiwait(handles.figure1);


% 此函数的输出返回到命令行
function varargout = Traffic_Iden_OutputFcn(hObject, eventdata, handles) 
% varargout 用于返回输出arg的vargout单元数组
% hObject   图的句柄
% eventdata 保留-在未来的MATLAB版本中定义
% handles   具有句柄和用户数据的结构(参见GUIDATA)

% 获取句柄结构中的默认命令行
varargout{1} = handles.output;


% 按单选按钮3中的按钮执行。
function radiobutton3_Callback(hObject, eventdata, handles)
% hObject    单选按钮3的句柄
% eventdata  保留-在未来的MATLAB版本中定义
% handles    具有句柄和用户数据的结构(参见GUIDATA)


%提示:get(hObject,‘Value’)返回单选按钮3的切换状态


% 按单选按钮4中的按钮执行。
function radiobutton4_Callback(hObject, eventdata, handles)
% hObject    单选按钮4的句柄
% eventdata  保留-在未来的MATLAB版本中定义
% handles    具有句柄和用户数据的结构(参见GUIDATA)

%提示:get(hObject,‘Value’)返回单选按钮4的切换状态


% 按单选按钮5中的按钮执行
function radiobutton5_Callback(hObject, eventdata, handles)
% hObject    单选按钮5的句柄
% eventdata  保留-在未来的MATLAB版本中定义
% handles    具有句柄和用户数据的结构(参见GUIDATA)

% Hint: get(hObject,'Value') returns toggle state of radiobutton5


	
%执行按钮按下按钮1。
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject    按钮1的句柄
% eventdata  保留-在未来的MATLAB版本中定义
% handles    具有句柄和用户数据的结构(参见GUIDATA)
%%  读图
axes(handles.axes1);
cla;%清除坐标系,相当于初始化axes
axes(handles.axes2);
cla;
axes(handles.axes3);
cla;
axes(handles.axes4);
cla;
if filename

    cd(cd1);%目录
    d = imread(filename);%获取图片数据
    cd(handles.cd0);
    handles.I = d;
    axes(handles.axes1);%创建坐标系
    imshow(d);%显示灰度图
    handles.filename = filename; 

    box on;%显示右边和上边框
    
end

handles.Color = 0;
cd(handles.cd0);
set(handles.text2,'string','');
guidata(hObject, handles);


% 执行按钮按下按钮2。
function pushbutton2_Callback(hObject, eventdata, handles)
% hObject    按钮2的句柄
% eventdata  保留-在未来的MATLAB版本中定义
% handles    具有句柄和用户数据的结构(参见GUIDATA)
%% 提取标志
% 按照颜色来分
Color = 0; % 颜色标记  1是红 2 是蓝 3是黄色

if get(handles.radiobutton3,'Value')
    
    Color = 1;
    
elseif get(handles.radiobutton4,'Value')
    
    Color = 2;
    
elseif get(handles.radiobutton5,'Value')
        
        DI = rgb2gray(Image);  %灰度图
        
end

axes(handles.axes2);
imshow(DI);

axes(handles.axes3);

imshow(GI);

handles.GI = GI;

guidata(hObject, handles);

1.5 结果

参考文献

[1] 道路交通信号灯 GB14887-2011.

[2] 陈超.MATLAB 应用实例精讲[M].北京:电子工业出版社,2011.11.

猜你喜欢

转载自blog.csdn.net/Jiangtagong/article/details/123903447