1

連続するフレームの動きの違いを見つけるために、フレームの絶対差を使用し、すべてのピクセルを合計して動きの量を定量化しました。私はOpenCVでそれをしました。

しかし、最近、Horn と Schunk のオプティカル フロー アルゴリズムと、マクロ ブロック ベースの動き補償について知りました。OpenCV ライブラリには、それらを計算できる組み込み関数が既に組み込まれています。しかし、それらを定量化する方法がわかりません。それらは最初のアプローチよりも優れていますか?

助けてください!

4

3 に答える 3

2

opencvでオプティカルフローを実装する方法は...

  1. 最初に、追跡対象のターゲットが表示されるフレーム(たとえばFrameA)内の追跡するのに適した特徴(関心のあるポイント)としていくつかのポイントを検出します...いくつかのポイントはターゲット上にある場合があり、いくつかは背景上にある場合があります...
  2. 検出されたポイントはベクトル配列に格納され、FrameAおよびFrameBとともにオプティカルフロー関数に渡されます...後者(FrameB)は、関心のあるポイントの場所を見つけることを目的とした次のフレームです...
  3. FrameBで関心のあるポイントの位置を取得すると、FrameAとFrameBの間の関心のあるポイントの変位を推定できます。

あなたの場合...あなたはフレームモーション計算をしているので...あなたが興味のあるポイントを見つけ始めることができるところからフレームを開始するテクニックとしてバックグラウンド減算(フレーム微分..)を使用してください...変化が上に行くときしきい値が関心のあるポイントの取得を開始します...次の連続するフレームでそれらを追跡し、次のフレームで関心のあるポイントの数がどれだけ変位したかをヒストグラムで作成できます...これですべてを考えることができますフレームの動きを定量化するために..

于 2012-12-22T07:34:13.707 に答える
1

特定の opencv 実装の経験はほとんどありませんが、オプティカル フローは通常、動きの量を定量化しようとはしないと言えます。オプティカル フロー ベクトルの長さに基づいて出力のメトリックを定義できますが (ブロック速度の合計など)、これは使用したメトリックとは大きく異なります。これが役立つかどうかは、アプリケーションによって異なります。比較のために、白い背景に対して移動する灰色のオブジェクトと、白い背景に対して移動する黒いオブジェクトを考えてみてください。フレーム差分メトリックは黒いオブジェクトをより多くのモーションとして認識しますが、ブロック速度メトリックの合計はこれをほぼ同じ量のモーションとして認識します。

于 2012-12-21T13:27:18.540 に答える
0

最後に、メソッドの実行時間も考慮する必要があります。差分画像の計算の複雑さは非常に低く、数ミリ秒で見積もることができます。ただし、オブジェクトの速度を定量化することはできません。たとえば、カメラを振ると問題が発生する可能性があります。ピラミッド型のLucasKanadeやHornSchunkメソッドなどのオプティカルフローベースのメソッドはそれほど高速ではありませんが、各ピクセル(Horn Schunkなどの高密度メソッド)または事前定義されたピクセルのセット(ピラミッド型Lucas Kanadeなどのスパースメソッド)に対して取得します。動きベクトル。これで、異なる移動オブジェクトを区別したり、計算されたモーションベクトルの長さを使用したりできるようになりました。ただし、実行時間は約200ミリ秒から2秒で、パラメーター、フレームのサイズ、計算するベクトルの数などによって異なります。

于 2013-01-16T15:17:42.133 に答える