Keypoints
**キーポイント(keypoint)**とは、繰り返し検出可能な幾何構造を持つ画像上の特徴的な位置——コーナー、ブロブ、エッジの交差点など——であり、同じシーンを撮影した別の画像内で再検出できるものを指す。**ディスクリプタ(descriptor)**は、キーポイント周辺の局所的な見え方をエンコードした簡潔な数値表現であり、視点や照明が変化しても画像間でのマッチングを可能にする。検出器(detector)(どこにあるかを見つける)とディスクリプタ(何であるかを符号化する)が合わさって、特徴点ベースSLAMのフロントエンドの基本語彙を構成する。
キーポイントを有用にする性質は2つある。
- 再現性(Repeatability): 同じ実世界の点が、異なる視点・スケール・照明条件下でも再検出されること。
- 識別性(Distinctiveness): そのディスクリプタが他の点のディスクリプタと十分に異なり、マッチングが一意に定まること。
古典的な系譜
| 手法 | 検出器 | ディスクリプタ | 備考 |
|---|---|---|---|
| SIFT (2004) | スケール空間中のDoGブロブ | 128次元の勾度ヒストグラム | 非常に高精度だがCPU上では低速 |
| FAST (2006) | 半径3の円周上16画素の連続した明/暗弧 | なし | 極めて高速なコーナー判定 |
| ORB (2011) | oFAST(FAST+輝度重心による向き付け) | rBRIEF、256ビットのバイナリ | SLAMの主力(ORB-SLAM) |
| AKAZE (2013) | 非線形拡散スケール空間 | バイナリ(M-LDB) | ガウススケール空間よりエッジ保存性に優れる |
SIFTはスケール空間内でブロブを検出する。画像を段階的に大きくなるスケールでガウシアンと畳み込み、 を得る。Difference of Gaussians(ガウス差分) はガウシアンラプラシアン(Laplacian-of-Gaussian)ブロブ検出器を近似する。キーポイントは空間・スケールの両方における の局所極値であり、二次関数フィッティングによってサブピクセル精度まで精緻化され、コントラストとエッジ応答によってフィルタリングされる。ディスクリプタは局所勾度ヒストグラムから主方向を割り当て、 グリッド上の8ビン勾度ヒストグラム——128次元ベクトル——を構築し、照明不変性のために正規化する。SIFTは非常に高精度だが低速(CPU上で高解像度画像1枚あたり約1秒程度)であり、これがリアルタイムSLAMでの利用を制限している。
FASTはもう一方の極端に位置する。画素 がコーナーであるのは、半径3の円周上にある16画素のうち 個の連続した弧が、しきい値 以上すべて より明るい、あるいはすべて暗い場合である。高速化テストではまず4つの方位画素だけを確認し、3つ未満しか条件を満たさなければ はコーナーではないと判定する。FASTにはディスクリプタも向き・スケールもなく、ディスクリプタと組み合わせるべき検出プリミティブである。
ORBはリアルタイムSLAMがほぼ普遍的に採用した組み合わせである。輝度重心によってFASTに向きを付加する——パッチモーメントを とすると、向きは となる——そしてBRIEFのバイナリサンプリングパターンを だけ回転させることで回転不変性を持たせる(rBRIEF)。256ビットのディスクリプタは32バイトのコストで、マッチングには XOR と popcount 命令によって計算されるハミング距離を用いる——1フレームあたり数千の特徴を十分な速度でマッチングできる。スケール不変性は画像ピラミッド上で検出することで得られる。
AKAZEはガウシアンによるブラーの代わりに非線形拡散フィルタリングでスケール空間を構築し、境界付近でエッジを保存してより精度の高いキーポイントを得る。「加速(accelerated)」の部分はFast Explicit Diffusion(FED)であり、これによりコストが実用的な水準まで下がる。
検出からマッチングへ
検出はフロントエンドの半分にすぎず、幾何処理が消費するのはマッチングである。
- ブルートフォース: すべてのディスクリプタを他のすべてと比較する——浮動小数点ディスクリプタ(SIFT、SuperPoint)にはL2距離、バイナリ(ORB、BRIEF)にはハミング距離を用いる。**Loweの比率テスト(Lowe’s ratio test)**は曖昧なマッチをフィルタする。最近傍の距離が2番目に近い距離より十分小さい場合のみ受理する(例: )。
- 近似探索: FLANNは大規模マッチングのために、ランダム化kd木(浮動小数点ディスクリプタ)と局所性感応ハッシュ(バイナリディスクリプタ)を選択する。
- 幾何的検証: 生き残ったマッチにもなお外れ値が含まれる。エピポーラモデルやPnPモデルに対するRANSACが最終的なクリーンアップを行う。
すべてのフレームで検出とマッチングを行う代わりの手法としてトラッキングがある。連続フレーム間でキーポイントをピラミッド型Lucas-Kanade(KLT)で追跡し、フォワード-バックワードチェックで信頼できないトラックを除去する——より安価であり、多くのVIOシステムにおける標準的なフロントエンドである。
SLAMシステムが上乗せするもの
- 空間的分布: すべての特徴が1つのテクスチャの多い物体上に集まると精度が損なわれる。ORB-SLAM系のシステムは、画像グリッド上でセルごとの上限数を強制する(クアッドツリーによる精緻化を伴う)ことで、特徴がフレーム全体をカバーするようにしている。
- **非最大値抑制(Non-maximum suppression)**とレベルごとのしきい値により、検出器が同じコーナーで何度も発火することを防ぐ。
- ピラミッド管理: 特徴が検出されたピラミッドレベルは、その結果として得られる特徴点(landmark)が後に再検出可能なスケール範囲を定義する。
学習ベースの世代
学習型の検出器・ディスクリプタは、手作りの設計を再現性と識別性のために学習されたネットワークで置き換える。SuperPointは自己教師あり学習で訓練される。合成図形上で事前学習し、合成ホモグラフィ下で実画像に自己ラベル付け(「ホモグラフィック適応」)を行うことで微調整する。1つの共有エンコーダが検出器ヘッド(キーポイントスコアマップ)とディスクリプタヘッド(密なディスクリプタマップ)に供給される。R2D2は2つの別々のマップを予測する——再現性(repeatability)(この点が再度検出されるか)と信頼性(reliability)(そのディスクリプタは識別的か)——両方が高い点だけを残すことで、テクスチャのない領域や繰り返し模様の領域で有効に働く。これらは通常、後段でSuperGlueのような学習型マッチャーと組み合わせて使われる。
SLAMパイプラインにおいて、キーポイントは以降のすべての処理の原材料となる。初期化とエッセンシャル行列推定のための2D-2D対応、姿勢トラッキング(PnP)のための2D-3D対応、3D特徴点への三角測量、そしてループクロージングのためのbag-of-visual-wordsによる場所認識である。
SLAMにおける意義
特徴点ベース(間接的)SLAM——PTAMからORB-SLAM3にいたる主流パラダイム——は、完全にキーポイントの上に成立している。検出された特徴の品質、速度、分布が、システム全体の精度とロバスト性の上限を決める。検出器・ディスクリプタ間のトレードオフ(精度対Hz、バイナリ対浮動小数点ディスクリプタ、手作り対学習型)を理解することは、論文を読む上でも、自分の計算資源に合ったフロントエンドを選ぶという非常に実践的な作業においても不可欠である。