RANSAC

RANSAC (Random Sample Consensus) は、Fischler & Bollesによって1981年に導入され、SLAMとマルチビュー幾何学において支配的なロバスト推定手法である。パラメトリックモデル(essential matrix、homography、カメラの姿勢、平面、…)を、外れ値(誤った特徴マッチ、遮蔽、動く物体)によって汚染されたデータにフィッティングする。小さなランダムサンプルから繰り返しモデルを仮説として立て、合意によってスコア付けすることで実現する。

アルゴリズム

  1. ss個の対応点からなる最小サンプル SS を一様ランダムに引く(ss = モデルを決定する最小の数: essential matrixには5点、homographyには4点、P3Pには3点、線形8点法によるfundamental matrixには8点)。
  2. サンプルにモデル θS\theta_S をフィッティングする。
  3. インライアを数える。誤差閾値 ϵ\epsilon (例えば数ピクセルのSampson距離や再投影誤差)以内で θS\theta_S と整合するデータ点。
  4. NN回反復し、最大のインライア集合を持つモデルを保持する。
  5. 任意選択で、すべてのインライアに対して最小二乗法でモデルを再フィッティングする(そしてしばしば再フィッティングを反復する)。

重要な洞察: 外れ値が50%であっても、十分な試行の後には全インライアの小さなサンプルが合理的な確率で引かれ、正しいモデルは汚染されたサンプルにフィッティングされたモデルよりもはるかに多くの合意を集める。

反復回数はどれくらい必要か

インライア比を ww とする。ss点のサンプル1つが全インライアである確率は wsw^s であるため、NN個のサンプルの少なくとも1つが全インライアである確率は

P(success)=1(1ws)NP(\text{success}) = 1 - (1 - w^s)^N

P(success)1ηP(\text{success}) \geq 1 - \eta (例えば信頼度99%のために η=0.01\eta = 0.01)を要求すると、

N=logηlog(1ws)N = \frac{\log \eta}{\log(1 - w^s)}

が得られる。w=0.5w = 0.5η=0.01\eta = 0.01の場合の例:

ソルバーssNN
5点essential matrix5145\approx 145
8点fundamental matrix81177\approx 1177

反復回数はサンプルサイズに対して指数関数的に増大する — これがまさに、RANSACの内部で最小ソルバー(5点E、P3P)がより大きな線形ソルバーよりも好まれる理由である。

Adaptive RANSACNN を事前に固定しない。これまでに見つかった最良のインライア集合から ww を再推定し、NN を再計算し、現在の推定値に対して十分なサンプルが引かれた時点で早期に終了する — 通常、簡単な場面でははるかに少ない反復で済む。

実践上の注意点

SLAMにおける意義

ハンズオン

関連ノート