3

イメージの内容を検出したい場合は、実行する必要があるのは イメージがシャツかパンツかを調べることです。オブジェクトイメージ内のオブジェクトを識別するための検出

IMG 1 enter image description here

IMG 2 enter image description here

iが与えられた画像がTシャツであることを私が結果を必要な形状を比較することに基づいて、次に をTシャツの画像を提供する場合

私が試したのはHarrカスケーディングですが、正しい出力が得られませんでした。このサンプルサイズrequriedが大きすぎます

答えて

1

対象のオブジェクトのみを含むイメージを分離したいと仮定した場合、イメージがSVMまたは他の分類子で分類されたフィーチャのセットとして提示されるBOW(ビジュアルワードのバッグ)を使用できます。

フィーチャディテクタ+ディスクリプタ+クラシファイア(SURF + SVMなど)を使用することもできます。 現在、より堅牢で高速な機能検出器がありますが...

トレーニングプロセスを回避するために、テンプレートマッチング(アウトラインごと)を使用することもできます。 は、そのようなアルゴリズムは上に設けられている。 Fast template matching - Codeproject

それはスライディングウィンドウ検出をemloys +それはトレードオフ性能とロバスト性との間のある段階を含んでいるようハールカスケードは、同様に他のコンテンツを含む画像内のオブジェクトの検出のために使用されています - 彼らは速いですが、いくつかのオブジェクトが見逃される可能性があります。なぜなら、各ステージにはミス分類誤差が蓄積しやすいからです。

+1

こんにちはDajuricをsovleするのに役立ちます :テンプレートマッチングはここで行うのでしょうか? bezそれは同じ画像でのみ動作しますか?ここで確認することを意味しますhttp://docs.opencv.org/2.4/doc/tutorials/imgproc/histograms/template_matching/template_matching.html – usernan

+1

SURF + SVM – usernan

+1

複数のインスタンステンプレートを作成できる別のタイプのテンプレートマッチングです。記事(リンク)をご覧ください。 – dajuric

1

イメージにオブジェクトが既にセグメント化されている場合は、オブジェクトの対地ピクセルを示すバイナリイメージを作成することができます。

その後、オブジェクトが一般的に回転またはねじれていないと仮定して、単純な機能を使用して分類を行うことができます。例えば、上記の場合、2回のフォアグラウンドピクセルがあるスキャンラインの割合をカウントするだけです。シャツの場合、これは低い値でなければならず、ズボンの場合は高くなければなりません。

明らかに、与えられた画像例が実際に解決しようとしている問題を代表していない場合、これはうまくいかないでしょう。

EDIT:いくつかの例MATLABコード:

function ratio=TwoRunFeature(I) 
    g=rgb2gray(I); 
    b=imdilate(g<255,ones(5)); 
    d=abs(imfilter(b,[-1 1])); 
    runs=sum(d,2); 
    ratio=sum(runs==2)/sum(runs==1); 
end 

function TestImage(name) 
    I=imread(name); 
    fprintf('%s: %f\n',name,TwoRunFeature(I)); 
end 

TestImage('pants.jpg'); 
TestImage('shirt.jpg'); 

プリント:

pants.jpg: 1.947977 
shirt.jpg: 0.068627 

パンツは、低高の数字やシャツを提供します。あなたが欲しいと思っている場所にちょうどしきい値があり、あなたは完了です

+1

こんにちはフォトンは、私にrefのリンクを提供することができます – usernan

+1

それは本当に簡単です。表示するいくつかのMATLABコードを追加します。 – Photon

+1

ありがとう光子が問題ですが、私は半分のパンツ対パンツを検出したい場合、これは今この時点で失敗します – usernan

1

私はこれらの2つのイメージは、あなたが持っているデータベースのものであると仮定します。 私の経験から、このような画像にフィーチャー(ローカル記述子)を適用すると、セグメンテーションや背景をユニカラーに設定するため、一種の人工的なフィーチャーが作成されます。 2つ目の重要な点は、これらのイメージが異なる色やテクスチャを持ち、検出されたフィーチャのほとんどがオブジェクト内の領域から来ることです。これらの地域は重要ではなく、分類とは関係がありません。 しかし、セグメント化されたイメージを持つことは、問題をはるかに簡単にするはずです。 あなたのケースに最適な最も簡単な解決策: 1.画像をグレースケールに変換してから、しきい値でバイナリに変換します。 2.画像を逆転させるので、背景は黒で、オブジェクトは白です。 3.穴を埋める:オブジェクト内の画像の一部が白い場合、穴が発生します。 4.境界のみを検出します。 I = dilated IBinary - IBinary 5.境界線のサンプル: サイズが4x4の各ウィンドウ内で0以外のピクセルを1つだけ選択します。 6.次のステップは、Shapeコンテキスト記述子:を使用して画像を記述することです。 7.ビジュアルワードまたはスパースコーディングのバッグを使用して、イメージを再表現します。 8.豊富な表現を得るための最大プール。 9- SVM

+0

こんにちはBH85私は任意のリファレンスリンクを提供することができます – usernan

+0

http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.27.8567 – BH85

関連する問題