オプティカルフロー

**オプティカルフロー(optical flow)**とは、連続するフレーム間における画像の明るさパターンの見かけ上の2D運動である。すなわち、時刻 tt から t+1t+1 にかけて各ピクセル(あるいは各追跡点)に変位を割り当てるベクトル場 (u,v)(u, v) である。これは、SLAMのフロントエンドが毎フレーム特徴を再検出・再マッチングすることなく、映像を通して点を追跡する方法である。

明るさ一定の仮定とフロー制約

基礎となる仮定は**明るさ一定(brightness constancy)**である。シーン上の点は移動しても明るさを保つ、というものである。

I(x,y,t)=I(x+u,y+v,t+1)I(x, y, t) = I(x + u,\, y + v,\, t + 1)

運動が小さいと仮定して、右辺を一次まで展開し(テイラー展開)、I(x,y,t)I(x,y,t)を打ち消すと、

Ixu+Iyv+It=0I_x u + I_y v + I_t = 0

ここで Ix,IyI_x, I_y は画像の空間勾配であり、ItI_t はフレーム間の時間差である。このオプティカルフロー制約方程式は、ピクセルごとに2つの未知数に対して1つの方程式しかない——画像勾配に沿ったフロー成分は観測可能だが、それに垂直な成分は観測できない。これがアパーチャ問題である。動くエッジを小さな窓を通して見ている場合、それが自分自身に沿ってどのようにスライドしているかは分からない。

Lucas-Kanade法:局所最小二乗

Lucas-Kanade法は、第三の仮定によってこの曖昧さを解決する。すなわち、小さな窓 WW(例:21×2121\times 21)内のすべてのピクセルが同じフローを共有するという仮定である。窓内のNN個のピクセルについて制約を積み重ねると、

[Ix(1)Iy(1)Ix(N)Iy(N)]A[uv]=[It(1)It(N)]b\underbrace{\begin{bmatrix} I_x^{(1)} & I_y^{(1)} \\ \vdots & \vdots \\ I_x^{(N)} & I_y^{(N)} \end{bmatrix}}_{A} \begin{bmatrix} u \\ v \end{bmatrix} = -\underbrace{\begin{bmatrix} I_t^{(1)} \\ \vdots \\ I_t^{(N)} \end{bmatrix}}_{\mathbf{b}}

過剰決定系となり、最小二乗で解く:(ATA)v=ATb(A^T A)\,\mathbf{v} = -A^T \mathbf{b}2×22\times 2行列 ATAA^T A は、Harrisコーナー検出器における構造テンソルそのものである——深く実用的なつながりである。

線形化は小さな運動を仮定しているため、実際の実装では解を反復し(ワープ、再線形化)、画像ピラミッド上で**粗から密へ(coarse-to-fine)**の処理を行う。粗いスケールでは大きな運動が小さな運動に縮小され、各レベルの推定が次のレベルを初期化する。このピラミッド型Lucas-Kanade方式は、KLTトラッカーの中核である。

スパースフローと密フロー

E(u,v)=(Ixu+Iyv+It)2+λ(u2+v2)dxdyE(u, v) = \iint \left( I_x u + I_y v + I_t \right)^2 + \lambda \left( \|\nabla u\|^2 + \|\nabla v\|^2 \right) \, dx\, dy

これにより、テクスチャのない領域は近傍からフローを引き継ぐ。現代の密フローは、大きな変位、オクルージョン、照明変化を古典的な仮定よりもはるかに良く扱う学習ベースの手法(FlowNet、PWC-Net、RAFT)が主流である。

トラッキングにおける標準的な信頼性フィルタは**前後方向チェック(forward-backward check)**である。点をフレーム tt から t+1t+1 へ追跡し、その結果を tt へ逆方向に追跡して、開始点付近に戻らなければそのトラックを棄却する。

SLAMにおける意義

オプティカルフローは、フレーム間対応を得るための最も安価な方法であり、対応関係は視覚オドメトリの原材料である。KLTベースのトラッキングフロントエンド(例:VINS-Monoや多くのVIOシステム)は、記述子マッチングの代わりにピラミッド型Lucas-Kanadeでコーナーを追跡する——より高速であり、記述子マッチングには無いサブピクセル精度を持つ。同じ明るさ一定の機構は、2Dの窓シフトから完全なカメラ姿勢ワープへと一般化され、直接法(LSD-SLAM、DSO)の基盤となっている。そして現在、学習ベースの密フローがDROID-SLAMのようなシステムにおける対応関係の探索を支えている。制約方程式、アパーチャ問題、構造テンソルの条件数を理解することで、これらのいずれがどこで失敗するかが分かる。高速な運動、低テクスチャ、照明の変化である。

ハンズオン

関連ノート