1. 算法介绍
-
可以从一组包含“局外点”的观测数据集中,通过迭代方式估计数学模型的参数。它是一种不确定的算法――它有一定的概率得出一个合理的结果;为了提高概率必须提高迭代次数。
-
最小二乘法不能找到有局外点的直线,原因是最小二乘法尽量去适应包括局外点在内的所有点。
2.概述
RANSAC通过反复选择数据中的一组随机子集来达成目标。被选取的子集被假设为局内点,并用下述方法进行验证:
1.首先我们先随机假设一小组局内点为初始值。然后用此局内点拟合一个模型,此模型适应于假设的局内点,所有的未知参数都能从假设的局内点计算得出。
2.用1中得到的模型去测试所有的其它数据,如果某个点适用于估计的模型,认为它也是局内点,将局内点扩充。
3.如果有足够多的点被归类为假设的局内点,那么估计的模型就足够合理。
4.然后,用所有假设的局内点去重新估计模型,因为此模型仅仅是在初始的假设的局内点估计的,后续有扩充后,需要更新。
5.最后,通过估计局内点与模型的错误率来评估模型。
整个这个过程为迭代一次,此过程被重复执行固定的次数,每次产生的模型有两个结局:
1、要么因为局内点太少,还不如上一次的模型,而被舍弃。
2、要么因为比现有的模型更好而被选用。
4.算法优缺点
-
其实核心就是随机性和假设性。随机性用于减少计算了,那个循环次数就是利用正确数据出现的概率。所谓的假设性,就是说随机抽出来的数据我都认为是正确的,并以此去计算其他点,获得其他满足变换关系的点,然后利用投票机制,选出获票最多的那一个变换。
-
RANSAC的优点是它能鲁棒的估计模型参数。
-
RANSAC的缺点是它计算参数的迭代次数没有上限
-
RANSAC的另一个缺点是它要求设置跟问题相关的阀值。
-
RANSAC只能从特定的数据集中估计出一个模型,如果存在两个(或多个)模型,不能找到别的模型。
5.应用
- RANSAC算法用于求解立体摄像机的基础矩阵
- 在SLAM中,经常被用于虑除误匹配
来源:51CTO
作者:酸菜余
链接:https://blog.csdn.net/weixin_43821376/article/details/100655999