




























在这篇文章里,将详细介绍 IFSolverR 是如何匹配特征的,这是本次更新中最核心的环节。
与先前的 IFSolver 不同,使用 SIFT 进行全图匹配一定会引入一些错误的特征点,如何判断某个匹配是否是符合要求的,以及如何处理图中存在的多个匹配,是本节需要关注的主要问题。
1 | |
通过这样的过程,可以实现对 d(Portal 图片特征) 和 dFull(IFS 谜题全图特征) 的暴力匹配。
而 BFMatcher 里面是这样的:
1 | |
通过测量,0.6 倍距离作为筛选边界是较为合适的,这会影响到检测到的特征点个数。
然而,这样产生的匹配很可能也存在不符合标准的状况。嘤为 SIFT 本身是一种匹配能力极强的算法,当遇到稍有相似但角度不同的 Portal 图片时,依然能够被识别出来并被认为是一个合理的匹配。
同时,我们需要做的并不只是匹配图片,还需要找到匹配区域的几何中心,即图片的中心点,以方便后续的自动化生成解谜结果。
但很显然,一次匹配是无法区分出所有的匹配图片,并进行筛选的,因此我们需要这样的操作:
perspectiveTransform 和上述矩阵 M 确定变换后的边缘坐标。logical_not)。
然后程序也会存储一份特征匹配的图片以供参考和调试。
在下一节还会讲到,这样的匹配规则依然会存在重复匹配和错误匹配的可能性(虽然不高),因此在需要人工干预会有提示。如何进一步提升匹配的准确性,可能的办法是,将区域重叠率高的图片进行裁剪,进行 1:1 匹配,然后再根据匹配吻合度优选。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。