视觉SLAM之RANSAC算法用于消除图像误匹配的原理

转载 2018年04月15日 09:56:42

在基于特征点的视觉SLAM中,通常情况下,在特征匹配过程中往往会存在误匹配信息,使得计算获取的位姿精度低,易产生位姿估计失败的问题,因此,剔除这些错配点有很大的必要性。常会用到RANSAC算法进行消除两两匹配图像的误匹配点,如果只停留在应用的层面上很简单,直接调用opencv函数就行,看到效果时,感觉好神奇,到底怎么实现的啊,以前一直也没弄太明白,与图像结合的博客也比较少,在查阅了一些资料后,笔者似乎明白了一点,希望笔者的总结会对您的理解有帮助。

首先先介绍一下RANSAC算法(RANdom SAmple Consensus随机抽样一致)

算法的基本假设是:

(1)数据由“局内点”组成,例如:数据的分布可以用一些模型参数来解释;
(2)“局外点”是不能适应该模型的数据;
(3)除此之外的数据属于噪声。

局外点产生的原因有:噪声的极值;错误的测量方法;对数据的错误假设。

 

 

技术分享

 

 

 

算法核心:

拟合一直线。假设观测数据中包含局内点和局外点,其中局内点近似的被直线所通过,而局外点远离于直线。简单的最小二乘法不能找适应于局内点的直线,原因是最小二乘法尽量去适应包括局外点在内的所有点,相反,RANSA能得出一个仅仅用局内点计算出模型,并且概率还足够高,但是不能保证结果一定正确。

RANSAC通过反复选择数据中的一组随机子集来达成目标。被选取的子集被假设为局内点,并用下述方法进行验证:
    1.有一个模型适应于假设的局内点,即所有的未知参数都能从假设的局内点计算得出。
    2.用1中得到的模型去测试所有的其它数据,如果某个点适用于估计的模型,认为它也是局内点。
    3.如果有足够多的点被归类为假设的局内点,那么估计的模型就足够合理。
    4.然后,用所有假设的局内点去重新估计模型,因为它仅仅被初始的假设局内点估计过。
    5.最后,通过估计局内点与模型的错误率来评估模型。
这个过程被重复执行固定的次数,每次产生的模型要么因为局内点太少而被舍弃,要么因为比现有的模型更好而被选用。


RANSAC的优点:
 
能鲁棒的估计模型参数。例如,它能从包含大量局外点的数据集中估计出高精度的参数。
RANSAC的缺点:
计算参数的迭代次数没有上限;如果设置迭代次数的上限,得到的结果可能不是最优的结果,甚至可能得到错误的结果。RANSAC只有一定的概率得到可信的模型,概率与迭代次数成正比。另一个缺点是它要求设置跟问题相关的阀值。而且RANSAC只能从特定的数据集中估计出一个模型,如果存在两个(或多个)模型,RANSAC不能找到别的模型。
总之,在一组包含局外点的数据集中,采用不断迭代的方法寻找参数模型。

 

RANSAC算法用于消除图像误匹配原理:

RANSAC算法是寻找一个最佳单应性矩阵H,矩阵大小为3*3,目的是找到最优的参数矩阵,使得满足该矩阵的数据点个数最多,通常令技术分享,由于单应性矩阵有8个未知参数,所以需要8个线性方程求解,对应到点位置信息上,一组点对可以列出两个方程,则至少包含4组匹配点对。

                  技术分享

其中技术分享表示目标图像的角点位置,技术分享为场景图像角点位置。S为尺度参数。

RANSAC算法从匹配数据集中随机抽出4个样本并保证这四个样本之间不共线。计算出单应性矩阵矩阵,然后利用这个模型测试所有数据,并计算满足这个模型数据点的个数与投影误差(即代价函数)若此模型为最优模型,则对应的代价函数最小:

                  技术分享

