« gmailをエディタにする | メイン | Flex3SDKがどこにあるか迷った »

2008年5 月16日 (金)

画像認識システム学

1. 二値化
 画像の前処理などに使われる。
 0-Ngの輝度で示される画像を、与えた閾値NBで分割し、
 0-NBまでの画素は0、NB-Ngまでの画素はNgに変換する。
 ヒストグラムの谷の間を見つけるモード法と、
 累積分布が一定の割合になるところで分割するPタイル法などがある。

2. ラベリング法
 二値化画像における同じ輝度を持つ画素を連結して、まとまった一つの領域として区別する。
 連結された領域を連結成分という。連結成分にそれぞれラベル(一般に1,2,3...)をつける。
 ラベリングにより画像内に点在する領域ををかたまりとしてそれぞれ扱うことができる。

 出し方は、まず二値化したものからラベリングする輝度を決定する。
 原点から順に探し、その輝度をもった最初の画素を見つける。
 順に同一輝度の画素を連結していく。
 連結できなくなったら、また次の輝度を持った画素を探し連結する。

3. フェレ径
 ラベリング後に各領域の大きさを測定するために使う。
 x軸の最大の長さから最小の長さを引き、1を足した数が水平方向のフェレ径。
 y軸も同様に行う。

4. エッジ処理
 輝度差の大きいところを、画像の特徴として強調する。
 x,y軸で輝度差の変化が閾値を超えたところをエッジとする。
 その他に周辺8方向の輝度差を計算する方法がある。

5. フェレ径による多角形頂点の認識
 縦と横のフェレ径を組み合わせて対象物を囲んだ矩形をつくり、
 フェレ形状の点を頂点として認識する。
 おそらくxyの最大最小値を見つけるのと同じだと思う。
 問題として、へこんだ頂点がある場合(180°以上)頂点を発見できない。

6. 重心からの多角形頂点の認識
 ラベリングした領域から重心を見つける。
 フェレ径上の点を始点として、輪郭線から重心の距離を測定していく。
 距離の極大値・極小値となる点が頂点である。

7. ハフ変換を用いた直線の認識
 ハフ変換を用いると、点線など完全ではない直線も認識することができる。
 入力画像内の全ての画素に対して、輝度値が閾値以上になる場合、
 その画素の座標(x0, y0)を以下の式で、変数(u, v)上の曲線に変換する。

 v = x0 ・cos(u) + y0 ・sin(u)

 任意の点で曲線をつくっていき、一番多い交点から、u, vを求め、直線の式をつくる。
 交点が多いほど精度が高い。

トラックバック

この記事のトラックバックURL:
http://www.typepad.com/services/trackback/6a01287585694c970c01287585699b970c

画像認識システム学を参照しているブログ:

コメント

この記事へのコメントは終了しました。