计算机视觉中算法 RANSAC

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机视觉中算法 RANSAC相关的知识,希望对你有一定的参考价值。

参考技术A

RANSAC 主要是用于处理 外点数 (outline) 比较多情况下来搜索一条直线或进行模型参数拟合。从 RANSAC 全名字面意思是随机采样一致性。是一种非常简单且有效估计模型参数的方法。不仅限于直线模型的参数,在 SLAM 通过对比前后量帧图像上特征点间关系可以计算出摄像机的外参数,从而计算运动轨迹并生成稀疏点云。

对于RANSAC算法来说一个基本的假设就是数据是由 内点 外点 组成的。

同时 RANSAC 假设:在给定一组含有少部分 内点 的数据,存在一个程序可以估计出符合 内点 的模型。

通常会有如下几个步骤

如图

到此算完成一次迭代,重复上面的迭代记录小每次迭代选择点后绘制所得到的投票数,投票数最大所对应的直线模型就是我们要找到的直线

从上面求解过程,可以发现迭代次数 N 和内点率 t 或者理解为外点率 e 都可以这些参数确定是比较困难的,可以感觉经验进行来设置这些参数,

通常我们还会设定一个阈值,这个阈值是关于投票数的阈值,也就是最少投票数值,计算出直线中投票数最大的直线的投票数量还需要大于这个最少投票数才可以。其实 RANSAC 输出一个一条投票数最多且大于事先设定好阈值的直线模型参数,也可以是多条投票数大于最小投票(阈值)的多条直线。

通常我们对这些点的外点率是一无所知的,那么在这种情况下应该如何处理呢?
首先将迭代次数 N 设置无穷大,因为现在对外点率一无所知,所以也就没办法设置 N。所以真实迭代次数 sample_count 通常都会比 N 小

接下来就是将 sample_count 增加 1 然后重复上面步骤,在下一次迭代中 N 就不再是无穷大而是用 N1 来 如果在下一次迭代中计算 d 内点数量要比上一次高就保留本次 d 以及计算得到 N1 而舍弃上一次的计算得到 N1 。

图像配准就是找到一幅图像像素到另一幅图像像素间的空间映射关系。这些图像可以是不同时间(多时间配准),不同传感器在不同地方拍摄(多模式配准)。这些图像之间的空间关系可以是刚性 (平移和旋转),仿射(例如剪切),单应性(或复杂的大变形模型)。

这是一个三维重建必用的算法,如果在三维重建不用 RANSAC 就说明你做的还不算好。帮助我们排序一些噪音点还是outline 的点。我们以拟合直线为例讲解 RANSAC 我们随机地挑选两个点作为模型,然后看有多少点 inline,我们在随意找两个点来作为模型,我们通过评估(投票形式)来找出最优模型,但是这本模型并不是最优模型而是我们要,随意选择最少 x 个样本,x 个数取决于你要拟合模型,如果是直线就是 2 个点,平面需要3 点。然后计算有多少点和模型拟合。直到找到一个模型其中 inline 样本点是最多的。然后在拟合一次就可以得到我们想要点。

PCL 平面拟合——RANSAC

文章目录

一、基本思想

随机抽样一致性算法RANSAC(Random sample consensus)是一种迭代的方法,从一系列包含有离群值的数据中计算数学模型参数的方法。RANSAC算法本质上由两步(获取随机样本,判断一致性)组成,不断进行循环:

  • 从输入数据中随机选出能组成数学模型的最小数目的元素,使用这些元素计算出相应模型的参数。
  • 检查所有数据中有哪些元素能符合第一步得到的模型,超过错误阈值的元素认为是离群值(outlier),小于错误阈值的元素认为是内部点(inlier)。

这个过程重复多次,选出包含点最多的模型即得到最后的结果。

以上是关于计算机视觉中算法 RANSAC的主要内容,如果未能解决你的问题,请参考以下文章

计算机视觉基本原理——RANSAC

计算机视觉图像映射与全景拼接

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

openCV中的findHomography函数分析以及RANSAC算法的详解

学习了哪些知识,计算机视觉才算入门

计算机双目视觉视觉角匹配算法