4

こんにちは私はしばらくの間これに取り組んできましたが、まだ良い解決策がありません。

私はフレームごとにビデオを読んでおり、背景減算を使用して'動きのある領域を特定し、cvFindContours()を使用して移動するオブジェクトの長方形の境界を取得しています。

プログラムが単純に保たれていると仮定すると、人間は2人しかいません。

これらのオブジェクトは、重なり合うことができる方法で移動し、回転し、特定の間隔で離れます。

この人間x2に正しくラベルを付けるにはどうすればよいですか。

cvFindContourは、ランダムな方法で境界を返すことができます。Frame1、Frame2、Frame3....FrameNの場合

最初に、長方形の境界重心を比較して、人間に正しくラベルを付けることができます。人間が重なり合って離れると、このアプローチは失敗します。

元のオブジェクトのピクセルカラーを追跡しようとしました(ただし、人間はかなり似ており、特定の領域は手、脚、髪の毛などの似たような色です)。したがって、十分ではありません。

私は次のような画像統計の使用を検討していました:

CountNonZero()、SumPixels()Mean()Mean_StdDev()MinMaxLoc()Norm()

2つのオブジェクトを一意に区別します。それがより良いアプローチだと思います。

4

3 に答える 3

16

これは難しい問題であり、どのソリューションも完璧ではありません。コンピューター ビジョンは冗談めかして「完全な AI」分野として知られています。

バックグラウンド減算は、オブジェクトを検出する良い方法です。バックグラウンド減算の結果を改善する必要がある場合は、MRFの使用を検討してください。おそらく、ブロブのサイズに基づいて、オブジェクトが 1 つであることと、2 つのブロブがマージされたことがわかります。ブロブがマージされている間に軌道がすぐに変化しない場合は、カルマン追跡を行い、いくつかのヒューリスティックを使用して後でブロブを明確にすることができます。

2 つのオブジェクトの色は似ていますが、平均シフト トラッカーを使用することを検討してください。誰が誰であるかについての複数の仮説を追跡するために、何らかの粒子フィルタリングを行う必要がある場合があります。

レイヤード トラッキングと呼ばれる、さらに複雑な手法もいくつかあります。Jojic と FreyWinnZhou と Taoなどによる最近の作品があります。これらの手法のほとんどは、非常に強力な前提があり、正しく実装するには多くの作業が必要です。

このトピック全般に興味がある場合は、コンピュータ ビジョンのコースを受講するか、Ponce や Forsythなどの教科書を読むことを強くお勧めします。

于 2008-12-20T15:09:12.187 に答える
1

各フレームの1つのコーナー(たとえば左上)を覚えておくことができます。次に、新しいフレームのセットを受け取ったら、それらのコーナーの距離を以前に保存したものと比較します。もちろん、これは完璧な解決策ではありません。

  • ある時点で両方のブロブがパスを横切る場合、その結果がどうなるかはわかりません。
  • 両方のブロブの移動が速すぎると、望ましくない結果が生じる可能性もあります。
于 2008-12-20T11:57:41.323 に答える
1

特にビデオに多くのノイズがある場合は、難しいように聞こえます。

おそらく、2 人の人間が相互作用するさまざまなケースを特定することです。いくつかの例:

  1. 2 人の人間が出会い、進路を逆にするか、進行を続ける
  2. 2 人の人間が出会い、その後 1 人の人間だけが進路を逆にするか、進行方向に進みます
  3. 2 人の人間が出会い、1 人は残り、もう 1 人はカメラのビューに対して「法線」の方向、つまり、カメラから離れる方向またはカメラに向かう方向に移動します。

コンピューター ビジョンの教科書は、他のケースを判断するのに役立ちます。

ビデオのすべてのフレームについてリストしたすべての関数を測定し、その結果をグラフ化することを検討してください。そこから、パスを横切った後に人間がどのバウンディング ボックスにピクセルの色の標準偏差のようなものを一致させる方法があるかどうかを判断します。

于 2008-12-20T13:21:48.253 に答える