RANSAC

RANSAC(Random Sample Consensus,随机采样一致性)由Fischler与Bolles于1981年提出,是SLAM与多视图几何中占主导地位的鲁棒估计方法。它将一个参数化模型(本质矩阵、单应矩阵、相机位姿、平面等)拟合到被离群点——错误的特征匹配、遮挡、运动物体——污染的数据中,方法是反复从小规模随机样本中假设模型,并按一致性对其打分。

算法

  1. 均匀随机抽取一个包含 ss 个对应关系的最小样本 SS(ss 是确定该模型所需的最少数量:本质矩阵需要5点,单应矩阵需要4点,P3P需要3点,使用线性8点算法的基础矩阵需要8点)。
  2. 将模型 θS\theta_S 拟合到该样本。
  3. 统计内点:在误差阈值 ϵ\epsilon 内与 θS\theta_S 一致的数据点(例如Sampson距离或几个像素的重投影误差)。
  4. 重复 NN 次迭代;保留内点集最大的模型。
  5. 可选地对所有内点用最小二乘重新拟合模型(通常还会迭代这一重新拟合过程)。

关键洞见:即使离群点占50%,经过足够多次尝试后,一个全内点的小样本也会以合理的概率被抽到,而正确的模型所获得的一致性支持,会远远超过基于受污染样本拟合出的模型。

需要多少次迭代?

ww 为内点比例。一个包含 ss 个点的样本全为内点的概率是 wsw^s,因此 NN 个样本中至少有一个全内点的概率是

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点法本质矩阵5145\approx 145
8点法基础矩阵81177\approx 1177

迭代次数随样本量呈指数增长——这正是为什么在RANSAC内部,最小求解器(5点法E、P3P)比更大的线性求解器更受青睐的原因。

自适应RANSAC不会预先固定 NN:它根据目前找到的最优内点集重新估计 ww,重新计算 NN,并一旦为当前估计值抽取了足够多的样本就提前终止——在简单场景中通常所需迭代次数要少得多。

实践要点

对SLAM的意义

动手实践

相关条目