KLT Tracker

Kanade-Lucas-Tomasi (KLT) トラッカーは、毎フレームごとにディスクリプタを再検出・再マッチングする代わりに、小さな画像パッチを直接位置合わせすることで疎な特徴点をフレーム間で追跡する。これはLucas-Kanadeオプティカルフロー解法(Lucas & Kanade, 1981)、Tomasi & Kanadeの追跡formulation(1991)、Shi & Tomasiの特徴選択基準(1994)を組み合わせたものであり——そのピラミッド型実装(Bouguet)において——多くのVIOシステム(MSCKF実装、VINS-Mono)のフロントエンドであり、cv::calcOpticalFlowPyrLK の背後にある主力アルゴリズムである。

Lucas-Kanadeの核心

**輝度不変性(brightness constancy)**を仮定する。すなわち、特徴点周辺のパッチは、フレーム間で (u,v)(u, v) だけ移動してもその輝度を保つ。

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

微小な動きに対して、1次のテイラー展開により**オプティカルフロー制約方程式(optical flow constraint equation)**が得られる。

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

ここで Ix,IyI_x, I_y は空間的な画像勾度、ItI_t は時間差分である。方程式1つに未知数2つ——アパーチャ問題(aperture problem)である。Lucas-Kanadeは**空間的一貫性(spatial coherence)**を追加する。特徴点周辺の窓 WW 内のすべての NN 画素が同じ (u,v)(u, v) を共有すると仮定する。NN個の制約を積み上げ最小二乗で解くと、次の 2×22 \times 2 の系が得られる。

ATA[uv]=ATb,ATA=[Ix2IxIyIxIyIy2]A^T A \begin{bmatrix} u \\ v \end{bmatrix} = -A^T \mathbf{b}, \qquad A^T A = \begin{bmatrix} \sum I_x^2 & \sum I_x I_y \\ \sum I_x I_y & \sum I_y^2 \end{bmatrix}

ここで b\mathbf{b} は時間勾度のベクトルである。動きは実際には無限小ではないため、この解はGauss-Newton的に反復される。現在の推定値でパッチをワープし、残差を再計算し、増分を解き、更新がしきい値未満になるまで繰り返す。

追跡に適した良い特徴(Good features to track)

行列 ATAA^T A はHarrisコーナー検出器の**構造テンソル(structure tensor)**そのものであり、その条件数がトラッキング可能性を決める。固有値を λ1λ2\lambda_1 \ge \lambda_2 とすると、

Shi & Tomasiの基準は min(λ1,λ2)>τ\min(\lambda_1, \lambda_2) > \tau を満たす特徴を選択する——「追跡に適した良い特徴」とは、構成上、KLTの解が安定する点である。これが cv::goodFeaturesToTrack である。

実際の動きに対応させる

SLAMにおける意義

KLTはフレーム間対応に対する、ディスクリプタマッチングの安価で高精度な代替手段である。ディスクリプタ計算も最近傍探索も不要で、サブピクセル精度を持ち、計算量は追跡点数に比例する——組み込みハードウェア上のリアルタイムシステムの追跡スレッドに理想的である。これがオプティカルフローベースのフロントエンドがVIOで支配的な理由であり(VINS-MonoはKLTコーナーを追跡し、通常動作中にディスクリプタを一度も計算しない)、SVOのような半直接法が同じパッチ位置合わせの数学の上に構築されている理由でもある。その限界もフロントエンド設計を規定する。KLTは大きなベースライン、照明変化(輝度不変性が破れる)、モーションブラーの下で性能が劣化し、失われた特徴を再発見する手段を提供しない——それこそがディスクリプタベースのマッチングと場所認識の役割である。KLTの正規方程式は、フォトメトリックバンドル調整に至るまでSLAMのあらゆる規模で再登場するGauss-Newtonパターンの最も単純な例でもある。

ハンズオン

関連ノート