0

私は OpenCV を使用してプロジェクトに取り組んでおり、オプティカル フロー アルゴリズム cvCalculateOpticalFlowFarneback を使用してビデオのオプティカル フローを取得しています。

私はドキュメントを読んでいて、ソースを少し調べていて、アルゴリズムにフィードできるオプションがあります: OPTFLOW_USE_INITIAL_FLOW

私はそれをいじっていますが、速度や精度に違いは見られません。だから私の質問は:

オプションは何をしますか?使用しない場合と使用した場合の違いはありますか? (良いまたは悪い)

また、いくつかの実装を調べているときに、バグがあるためこのオプションは避けるべきであるというコード コメントに出くわしました。私はそれを他の場所ではうまく処理できませんでしたが、少し緊張します (特に製品ソフトウェアに組み込む場合)。

どんなコメントでも大歓迎です!

4

1 に答える 1

2

cvCalculateOpticalFlowFarnebackのOpenCVドキュメントには次のように書かれています。

OPTFLOW_USE_INITIAL_FLOW入力フローを初期フロー近似として使用します

つまり、出力パラメータフローにフローの推定値を入力すると、この関数は、予想どおり、指定したフローを初期推定値として使用します。入力としてフローの妥当な見積もりを与えることができる場合にのみ、実際の違いがわかります。そうしないと、これは効果がないか、さらに悪化します。カメラが一定の速度で移動しているビデオシーケンスがある場合は、効果を簡単にテストできます。

  • 最初の2つの画像について、パラメーターなしでフローを計算します。
  • 後続の画像では、前のペアに対して計算されたフローを、OPTFLOW_USE_INITIAL_FLOWパラメーターを使用した新しい計算の入力として使用します。また、それなしでフローを計算します。
  • 結果のフローとそれにかかる時間を比較します。これにより、パラメータの効果が表示されます。

(私が正しく理解していれば)Gunnar Farnebackのアルゴリズムはオプティカルフローを見つけるための最適化アルゴリズムであるため、ローカル最大値でスタックする傾向があるため、適切な初期化はおそらくフローのより良いグローバル最大値を見つけるのに役立ちます。パラメータはより良いフロー出力である必要があります。必ずしも速いとは限りません。

実装と本番環境で発生する可能性のあるバグについて(注:実際のソースは確認していません):

  • それなしで見つけたオプティカルフローがニーズに適している場合は、それを使用しないでください。
  • パラメータの影響をテストし、それが役立つことがわかった場合は、それが役立つと確信して使用できるようになるまで、さらにテストしてください。
  • OpenCVメーリングリストでバグについて質問することもできますが、試す前に、まずテストを行い、さらにコードを読み取ることをお勧めします。
于 2012-02-22T09:39:56.447 に答える