特徴点抽出が「画像のどこを目印にするか」を決める処理なら、Feature Tracking(特徴点追跡)は「次のフレームで、その目印がどこへ移ったか」を求める処理である。追跡が安定すればカメラの移動、物体の速度、ロボットの自己位置を推定できる。逆に、対応を一つ取り違えると、その後の姿勢推定や地図が一気に崩れる。本稿では、検出器と記述子の違いを踏まえ、画素の動きを局所最適化する方法と、記述子を照合する方法を一つの設計問題として扱う。
0. 30秒要約
- 追跡には「前フレームの周辺パッチを次フレームで探す」方式と、「各フレームで検出・記述子を計算して照合する」方式がある。
- Lucas–Kanade法は輝度一定、局所的な動き、近傍画素の同一速度という仮定で、2×2の正規方程式を解く。ピラミッド化すると大きな移動へ対応できる。
- 記述子マッチングはフレーム間隔が大きくても再探索できるが、計算量と誤対応が増える。ratio testと相互最近傍、RANSACで幾何的に検証する。
- 追跡の品質は対応点数だけでなく、画像全体への分布、再投影誤差、前後方向の整合性、遮蔽からの復帰率で評価する。
- 難しいのは、モーションブラー、低テクスチャ、反射、動的物体、ローリングシャッター、急なスケール変化である。信頼度を出し、検出し直す仕組みが必須になる。
1. 画像上の点はなぜ動いて見えるか
3次元点Xがカメラの運動で画像上のmathbf{x}=(x,y)へ投影される。フレーム間隔を\Delta tとすると、追跡の目的は
の変位\mathbf{d}_kを求めることだ。カメラが並進すると遠近で速度が変わり、回転すると画像全体が同じ向きへ流れる。前後の画像を単純に差し引くだけでは照明変化や露光ノイズに弱いため、局所パッチの構造を利用する。
2. Lucas–Kanade:小さな窓をまとめて解く
輝度一定の仮定は
である。変位(u,v)が小さいとして一次近似すると、オプティカルフロー拘束式
が得られる。1画素では未知数が2つに対して式が1本しかない(アパーチャ問題)。そこで窓W内の画素をまとめ、最小二乗
を解く。括弧内は特徴点の局所構造行列で、二方向に勾配があるコーナーほど逆行列が安定する。平坦な壁や一本のエッジでは、動きを一意に決められない。
大きな移動へ対応するため、画像を縮小したピラミッドの粗いレベルから細かいレベルへ変位を伝搬する。各レベルで数回反復し、次の位置で再計算する。実装では、ピラミッド段数、窓サイズ、終了条件、最小固有値、前後追跡誤差を調整する。
3. 記述子マッチングとの使い分け
ORBやSIFTのような記述子は、周辺パッチをベクトルまたはビット列に変換し、距離の近い候補を対応とする。連続フレームの小さな移動ならLucas–Kanadeが高速だが、遮蔽から復帰したり、フレームを飛ばしたり、カメラが大きく動いたりすると記述子再照合が有効になる。
| 方法 | 入力 | 長所 | 弱点 | 典型用途 |
|---|---|---|---|---|
| LK追跡 | 前フレームの点と次フレーム画像 | 高速、サブピクセル精度 | 大変位・遮蔽・低テクスチャに弱い | VO、リアルタイム追跡 |
| ORB照合 | 2枚の記述子 | 軽量、回転に対応 | 反射・ブラーで誤対応 | SLAM初期化・再探索 |
| SIFT照合 | 2枚の記述子 | 尺度・回転に頑健 | 計算量、メモリ | SfM、画像検索 |
| 学習ベース | 点・記述子・マッチャ | 大きな見た目変化に強い可能性 | 学習データ外、GPU負荷 | 難環境・研究 |
記述子距離の最小候補だけを採ると、似た模様の誤対応が混ざる。最近傍距離d_1と2番目d_2に対してd_1/d_2<\tau(ratio test)を要求し、さらに画像A→BとB→Aの相互最近傍を確認する。最後に、対応点から推定した基礎行列・ホモグラフィ・PnPの再投影誤差をRANSACで検証する。
4. 追跡の信頼度を数値化する
実装で「追跡できた」と判定するには、点が返ったかでは不十分である。次の量をログへ保存すると、破綻の原因を切り分けやすい。
- LKの最小固有値と残差
- 前向き追跡と逆向き追跡の差(forward-backward error)
- 記述子ratioと距離の分布
- RANSACのインライア率と再投影誤差
- 画像上の点の分布(中央だけに偏っていないか)
- フレーム間の平均変位、ブラー指標、露光・ゲイン
RANSACのインライア率が高くても、全点が画像の一角に集中していれば姿勢推定は縮退する。グリッドごとに最大点数を制限し、視野全体へ特徴点を分散させると、回転・並進の観測性が改善する。点数を増やすより、異なる方向・距離に分散した少数の対応を残す方がよい場合もある。
5. 動く物体とローリングシャッター
Visual Odometryでは、静止環境を仮定してカメラ運動を推定する。歩行者、車、回転ファンが多数写ると、それらの対応はカメラ運動モデルに一致しない外れ値になる。RANSACだけで除けないほど動的物体が多い場合は、セマンティックマスク、オプティカルフローのクラスタリング、背景モデル、深度整合性を併用する。
CMOSカメラのローリングシャッターは、画像の上から下を少しずつ異なる時刻に露光する。高速回転や振動では、同じフレーム内でも行ごとにカメラ姿勢が変わり、単一の投影モデルが破れる。IMUの角速度を使った行時刻補正、グローバルシャッター、短い露光、読み出し時間の校正が対策になる。
6. 最小実装の流れ
- カメラを内部パラメータ、歪み、タイムスタンプとともに校正する。
- 初期フレームでFAST/ORBまたはShi–Tomasiを検出し、グリッドで均等化する。
- 次フレームを受けたらピラミッドLKで追跡し、前後誤差と画像境界を検査する。
- 信頼度の低い点を捨て、足りないグリッドへ新しい点を検出する。
- 必要な間隔で記述子照合を行い、RANSACで外れ値を除く。
- 残った対応をEssential Matrix、PnP、またはIMU融合へ渡す。
- 点が連続して失われたら再初期化し、追跡状態と原因をログへ残す。
7. まとめ
特徴点追跡は、検出器・局所最適化・記述子照合・幾何検証を一つの信頼度設計として扱う技術である。LKは連続フレームを滑らかにつなぎ、記述子は大きな変化から復帰し、RANSACは誤対応を幾何でふるいにかける。どれか一つへ依存せず、点の分布、時間同期、動的物体、ローリングシャッターを含むログを残すと、Visual-SLAMやVIOの再現性が大きく向上する。