太田研 公開用Wiki

色抽出とテンプレートマッチングを用いた複数種類の道路標識の自動検出

序論

近年開発が盛んに行われている自動運転車の安全な走行を実現するためには, 自動運転車が交通規制を認識する必要があり, 道路標識の自動検出・認識技術は必須である. 自動運転車が標識を検出できるようにするには, 標識からビーコンを出す等, 交通インフラ側を整備する方法が考えられるが, 既存の社会基盤に大きな変更を加える方法では、膨大な資金と時間が必要である. よって今ある道路標識を活用できる, 人間の目と同様に画像による道路標識の検出が有効であると考えた.

画像から道路標識を検出する手法として、これまた近年盛んに研究されている機械学習がある. しかし, 機械学習は学習に多量のデータや計算資源を要し、あらゆる場面でこれを用いるのは得策ではない. 対して本研究では, とりわけ重要度が高い赤色を用いた標識を検出対象とし, シンプルなアルゴリズムでも充分高精度に道路標識を検出できることを示す.

また, 実際の公道に於いては, 複数種類の標識を同時に検出, 認識しなければならない場面は多いと言える. よって速度標識など赤色円形の標識と, 一時停止標識を同時に複数検出できる実装を試みる.

手法

道路標識はJIS規格により定められた特徴的な配色を用いている. そこで自動運転車の前方の画像から赤色領域を抽出し, その形状を検査することで対象の道路標識を検出する. アルゴリズムは大まかに図2.1の様に構成されている. 以下に詳細を説明する.

algorithm.png
図2.1: 標識検出のフローチャート

赤色領域抽出

先ず前処理として入力画像の表色系をHSV表色系に変換しておく. 図2.2は入力画像の例である. その後入力画像から赤色の領域のみを抽出し, 図2.3の様な画像を得る. 更に抽出した領域を二値化した画像が図2.4である. 赤色は表2.1の如くHSV表色系に基づく閾値により定義しておく. ここで色相と彩度のみを用い, 明度を見ないことである程度の照明変化に対応している.

bgr_img.png
図2.2: 入力画像の例
 
red_img.png
図2.3: 赤色領域を抽出した画像
 
bin_img.png
図2.4: 抽出した領域を二値化した画像
 
表2.1: 赤色領域抽出処理で用いた閾値
色相H <= 10°, 270° <= H
彩度S >= 13.7%

ラベリング

ラベリングは画素の連続性を検査し, 連続で独立な領域を判定する処理である. ここで各領域の座標, 幅, 高さの値を得る. 得た値を表示した画像が図2.5である. この処理は後半2段の前処理となる.

label_param.png
図2.5: 各領域の座標と大きさ

雑音除去

先に求めた連続領域のうち, 画像の高さに対して, 高さもしくは幅が2.8%未満の小さな領域を, ノイズと見做して削除する. 例えば図2.6では左に木の陰が写っているが, 図2.7では正しく削除されている.

#ref(): File not found: "noise_img.png" at page "色抽出とテンプレートマッチングを用いた複数種類の道路標識の自動検出"

図2.6: 雑音除去前の画像
denoised_img.png
図2.7: 雑音除去後の画像

テンプレートマッチング

テンプレートマッチングは対象画像の中で注目領域を走査させながら, 注目領域とテンプレートとの類似度を計算する処理である. これにより赤色領域の形状を検査する.

テンプレートは改めてラベリング処理を行って得た, 標識の候補となる領域の幅, 高さに合わせ, 拡大・縮小する. このとき, テンプレートを複数用いて, 複数種類の道路標識の検出を実現する.

実験では赤色円形の標識用, 一時停止標識用の2つを用いた. それぞれに対して表2.2の閾値を与え, 類似度がこれ以上のとき, 検出対象の標識であると判定する. なお, 実験での類似度計算にはZNCCを用いたが, SAD等他の計算法\cite{template_matching}を閾値調整の上で用いることもできるだろう.

denoised_img.png denoised_img.png

図2.8: 赤色円形の標識用 図2.9: 一時停止標識用
表2.2: テンプレートマッチングの閾値
赤色円形の標識0.5
一時停止標識0.75

実験と評価

実験方法

2019年12月15日〜20日の日中, 群馬県内でドライブレコーダーにより撮影された, 自動車前方の映像から画像を生成. 検出対象の標識が1枚以上写った画像225枚を選び, 画像セットを作成した. この画像セットに対し, 上記のアルゴリズムを実装したプログラムを実行した. なお, 実装にはIntel社が開発を行っているライブラリ, OpenCV\cite{opencv}を用いた.

実験結果

結果のうち成功した例と失敗した例を以下に2つずつ示す. なお, 速度標識や駐車禁止の標識など, 赤色円形の標識を検出した場合は青色の正方形で表し, また, 一時停止の標識の場合は赤色の正方形で表している.

成功例

失敗例

評価

考察

失敗例1について

失敗例2について

結論

参考文献


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS