Home > ソフトウエア | 技術 | 画像処理 > 画像から対象を検出して数える検討

画像から対象を検出して数える検討

上司「同じ物が複数写っている画像に対して,ユーザがその中の1個を『これ』って指定したら残りのやつを全部見つけるソフトの検討しろ」
私「条件が自由すぎて難し…
上司「いいからやれ.これ画像例な.」

という話になっており,泣きそうです.
例として渡されたが画像はコレ↓
Mame
どうやら目的は,こういった画像上で対称物体の個数をカウントしたいという感じのようです.
(撮影対象は南瓜の種の表面に謎の粉が付着したMADE IN CHINAな菓子(?)ですが,面倒なので本稿ではこれを単に「豆」と呼称することにします.)

与えられる情報は正例1個だけなので機械学習みたいな方法はとれません,というかそもそも特定の対象(例えば「人」とか「車」とか)を検出するという話ではないために,対象物に対する前提知識が全く使えません.
指定された領域をテンプレートとしたテンプレートマッチングくらいしか方法が思い浮かばないので,そういった方向で検討開始.

【検討内容】
画像上を走査し,各位置でのZernikeモーメント特徴と正解領域の同特徴とを比較してそれっぽいところを見つける.

なんでZernikeモーメント?→特徴量が回転不変とのことなので,豆がいろんな方向を向いて写っていることに対処してくれるかな?ということで採用.

豆のサイズにはいくらか変動があるので,走査窓のスケールを変えたりする必要がありそうですが,その辺のことは後回しにして,まずは単一のスケールだけで走査してみました.
特徴量比較結果がどの程度であれば「それっぽい」のか?という判断基準が必要ですが,適当に結果値を閾値で切るのではあまりうまくいかなかったので,正解画像のモーメントを元にしてそこから「明らかに不正解っぽい」モーメントを複数作って(=でっちあげて),「それらよりも正解の方に近いこと」という条件で判定してみました.
また,比較に際しては,n=m=0の要素は用いないことにしました.
太い赤丸が指定された正解領域で,細いのが検出結果です.
Mame1Sel
この例では,半径方向の次数(? 正式には何と呼ぶのか不明)nは n=0~6まで(かつ半径方向の次数(?)m≧0 を,n+m≦6 に制限)のZernike多項式を用いて特徴ベクトルを計算しています.
赤丸が豆の中央をきちんと捉えていないものが多く,「見つけた」と言っていいのかどうか判断しかねる結果.
(複数の走査スケールで処理すれば改善するだろうか?)
あと,Zernikeモーメントからの特徴量は画像輝度を反転しても変わらないようで,最初何も考えないでやったら「中央が背景で周辺部が豆」な個所が大量に出てきてしまい途方にくれましたが,そのような個所についてはn=2,m=0のモーメントの符号で判断して除外することにしました.

ちなみに,正解をもう一つ指定して,2回の処理の結果を統合してみると↓のようになります.
2回目の指定領域が緑太丸で,検出結果が緑細丸です.
ただし,2回の処理結果の中で位置が重複したものについては,より良さそうな方を残すことにし,除外されたものは青で描画してあります.
Meme2Sel

正解画像のモーメントから画像を再構成してみるとこんな感じ↓(画像は2倍拡大してある.1回目のが左,2回目のが右)
MameRecon
かろうじて正円ではなくて楕円な雰囲気が感じ取れますが,豆なのか何なのかわからない様相となっています.
より次数の高い項までを用いればそれだけ高周波成分の情報が増えるので豆な形に近づくのですが,やりすぎると今度は豆のテクスチャ(模様)の差が大きく影響するようになってくるので,増やせばいいというわけでもなさそうで,この辺の決め方をどうするのかについては難しい問題に思います.

他の画像(ネットで拾ってきた猫画像)での例
Nekos
やはりなんとも言い難い結果です.

あと,どうでもいい話ですが,この豆画像,グレースケールで見るとMy Favorite菓子である みながわ製菓のとうがらしの種 にそっくり.
(売っている店が近場にほとんど無くて困っています! オンラインショップで買えるけど,価格に占める送料の割合が大きすぎるのがどうにも…)

by nakiusagi3

Home > ソフトウエア | 技術 | 画像処理 > 画像から対象を検出して数える検討

Search
Feeds
Authorized
奨学金支援制度
Meta

Return to page top