java - 在java中找到两个图像之间的感知相似性

标签 java algorithm image-processing

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

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

谢谢

最佳答案

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

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

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

关于java - 在java中找到两个图像之间的感知相似性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7407141/

相关文章:

java - 如何使用 Java 或 Javascript 将 ASCII Art 解析为 HTML?

java - 从项目名称查找 api 中查找项目

java - 如何将函数式概念应用到 Java 8 中的传统过程算法中?

algorithm - 以下函数的时间复杂度

opencv - 如何在openCv中将行作为结构元素?

image-processing - 用于识别二维特征的图像处理

java - addLast - 双循环链表 - NullPointerException

python ,opencv : duration of time an object is detected on webcam

java - 反模问题 where gcd(denominator,mod)!=1

image-processing - 在 node.js 中调整图像大小