算法步骤:

  1. 随机从数据集中随机抽出4个样本数据(此四个样本之间不共线)计算出变换矩阵H,记为模型M:、
  2. 计算数据集中所有数据与模型M的投影误差,若误差小于阈值,加入内点集I;
  3. 如果当前内点集元素个数大于最优内点集技术分享,则更新技术分享,同时更新迭代次数k;
  4. 如果迭代次数大于k,则退出:否则迭代次数加1,并重复上述步骤

注:迭代次数k在不大于最大迭代次数的情况下,是在不断更新而不是固定的。

技术分享

其中,p为置信度,一般取0.995,w为内点的比例,m为计算模型所需要的最少样本数=4.

转载自:http://www.mamicode.com/info-detail-1371158.html,非常感谢!

RANSAC去除误匹配算法

  • 2010年07月12日 16:26
  • 222KB
  • 下载

特征点匹配——使用基础矩阵、单应性矩阵的RANSAC算法去除误匹配点对

不管是我在之前的博文中提到的SIFT、ORB等算法,其实真正匹配的结果都不会特别好,一旦视角上的变化比较大或者出现之前图像中没有出现的区域,就很容易产生误匹配。但是在实际应用中这些误匹配的点并没有对最...
  • lhanchao
  • lhanchao
  • 2016-10-18 15:34:19
  • 9542

RANSAC算法实现去除误匹配并计算拼接矩阵-随笔

1.RANSAC算法实现去除误匹配并计算拼接矩阵流程 (1) 从样本集中随机抽选一个RANSAC样本,即4个匹配点对(至少4个匹配点对,才能计算出3*3变换矩阵); (2) 计算当错误...
  • u011028345
  • u011028345
  • 2017-10-31 14:17:01
  • 250

Opencv实现:SIFT特征提取+RANSAC剔除误匹配点

最近整理一下利用SIFT特征提取方法和RANSAC(随机抽样一致性方法)进行剔除无匹配点的内容,将实现过程进行记录。 程序注释的非常清楚了,新手也能很快看懂。...
  • liuhaitaowq
  • liuhaitaowq
  • 2016-09-11 14:24:23
  • 8384

SLAM入门之视觉里程计(1):特征点的匹配

SLAM 主要分为两个部分:前端和后端,前端也就是视觉里程计(VO),它根据相邻图像的信息粗略的估计出相机的运动,给后端提供较好的初始值。VO的实现方法可以根据是否需要提取特征分为两类:基于特征点的方...
  • BrookIcv
  • BrookIcv
  • 2017-12-20 22:06:45
  • 916

利用RobHess源码实现SIFT算法及RANSAC去错的图像特征提取匹配及去除错匹配

本文是在VS2010+Opencv2.4.9环境下实现! 首先下载RobHess利用opencv实现SIFT算法源码,在配置好opencv环境的vs2010中实现SIFT特征提取、匹配,在利用K-D树...
  • u011028345
  • u011028345
  • 2017-03-19 21:15:48
  • 508

ransac 剔除图像匹配中的误匹配点

  • 2011年04月23日 19:54
  • 629KB
  • 下载

【CS】尺度不变特征变换匹配算法SIFT(3):RANSAC剔除错误匹配点

尺度不变特征变换匹配算法SIFT(3) 直接通过SIFT特征提取的结果并不是非常乐观,存在比较多的错误匹配,那么为了剔除这些点,我们可以使用RANSAC方法。...
  • chentravelling
  • chentravelling
  • 2015-11-14 14:27:26
  • 3631

orbslam2-基础理论(五)ransac

在基于特征点的视觉SLAM中,通常情况下,在特征匹配过程中往往会存在误匹配信息,使得计算获取的位姿精度低,易产生位姿估计失败的问题,因此,剔除这些错配点有很大的必要性。常会用到RANSAC算法进行消除...
  • qq_18661939
  • qq_18661939
  • 2016-07-31 10:55:51
  • 3065

RANSAC算法剔除匹配误配点原理

  • 2010年10月22日 11:12
  • 564KB
  • 下载
收藏助手
不良信息举报
您举报文章:视觉SLAM之RANSAC算法用于消除图像误匹配的原理
举报原因:
原因补充:

(最多只允许输入30个字)