我正在寻找一种可以找到两个图像之间感知相似性的算法,实际上我想将一张图片输入系统,然后搜索包含大量图片的整个数据库,然后检索与源图像具有更多感知相似性的图像,任何机构可以帮助我吗?
我的意思是我想找到类似的图片。我听说有些算法可以根据源图片的形状、颜色等(逐像素)找到相似的图片。我想让系统输入源图像,系统根据形状、颜色、大小等感知特征检索相似的图像。
谢谢
最佳答案
您需要仔细定义“感知上相似”对您意味着什么,然后再尝试找到一个可衡量的实体来捕捉它。想象一张蓝天下的草地和一匹马的照片。您的应用程序是否应该检索所有马匹图片?或者所有的图片都是绿草和蓝天?在后一种情况下,上述颜色直方图是一个好的开始。或者,您可以查看高斯混合模型(GMM),它们在检索中使用得很多。这个 code 可能是一个起点,这篇文章 Image retrieval using color histogramsgenerated by Gauss mixture vector quantization
更复杂的是所谓的“词袋”或“视觉词”方法。它越来越多地用于图像分类和识别。该算法通常从检测图像中的鲁棒点开始,这意味着这些点将在某些图像失真中幸免于难。示例流行算法是 SIFT 和 SURF。这些找到的点周围的区域使用描述符捕获,例如可以是智能直方图。
以最简单的形式,可以从所有图像的所有描述符中收集所有数据并将它们聚类,例如使用 k-means。每个原始图像都有描述符,这些描述符有助于许多集群。这些聚类的质心,即视觉词,可以用作图像的新描述符。 VLfeat 网站包含这种方法的一个很好的 demo,对 caltech 101 数据集进行分类。同样值得注意的是 Caltech 本身的结果和软件。
关于java - 在java中找到两个图像之间的感知相似性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7407141/