RANSAC 原理

RANSAC, Random Sample Consensus(随机抽样一致算法)是一个通用的鲁棒估计算法,由Fischler和Bolles提出文献

算法原理很简单,如图:
算法

现以平面点集拟合直线为例进行说明。已知点集 xi,yi,i n ,估计直线 y=kx+b
根据RANSAC算法思想,得到如下步骤:

  1. 随机地从 xi,yi,i n 中选择2个点,得到一条直线L1;
  2. 计算其它点到直线L1的距离,确定距离小于阈值 Td 的点集 Si
  3. 如果 Si 中点的个数大于阈值 Tn ,则该直线L1即为所求;
  4. 如果 Si 中点的个数小于阈值 Tn ,选择新的2个点,重复上述过程;
  5. 经过 N 次重复后,选择具有最多点的个数的点集Si,其对于的直线即为所求。

    直线拟合

三个问题:

  • 什么是距离阈值?
    我们希望选择的距离阈值 t 使点为内点的概率是α。该计算需要知道内点到模型距离的概率分布。实际中距离阈值通常靠经验选取,但是,如果假定测量误差为均值为0,标准差为 σ 的高斯分布,那么 t 的值可以计算出来。

距离阈值

  • 采样多少次为宜?
    尝试每个可能的样本通常在计算上不可行也不必要。只要采样次数N足够大,保证由s个点组成的随机样本中至少有一次没有野值点的概率是 p 。通常,p=0.99。假定 w 是任意选择一个数据点为内点的概率,那么,ϵ=1w是其为野值点的概率,从而至少需要N次选择,每次 s 个点,其中(1ws)N=1p, 得到 N=log(1p)/log(1(1ϵ)s)

采样

  • 一致集多大为宜?
    根据经验,给定野值的假定比率后,如果一致集大小接近期望属于该数据集的内点数时迭代就停止,即对 n 个数据,T=(1ϵ)n.对于直线拟合的例子, ϵ 的保守估计是 ϵ=0.2 ,因此 T=(10.2)12=10
posted @ 2017-04-26 17:54  Louie-Liu  阅读(635)  评论(0编辑  收藏  举报