赞
踩
随机抽样一致算法(random
算法简介:RANSAC算法的基本假设是样本中包含正确数据(inliers,可以被模型描述的数据),也包含异常数据(outliers,偏离正常范围很远、无法适应数学模型的数据),即数据集中含有噪声。这些异常数据可能是由于错误的测量、错误的假设、错误的计算等产生的。同时RANSAC也假设,给定一组正确的数据,存在可以计算出符合这些数据的模型参数的方法。
基本思想描述:
数据分两种:有效数据(inliers)和无效数据(outliers)。偏差不大的数据称为有效数据,偏差大的数据是无效数据。如果有效数据占大多数,无效数据只是少量时,我们可以通过最小二乘法或类似的方法来确定模型的参数和误差;如果无效数据很多(比如超过了50%的数据都是无效数据),最小二乘法就失效了,我们需要新的算法
RANSAC的基本假设:
1、”内群”数据可以通过几组模型的参数来叙述其分别,而“离群”数据则是不适合模型化的数据
2、数据会受噪声影响,噪声指的是离群,例如从极端的噪声或错误解释有关数据的测量或不正确的假设
3、RANSAC假定,给定一组(通常很小)的内群,存在一个程序,这个程序可以估算最佳解释或最适用于这一数据模型的参数
概述:
1、在数据中随机选择几个点设定为内群
2、计算适合内群的模型
3、把其他刚才没有选到的点带入刚才建立的模型中,计算是否为内群
4、记下内群数量
5、重复以上步骤多次
6、比较哪次计算中内群数量最多,内群最多的那次所建的模型就是我们所要求的解
这里有几个问题:
1、一开始的时候我们要随机选择多少点
2、以及要重复多少次
算法:
伪代码的算法如下所示:
输入:
Data
Model
参考链接:http://blog.csdn.net/pi9nc/article/details/26596519
Best_model
Best_consensus_set
Best_error
iterations
best_model
best_consensus_set
best_error
while
maybe_inliers
maybe_model
consensus_set
for
if
将点添加到consensus_set
if
已经找到了好的模型,现在测试该模型到底有多好
better_model
this_error
if
我们发现了比以前好的模型,保存该模型直到更好的模型出现
best_model
best_consensus_set
best_error
增加迭代次数
返回
参数决定:
假设每个点是真正内群的概率是w:W
通常我们不知道w是多少,w的n次方是所选择的n个点都是内群的概率,1-w^n所选择的n个点至少有一个不是内群的概率,(1-w^n)^k表示重复k次都没有全部的n个点都是内群的概率
这边定算法跑k次以后成功的概率是p,那么,
1-p
P
所以如果希望成功率提高,p
应用:RASAC常被用在电脑视觉,例如对应点问题和估算立体摄影机双眼相对点的基本矩阵
优缺点:
RANSAC
缺点是它计算参数的迭代次数没有上限,如果设置迭代次数的上限,得到的结果可能不是最优的结果,甚至可能得到错误的结果。
RANSAC只有一定的概率得到的可信的模型,概率与迭代次数成正比。另一个缺点是它要求设置跟问题相关的阈值,
RANSAC职能从特定的数据集中估计出一个模型,如果存在两个(或多个)模型,RANSAC不能找到别的模型
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。