图像匹配中的Ransac算法如何得到更多的匹配点

来源:互联网 发布:php五种设计模式 编辑:程序博客网 时间:2024/05/21 10:30

最近又开始研究图像的匹配了,只是目前对图像匹配的要求比较高,需要得到的匹配点的凸包能覆盖同名区域的尽可能大的部分,这个个人感觉是非常困难的,至少目前寻找的方法还不能满足需求。本篇主要想写点关于Ransac算法在消除错配上的应用,以及其不足之处。

关于Ransac算法的原理,这里不多说,百度能搜到的ransac资料基本都讲了,这里我用简单的语言说下。在得到特征点初始匹配下,ransac的目的是能提取到其中尽可能多的正确匹配对。这里“尽可能多”是个概数,也就是说并不是每次得到的结果都是确定的,当然这也和不同算法中随机数的生成有关,如在C++中用同一个种子点生成的随机数得到的ransac结果是相同的,实际上这并不是准确的随机数,只是用来近似的而已。ransac作为随机算法,得到不同结果是肯定的,只要结果不要偏差太多就行了。

那如何能把尽可能多的匹配点提取出来呢?从我这段时间的研究来看,需要几个方面考虑:1、初始匹配的个数;2、初始匹配的匹配结果;3、模型的选择;4、迭代次数。条件1和2是初始匹配的影响,这是显而易见的,如果初始匹配都不能匹配上,ransac当然得不到正确的匹配;条件3是你算法中选则的两幅图像之间应该满足的几何模型,这个模型只和坐标有关,和图像内容无关,一般双目视觉最弱的条件是对极几何关系,然后再是平面目标图像的关系,有仿射变换和透视变换(射影变换),也可以说是单应;条件4的迭代次数对ransac的影响最小,这当然也是相对的,当迭代次数较大的情况下,增加迭代次数其实影响并不大,因此,迭代次数的影响最小。当初始匹配确定、模型确定、迭代条件确定或者终止条件确定,由于随机数的原因,得到的结果不会相差太大。如何能提取尽可能多的匹配点对呢?一般,ransac得到的匹配点基本是正确的,然而因为所及随机数的选择不同,多次运行,可能得到的结果各不相同,那么可以通过多次调用ransac后得到最终的匹配点,这比调用一次ransac得到的匹配对肯定要多。除了多次调用,还可以在ransac迭代之前,通过某种方法得到匹配质量较高的匹配点对,利用LM算法进行参数优化,然后再迭代,这样的点也可能多。除此以外,还可以两次调用ransac方法,就是一次先得到一批,然后把剩下的再ransac,这样得到的匹配点也会增加,这是肯定的。

0 0
原创粉丝点击