RANSAC-随机采样一致

一、RANSAC算法

RANSAC(Random Sample Consensus,随机抽样一致性算法)是一种迭代方法,用于从一组包含大量“外点”(不符合模型的数据点)的数据中估计数学模型的参数。它特别适用于同时包含“内点”(符合模型的数据点)和“外点”的数据集。主要用于解决从一组包含大量噪声和异常值(即“外点”)的数据中估计数学模型参数的问题。这种算法特别适用于那些“内点”数量相对较少,但足以描述整体数据趋势的场景。内点是指那些符合模型假设的数据点,而外点则是不符合模型的数据点,可能是由测量错误、错误的数据记录或数据中的异常现象引起的。

二、应用场景

  • 直线拟合:在二维平面上,从包含噪声的数据点中拟合出一条最佳直线。
  • 平面拟合:在三维空间中,从包含噪声的数据点中拟合出一个最佳平面。
  • 基本矩阵和单应性矩阵估计:在计算机视觉中,用于估计两幅图像之间的基本矩阵或单应性矩阵,这是进行图像拼接、立体视觉和三维重建等任务的基础。
  • 运动估计:在视频处理或机器人导航中,通过匹配连续帧之间的特征点来估计相机的运动。
  • 数据清洗:通过识别并去除数据集中的外点,提高数据的整体质量。

三、算法原理

  1. 给定一个数据集 S S S,从中选择建立模型所需的最小样本数(例如直线最少由两个点确定,所以最小样本数是2,而平面可以根据不共线三点确定,所以最小样本数为3),记选择数据集为 S ′ S' S
  2. 使用选择的数据集 S ′ S' S计算得到一个数学模型 M M M
  3. 用计算的模型 M M M去测试数据集中剩余的点,如果测试的数据点在误差允许的范围内(计算所有点到这个模型的误差(或距离)),如果某个点的误差小于某个预设的阈值,则将该数据点判为内点(inlier),否则判为外点(outlier),记所有内点组成的数据 S ∗ S^* S,表示为 S S S的一致性集合;
  4. 比较当前模型和之前推出的最好的模型的“内点”的数量,记录最大“内点”数量时模型参数和“内点”数量;
  5. 重复1-4步,直到迭代结束或者当前模型已经足够好了(“内点数目大于设定的阈值”)。

这里的迭代次数可以通过理论推算获得。在一定的置信概率下,其最小样本数 S S S与至少取得一个良性采样子集的概率P满足:
P = 1 − ( 1 − t S ) m P=1-(1-t^S)^m P=1(1tS)m
其中, t = 内点数 内点数 + 外点数 t=\frac{内点数}{内点数+外点数} t=内点数+外点数内点数表示为数据集合中内点概率, N N N是计算模型参数需要的最小数据量。
因此,在基本子集的在迭代次数内,至少有一次采样使得采样子集内的 N N N个点均为内点,从而保证在迭代次数中,至少存在一次采样能够取得目标函数的最大值,因此终止循环条件应满足:
m ≥ ln ⁡ ( 1 − P ) ln ⁡ ( 1 − 1 N ) m≥\frac{\ln{(1-P)}}{\ln{(1-1^N)}} mln(11N)ln(1P)

四、算法缺点

  • 计算成本高:由于需要多次迭代和计算内点,对于大数据集来说,计算成本可能很高。
  • 参数敏感性:算法的性能可能受到迭代次数、内点阈值等参数的影响。
  • 概率性:算法得到的模型不一定总是最优的,因为结果取决于随机选择的样本子集。

五、代码实现

Do RANSAC
Wait...

六、参考

  1. https://mp.weixin.qq.com/s/dUu2YfEPiZTrR2A3XnrNfQ
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值