RANSAC算法学习

1 算法简介

       RANSAC(Random Sample Consesus)中文翻译为随机采样一致性,是利用一组包含异常数据的样本数据集计算得到数学模型参数的方法。

       若我们已知一个数据的数学模型,然后通过采集数据的方式计算模型参数。采集的数据中存在正确数据(inliers,可以被模型描述的数据)和异常数据(outliers,不符合模型的数据,噪声)。我们可以利用RANSAC算法得到不错的模型参数,且噪声对求解结果的影响比较小。

2 数学原理

       RANSAC的数学原理如下:对于数量为N的样本集,其中正确数量为M,则每一次获取到正确数据的概率p=M/N,计算模型参数需要K个数据,则一次性得到K个正确数据的概率为p^K(概率很低);反之至少存在一个错误数据的概率为(1-p^K)。若重复抽取L次,则L组数据中都存在错误数据的概率为(1-p^K)^L,注意这里当L足够大时,这个概率就会变得很小,也就意味着L组数据中至少有一组正确数据的概率为1-(1-p^K)^L,会变得足够大。直观解释就是抽取次数越多,抽到一组正确数据的概率就会越大。

       一般RANSAC的实现代码中有一个输入参数称为置信度P,P=1-(1-p^K)^L,我们可以通过P反算得到抽取次数L,L=log(1-P)/log(1-p^K)。

3 算法流程

       不同问题对应的数学模型不同,因此在计算模型参数时方法必定不同,RANSAC的作用不在于计算模型参数,而是提供更好的输入数据(样本)。RANSAC的基本流程如下。

step1.从样本集中随机选取一组样本,计算得到模型参数

step2.判断模型参数的质量(计算符合该模型的样本数量,数量越多越好;计算所有点与该模型实际的“偏离”,“偏离”越小越好)

step3.重复上述步骤,记录质量最好的模型;满足迭代条件时退出(达到迭代次数)

4 优缺点

       算法优点在于能够鲁棒地估计得到模型参数,对噪声具有一定容忍度;缺点在于要求数学模型已知,且只是在统计意义上得到可靠地参数,不保证结果的正确性。

5 应用

       计算机视觉中RANSAC经常用于多视图间计算基本矩阵或者单应矩阵的计算。



猜你喜欢

转载自blog.csdn.net/lwx309025167/article/details/80590549