これらに似た蚊の画像があり、画像内の各蚊の頭の周りを自動的に一周したいと思います。それらは明らかに異なる方向にあり、異なる画像にランダムな数があります。多少の誤差は大丈夫です。これを行うためのアルゴリズムのアイデアはありますか?
3 に答える
この問題は顔検出の問題に似ているため、最初に単純なアプローチを試して、必要に応じて改良することができます。
まず、トレーニング セットを再作成する必要があります。このために、蚊の頭とそうでないものの例を含む小さな画像を抽出します。
次に、それらの画像を使用して分類アルゴリズムをトレーニングします。データが 1 つのクラスに偏ると、アルゴリズムのパフォーマンスに影響を与えるため、バランスの取れたトレーニング セットを用意するように注意してください。画像は 2D であり、アルゴリズムは通常 1D 配列を入力として受け取るため、画像もその形式に配置する必要があります (例: http://en.wikipedia.org/wiki/Row-major_order )。
私は通常、サポート ベクター マシンを使用しますが、ロジスティック回帰などの他のアルゴリズムでもうまくいく可能性があります。サポート ベクター マシンを使用する場合は、libsvm ( http://www.csie.ntu.edu.tw/~cjlin/libsvm/ ) を確認することを強くお勧めします。これは、複数のプログラミング言語にバインドされた非常に成熟したライブラリだからです。また、初心者向けの非常にわかりやすいガイドもあります ( http://www.csie.ntu.edu.tw/~cjlin/papers/guide/guide.pdf )。
十分なデータがあれば、向きへの耐性を回避できるはずです。十分なデータがない場合は、いくつかのサンプルをローテーションしてトレーニング行をさらに作成できるため、より代表的なトレーニング セットが得られます。
画像が与えられたときにできることの予測については、各セルがトレーニングセットで使用したものと同じ次元を持つグリッドを使用して画像をカットします。次に、この各画像を分類器に渡し、分類器が正の出力を与えた四角をマークします。本当に円が必要な場合は、指定された正方形の中心を取り、半径は正方形の辺のサイズの半分になります (明白なことを言って申し訳ありません)。
したがって、これを行った後、サイズの問題が発生する可能性があります (一部の蚊は他の蚊よりもカメラに近いように見える場合があります)。これは、アルゴリズムがスケーリングに耐えられるようにトレーニングされていないためです。さらに、すべての蚊が同じスケールであっても、グリッドに完全に収まらないという理由だけで、一部の蚊を見逃す可能性があります。これに対処するには、この手順 (グリッド カットと予測) を繰り返して、指定された画像をさまざまなサイズに再スケーリングする必要があります。サイズはいくつ?ここでは、実験を通じてそれを決定する必要があります。
このアプローチは、使用している「ウィンドウ」のサイズに敏感です。これも試してみることをお勧めします。
あなたが提供した写真から、これは非常に困難な画像認識問題のように思われます.許容できる認識率に近づくとは思えません.
より簡単なアプローチをお勧めします。
まず、画像を制御できる場合は、写真を撮る前に蚊を分離し、白いマークのない地下を使用します。おそらく、下から照らされたものでも構いません。これにより、蚊の分離がはるかに簡単になります。
次に、画像のしきい値を設定します。たとえば、ここでは、赤のチャネルを取り、青のチャネルを差し引いて *5、80 のしきい値を適用して簡単に試してみました。
形態学的拡張と浸食を使用して、小さな脚の構造を取り除きます。
連結成分ラベリングにより、適切なサイズのブロブを蚊として識別します。ブロブが 2 匹の蚊に十分な大きさである場合は、それを切り取り、さらに膨張/浸食を適用します。
このような単一のブロブができたら
主成分分析を使用して体の方向を見つけることができます。頭部は、体の中で断面が最も厚い部分でなければなりません。
役に立つかもしれないいくつかの研究があります: