オプティカルフロー
**オプティカルフロー(optical flow)**とは、連続するフレーム間における画像の明るさパターンの見かけ上の2D運動である。すなわち、時刻 から にかけて各ピクセル(あるいは各追跡点)に変位を割り当てるベクトル場 である。これは、SLAMのフロントエンドが毎フレーム特徴を再検出・再マッチングすることなく、映像を通して点を追跡する方法である。
明るさ一定の仮定とフロー制約
基礎となる仮定は**明るさ一定(brightness constancy)**である。シーン上の点は移動しても明るさを保つ、というものである。
運動が小さいと仮定して、右辺を一次まで展開し(テイラー展開)、を打ち消すと、
ここで は画像の空間勾配であり、 はフレーム間の時間差である。このオプティカルフロー制約方程式は、ピクセルごとに2つの未知数に対して1つの方程式しかない——画像勾配に沿ったフロー成分は観測可能だが、それに垂直な成分は観測できない。これがアパーチャ問題である。動くエッジを小さな窓を通して見ている場合、それが自分自身に沿ってどのようにスライドしているかは分からない。
Lucas-Kanade法:局所最小二乗
Lucas-Kanade法は、第三の仮定によってこの曖昧さを解決する。すなわち、小さな窓 (例:)内のすべてのピクセルが同じフローを共有するという仮定である。窓内の個のピクセルについて制約を積み重ねると、
過剰決定系となり、最小二乗で解く:。行列 は、Harrisコーナー検出器における構造テンソルそのものである——深く実用的なつながりである。
- コーナー(両方の固有値が大きい):条件が良く、信頼できるフローが得られる。これがトラッカーがコーナー(「追跡に適した良い特徴」)を選ぶ理由である。
- エッジ(固有値の1つがゼロに近い):条件が悪い——行列の形でのアパーチャ問題である。
- 平坦な領域(両方がゼロに近い):情報が全くない。
線形化は小さな運動を仮定しているため、実際の実装では解を反復し(ワープ、再線形化)、画像ピラミッド上で**粗から密へ(coarse-to-fine)**の処理を行う。粗いスケールでは大きな運動が小さな運動に縮小され、各レベルの推定が次のレベルを初期化する。このピラミッド型Lucas-Kanade方式は、KLTトラッカーの中核である。
スパースフローと密フロー
- スパースフロー(Lucas-Kanade/KLT)は選ばれたキーポイントでのみフローを計算する——安価であり、特徴ベースのVO/SLAMがフレーム間トラッキングに必要とするのはまさにこれである。
- 密フローはピクセルごとにベクトルを推定する。古典的な定式化(Horn-Schunck)は、滑らかさの正則化項を追加することで大域的に問題を適切定式化(well-posed)し、画像全体にわたって最小化する。
これにより、テクスチャのない領域は近傍からフローを引き継ぐ。現代の密フローは、大きな変位、オクルージョン、照明変化を古典的な仮定よりもはるかに良く扱う学習ベースの手法(FlowNet、PWC-Net、RAFT)が主流である。
トラッキングにおける標準的な信頼性フィルタは**前後方向チェック(forward-backward check)**である。点をフレーム から へ追跡し、その結果を へ逆方向に追跡して、開始点付近に戻らなければそのトラックを棄却する。
SLAMにおける意義
オプティカルフローは、フレーム間対応を得るための最も安価な方法であり、対応関係は視覚オドメトリの原材料である。KLTベースのトラッキングフロントエンド(例:VINS-Monoや多くのVIOシステム)は、記述子マッチングの代わりにピラミッド型Lucas-Kanadeでコーナーを追跡する——より高速であり、記述子マッチングには無いサブピクセル精度を持つ。同じ明るさ一定の機構は、2Dの窓シフトから完全なカメラ姿勢ワープへと一般化され、直接法(LSD-SLAM、DSO)の基盤となっている。そして現在、学習ベースの密フローがDROID-SLAMのようなシステムにおける対応関係の探索を支えている。制約方程式、アパーチャ問題、構造テンソルの条件数を理解することで、これらのいずれがどこで失敗するかが分かる。高速な運動、低テクスチャ、照明の変化である。