2

LKTアルゴリズムhereのMatlab実装が見つかりました。これは輝度定数式に基づいています。Lukas Kanadeオプティカルフロー:数学を理解する

このアルゴリズムは、画像を適切な2x2水平および垂直エッジ勾配演算子で畳み込むことによって、x方向およびy方向の画像勾配を計算します。

古典文献の輝度不変方程式は、2つの連続するフレーム間の差を右側に示しています。

ただし、前述のリンクで参照される実装では、右側が畳み込みの違いです。なぜIt_mは単にのように計算することができませんでした

It_m = conv2(im1,[1,1;1,1]) + conv2(im2,[-1,-1;-1,-1]); 

:あなたが述べたように

it_m = im1 - im2;  
+0

'conv2(x、[1,1; 1,1])'が 'x'と違っていることを確認するのに少し時間がかかります。 – MBaz

+0

あなたはこの行を参照していますか? It_m = conv2(im1、ones(2)、 'valid')+ conv2(im2、-ones(2)、 'valid'); これは単なる2D空間スムーザーであり、結果として得られるIt_mがIx_mとIy_m行列と同じ大きさであることを保証します(2x2カーネルと "有効"オプションでconv2で処理されるためです)。 –

+0

@MBaz私は彼の混乱は、xとは異なるconv2(x、[1,1; 1,1])についてだとは思わない。私はその疑問がなぜその畳み込みを使用するのかというだけでなく、2つの画像フレームにわたって画素ごとに時間微分を計算するのではないと考えています。 –

答えて

0

(。答えに変換コメント)理論的には

は、ピクセル単位の差分を取ると間違って何もありません。時間微分を計算する際に空間スムーザーを使用すると、ノイズの影響が緩和されます。また

code空間(xおよびy)誘導体を計算する方法を見て:同様のカーネルを用いて時間導関数を計算

Ix_m = conv2(im1,[-1 1; -1 1], 'valid');

validオプションがマトリックスにIt_xIt_yIm_tを保証互換性のあるサイズを持つ。

2

、理論的にはピクセル差によって画素のみをオプティカルフロー計算のために記載されています。しかし実際には、すべての自然(合成ではない)画像にはある程度のノイズが含まれています。一方、微分はある種のハイパスフィルタであり、信号に対するノイズ比を強調(ハイパス)します。 したがって、ノイズによって引き起こされるアーチファクトを回避するために、通常、画像平滑化(またはローパスフィルタリング)は、画像を差異化する前に実行されます(エッジ検出でも同様の処理が行われます)。コードはこれを正確に実行します。つまり、イメージに平均フィルタを適用して移動させることで、ノイズ効果を低減します。

Im_t = im1-im2; 

は時間微分を計算する:

It_m = conv2(im1,[1,1;1,1]) + conv2(im2,[-1,-1;-1,-1]); 
+0

トピックをフィルタリングすることを明確にしてくれたMimSaadさん、ありがとうございます。あなたの答えをアップアップしました。 – Raj

+0

私はそれが助けてうれしい! – MimSaad

+0

ノイズリダクションは重要ですが、完全にノイズフリーの画像であっても、2ピクセルの差が最終オプティカルフロー出力にエラーを与えます。詳細は以下の私の答えを見てください –

0

時間的偏導関数(tに沿って)は、空間的偏導関数に(xとyに沿って)接続されています。

分析しているビデオシーケンスをボリューム、時空間ボリュームと考えてください。任意の点(x、y、t)において、偏微分を推定したい場合、つまり、その点での3D勾配を推定すれば、同じカーネルサポートを持つ3つのフィルタを得ることができます。

これがなぜそうであるべきであるかについてのより多くの理論については、トピックステアラブルフィルタを参照するか、偏微分とは何かの基本的な概念と、

多くの場合、最初に2D勾配が推定され、その後、時間的派生を第2にxおよびy成分とは無関係に考える傾向があります。これは、最終的なオプティカルフローの計算で数値エラーにつながる可能性があります。これらのエラーを処理する一般的な方法は、順方向および逆方向のフロー推定を行い、最後に結果を結合することです。

推測しているグラデーションを考える方法の1つは、サポート領域が3Dであることです。そのような領域の最小サイズは2x2x2でなければなりません。

両方とも2x2フィルタのみを使用して第1および第2の画像で2Dグラジエントを実行すると、2つのフィルタの結果を平均して3Dボリュームの対応するFIRフィルタが収集されます。

2Dで同じフィルターサポート領域を使用する必要があるという事実は、ほとんどの場合、明確です.SobelオペレーターとScharrオペレーターがどのように見えるのか。

は、あなたは、この特定のポイントを示すために、部分的には、あなたがこのMatlab toolbox that I madeでオプティカルフローのために設計されたsanely微分演算子を持っていることから得る結果の並べ替えを見ることができます。

関連する問題