在Java中找到两个图像之间的感知相似度。

3
我正在寻找一种算法,可以找出两个图像之间的感知相似度。实际上,我想将一张图片输入到系统中,然后搜索整个包含大量图片的数据库,并检索与原始图片具有更多感知相似性的图片,能否有人帮帮我?
我的意思是,我想找到相似的图片。我听说有些算法可以根据源图片的形状、颜色等(逐像素)来查找相似的图片。我想要一个系统,我可以输入源图片,系统基于形状、颜色、大小等感知特征检索相似的图片。
谢谢。
2个回答

6
在尝试找到捕捉“感知相似性”的可测实体之前,您需要仔细定义“感知相似”对您的含义。想象一下一张草地、蓝天和马的照片。您的应用程序是否应该检索所有马的图片?还是所有绿草和蓝天的图片?在后一种情况下,上述颜色直方图是一个很好的起点。或者,您可以查看高斯混合模型(GMM),它们在检索中被广泛使用。这个 code 可以作为一个起点,这篇文章 Image retrieval using color histograms generated by Gauss mixture vector quantization
更复杂的是所谓的“单词袋”或“视觉单词”方法。它越来越多地用于图像分类和识别。此算法通常从图像中检测出稳健点开始,这意味着这些点将经受住某些图像失真。例如,SIFT和SURF是一些流行的算法。找到这些点周围的区域时会捕获一个描述符,例如一个智能直方图。
在最简单的形式中,可以从所有图像的所有描述符中收集所有数据并对它们进行聚类,例如使用k-means。然后,每个原始图像都有描述符贡献到多个聚类中。这些聚类的中心点,即视觉词,可以用作图像的新描述符。 VLfeat网站包含了一个不错的演示,演示了这种方法,对caltech 101数据集进行分类。值得注意的是,Caltech本身也提供了相关的结果和软件链接

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接