SUGARSPOT

Androidアプリ、WEBサービス開発の SUGARSPOT  |Androidブログ「Androidのことなんだけど」もやってます

2011年6月27日月曜日

FeceDetectorで目の位置を検出する

AndroidのFeceDetectorは便利だけど、万全ではない
なぜならば、顔の傾きが取得できないからだ

取得できるのは、両目の距離、そして両目の中心点の2つだ
この情報から、顔の位置を特定する事はできるが、目の位置を見つけるのは非常に難しい
なぜならば、顔が斜めに傾いている時目の上下位置を判別することができないからだ

では、どうするか
これはもう、自力でやるしかない
私は、次のように処理してみた(もっと簡単な方法があるかもしれないので色々と調べてみてください)

1)FeceDetectorから取得できる情報から、だいたいの目の位置を計算
2)だいたいの目の位置の画像を2値化して、さらにノイズを除去する
3)2直化した中から一番黒の領域が多いと所を瞳として判断する

こんな感じで処理してみた。
精度はなかなか高く、しっかりと目だけを検出できる
ノイズを除去する際に閾値によっては検出率が変わるので、閾値を調整して見ると良いです

0 件のコメント:

コメントを投稿