近年開発が盛んに行われている自動車の自動運転において, 車の周囲の状況を把握することは非常に重要なことである. その中でも道路標識の把握は, 自動車が安全走行をするために必要なことの一つである. 道路標識を把握する方法として, 機械学習を用いた手法が提案されている. しかし, 機械学習は様々な物体の特徴を学習する必要があり, その学習には膨大なデータと計算コストを要する. そこで複雑な処理を用いずに, 道路標識を検出することが求められる.
道路標識はそれぞれが持つ意味によって色と形が規定されている. このことから, 色情報と形状情報を用いた検出が有効と考えられる. 様々な道路標識の中で赤色の標識は設置数が多く, また, 一時停止や進入禁止など, 様々な規制を表す標識であることからその重要度は高い. そのため今回は赤色円形の標識と一時停止の標識を検出対象とした. 本研究では, 対象標識の形状が赤色の円形と三角形であることに注目し, 色情報と形状情報を用いた基本的な画像処理での検出を行う.
提案手法では, 入力画像が与えられるとまずその画像の表色系をHSV表色系に変換する. そして, 色情報を用いて対象標識が存在する可能性が高い赤色の領域を候補領域として抽出する. 次に候補領域のみが残された画像から, 対象標識に近い形と大きさの領域を, ノイズ除去と形状認識の処理で抽出する. 最後にテンプレートマッチングを行い, 対象標識のテンプレートに似た領域を標識として検出する.
本研究は実環境下での使用を想定しているため, 天気や日光などによる環境光の影響を考慮する必要がある. そのため, まず入力画像の表色系をRGB表色系からHSV表色系に変換する. 図1は入力画像の例である. 表色系を変換後, 表1に示した閾値に合致する画素を赤色と定義し, 入力画像から赤色領域を抽出する. この閾値は色相と彩度のみを用い, 明度を考慮しないことである程度の照明変化に対応している. 図1から赤色領域を抽出した画像を図2に示す. さらに, 抽出した領域から赤い部分を白, それ以外の部分を黒に二値化した画像が図3である.
色相 | H <= 5, 135 <= H |
彩度 | S >= 90 |
明度 | 今回は無視 |
ラベリングとは主に二値化画像から白の画素が連続している領域を分類する手法である. 分類後, 各領域の幅と高さの値を取得する. 図4は, 図3の二値化画像にラベリング処理をしてその結果を表示した画像である. ここで分類されたそれぞれの領域が標識検出の候補領域となる.
ラベリング処理で分類した領域全てを候補領域とすると, 標識とは無関係なノイズを検出する可能性が出てくる. そこでノイズとなる領域の大きさをある程度定義し, その条件に該当する領域を画像から除去する処理を行った. 表2にノイズと見なす領域の条件を示す. ノイズ除去の例として, 図5にノイズ除去前の二値化画像を, また, 図6にノイズ除去後の二値化画像を示す. ここで図5に見られる小さな白い領域が, 図6では消えていることが確認できる.
入力画像の50分の1以下の大きさの領域 |
縦横の大きさが100pixelを超える領域 |
ノイズ除去後, 次の処理であるテンプレートマッチングの試行回数削減と検出精度向上のために, 残った候補領域の中から対象標識に近い形の領域を抽出する. 形状認識の流れとして, まず各候補領域にクロージング処理を行う. 次に各候補領域の輪郭情報を抽出し, その情報を基に各候補領域の形状を円形, 三角形, その他の3つに分類する. 分類後, 円形または三角形と認識された領域は候補領域として残す. その他の形と認識された領域には対象標識が存在しないと考え, その領域を候補領域から除外する.
候補領域は赤色の抽出具合によって領域内に穴が開いていたり切断されていたりする. そのまま輪郭抽出を行うと, 候補領域から充分に輪郭情報を得られない可能性がある. そこで輪郭抽出を行う前にクロージング処理を行った. クロージング処理とは, 二値化された領域に対して数回の膨張処理を行った後, 膨張処理と同じ回数の収縮処理を行う処理である. この処理を行うことで, 図形の穴埋めや輪郭の結合がある程度可能になる. 本研究では膨張処理と収縮処理を各2回行った. クロージング処理の例として, 図7にクロージング処理前の候補領域を, また, 図8にクロージング処理後の候補領域を示す. ここで, 図7に見られる欠けた輪郭部分が, 図8では補間されていることが確認できる.