画像認識の流れ

Defartにおいて、AIBOが画像を認識するまでの流れについて説明します。

原画像

説明のために、AIBOのカメラがとらえた画像が以下のようなものだったとします。
layerm.png
この画像では、画面の中央付近にオレンジ色のボールが映っています。このボールを「AIBOがボールとして認識する」までについて説明します。

一次データ(CDT画像)

Defartでは、上記のようにカメラでとらえたカラー画像をそのまま使っているのではありません。
AIBOに搭載された色検出エンジンにより生成されたCDT画像を使って物体の認識を行います。
色検出エンジンは、カラー画像から特定の色の部分だけを抜き出した2値画像を作ります。

色検出エンジンに与えるパラメータによって、どの色を抜き出すのかを決めることができます。

さらに細かいノイズを除去するフィルターを通し、以下のような二値画像を得ます。
layerc.png
このCDT画像が一次データであり、認識のベースとなります。

二次データ(色の集合体)

複数の色から構成される物体もあるため、一次データから直接物体として認識することはしません。そこで、物体認識の前に、特定の色について抜き出したCDT画像から、その色の集まっている部分を見つけ出します。
level2.png
色の集まっている部分は、矩形(四角形)の領域とみなし、画面上での中心座標値と縦横ピクセル数により表します。
これを二次データとして、物体としての認識を行います。

三次データ(物体情報)

まず、二次データの領域を色ごとに調べて、ボール(オレンジ)やゴール(スカイブルー、黄色)、ビーコン(2色の組み合わせ)を判別します。
続いて、領域の座標とピクセル数、さらにAIBOの首の角度を使って物体の位置情報を求めていきます。
領域の中心座標と、AIBOで撮影した画像のピクセル数、さらにAIBOのカメラの視野角によって、領域の中心への角度を求めることができます。
これにAIBOの首の角度を加えることで、AIBOの正面を基準とした、物体の相対角度を求めることができます。
また、目的とする物体(例えばボール)の本当の大きさと、領域のピクセル数によって、その物体までの距離を求めることができます。
このようにして、物体の位置に関する情報を求めていきます。
ここで得られた三次データは、Defart/AIBOの頭脳オブジェクトに送られ、プログラム内の視覚条件で使われるデータとなります。