比较大量图像的特征描述符
Comparing feature descriptors of large set of images
我有一组几千张图片,我为每张图片提取了一组 SIFT 特征描述符(目前每张图片绑定到 200 个)。
我需要绘制一张完整的每张图片之间的距离图。也就是说,我需要通过某种度量计算出每张图像与其他每张图像之间的距离。
到目前为止,我已经尝试使用FLANN计算两个节点之间的20个最近邻描述符,然后计算每个匹配描述符之间的平均距离。不幸的是,此过程执行时间太长。
有什么方法可以更有效地比较这些图像的描述符吗?
您可以考虑将您的 SIFT 描述符聚合为视觉词袋 (BoV) 或局部聚合描述符向量 (VLAD)。基本上:
1 - 使用例如 K-means
计算密码本(K SIFT 描述符)
2 - 对于每个图像,提取 SIFT 描述符,然后在代码本中寻找每个图像的最近邻居。因此,根据密码本计算图像的 SIFT 的直方图。这是最简单的方法(硬编码,Sum pooling)但存在替代方法(并且通常为计算机视觉问题提供更好的结果)
3 - 因此,每个图像都用大小为 K 的唯一向量(直方图)表示。然后,您可以简单地将图像之间的距离计算为这些直方图之间的(例如欧几里得)距离。
我有一组几千张图片,我为每张图片提取了一组 SIFT 特征描述符(目前每张图片绑定到 200 个)。
我需要绘制一张完整的每张图片之间的距离图。也就是说,我需要通过某种度量计算出每张图像与其他每张图像之间的距离。
到目前为止,我已经尝试使用FLANN计算两个节点之间的20个最近邻描述符,然后计算每个匹配描述符之间的平均距离。不幸的是,此过程执行时间太长。
有什么方法可以更有效地比较这些图像的描述符吗?
您可以考虑将您的 SIFT 描述符聚合为视觉词袋 (BoV) 或局部聚合描述符向量 (VLAD)。基本上:
1 - 使用例如 K-means
计算密码本(K SIFT 描述符)2 - 对于每个图像,提取 SIFT 描述符,然后在代码本中寻找每个图像的最近邻居。因此,根据密码本计算图像的 SIFT 的直方图。这是最简单的方法(硬编码,Sum pooling)但存在替代方法(并且通常为计算机视觉问题提供更好的结果)
3 - 因此,每个图像都用大小为 K 的唯一向量(直方图)表示。然后,您可以简单地将图像之间的距离计算为这些直方图之间的(例如欧几里得)距离。