RANSAC算法理解与应用

RANSAC 思路

RANSAC核心思想就是随机性和假设性,随机性用于减少计算,循环次数是利用正确数据出现的概率。而假设性,就是说随机抽出来的数据都认为是正确的,并以此去计算其他点,获得其他满足变换关系的点,然后利用投票机制,选出获票最多的那一个变换。

具体的流程:
1、在可以有(也可以没有,主要看应用场景)条件限制(比如选的子集里的点不能过远等)的情况下,随机选取子集,并假设为局内点。子集的大小,主要取决于要拟合模型的复杂度。
2、用局内点拟合一个模型,此模型适应于假设的局内点,所有的未知参数都能从假设的局内点计算得出。
3、 用2中得到的模型去测试整个数据中其他数据,如果某个点适用于估计的模型,认为它也是局内点,将局内点扩充。
4、如果有足够多的点被归类为假设的局内点,那么估计的模型就足够合理。
5、用所有扩充后的局内点去重新估计模型。
6、通过估计局内点与模型的错误率来评估模型。
7、如果当前模型效果比最好模型更好而被选用为最好模型,否则抛弃当前模型。至此完成一个迭代,然后从第1步开始一个新的迭代。

其实我们看完这个流程,其实RANSCA的思路通俗的说,就是在一定的条件下(不是没有限制的随机),去试,试的多了找到正确或者好的可能行就大了。整个思路很朴素,其实通过概率分析,其实他的得到好的结果的计算量,没有你想想的那么大,当然其还是有一定的概率会计算错。

应用解析

ransac特征匹配案例解析
直线拟合

你可能感兴趣的:(SLAM)