找到java中两个图像之间的感知相似度

时间:2011-09-13 19:09:41

标签: java algorithm image-processing

我正在寻找一种可以找到两个图像之间感知相似度的算法,实际上我想将一张图片输入到系统中,然后搜索整个包含大量图片的数据库,然后检索具有更多感知相似度的图像有了源图像,请问有谁可以帮帮我吗?

我的意思是我想找到类似的照片。我听说一些算法可以根据源图片的形状,颜色等(逐个像素)找到相似的图片。我想拥有输入源图像的系统,系统根据形状,颜色,大小等感知特征检索相似的图像。

由于

2 个答案:

答案 0 :(得分:6)

在尝试找到可捕获的可测量实体之前,您需要仔细定义“感知上相似”对您意味着什么。想象一幅草地的图片在与马的蓝天下。您的应用程序应该检索所有马图片?或者所有带绿草和蓝天的照片?在后一种情况下,上述颜色直方图是一个良好的开端。或者你可以看看高斯混合模型(GMM),它们在检索中使用得相当多。这个code可能是一个起点,本文Image retrieval using color histograms generated by Gauss mixture vector quantization

更复杂的是所谓的“词袋”或“视觉词”方法。它越来越多地用于图像分类和识别。该算法通常从检测图像中的稳健点开始,这意味着这些点将在某些图像失真中存活。示例流行的算法是SIFT和SURF。使用描述符捕获这些找到的点周围的区域,例如可以是智能直方图。

以最简单的形式,可以从所有图像中收集所有描述符中的所有数据并对其进行聚类,例如使用k-means。然后,每个原始图像都具有对许多聚类有贡献的描述符。这些聚类的质心,即视觉词,可以用作图像的新描述符。 VLfeat网站包含一个很好的demo这种方法,对caltech 101数据集进行分类。同样值得注意的是Caltech本身的结果和软件。

答案 1 :(得分:3)

一种简单的方法是比较颜色直方图。

但是下面的文章提出使用联合直方图。你也可以看一下。

http://www.cs.cornell.edu/rdz/joint-histograms.html