从图像库中检测图像的库?

A library to detect an image out of an image bank?

是否有一个开放的 source/free 库用于从图像库中检测图像?我有大约 120 张图像,我有一个输入图像,它是来自银行的图像,但可能略微 cropped/rescaled(虽然没有以任何形式改变)。我正在寻找能够 return 来自银行的图像与输入图像最相似的东西。

OpenCV 是为 C/C++、Python 和 Java 提供接口的计算机视觉库。但是没有简单的功能可以完成你想要的。

如果您的图像是灰度或彩色图像,一种可能有效的简单方法是直方图比较。在这里,您计算搜索数据库中图像的直方图,计算搜索图像的直方图,然后使用 comparison methods 之一比较分布。直方图箱的数量将决定准确性和性能。如果您有大量图像,您可能希望使用更多数量的直方图箱以获得良好的准确性,但这会花费更多时间和内存。

另一种方法是使用基于特征的技术,例如搜索和搜索图像的视觉词袋表示。在这里你也可以使用直方图比较来比较这些表示。

对于 intersection 比较,您必须对距离度量进行归一化,以便比较这些值。在这种情况下,您可以从搜索图像的总数 pixels/visual-words 中除以得到的距离。

经常建议用于此类任务的另一种技术是 perceptual hashing,但我没有任何使用它的经验来评论其 accuracy/performance。

我不知道你的图片类型,但我假设它们是森林,客厅,山谷等场景。根据Oliva和Torralba的说法,场景可以用低维特征来表示他们称之为场景要点。通过使用它,您只需使用非常快速的 K-Nearest-Neighbor 算法就可以得到相似的场景。他们提供了很好的 MATLAB 代码,但我不知道你是否有 MATLAB 许可证。您可以查看下面的 link 以获取 MATLAB 代码和原始论文。

http://people.csail.mit.edu/torralba/code/spatialenvelope/

曾经,我使用过代码,这是我的结果。最大的图片是输入,较小的是最佳候选。

我搜索了一下,找到了 GIST 的 C 实现,称为 Lear's GIST 实现;但是,我没有使用代码。 link在下面。

http://lear.inrialpes.fr/software

我希望这对你有用。编码愉快!!

参考:

图片来自http://make3d.cs.cornell.edu/data.html

要点:http://people.csail.mit.edu/torralba/code/spatialenvelope/