作者:落山
链接:https://www.zhihu.com/question/39513724/answer/82031916
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
【图像匹配|图像匹配和配准】基于灰度的匹配一般被称为模版匹配,直接以灰度进行匹配效果不好,对光照很敏感,所以一般会以灰度归一化互相关(NCC)作为匹配依据,增强光照变化下的鲁棒性,为了降低计算量,多采用图像金字塔来实现先粗后精的方式加快匹配速度,匹配出像素位置后,会进一步做亚像素插值,使匹配出的位置达到更高的精度,处理旋转和缩放也很直接,就是在限定的角度范围和缩放比例内,取一定的步长生成多张模版,一一进行匹配。模版匹配处理遮挡比较困难,对光照变化想当敏感,如果有遮挡,一般情况下就不好使了。
基于特征的匹配一般称为图像配准,这方面的论文很多很多,当然现在的已不是研究热点,至少二维的情况是这样,三维以及高维的间或会冒出来那么一两篇。基于特征的匹配,就如你所写的那样,提取特征点,用算法迭代求出相互匹配的特征,求出这些匹配特征点之间的变换关系。处理旋转缩放也很直接,选用具有仿射或投影不变性的特征即可。基于特征的匹配,对光照不太敏感,也可以一定程度上处理遮挡,提速和提高精度的方法和模版匹配里提到的基本相同,当然如果图像中提取不到足够多的特征点的话,这个方法就很难奏效了。
还有匹配方法是基于几何形状信息,就是提取模版中的边缘和梯度,梯度方向等图像高频的部分,作为匹配的依据,对抗旋转缩放,提速,提高精度也和上面的类似。这一部分完整公开可用的代码很少,几乎没有,opencv里也没涉及,但这个算法被绝大多数商业库采用,因为它可以在光照变化,形变以及遮挡的情况下达到很高的鲁棒性。
楼主可以看一下主流的商业机器视觉库,比如Halcon,康耐视的VisionPro及它的PatMax专利算法,OpeneVision里的Match和Find模块,这些商业库里的匹配算法都占有很高的篇幅和重要性,而它们的鲁棒性也不是一般算法可以比拟的。
再推荐给你一本书,机器视觉算法及应用,是Halcon的资深研发人员写的,有一章,模版匹配,里有介绍Halcon里实现的匹配算法的实现原理。
如果有人有这方面的资料和代码,欢迎交流和分享。