Covisibility graph

ORB-SLAMで顕著に導入された**共視グラフ(covisibility graph)**は、キーフレーム上の重み付き無向グラフである。

このグラフは、キーフレームがいつどこで作成されたかに関わらず、何が何を見ているかを符号化する。同じ視点から数分離れて撮影された2つのキーフレームは強く接続されるが、速い旋回中の連続する2つのキーフレームはほとんど接続されないこともある。これにより、共視性は時間やユークリッド距離よりも視覚マップの「近傍」概念としてはるかに優れたものとなる。

SLAMシステムは共視グラフを常時クエリする。

密接に関連する構造がエッセンシャルグラフである。キーフレームのスパニングツリーからなる、はるかに疎な部分グラフで、重みの高い共視エッジとループ閉じ込みエッジで補強されている。ORB-SLAMは密な共視グラフではなくエッセンシャルグラフに対してポーズグラフ最適化を実行し、完全な最適化の精度の大部分をわずかなコストで得ている。

形式的定義と維持

Pi\mathcal{P}_i をキーフレーム KiK_i によって観測されるマップ点の集合とする。2つのキーフレーム間の共視重みは単純に

wij=PiPj,w_{ij} = \left| \mathcal{P}_i \cap \mathcal{P}_j \right|,

であり、グラフはエッジ (i,j)(i, j)wijθw_{ij} \geq \theta の場合のみ保持する。これには姿勢は一切関与しない — 観測に対する純粋な帳簿処理であり — これが安価かつインクリメンタルである理由である。

実際には、各キーフレームは重みでソートされた近傍を保持するため、「上位NN個の最良の共視キーフレーム」(ローカルBAウィンドウの定義やループ候補の拡張に使用される)のようなクエリは O(1)O(1) の参照で済む。ORB-SLAMの設計における非対称な閾値に注目してほしい。共視グラフは比較的弱いエッジを保持する(θ15\theta \approx 15 共有点)。これはローカルマッピングが緩やかな近傍から利益を得るためである。一方エッセンシャルグラフは強いエッジのみを保持する(θ=100\theta = 100)。これはポーズグラフ最適化が少数の信頼できる制約を望むためである。

なぜ時間や距離ではないのか

代替手法の失敗モードを内面化しておく価値がある。時間的ウィンドウ(直近NNフレーム)は、カメラが場所を再訪するたびに破綻する。同じシーンを観測している古いキーフレームがローカルBAから除外され、マップがローカルに重複してドリフトする。メトリック近傍(半径rrメートル以内のキーフレーム)は向きによって破綻する — 半径メートル以内にあるが反対側の壁を向いているキーフレームは観測を共有せず、コストだけを増やして何も貢献しない — さらに、それ自体がドリフトしている姿勢推定に依存する。共視性は、近傍を観測空間で定義することでこの両方を回避する。すなわち、同じ幾何を制約する測定を持つキーフレームだけであり、これはまさに良条件な問題のためにローカルBAが必要とする集合である。

よくある落とし穴

SLAMにおける意義

共視グラフは、特徴ベースSLAMがスケールするためのデータ構造である。ローカルBAのコストを制限し、マップ点探索を絞り込み、ループ閉じ込み後の高速な大域補正のための疎な骨格(エッセンシャルグラフ)を提供する。ORB-SLAMで導入されたこの構造は、ORB-SLAM2/3とその多くの派生を含む、実質的にその後のすべてのキーフレームベースシステムのマップ管理に影響を与えた。

関連ノート