車が動いていると仮定すると、地面 (道路) を推定することができます。
3D の平面は 2 つのカメラ フレーム間のホモグラフィに従って移動するため、フィーチャ (速度のために SIFT ではなく SURF) を抽出し、それらをフレーム ペアで照合し、RANSAC を使用してホモグラフィを解決することにより、降下地平面の推定値を得ることができます。
地面ができたら、推定されたホモグラフィに従って動かないピクセルのクラスターを見て、車を識別できます。
より洗練されたアプローチは、地形上でモーションから構造を作成することです。これは、それが剛体であることのみを前提としており、平面であるとは限りません。
アップデート
推定されたホモグラフィに従って動かないピクセルのクラスターを探す方法を拡張できるかどうか疑問に思っていましたか?
もちろん。とは 2 つのビデオ フレームであり、I
はの特徴に の特徴をマッピングするホモグラフィです。まず、に従ってワープします。つまり、ワープされた画像を次のように計算します(おおよその Matlab 表記法)。次に、二乗または絶対差の画像を確認します。ホモグラフィーに従って移動する画像コンテンツは、小さな違いを与えるはずです (画像間の照明と露出が一定であると仮定します)。車の移動など、違反する画像コンテンツは目立たせる必要があります。K
H
I
K
I
K
H
Iw
Iw( [x y]' )=I( inv(H)[x y]' )
Diff=(Iw-K)*(Iw-K)
H
H
高エラーピクセルグループをクラスタリングするには、単純なしきい値処理から始めます (「 X より大きいDiff
すべてのピクセルの違いが関連している」、おそらく適応しきい値を使用します)。Diff
しきい値処理された画像は、形態学的操作 (膨張、浸食) でクリーンアップし、接続されたコンポーネントでクラスター化できます。これは単純すぎるかもしれませんが、最初の試行では簡単に実装でき、高速になるはずです。より凝ったものについては、ウィキペディアの Clustering をご覧ください。2Dガウス混合モデルは興味深いかもしれません。前のフレームからの検出結果で初期化すると、かなり高速になるはずです。
私はあなたが提供した 2 つのフレームで少し実験を行いましたが、それがどれほどうまく機能するかに少し驚いたと言わざるを得ません. :-)左の画像:投稿した 2 つのフレームの違い (色分け)。右の画像:ホモグラフィと一致させた後のフレーム間の違い。残りの違いは明らかに動いている車であり、単純なしきい値処理には十分な強度があります。

あなたが現在使用しているアプローチを考えると、それを私の提案と組み合わせると面白いかもしれません:
D
元の画像の代わりに差分画像で車を学習して分類することができます。これは、車がどのように見えるかではなく、車の動きのパターンがどのように見えるかを学習することになり、信頼性が高くなります。
- 高価なウィンドウ検索を取り除き、
D
十分に高い値を持つ領域でのみ分類子を実行できます。
いくつかの追加のコメント:
- 理論的には、車は平らではないため、動いていなくても目立つはずですが、シーンまでの距離とカメラの解像度を考えると、この効果は微妙すぎるかもしれません。
- 必要に応じて、私の提案の特徴抽出/マッチング部分をオプティカル フローに置き換えることができます。これは、地面の一貫したフレーム間の動きから「はみ出す」流れベクトルを識別することになります。ただし、オプティカル フローで異常値が発生する可能性があります。フロー ベクトルからホモグラフィを取得することもできます。
- これは重要です。使用する方法に関係なく、1 つのフレームで車を見つけたら、この情報を使用して連続したフレームでこれらの車の検索を強化し、古いものに近い検出の可能性を高める必要があります (カルマン フィルター、等)。それが追跡のすべてです!