2011-10-27 24 views
0

私は、PythonでOpenCVを使用してビデオから差分画像速度不変量(カール、ダイバージェンス、変形など)を計算しようとしています。そのためには、オプティカルフローのx、y方向の空間微分を計算する必要があります。残念ながら、OpenCVはオプティカルフローを計算するためのAPIを提供しているに過ぎず、その派生物ではありません。オプティカルフローの空間微分を計算するためのPythonライブラリ

オプティカルフローの空間派生を計算するためのPythonライブラリはありますか?私はこのSOの質問が幾分似ていてLucas Kanade Optical Flow, Direction Vectorであることを発見しました。空間的な派生を計算するために書いたコードがありますが、コードを書くのではなく、ライブラリが大好きです。任意の提案をいただければ幸いです!

+0

コードを自分で書くのはなぜですか?その人のコードをフォルダにダンプし、 '__init __。py'を追加し、' import'します。 – Blender

+0

それは本当にライブラリでもありません...誰かが書いたコードでもあります:P – Magsol

+0

Pythonのライブラリは、Pythonファイルが入ったフォルダです。また、オプティカルフローの導関数をかなり単純なタスクとして計算していないのですか?データを平滑化し、多項式で近似し、多項式を微分するだけで十分です。 – Blender

答えて

0

これは私が(私はオプティカルフローで少し働いてきた)それを見る方法です。

あなたはオプティカルフロー場の個々の偏微分を計算したいです。 1つはxの方向、もう1つはyの方向です。

私はそうのような問題を解決しようと思います:xy流れ:

  • は二つの行列の中にあなたの流れ配列/行列を分割します。
  • これらのそれぞれについて、あなたは単純なルートに行き、単純な違いを取ることができます:derivative = current_state - last_state。しかし、このアプローチは非常に乱雑です。デリバティブはわずかな誤差に敏感です。
  • これに対処するには、多項式のように簡単に微分可能な回帰曲線を使って、データ点の1つのチャンク(多分行全体ですか?)を近似することができます。

ちょうど近似曲線を区別し、あなたは良いです。

個々の行列を滑らかにすることもできますし、データ点を近似するよりもはるかに速く、エラーに対してはより寛容でなければならない素朴な違いがあります。

+0

これはすべて意味があります。私が探していたのは、高水準の直感(簡単に微分可能な多項式をデータにフィットさせる)とそのタスクを実行するためのコードとの間の概念的なつながりでした。私は必要と思われるscipy.signalライブラリを見つけましたが、今はPython TypeErrorsを実行しています。しかし、それはおそらく独自の質問に値する。ご協力いただきありがとうございます!また、Blenderを愛する! :) – Magsol

+0

Lol、問題ありません。私はこの種のものが大好きです。 – Blender

関連する問題