連続するフレームの動きの違いを見つけるために、フレームの絶対差を使用し、すべてのピクセルを合計して動きの量を定量化しました。私はOpenCVでそれをしました。
しかし、最近、Horn と Schunk のオプティカル フロー アルゴリズムと、マクロ ブロック ベースの動き補償について知りました。OpenCV ライブラリには、それらを計算できる組み込み関数が既に組み込まれています。しかし、それらを定量化する方法がわかりません。それらは最初のアプローチよりも優れていますか?
助けてください!
連続するフレームの動きの違いを見つけるために、フレームの絶対差を使用し、すべてのピクセルを合計して動きの量を定量化しました。私はOpenCVでそれをしました。
しかし、最近、Horn と Schunk のオプティカル フロー アルゴリズムと、マクロ ブロック ベースの動き補償について知りました。OpenCV ライブラリには、それらを計算できる組み込み関数が既に組み込まれています。しかし、それらを定量化する方法がわかりません。それらは最初のアプローチよりも優れていますか?
助けてください!
opencvでオプティカルフローを実装する方法は...
あなたの場合...あなたはフレームモーション計算をしているので...あなたが興味のあるポイントを見つけ始めることができるところからフレームを開始するテクニックとしてバックグラウンド減算(フレーム微分..)を使用してください...変化が上に行くときしきい値が関心のあるポイントの取得を開始します...次の連続するフレームでそれらを追跡し、次のフレームで関心のあるポイントの数がどれだけ変位したかをヒストグラムで作成できます...これですべてを考えることができますフレームの動きを定量化するために..
特定の opencv 実装の経験はほとんどありませんが、オプティカル フローは通常、動きの量を定量化しようとはしないと言えます。オプティカル フロー ベクトルの長さに基づいて出力のメトリックを定義できますが (ブロック速度の合計など)、これは使用したメトリックとは大きく異なります。これが役立つかどうかは、アプリケーションによって異なります。比較のために、白い背景に対して移動する灰色のオブジェクトと、白い背景に対して移動する黒いオブジェクトを考えてみてください。フレーム差分メトリックは黒いオブジェクトをより多くのモーションとして認識しますが、ブロック速度メトリックの合計はこれをほぼ同じ量のモーションとして認識します。
最後に、メソッドの実行時間も考慮する必要があります。差分画像の計算の複雑さは非常に低く、数ミリ秒で見積もることができます。ただし、オブジェクトの速度を定量化することはできません。たとえば、カメラを振ると問題が発生する可能性があります。ピラミッド型のLucasKanadeやHornSchunkメソッドなどのオプティカルフローベースのメソッドはそれほど高速ではありませんが、各ピクセル(Horn Schunkなどの高密度メソッド)または事前定義されたピクセルのセット(ピラミッド型Lucas Kanadeなどのスパースメソッド)に対して取得します。動きベクトル。これで、異なる移動オブジェクトを区別したり、計算されたモーションベクトルの長さを使用したりできるようになりました。ただし、実行時間は約200ミリ秒から2秒で、パラメーター、フレームのサイズ、計算するベクトルの数などによって異なります。