精匹配——RANSAC算法思想及优缺点
目录
前言
基于特征的图像匹配中会存在误匹配对,因此为提高匹配率,在粗匹配的基础上实现精匹配,可采用下面两种方法:

以下是本篇文章正对RANSAC的学习记录
一、RANSAC简介
RANSAC(RANdom SAmple Consensus随机采样一致性算法),是在一组含有“外点”的数据中,不断迭代,最终正确估计出最优参数模型的算法。
- 主要解决样本中的外点问题,最多可处理50%的外点情况。
- 内点:符合最优参数模型的点。
- 外点:不符合最优参数模型的点,一般指的数据中的噪声或无效点,比如说匹配中的误匹配对和估计曲线中的离群点。
- 外点检测算法
- 应用:在计算机视觉的匹配问题中广泛应用,以寻找最佳的匹配模型,达到去除误匹配对,实现精匹配的效果。
二、RANSAC基本思想
1.步骤
1. 在样本N中随机采样K个点
2. 对这K个点进行模型拟合
3. 计算其他点到该拟合模型的距离,并设置阈值,若大于阈值,为外点,则舍弃,小于阈值,为内点,统计内点个数。阈值:为经验值,由具体应用和数据集决定。
4. 然后以新的内点为基础,再次进行步骤2,得到新的拟合模型,迭代M次,选择内点数最多的模型,此时的模型为最优模型。
5. 也可以在此基础上,选择出内点数最多的模型,然后对它进行重新估计,估计的时候可以采用最小二乘法来拟合。
2.迭代次数的公式
RANSAC算法中需要进行M次的迭代过程,且迭代的次数也是可以进行估算的。
————————————————————
1、n数据中内点所占的比例(内点的概率p):

2、选取的K个点至少有一个是外点的概率:

3、因此就能得到迭代M次的情况下,选取点都是外点的概率,进而得到迭代M次中,至少有一次选取点k个点都是内点的概率,也就是正确模型的概率:z一般要求满足大于95%即可。

4、最终得到迭代次数M:
M = log(1-z)/log(1-p^k )
———————————————————
3.举例(拟合直线,拟合最佳单应性矩阵)
如下(示例1):
用RANSAC算法来拟合直线:
1、首先随机选取K=2个点,且两个点能拟合出一条直线

2、根据拟合直线,计算其他点到该拟合模型的距离,并设置阈值,其中绿色点为小于阈值的点,为内点,黄色的为外点,此时绿色内点为9。

3、然后通过此时的绿色内点,拟合出新的直线,再次计算该拟合新直线情况下的内点数目,此过程不断迭代,找到内点数最大的模型。

如下(示例2):
用RANSAC算法来寻找最佳单应性矩阵H
在特征匹配中,我们最终要得到一个3*3的单应性矩阵。通常令h33=1来归一化矩阵,因此单应性矩阵有8个自由度h11-h32,求这八个未知数,至少要包含四个匹配点对。

其中(x,y)表示目标图像角点位置,(x’,y’)为场景图像角点位置,s为尺度参数。
h33=1来归一化矩阵?
H单应性矩阵,描述两个平面的映射关系,平面中点的坐标是二维的,第三维取1,为了简单化,将h33=1,为最简单的非零值,来归一化矩阵。
——————
步骤:
通过SIFT算法已经进行了粗匹配,然后利用RANSAC算法来进精匹配。
1、首先在得到的匹配点中,随机选择4个匹配点对(不共线),其他匹配点为外点。
2、根据4对内点计算单应性矩阵。
3、根据此矩阵来测试其他匹配点(计算的是其他匹配点与该模型的投影误差),并设置阈值,若小于为新内点,若大于则为外点,也就是误匹配对,因此通过计算出的单应性矩阵,就能实现一次误匹配点的剔除。
4、将所有的内点统计进行内点更新,在此基础上再次进行步骤3,迭代M次,最终得到含有内点最多的模型,此时模型为最优模型,也就是我们最终所需要的单应性矩阵。
———
大体步骤确定后,我们还需要进行两个参数的确定,阈值和迭代次数。
阈值:经验值
迭代次数:根据上述迭代次数M公式计算得到
——
如何用寻找到的单应性矩阵H来测试该模型下的其他匹配点?
根据代价函数计算,代价函数最小的模型为最优模型。
根据统计的内点数目,数目最多的为最优模型。
三、最小二乘法
1、最小二乘法的主要思想
通过确定未知参数(通常是一个参数矩阵),来使得真实值和预测值的误差(也称残差)平方和最小,其计算公式为

其中 yi是真实值,yi^是对应的预测值。
下图中,红色为数据点,蓝色为最小二乘法求得的最佳解,绿色即为误差

图中有四个数据点分别为:(1, 6), (2, 5), (3, 7), (4, 10)。显然,最佳解(3, 7)
2、最小二乘解
-
上面介绍了最小二乘法的公式:误差平方和
-
如下是2-范数:
](/https://i-blog.csdnimg.cn/blog_migrate/b0122233f139f08c75e4492bab762888.png)
-
根据这两个式子,进行最小二乘解的分析:
-
已知有一个这样的方程组:Ax=b 其中A∈Rm×n ; x∈Rn×k, b∈Rm×k
-
因此根据最小二乘法公式,那么求解最小二乘的问题即可等价于:
-

-
因此:

-
对 x 求导:

-
解得(最小二乘解)


本文详细介绍了RANSAC算法的基本思想及其在图像匹配中的应用,对比了最小二乘法,探讨了算法优缺点,并提供了OpenCV实现示例。

4999

被折叠的 条评论
为什么被折叠?



