Matlabに基づく信号機標識の認識

        車の所有権が増えると、ドライバーや車両が交通標識情報をうまく認識できないこともあり、交通の危険が生じます。ドライバーに優れた交通情報を提供し、技術的な手段で判断を下すのを支援することで、交通事故の発生率を減らすことができます。同時に、環境認識の重要な部分として、交通標識認識は、車両を運転するための優れた交通標識情報を提供できます。運転体験を向上させます。これらの2つのポイントに基づいて、交通標識の識別を研究することは実用的かつ理論的に重要です。交通標識認識技術は、従来の検出方法と深層学習に基づく方法の2つのカテゴリに分類できます。ボタン:"1341703358" ;詳細なリソースを入手できます

1.1色のセグメンテーション

一般的な色空間は、RGB、LAB、HSVなどです。RGBモデルは人間の視覚システムと密接に関連しています。つまり、すべての色はR赤、G緑、B青のさまざまな比率の組み合わせです。利点は直感的で理解しやすいですが、変数間の相関関係もあります。強力。LABモデルは知覚の均一性に重点を置いています。Lは明るさを表し、Aの正と負は赤と緑を表し、Bの正と負は黄色と青を表します。特徴は、色と明るさの情報を個別に調整できることです。HSVは非線形モデル、Hは極角、Sは彩度、Vは明るさ、HSV色空間は機械視覚や画像処理の分野で多く使用されており、色相、鮮やかさ、明るさをより直感的に表現できます。 、および色のコントラストを助長します。さらに、さまざまなモデルを相互に変換できます。

1.2形状検出

        色分けされた画像のエッジ検出を実行して、各接続チャネルのエッジ輪郭特徴を取得し、交通標識自体の形状特性用に設計されたアルゴリズムを使用して、この特徴を持つ輪郭を検出します。取得された領域は、特徴抽出と分類器分類の対象領域。画像内でピクセルのグレー値が急激に変化する領域は、画像エッジと呼ばれます。簡単に言うと、エッジ検出とは、画像内のエッジピクセルを接続して閉じた領域を形成し、ロゴを背景と簡単に区別できるようにすることです。

1.3特徴抽出と分類器

        交通標識やその他の画像を認識するための鍵は、高速で堅牢なアルゴリズムまたはモデルを使用して、画像内の検出ターゲットを効果的に説明する情報を抽出し、この情報を使用して他の画像と区別することです。このプロセスは機能です。抽出。たとえば、2010年と2011年のImageNet大規模視覚認識チャレンジの優勝チームは、SIFTやLBPなどのアルゴリズムを使用して特徴を手動で抽出し、分類器の分類に使用して、28.2%のエラー率を達成しました。従来の特徴抽出方法には、HOG、LBP、SIFTなどがあります。SIFT(スケール不変特徴変換)は、オブジェクトに関連し、サイズや回転方向とは関係のないオブジェクト上のいくつかのローカルポイントを使用してオブジェクトを表します。これにより、オブジェクトへの照明やノイズなどの影響を減らすことができます。認識;HOG(Histogram of Orientation Gradient)ローカルターゲットの形状は勾配によって記述され、画像の輪郭情報はこの機能によってキャプチャされます; 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] Chen Chao。MATLABアプリケーションの例[M]。北京:Electronic Industry Press、2011.11。

おすすめ

転載: blog.csdn.net/Jiangtagong/article/details/123903447