1.ソフトウェアバージョン
matlab2017b。
3.関連する原則
特定の要件:
1.画像入力
2.グレースケール画像に変換します
3.画像エッジ検出
4.画像の侵食
5.画像の塗りつぶし
6.写真から気を散らすものを取り除く
7.写真から交通標識の位置を正確に特定し、もう一度図を開いて表示します(切り抜き)
8.切り欠きの交通標識をグレースケール画像に変換します
9.動的しきい値法を使用して交通標識をバイナリイメージに変換する
10.モルフォロジーフィルタリングを使用して画像を処理します
11.認識プロセス{1.テンプレートライブラリを確立します。これらはすべてバイナリの交通標識です。
12.上記で取得した交通標識をテンプレートライブラリと照合します
13.図を表示し、プロンプト交通標識の名前を出力します}
一般的な特徴抽出スキーム:
HOG特徴法:
原理は次のとおりです。
1. HOG機能:
Histogram of Oriented Gradient (HOG )機能は、コンピュータービジョンおよび画像処理でのオブジェクト検出に使用される機能記述子です。画像の局所領域の勾配方向ヒストグラムを計算してカウントすることにより、特徴を構築します。
(1 )主なアイデア:
画像では、ローカルオブジェクトの外観と形状は、勾配またはエッジの方向密度分布によって適切に記述できます。(必須:勾配の統計、および勾配は主にエッジに存在します)。
(2 )具体的な実装方法は次のとおりです。
画像は最初にセルユニットと呼ばれる小さな接続領域に分割されます。次に、セルユニット内の各ピクセルの勾配またはエッジ方向のヒストグラムが収集されます。最後に、これらのヒストグラムを組み合わせて機能記述子を形成します。
(3 )パフォーマンスの向上:
コントラストの正規化(コントラストの正規化)は、画像のより広い範囲(間隔またはブロックと呼びます)のこれらのローカルヒストグラムで実行されます。使用される方法は次のとおりです。最初にこの間隔の各ヒストグラムを計算します(ブロック)間隔の密度次に、この密度に従って、間隔内の各セルユニットに対して正規化されます。この正規化の後、照明の変化と影により良い効果を得ることができます。
(4 )利点:
他の機能記述方法と比較して、HOGには多くの利点があります。まず第一に、HOGは画像のローカルグリッドセルで動作するため、より大きな空間フィールドにのみ表示される画像の幾何学的および光学的変形に対して良好な不変性を維持できます。第二に、粗い空域サンプリング、細かい方向のサンプリング、および強力な局所光学正規化の条件下で、歩行者が一般に直立姿勢を維持できる限り、歩行者は微妙な体の動きをすることができます。これは、検出効果に影響を与えることなく無視されます。 。したがって、 HOG機能は画像内の人間の検出に特に適しています。
2.HOG特徴抽出アルゴリズムの実装プロセス:
おおよそのプロセス:
HOG特徴抽出方法は、画像(検出するターゲットまたはスキャンウィンドウ)を取得することです。
1 )グレースケール(画像をx、y、z (グレースケール)の3次元画像として参照)。
2 )ガンマ補正法を使用して、入力画像の色空間を標準化します(正規化)。目的は、画像のコントラストを調整し、画像の局所的な影や照明の変化の影響を減らすと同時に、抑制できることです。ノイズの干渉;
3 )画像の各ピクセルの勾配(サイズと方向を含む)を計算します。主に輪郭情報をキャプチャし、照明の干渉をさらに弱めます。
4 )画像を小さなセルに分割します(例:6 * 6ピクセル/セル);
5 )各セルの勾配ヒストグラム(異なる勾配の数)を数えて、各セルの記述子を形成します。
6 )いくつかのセルはそれぞれブロックに形成され(たとえば、3 * 3セル/ブロック)、ブロック内のすべてのセルの特徴記述子が直列に接続されて、ブロックのHOG特徴記述子が取得されます。
7 )画像画像内のすべてのブロックのHOG特徴記述子を連結して、画像(検出するターゲット)のHOG特徴記述子を取得します。これは、分類に使用できる最後の特徴ベクトルです。
3.プログラムの一部
clc;
clear;
close all;
warning off;
addpath 'func\'
addpath 'func\hog_catch\'
load test_image.mat
load alg1.mat
if isempty(X4) == 0 & isempty(X5) == 1 & isempty(X6) == 1;
ftest = func_feature1(X4);
yout = round(net1(ftest'));
figure;
subplot(121);
imshow(X3);
subplot(122);
imshow(X4);
if yout == 1
title('识别结果为:非机动车行驶');
end
if yout == 2
title('减速让车');
end
if yout == 3
title('禁止鸣笛');
end
if yout == 4
title('禁止左转');
end
if yout == 5
title('慢');
end
if yout == 6
title('人行通道');
end
if yout == 7
title('限制速度');
end
if yout == 8
title('右转');
end
end
if isempty(X4) == 0 & isempty(X5) == 0 & isempty(X6) == 1;
ftest = func_feature1(X4);
yout1 = round(net1(ftest'));
ftest = func_feature1(X5);
yout2 = round(net1(ftest'));
figure;
subplot(131);
imshow(X3);
subplot(132);
imshow(X4);
if yout1 == 1
title('识别结果为:非机动车行驶');
end
if yout1 == 2
title('减速让车');
end
if yout1 == 3
title('禁止鸣笛');
end
if yout1 == 4
title('禁止左转');
end
if yout1 == 5
title('慢');
end
if yout1 == 6
title('人行通道');
end
if yout1 == 7
title('限制速度');
end
if yout1 == 8
title('右转');
end
subplot(133);
imshow(X5);
if yout2 == 1
title('识别结果为:非机动车行驶');
end
if yout2 == 2
title('减速让车');
end
if yout2 == 3
title('禁止鸣笛');
end
if yout2 == 4
title('禁止左转');
end
if yout2 == 5
title('慢');
end
if yout2 == 6
title('人行通道');
end
if yout2 == 7
title('限制速度');
end
if yout2 == 8
title('右转');
end
end
4.シミュレーションテスト効果
シミュレーション結果を次の図に示します。
次に、分割後、次の結果が得られます。
A10-37
5.完全なソースコードを入手する方法
方法1:ブロガーに連絡するためのWechatまたはQQ
方法2:サブスクリプション、チュートリアルのケースコードとこのブログの2つの完全なソースコードへの無料アクセス