【发布时间】:2011-03-10 04:40:14
【问题描述】:
我遇到了一个最近邻算法的实现,用于查找两个相似图像中某些关键点之间的匹配。关键点由 SIFT 算法生成。这些点由一个 128 维的向量来描述,两幅图像中都有很多这样的点。
匹配算法使用最近邻搜索,对于一张图像中的每个点,计算另一张图像中对应的最近点。 “接近度”由点的向量之间的最小欧几里德距离来描述。通过仅选取距离低于某个阈值的点对来选择最佳匹配。
然而,我遇到的实现是将一个图像中关键点的所有矢量与另一张图像中的矢量相乘,从而形成一个产品矩阵。然后它会找到乘积高于给定阈值的点。
这个实现给出了正确的结果,但我想知道它是如何工作的。它是使用向量之间的相关性作为度量还是这里发生了其他事情。
【问题讨论】:
-
我对图像处理知之甚少,但我对内积和度量空间的了解让我想知道实现是否定义了某种不寻常的内积......我不知道现在有很多工作要做,所以我不妨研究一下。看起来很有趣。
-
这是哪个实现?另外,你能发布一段相关的代码吗?
-
这是 SIFT GPU 源代码cs.unc.edu/~ccwu/siftgpu 的一部分,可以在 ProgramCU.cu 文件中的 SIFT 匹配部分下找到。我没有在这里发布它,因为它有点庞大和复杂,因为它是 CUDA 内核函数的一部分。
标签: computer-vision nearest-neighbor correlation kdtree sift