2011-09-30 17 views
6

私は、オプティカルフローに取り組んで、そしてthe lecture notes here、インターネット上のいくつかのサンプル、I wrote this Python codeに基づいています。ルーカス奏オプティカルフロー、方向ベクトル

すべてのコードとサンプル画像にもあります。約4-5ピクセルの小さな変位の場合、計算されたベクトルの方向はきれいですが、ベクトルの大きさが小さすぎます(そのため、プロットする前にu、vに3を掛けなければなりませんでした)。

は、このためのコードでは、アルゴリズム、またはエラーの制限のためですか?上で述べた講義ノートでは、モーションが小さくなる必要があるとも言われています。「u、vは1ピクセル未満です。この制限の理由は何ですか?

+6

LKは、一次近似を使用し、ではない、より高次の項が行動を支配し、あなたはトーストしている場合ので、(u、v)は、理想的には<< 1でなければなりません。この問題を克服するために、スライド20と21では、非常に低い解像度で始まり、次にそれを増やすという一連の子孫ステップを使用することを提案しています。しかしアルゴリズムはあなたのソースで完全に説明されていません。 –

答えて

3

@ belisariusは "LKは一次近似を使用していますので、理想的には< < 1でなければなりません。もしそうでなければ、より高次の項が優勢であり、あなたはトーストしています。オプティカルフロー制約式(OFCE、ご参考のスライド5)から

0

標準の結論は、「あなたの動きがピクセル未満である必要があり、あまり高次項はあなたを殺す」ということです。技術的には真実ですが、実際にはより大きな平均化ウィンドウを使用してこれを克服することができます。これには、スライドで示唆されているように、純粋な最小二乗平均ではなく、正常な統計が必要です。 Tikhonovの正則化によって、同等に高速な計算が可能になり、さらに優れた結果が得られます。これにはチューニング値(Tikhonov定数)を設定する必要があります。これは、グローバル定数として、またはイメージ内のローカル情報(Shi-Tomasi信頼性、構造テンソル行列式など)に調整させることができます。これは、マルチスケールの必要性を置き換えるものではありません

注大きな動きに対処するために近づきます。単一のスケールで処理できる範囲では、範囲を少し広げることがあります。

実装、ビジュアライゼーション、およびコードは、チュートリアルの形式here, albeit in Matlab Pythonではなく使用できます。

関連する問題