我有几千张图片,每张图片都提取了一组SIFT特征描述符(目前每张图像绑定200张)。
我需要形成每个图像之间距离的完整图表。也就是说,我需要通过一些指标来计算每个图像到每个其他图像的距离。
到目前为止,我已尝试使用FLANN计算两个节点之间的20个最近的相邻描述符,然后计算每个匹配描述符之间的平均距离。不幸的是,这个过程需要很长时间才能完成。
有没有办法让我更有效地比较这些图像的描述符?
答案 0 :(得分:5)
您可以考虑将您的SIFT描述符聚合成视觉词袋(BoV)或局部聚合描述符矢量(VLAD)。基本上是:
1 - 使用例如K-means
计算码本(K SIFT描述符)2 - 对于每个图像,提取SIFT描述符,然后在码本中查找每个图像的最近邻居。因此,根据码本计算图像的SIFT的直方图。这是最简单的方法(硬编码,Sum pooling),但存在替代方案(通常可以为计算机视觉问题提供更好的结果)
3 - 因此,每个图像用大小为K的唯一向量(直方图)表示。然后,您可以简单地计算图像之间的距离,作为这些直方图之间的(例如欧几里德)距离。