随机抽样一致算法(RANdom SAmple Consensus),简称RANSAC算法 ,采用迭代的方式从一组包含离群的被观测数据中估算出数学模型的参数。其广泛应用在计算机视觉领域和数学领域,例如直线拟合、平面拟合、计算图像或点云间的变换矩阵、计算基础矩阵等方面。
RANSAC算法基本思想:
-
从数据集中随机选出一组局内点(其数目要保证能够求解出模型的所有参数),计算出一套模型参数。
-
用得到的模型去测试其他所有的数据点,如果某点的误差在设定的误差阈值之内,就判定其为局内点,否则为局外点,只保留目前为止局内点数目最多的模型,将其记录为最佳模型。
-
重复执行1,2步足够的次数(即达到预设的迭代次数)后,使用最佳模型对应的局内点来最终求解模型参数。
-
最后可以通过估计局内点与模型的错误率来评估模型。
RANSAC的优点:是能鲁棒的估计模型参数。例如,它能从包含大量局外点的数据集中估计出高精度的参数。
RANSAC的缺点:计算参数的迭代次数没有上限,如果设置迭代次数的上限,得到的结果可能不是最优的结果,甚至可能得到错误的结果。
RANSAC算法用于消除图像误匹配原理:
是利用RANSAC算法来寻找一个最佳单应性矩阵,矩阵大小为3*3,目的是找到一个最优的参数矩阵,使得满足该矩阵的数据点数最多。
RANSAC算法是从匹配数据集中随机抽取四个样本并保证这四个样本之间不共线,寻找一个最佳单应性矩阵H,矩阵大小为3*3,目的是找到最优的参数矩阵,使得满足该矩阵的数据点个数最多,通常令,由于单应性矩阵有8个未知参数,所以需要8个线性方程求解,对应到点位置信息上,一组点对可以列出两个方程,则至少包含4组匹配点对。
其中表示目标图像的角点位置,
为场景图像角点位置。S为尺度参数。
RANSAC算法从匹配数据集中随机抽出4个样本并保证这四个样本之间不共线。计算出单应性矩阵,然后利用这个模型测试所有数据,并计算满足这个模型数据点的个数与投影误差(即代价函数)若此模型为最优模型,则对应的代价函数最小:
算法步骤:
- 随机从数据集中随机抽出4个样本数据(此四个样本之间不共线)计算出变换矩阵H,记为模型M:、
- 计算数据集中所有数据与模型M的投影误差,若误差小于阈值,加入内点集I;
- 如果当前内点集元素个数大于最优内点集
,则更新
,同时更新迭代次数k;
- 如果迭代次数大于k,则退出:否则迭代次数加1,并重复上述步骤
注:迭代次数k在不大于最大迭代次数的情况下,是在不断更新而不是固定的。
其中,p为置信度,一般取0.995,w为内点的比例,m为计算模型所需要的最少样本数=4.
PLUS:
其中有一个重要的概念:单应性(Homography)变换。可以简单的理解为它用来描述物体在世界坐标系和像素坐标系之间的位置映射关系。对应的变换矩阵称为单应性矩阵。在上述式子中,单应性矩阵定义为:
其中,M是内参矩阵
从单应矩阵定义式子来看,它同时包含了相机内参和外参。在进一步介绍相机标定知识之前,我们重点来了解一下单应性,这有助于深入理解相机标定。因为在计算机视觉领域,单应性是一个非常重要的概念。
更加详细的解释可以参照博文:单应性矩阵理解和求解
ref:
https://blog.csdn.net/Hu_weichen/article/details/81304701
http://www.mamicode.com/info-detail-1371158.html
https://blog.csdn.net/zhuquan945/article/details/79798721