4

私はしばらくの間、UAV からキャプチャされたビデオで車両を検出して追跡する (動いている) プロジェクトに取り組んできました。現在、車両と背景画像から抽出されたローカル機能のバッグオブフィーチャ表現でトレーニングされた SVM を使用しています。次に、スライディング ウィンドウ検出アプローチを使用して、画像内の車両の位置を特定し、追跡したいと考えています。問題は、このアプローチが遅すぎることと、検出器の信頼性が思ったほど高くないことです。そのため、かなりの数の誤検知が発生しています。

そのため、分類器を適用する前に検索スペースを減らすために、背景から車をセグメント化しておおよその位置を見つけることを検討していましたが、どうすればよいかわかりません。誰かが助けてくれることを望んでいましたか?

さらに、オプティカルフローを使用してフローモデルごとにフレームをセグメント化するレイヤーによるモーションセグメンテーションについて読んでいますが、この方法の経験がある人はいますか?私の問題。

以下は、サンプル ビデオの 2 つのフレームです。

フレーム 0: ここに画像の説明を入力

フレーム 5: ここに画像の説明を入力

4

2 に答える 2

11

車が動いていると仮定すると、地面 (道路) を推定することができます。

3D の平面は 2 つのカメラ フレーム間のホモグラフィに従って移動するため、フィーチャ (速度のために SIFT ではなく SURF) を抽出し、それらをフレーム ペアで照合し、RANSAC を使用してホモグラフィを解決することにより、降下地平面の推定値を得ることができます。

地面ができたら、推定されたホモグラフィに従って動かないピクセルのクラスターを見て、車を識別できます。

より洗練されたアプローチは、地形上でモーションから構造を作成することです。これは、それが剛体であることのみを前提としており、平面であるとは限りません。


アップデート

推定されたホモグラフィに従って動かないピクセルのクラスターを探す方法を拡張できるかどうか疑問に思っていましたか?

もちろん。とは 2 つのビデオ フレームであり、Iはの特徴に の特徴をマッピングするホモグラフィです。まず、に従ってワープします。つまり、ワープされた画像を次のように計算します(おおよその Matlab 表記法)。次に、二乗または絶対差の画像を確認します。ホモグラフィーに従って移動する画像コンテンツは、小さな違いを与えるはずです (画像間の照明と露出が一定であると仮定します)。車の移動など、違反する画像コンテンツは目立たせる必要があります。KHIKIKHIwIw( [x y]' )=I( inv(H)[x y]' )Diff=(Iw-K)*(Iw-K)HH

高エラーピクセルグループをクラスタリングするには、単純なしきい値処理から始めます (「 X より大きいDiffすべてのピクセルの違いが関連している」、おそらく適応しきい値を使用します)。Diffしきい値処理された画像は、形態学的操作 (膨張、浸食) でクリーンアップし、接続されたコンポーネントでクラスター化できます。これは単純すぎるかもしれませんが、最初の試行では簡単に実装でき、高速になるはずです。より凝ったものについては、ウィキペディアの Clustering をご覧ください。2Dガウス混合モデルは興味深いかもしれません。前のフレームからの検出結果で初期化すると、かなり高速になるはずです。

私はあなたが提供した 2 つのフレームで少し実験を行いましたが、それがどれほどうまく機能するかに少し驚いたと言わざるを得ません. :-)左の画像:投稿した 2 つのフレームの違い (色分け)。右の画像:ホモグラフィと一致させた後のフレーム間の違い。残りの違いは明らかに動いている車であり、単純なしきい値処理には十分な強度があります。

画像位置合わせ前後のフレームの違い

あなたが現在使用しているアプローチを考えると、それを私の提案と組み合わせると面白いかもしれません:

  • D元の画像の代わりに差分画像で車を学習して分類することができます。これは、車がどのように見えるかではなく、車の動きのパターンがどのように見えるかを学習することになり、信頼性が高くなります。
  • 高価なウィンドウ検索を取り除き、D十分に高い値を持つ領域でのみ分類子を実行できます。

いくつかの追加のコメント:

  • 理論的には、車は平らではないため、動いていなくても目立つはずですが、シーンまでの距離とカメラの解像度を考えると、この効果は微妙すぎるかもしれません。
  • 必要に応じて、私の提案の特徴抽出/マッチング部分をオプティカル フローに置き換えることができます。これは、地面の一貫したフレーム間の動きから「はみ出す」流れベクトルを識別することになります。ただし、オプティカル フローで異常値が発生する可能性があります。フロー ベクトルからホモグラフィを取得することもできます。
  • これは重要です。使用する方法に関係なく、1 つのフレームで車を見つけたら、この情報を使用して連続したフレームでこれらの車の検索を強化し、古いものに近い検出の可能性を高める必要があります (カルマン フィルター、等)。それが追跡のすべてです!
于 2013-03-13T18:02:47.993 に答える
1
  1. 視野内の車の数が常に同じで動き回る場合は、オプティカル フローを使用できます...静止した背景に対して良い結果が得られます...車の数が変化している場合は、特定のフレーム数の後に OpenCV で goodFeaturestoTrack 関数を呼び出し、再びオプティカル フローを使用して車を追跡します。
  2. 背景モデリングを使用して背景をモデル化できるため、車は常に前景になります。最も単純な例は、フレームの微分です...前のフレームの現在のフレームを減算します。diff(x,y,k) = I(x,y,k) - I(x,y,k-1).あなたの車が各フレームで動いているので、その位置を取得します..
  3. まだバックグラウンドがあると思われるので、両方のプロセスは正常に機能します..このリンクをチェックして、オプティカルフローができることを見つけてください.
于 2013-03-14T01:49:50.610 に答える