記録されたビデオ内の移動オブジェクトを検出して追跡しようとするオブジェクト トラッカーを作成しました。検出率を最大化するために、私のアルゴリズムは一連の検出および追跡アルゴリズム (カスケード、フォアグラウンド、および粒子トラッカー) を使用しています。各追跡アルゴリズムは、追跡point of interest
しようとしているオブジェクトの一部である可能性があるものを返します。(この例を簡単にするために) オブジェクトが四角形で、3 つの追跡アルゴリズムが点1
とを返した2
とし3
ます。
X
この 3 点の関係/距離に基づいて、追跡対象の重心 (上図の青色) を計算することができます。したがって、各フレームについて、重心の適切な推定値を得ることができるかもしれません。ただし、オブジェクトがあるフレームから次のフレームに移動する場合があります。
この例では、元のオブジェクトを回転させただけです。1'
私のアルゴリズムは、 、 、2'
の3 つの新しい関心点を与えてくれます3'
。これら 3 つの新しい点に基づいて重心を再度計算することもできますが、前のフレームから取得した重要な情報を破棄することになります: based on points 、1
これらの点の関係については既に知っているので、、、およびからの情報を組み合わせることで、重心をより正確に推定できるはずです。2
3
1
2
3
1'
2'
3'
さらに、次のフレームで 4 番目のデータ ポイントが生成される場合があります。
これは私がやりたいことです(しかし、方法がわかりません):
さまざまな追跡アルゴリズムから返された個々のポイント (およびそれらの相互関係) に基づいてlocalization map
、追跡対象のオブジェクトを構築したいと考えています。直感的に、A) フレーム全体で個々のポイントを識別する識別関数と、B) 追跡されたポイント (およびそれらの間の関係/距離) がフレーム間でどの程度類似しているかを判断するコスト関数を考え出す必要があると感じます。しかし、これを実装する方法について頭を悩ませることはできません。あるいは、map
ポイントに基づく何らかのビルドアップが機能する可能性があります。しかし、繰り返しますが、これにアプローチする方法がわかりません。アドバイス(およびサンプルコード)は大歓迎です!
EDIT1 単純な粒子フィルターもおそらく機能する可能性がありますが、コスト関数を定義する方法がわかりません。特定の色を追跡するための粒子フィルターは、簡単にプログラムできます。各ピクセルについて、ターゲットの色とピクセルの色の差を計算します。しかし、追跡されたポイント間の関係を推定するにはどうすればよいでしょうか?
EDIT2直感的に、カルマンフィルターも予測ステップに役立つと思います。このPDFのスライド 24 ~ 32 を参照してください。それとも私は誤解されていますか?