我在matlab中使用SIFT算法来确定模板图像和一组图像之间的相似度,最后我必须根据SCORES确定一组图像之间的最佳匹配,是不是说分数越高图像越匹配?我知道当完全匹配时,分数为零,但如果图像相似怎么办?
2 回答
这个问题比它看起来的要复杂一些。要了解一个想法,请尝试仅根据 l1 或 l2 距离在模板和目标图像之间匹配 SIFT 描述符并显示结果。因此,当 l1 或 l2 距离最小时,您将每个模板点与目标点匹配。就指标而言,你不能做得更好。但是,在视觉上,您会看到这会产生不好的结果。
这使人们产生了不同的匹配策略。大多数程序部署的默认设置是使用 l2 距离进行匹配,但仅接受两点之间的匹配,如果次优匹配明显(如 60%)更差。它工作得很好,但在这个策略中,有些点永远不会匹配。作为“分数”,您可以先尝试模板和图像之间成功匹配或配对的点的百分比。
大多数人部署的策略是确定匹配模板和图像点之间的关系,例如x= Ax'
应该保持。这意味着,如果图像是模板的旋转副本,我们希望A
在匹配的 SIFT 点x'
和之间找到一个旋转矩阵x
。为这种关系汇集大量匹配点集合的常用方法是 RANSAC。所有不符合这种一致变形的点A
都可以作为异常值从集合中删除。
可以在Peter Kovesi 的网站上找到这种方法的一个很好的演示。
我假设 SCORES 是指一对匹配的描述符(例如欧几里得距离)之间的相似性度量。如果我的假设是正确的,统计平均所有匹配的分数(例如 SSD)应该会给你两个图像之间的相似度。即平均分越小,相似度越高,零表示完美匹配。要改进此相似性指标,您可以查看 RANSAC,它能够删除匹配描述符集中的异常值。
编辑:平均匹配分数当然只有在匹配描述符的百分比足够高时才有意义(如 Maurits 建议的那样)。因此,计数匹配和平均距离的组合可能是一种合理的方法。