RANSAC 原理

来源:互联网 发布:中国最新cpi数据2017年 编辑:程序博客网 时间:2024/06/09 22:08

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
0 0