RANSAC(随机抽样一致性算法)的原理及其在 SIFT 特征点匹配中的应用

RANSAC(随机抽样一致性)算法由Fischler和Bolles提出,用于处理含有异常值的数据集,特别是在计算机视觉的匹配问题中。RANSAC通过随机选择子集来估计模型,通过比较模型与数据的适应度来剔除异常值。在SIFT特征点匹配中,RANSAC有助于找到最佳匹配模型,减少噪声干扰。算法的两个关键参数是阈值和迭代次数,需要根据具体应用进行设定。相比最小二乘法,RANSAC对异常值更鲁棒,但计算时间可能较长且需要设置特定阈值。
摘要由CSDN通过智能技术生成

RANSAC(随机抽样一致性算法)

1. OverView

RANSAC(RANdom SAmple Consensus, 译作 随机抽样一致性算法)是由Fischler和Bolles于1981年最先提出。它是根据一组包含异常数据的样本数据集,计算出数据的数学模型参数,得到有效样本数据的算法。
该算法在计算机视觉的匹配问题中(比如相机配准, 特征点匹配等)被用来寻找最佳的匹配模型。

2. RANSAC算法

对于一组观测数据和一个用于解释观测数据的参数化模型, 所以满足该模型的点为局内点,反之则为局外点。
RANSAC算法的输入是一组观测数据(往往含有较大的噪声或无效点),一个用于解释观测数据的参数化模型以及一些可信的参数。RANSAC通过反复选择数据中的一组随机子集来达成目标。被选取的子集被假设为局内点,并用下述方法进行验证:

  1. 有一个模型适应于假设的局内点,即所有的未知参数都能从假设的局内点计算得出。
  2. 用1中得到的模型去测试所有的其它数据,如果某个点适用于估计的模型,认为它也是局内点。
  3. 如果有足够多的点被归类为假设的局内点,那么估计的模型就足够合理。
    然后,用所有假设的局内点去重新估计模型(譬如使用最小二乘法),因为它仅仅被初始的假设局内点估计过。
  4. 最后,通过估计局内点与模型的错误率来评估模型。
    上述过程被重复执行固定的次数,每次产生的模型要么因为局内点太少而被舍弃,要么因为比现有的模型更好而被选用。

举一个具体的例子, 比如利用RANSAC进行 SIFT 特征点匹配。

  1. 在我们的匹配点中随机选择4对点。这四对叫做局内点或者内点,而其他的匹配点叫做局外点或者外点
  2. 根据4对内点得到内部的单应性矩阵
  3. 使用这个计算出的单应性矩阵测试所有其他外点,通过一个阈值将所有的外点分为两部分:
  • a 所有满足这个单应性的外点被归为是新的内点
  • b 而所有不满足的外点被归为新的外点
  1. 获取我们所有的内点(新的内点+旧的内点)并转到步骤2
  2. 只要没有更改或我们已经迭代步骤2-步骤4 k次,结束迭代。
    最终的单应矩阵将是我们想要的。
Given:
    data – a set of observations
    model – a model to explain observed data points
    n – minimum number of data points required to estimate model parameters
    k – maximum number of iterations allowed in the algorithm
    t – threshold value to determine data points that are fit well by model 
    d – number of close data points required to assert that a model fits well to data

Return:
    bestFit – model parameters which best fit the data (or nul if no good model is found)

iterations = 0
bestFit = nul
bestErr = something really large
while iterations < k {
    maybeInliers = n randomly selected values from data
    maybeModel = model parameters fitted to maybeInliers
    alsoInliers = empty set
    for every point in data not in maybeInliers {
        if point fits maybeModel with an error smaller than t
             add point to alsoInliers
    }
    if the number of elements in alsoInliers is > d {
        % this implies that we may have found a good model
        % now test how good it is
        betterModel = model parameters fitted to all points in maybeInliers and alsoInliers
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值