人気の無いこのシリーズですが、しばらく続きます。

昨日の「FLARToolKit」を利用するのはあまりにもバカチョン過ぎて面白みがないので、とりあえず自前プログラムで色々と遊んでいます。

画像認識の第一歩としては、複雑な画像を貧弱非力なパソコンでも処理できるようにシンプル化する必要があります。つまり二値化処理で一般的には白黒の画像に変換します。

イメージ 1

二値化は「threshold」メソッドを使えば簡単に出来ますが、ある意味この処理がその後の認識率に大きく左右するところでもあります。どういう環境で何を認識したいかによりって強調するターゲットが違ってきます。

ノイズ処理やターゲットのカラーなど、単にお絵かき処理として白黒になれば良いというものでは無いのです。
認識処理の前処理として識別二値化をすると考えるべきかと思います。
といことで今後のこともあるので「threshold」は使っていません。

二値化処理されたデータを使って次にラベリングという処理を行います。
これは二値化された領域の区分け処理のようなものです。
これを行うことで画像を各部品単位に認識できるようになります。

イメージ 2

しかし、これをまともに処理をするととんでもなく時間がかかります。
ここは昔のBasic時代のテクニックで「floodFill」を使って塗りつぶし作戦です。

二値化画像を走査線でサーチして、白黒判定して白があればラベリングのカウンター値で塗りつぶしてしまうという方法です。カウンター値はカラーではありませんが、最終的にはBitmapDataを単純なメモリー配列として利用するだけなので問題は無いわけです。
この方法だとラベリング処理はかなり高速になります。

まだうまく安定しないのですが・・・

今日はここまで。