【发布时间】:2011-11-24 09:49:53
【问题描述】:
我正在使用 C# (OpenSurf) 中的 SURF 算法从图像中获取兴趣点列表。每个兴趣点都包含一个描述符向量、一个 x 坐标 (int)、一个 y 坐标 (int)、比例 (float) 和方向 (float)。
现在,我想将一张图像的兴趣点与数据库中的图像列表进行比较,该数据库也有兴趣点列表,以找到最相似的图像。即:[Image(I.P.)] COMPARETO [List of Images(I.P.)]。 => 最佳匹配。逐个比较图像会产生不令人满意的结果。
在搜索 stackoverflow 或其他网站时,我发现的最佳解决方案是建立一个 FLANN 索引,同时跟踪兴趣点的来源。但在实施之前,我有一些令我困惑的问题:
1) 当基于图像的 SURF 兴趣点匹配图像时,我发现一种算法通过比较它们的距离 (x1,y1->x2,y2) 并找到总数最低的图像来进行匹配距离。比较兴趣点时从不使用描述符或方向吗?
2) 如果使用了描述符,我该如何比较它们?我不知道如何使用索引树比较 64 点(1 张图像)的 X 向量和 64 点(多张图像)的 Y 向量。
非常感谢您的帮助。我搜索过的所有地方或找到的API,只支持一张图片与另一张图片匹配,不支持一张图片与图片列表有效匹配。
【问题讨论】:
-
从文章更新:“在关键点匹配步骤中,最近邻被定义为不变描述符向量的具有最小欧几里得距离的关键点”。似乎单图像 SURF 比较的最佳方法是使用具有 X 个兴趣点的图像 1 在图像 2 比较描述符中搜索相似的兴趣点。即: for (int i=0; i
-
对于阅读本文的人,我将提出另一个问题,这是我在此过程中获得的知识。问题仍然是:如何将一个图像的描述符匹配到其他图像的数据库。
标签: c# algorithm tree computer-vision surf