一、概念及算法框架
RANSAC是“RANdom SAmple Consensus(随机抽样一致)”的缩写。它可以从一组包含“局外点”的观测数据集中,通过迭代方式估计数学模型的参数。它是一种不确定的算法——它有一定的概率得出一个合理的结果;为了提高概率必须提高迭代次数。
RANSAC的基本假设是:
(1)数据由“局内点”组成,例如:数据的分布可以用一些模型参数来解释;
(2)“局外点”是不能适应该模型的数据;
(3)除此之外的数据属于噪声。
算法框架:
1.首先先随机假设一小组局内点为初始值。然后用此局内点拟合一个模型,此模型适应于假设的局内点,所有的未知参数都能从假设的局内点计算得出。
2.用1中得到的模型去测试所有的其它数据,如果某个点适用于估计的模型,认为它也是局内点,将局内点扩充。
3.如果有足够多的点被归类为假设的局内点,那么估计的模型就足够合理。
4.然后,用所有假设的局内点去重新估计模型,因为此模型仅仅是在初始的假设的局内点估计的,后续有扩充后,需要更新。
5.最后,通过估计局内点与模型的错误率来评估模型。
整个这个过程为迭代一次,此过程被重复执行固定的次数,(每次都要重现采样,估计模型)每次产生的模型有两个结局:
1、要么因为局内点太少,还不如上一次的模型,而被舍弃,
2、要么因为比现有的模型更好而被选用。
二、SLAM中的相机位姿估计
假设有一对2D点,可以通过对极几何恢复出相机的位姿。
对极几何约束为
x1和x2都是归一化平面上的坐标(不是像素坐标),
定义本质矩阵E,
则相机位姿估计的问题变成了以下两步:
1、根据匹配对的像素位置求出E或者F。
2、根据E或者F求取R和t。
E或F的求解通常使用八点法。
除了本质矩阵和基础矩阵,二视图几何中还存在单应矩阵,它描述了两个平面之间的映射关系,若场景中的特征点都落在同一平面上,则可以通过单应矩阵来估计相机的位姿。通过单应矩阵,可以直接得到图像坐标之间的关系。
其中:
同样可以先根据匹配点计算 H,然后将它分解以计算旋转和平移。
三、RANSAC的应用
RANSAC是一种算法,用来辅助求解或者使求解精度更高的方法,并不是直接能够求解位姿,它是一种思想。就是说解决问题的模型以及约束是问题本来就有的。RANSAC只是去除了一些错误匹配或者噪声(称为局外点)。
1、利用RANSAC计算基础矩阵
2、利用RANSAC计算单应矩阵
参考:https://blog.csdn.net/robinhjwy/article/details/79174914
《视觉SLAM十四讲》
https://blog.csdn.net/weixin_46877907/article/details/113881034
http://www.voidcn.com/article/p-anvzllki-dx.html