1

無地の背景で、さまざまな色のオブジェクトを追跡するための最良の方法を見つけようとしています。

私は読んだことがありますが、色を区別する最良の方法は、最初に画像を HSV 空間に変換し、次に色相に基づいてしきい値を設定することです。しかし、私は 1 つのオブジェクトだけを追跡しているのではなく、さらに、どの値でしきい値を設定するのかわからないため、これらのオブジェクトの色を見つけるにはどの方法が最適でしょうか? 背景がピクセルの大部分を占めるためピークを無視し、残りのピークは異なる色を表すヒストグラム法は機能しますか?

さまざまな色を見つけたら、画像をしきい値処理して、オブジェクトの輪郭を描く輪郭を見つけます。

私が提案する方法よりもブロブを追跡するためのより良い方法はありますか?

cvBlob などのライブラリも調べましたが、これらをインストールするのに苦労したので、純粋な OpenCV 実装に固執したいと思います。

ちなみに、私は C++ OpenCV ライブラリを使用しています。

4

1 に答える 1

0

自問する必要があるいくつかの質問を次に示します。あなたの質問は、かなり単純な追跡アルゴリズムが必要であることを示しています。どのような方法を調べましたか? opencv ライブラリは、始めるのに最適な場所です。チュートリアル (つまり、http://opencv-srf.blogspot.ro/2010/09/object-detection-using-color-seperation.html )を試してみましたか?アルゴリズム。

  • オクルージョンを処理する必要がありますか (あるオブジェクトが別のオブジェクトの前に移動するとき?
  • あなたのバックグラウンドはどれくらい単純ですか?それが変わらなければ、物事ははるかに簡単になります。
  • オブジェクトが画像フレームの中央に自然に現れるか、またはオブジェクトが横から来る必要がありますか
  • フレーム内を移動中にオブジェクトの色が変化することはありますか?
  • これは 2D または 3D トラッキングの問題ですか?

一般に、追跡の問題は通常、上記の回答と他の多くの質問に基づいて 2 つの部分に分けられます。

  1. オブジェクト検出 (現在のフレーム)
  2. オブジェクトの関連付け (前のフレームから)

ここで最も単純な仮定を行うのは、疑似コードの実装です。これを行うには他にも多くの方法があることに注意してください。高密度特徴追跡、疎特徴、ヒストグラムベース、モーション

#object detection (relatively easy part)
Read b = Background Image (this image needs to be read before any objects are in the scene - it can be thought of as initialization stage)
Read c = Current Image
diff = c - b > Threshold
#everywhere there is a difference indicates a part of an object
#now abstract to higher level objects based on connected components.  During occlusions you'll need to differentiate based on color, and maybe even motion if two objects are similar color
#Object association (relatively harder part)
For every object check if this object is already in your list (you'll need a distance metric here to check how similar this object is to another - based on histogram difference, feature points, motion etc...)
If in list, then add this information to the object's track
If in list, you want to consider if you need to update the object model based on the new information.  Did the object change shape/color/motion?
If not in list add it
于 2013-11-12T14:00:09.253 に答える