視覚オドメトリとVisual SLAM
カメラ映像だけで自己位置を求める仕組みと、単眼カメラが必ず陥るスケールドリフトの正体、ステレオ・RGB-Dによる解決策を原理から整理。
- 1.視覚オドメトリ(VO)は連続フレーム間の対応点や輝度勾配から回転・並進を逐次推定する。特徴点ベースは対応点を明示的にマッチングし、直接法は画素の輝度誤差を直接最小化する。
- 2.単眼カメラは奥行きを直接観測できずスケールが不定で、フレームごとの誤差が累積してスケールドリフトを起こす。ステレオ・RGB-Dは三角測量や深度センサで絶対スケールを直接得るためこの弱点を持たない。
- 3.Visual SLAMはVOにループクロージャとバンドル調整を加え、地図の大域的な一貫性を保つことで累積誤差そのものを補正する点がVOと本質的に異なる。
カメラ映像から自己運動を求めるという問題
移動ロボットや自動運転車が自分の位置と姿勢(合わせて自己姿勢、pose)を知る手段として、車輪のエンコーダやIMU(慣性計測装置)による推測航法がありますが、車輪は滑り、IMUは積分誤差が急速に蓄積します。これに対し視覚オドメトリ(Visual Odometry、VO)は、カメラが撮る連続画像だけから、フレーム間でカメラ自身がどれだけ回転・並進したかを逐次推定する手法です。名前の「オドメトリ」は本来オドメーター(走行距離計)由来で、車輪の代わりに画像を距離計として使う発想です。
VOが解く問題を整理すると、時刻 t-1 と t の2枚の画像から、カメラ座標系の回転行列 R と並進ベクトル t を求め、これを逐次連結してカメラの軌跡(トラジェクトリ)を復元することになります。この定式化はロボット工学に特有の課題を持ちます。エンコーダやIMUと違い外界の見た目そのものを情報源にするため、テクスチャの乏しい壁面や動く物体、照明変化に弱く、逆に地図(ランドマーク)情報と結びつけられるため、後述のSLAMへ自然に拡張できるという特徴があります。
特徴点ベース法と直接法
VOの実装方式は大きく2系統に分かれます。
| 観点 | 特徴点ベース法 | 直接法 |
|---|---|---|
| 使う情報 | コーナーや局所特徴点(ORB, SIFT等)とその記述子 | 画素の輝度値そのもの |
| 対応付け | 記述子の距離でマッチング後、外れ値をRANSACで除去 | 明示的なマッチングをせず輝度誤差を直接最小化 |
| 最適化の目的関数 | 再投影誤差(画像上の距離) | 測光誤差(輝度の差) |
| 得意な場面 | テクスチャが疎、大きな視点変化 | テクスチャが密、微小な動き |
| 弱点 | 特徴点抽出・記述のコストと繰り返し模様での誤対応 | 照明変化に敏感、初期値依存で局所解に陥りやすい |
特徴点ベース法(indirect method)は、各フレームでコーナー検出器や学習ベースの検出器から特徴点を抽出し、記述子(ORBやSIFTなど)で対応点をマッチングします。マッチングにはアウトライア(誤対応)が混じるため、RANSAC(Random Sample Consensus)で幾何拘束に反する対応を除去し、残った対応点から再投影誤差(推定した3次元点をカメラへ再投影した画像座標と、実際に観測した特徴点座標の差)を最小化して R, t を求めます。2視点間のみなら、対応点の性質(同じ3次元点をエピポーラ幾何で拘束する関係式)を利用したエッセンシャル行列の分解でも解けます。
直接法(direct method)は特徴点抽出という中間表現を経由せず、2枚の画像間で対応する画素の輝度が一致するはずという仮定(輝度恒常性)のもと、カメラ姿勢を変数として測光誤差(photometric error)を直接最小化します。
特徴点ベース法の目的関数(再投影誤差の最小化):
min_{R,t} Σᵢ ‖ pᵢ - π(R, t, Xᵢ) ‖²
pᵢ : 観測された特徴点の画像座標
Xᵢ : 対応する3次元点
π(・) : カメラ姿勢 R,t のもとでの3次元点の画像への投影
直接法の目的関数(測光誤差の最小化):
min_{R,t} Σᵢ ‖ I₂( π(R, t, Xᵢ) ) - I₁(pᵢ) ‖²
I₁, I₂ : 時刻1, 2の画像の輝度関数
直接法は特徴点抽出・記述のコストを避けられ、コーナーのない画素(エッジや弱いテクスチャ)も利用できるため密な、あるいは半密な地図を作りやすい一方、輝度恒常性の仮定が崩れる照明変化や自動露出補正に弱く、目的関数が非凸で初期値が悪いと局所解に落ちる問題があります。特徴点ベース法はマッチングとRANSACの分だけ計算コストが高いですが、外れ値除去の枠組みが確立しており、大きな視点変化やループ検出との相性が良いという実務上の利点があります。
特徴点ベース法・直接法のどちらも、最終的には R, t(と直接法では3次元点の逆深度なども)を変数とする非線形最小二乗問題に帰着し、ガウス・ニュートン法やレーベンバーグ・マーカート法で反復的に解きます。違いは目的関数を画像座標空間で作るか(再投影誤差)、輝度空間で作るか(測光誤差)という点に集約されます。
単眼カメラの弱点: スケールドリフト
VOの原理的な弱点として最も重要なのがスケールドリフトです。単眼(モノキュラー)カメラは1つの視点しか持たないため、1枚の画像だけからは対象までの絶対的な奥行き(スケール)を測れません。2フレーム間の並進 t はエッセンシャル行列の分解などから方向は求まっても、大きさは定数倍の不定性(スケール不定性)を持ちます。つまり「1メートル進んだのか10メートル進んだのか」を単眼画像だけでは区別できません。
この不定性は各フレームペアごとに独立に生じるため、軌跡全体を連結すると、フレームごとに割り当てるスケールがわずかにずれていき、時間とともに誤差が積み重なっていきます。これがスケールドリフトです。回転・並進の推定誤差自体も逐次連結で蓄積しますが、単眼特有のスケールドリフトはそれに輪をかけて、軌跡の形状は概ね正しいのに全体の大きさが伸び縮みするという特徴的な誤差を生みます。
スケール不定性が生じる理由(単眼2視点):
観測できるのは方向のみの並進ベクトル t̂ = t / ‖t‖
実スケール ‖t‖ は画像上の視差だけからは復元不能
→ 各フレームで独立にスケールを仮定するしかない
→ 仮定のズレがフレームをまたいで累積 = スケールドリフト
一般的な累積誤差(ドリフト)はどんなオドメトリにも起きますが、スケールドリフトは単眼VOに固有です。ステレオやIMUなど絶対スケールの情報源を持たない限り、単眼VOの軌跡は理論上どれだけアルゴリズムを洗練させても正しい絶対スケールを保証できません。実務では別途スケール推定(既知の物体サイズ、地面までの高さ、IMUとの融合など)を組み合わせる必要があります。
ステレオ・RGB-Dによる解決
スケールドリフトの根本原因は「1視点だけでは奥行きが求まらない」ことなので、解決策は奥行きを直接観測できるセンサ構成に変えることです。
ステレオカメラは既知の基線長(左右カメラ間の距離)を用いて、同一時刻の左右画像間の視差から三角測量で各点の絶対的な奥行きを直接計算できます。基線長という物理的な長さの基準があるため、フレームごとの3次元点群やカメラの並進量が最初から実スケールで得られ、スケール不定性そのものが発生しません。RGB-Dカメラ(構造化光やToF方式の深度センサを搭載)も同様に、各画素の深度を直接計測するためスケールが確定します。
| 方式 | 奥行きの取得 | スケール | 主な弱点 |
|---|---|---|---|
| 単眼カメラ | 三角測量できない(単一視点) | 不定、ドリフトが蓄積 | 屋内外を問わず動くが絶対スケールが取れない |
| ステレオカメラ | 既知の基線長から三角測量 | 最初から絶対スケール | 基線長に比例した有効測距レンジの制約、キャリブレーションが必須 |
| RGB-D | 深度センサが直接計測 | 最初から絶対スケール | 屋外の強い外光や反射面に弱く測距レンジが短い |
もっとも、ステレオも基線長に対して対象が遠すぎると視差が小さくなりすぎて奥行き推定の精度が落ちるため、有効な測距レンジは基線長に依存します。RGB-Dは屋内近距離で高精度な一方、赤外線投光方式は日照下や透明・鏡面物体で機能しないという制約があります。実用上は、これらに慣性センサを組み合わせた視覚慣性オドメトリ(VIO)で、瞬間的な高速運動への追従とスケールの安定化を両立させる構成も広く使われます。
Visual SLAMとVOの本質的な違い
Visual SLAM(Simultaneous Localization and Mapping)はVOを内部要素として含みますが、目的が異なります。VOは直近フレーム間の相対運動を逐次求めて連結するだけなので、一度生じた誤差は原理的に消えず、軌跡は際限なくドリフトし続けます。Visual SLAMはこれに加えて、過去に訪れた場所へ戻ったことを認識するループクロージャ(loop closure)検出と、認識した閉路の拘束を使って軌跡と地図全体を同時に補正するバンドル調整(bundle adjustment、複数フレームの姿勢と3次元点を同時に最適化する非線形最小二乗)を備えます。
VO : 直近フレーム間の相対姿勢を逐次連結するのみ
→ 誤差は消えず単調に蓄積し続ける
V-SLAM: VOに加えて
1) ループクロージャ検出(同じ場所への再訪を認識)
2) 大域的なバンドル調整/ポーズグラフ最適化で
軌跡・地図全体の一貫性を再補正
→ 閉路を検出できれば蓄積誤差そのものを縮小できる
IMUのみの推測航法や車輪オドメトリが積分誤差で急速に破綻するのに対し、Visual SLAMは外界のランドマークという絶対的な参照を使うため誤差の増大が緩やかで、かつループクロージャで補正可能という点が、ロボットの自己位置推定における中核的な価値です。実機ではこれを運動学的拘束や車輪オドメトリ、IMUと融合するローカライゼーションのパイプラインに組み込むのが一般的です。
まとめ
視覚オドメトリは連続画像から自己運動を逐次推定する手法で、対応点を明示的にマッチングする特徴点ベース法と、輝度誤差を直接最小化する直接法に大別されます。単眼カメラは奥行きの絶対スケールを原理的に観測できず、フレームごとのスケール仮定のズレが累積するスケールドリフトを避けられません。これはステレオカメラの三角測量やRGB-Dの直接測距のように、絶対スケールを最初から取得できるセンサ構成を選ぶことで解消できます。さらにVisual SLAMは、VOが持つ「誤差が消えず蓄積し続ける」という限界に対し、ループクロージャ検出とバンドル調整によって大域的な一貫性を回復する点でVOと本質的に異なります。これらの原理の理解は、ロボットの自己位置推定パイプラインでどのセンサ構成とアルゴリズムを選ぶべきかを判断するための基盤になります。
ロボティクス Article
視覚オドメトリとVisual SLAMを実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
Visual SLAM
比較で見る軸
難易度: advanced / カテゴリ: ロボティクス / タグ数: 6
導入後に効く点
単眼カメラは奥行きを直接観測できずスケールが不定で、フレームごとの誤差が累積してスケールドリフトを起こす。ステレオ・RGB-Dは三角測量や深度センサで絶対スケールを直接得るためこの弱点を持たない。
先に潰すリスク
用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。
- 難易度
- advanced
- カテゴリ
- ロボティクス
- タグ数
- 6
判断チェックリスト
- 自社の用途が「Visual SLAM / 視覚オドメトリ」に近いか確認する。
- 強みである「視覚オドメトリ(VO)は連続フレーム間の対応点や輝度勾配から回転・並進を逐次推定する。特徴点ベースは対応点を明示的にマッチングし、直接法は画素の輝度誤差を直接最小化する。」が本当に評価軸になるか確認する。
- 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。