2012-12-26 38 views
2

我知道在这个网站上已经有一些关于这个问题的帖子,但没有一个(据我所知)告诉我,我需要知道什么。在大量图像中查找类似图像的算法

我对图像搜索引擎(如Google图像)如何运行基于图像的搜索很感兴趣,到目前为止我找到了this blog post,它告诉用户如何编写出能找到类似图像的指纹识别功能。该网站上的算法只能找到图像相同但分辨率不同的图像或相同的图像,并稍作更改。我正在寻找一种放置图像的方式,让我们说一下森林的图像,它会为您提供其他森林图像。

我是一个初学者,所以我希望能够找到详细的内容,而不是给你代码去做,只是让我开始。任何帮助,将不胜感激。

+6

据我所知,计算机视觉还没有发展到可以为其提供图像的地步,并且它可以得出有关数据的一般结论(例如“这是一片森林的图片”)。谷歌可以作弊,因为它的所有图像都在网页上。它可以从周围的文本,alt属性等获得很多线索。真正的一般“类似图像搜索器”将非常难以制作。 – Kevin

+2

图像搜索引擎用于建立索引的大部分内容是图像元数据(图像文件中嵌入的文本)以及来自发现图像的页面(例如图像标记的替代文本,以及周围文本)的信息。相对而言非常少的实际图像处理完成。 –

+0

这不是事实:您可以在Google上投射一张图片,但不会提示其他提示,并且会返回类似的图片。非常令人印象深刻的是als ohttp://clarifai.com/ - 它为几乎任何图像返回一些标签。完全基于图像识别。但这当然不是一项简单的算法任务。 –

回答

3

一个用于图像检索的常用的方法实际上是由文本检索的启发,所以我会通过快速审查文本检索开始:

  1. 每个文件由其bag-of-words模型表示。
  2. 包含所有文档的inverted index被构建。
  3. 当用户发送查询q时,使用倒排索引返回数据库中最相似的文档。文档与查询q之间的相似性通常使用代表查询和文档的两个向量的点积来计算。 (该tf-idf加权经常被用来建立表示所述文档中的矢量。)

图像检索,如在Video Google: A Text Retrieval Approach to Object Matching in Videos提出Sivic和Zisserman,遵循完全相同的方法。唯一的区别是第一步,他们在那里定义什么是“视觉词”,以便为图像提供词袋表示。

他们首先提取图像的局部特征,如SIFT。那些局部特征(SIFT)是高维矢量,因此,应用诸如k-means的聚类算法来获得k视觉词语:k聚类中心是“视觉词汇”。然后给出一幅图像,提取局部特征(SIFT),并将每一个特征分配给最接近的“视觉词”或聚类中心,从而获得词袋表示。

该方法后来得到改进,例如参见HervéJégou,Matthijs Douze和Cordelia Schmid的Hamming Embedding and Weak Geometric consistency for large-scale image search

如果您想了解更多关于这些方法的信息,我强烈建议您查看Visual Recognition and Machine Learning Summer School中的材料,特别是“实例级别识别”和“大规模视觉搜索”的幻灯片。