比较图像相似性的Java库

比较图像相似性的Java库,java,image,comparison,similarity,Java,Image,Comparison,Similarity,我花了相当长的时间研究一个库,它允许我在Java中比较图像 我没有发现任何有用的东西,也许我的谷歌搜索技能不够高,所以我想问问你们,你们能不能给我指出一个方向,我可以在哪里找到这样的东西 基本上,我想做的是比较两幅图像,得到两幅图像的相似程度。大概一个百分比吧 我希望你们有我可以用的东西,我自己也不知道怎么写这样的东西 PS:它不一定必须是Java语言,这只是我的应用程序将运行的环境。你可以看一下SO本身的两个答案:(如果我读对了)同时 我建议从第二个链接开始,因为在讨论中有一些链接将引导到一些

我花了相当长的时间研究一个库,它允许我在Java中比较图像

我没有发现任何有用的东西,也许我的谷歌搜索技能不够高,所以我想问问你们,你们能不能给我指出一个方向,我可以在哪里找到这样的东西

基本上,我想做的是比较两幅图像,得到两幅图像的相似程度。大概一个百分比吧

我希望你们有我可以用的东西,我自己也不知道怎么写这样的东西


PS:它不一定必须是Java语言,这只是我的应用程序将运行的环境。

你可以看一下SO本身的两个答案:(如果我读对了)同时

我建议从第二个链接开始,因为在讨论中有一些链接将引导到一些相关技术的实现代码,您可以自己“翻译”成Java

这是我的谷歌技能所能做到的最好的,不过没有Java——对不起。我希望这是一个好的起点

编辑: . 但是我没有读源代码。他明确表示,他也找不到用于此目的的Java库,所以这就是他自己编写的原因

哦,还有这个,所有关于图像处理的Java库。希望其中有一个可以比较图像的相似性

好的,最后一次编辑: 显示了确定两张图片之间差异的基本算法的Java实现。它还有一封电子邮件,可以联系写这封信的人,还有大量的参考资料。但是没有图书馆

阅读您对问题的评论后编辑:
除非您已经检查了上面的所有链接,因为您想要检查的似乎是两个图像是否相等,我建议您从Java图像处理食谱开始(因为它有一个Java算法的实现来检查相等的图像)和指向SO问题的最后一个链接。以及该项目的源代码(C++);它听起来真的很漂亮-它显然是用来检查两幅图像是否与人类视觉系统相同。

就在我的头顶上,是一个很棒的图像处理库,但是如果你只是想比较图像,它可能会有点过头。如果是这样的话,我会同意的

已经有人问过如何使用OpenCV实现这一点

我会用C++来实现这个,但是如果你必须使用java,有一个项目为OpenCV制作了java包装,./p>< p>我用这个类来比较两个产品图像,结果很酷。实现它并不困难,只是为了比较两个图像,您只需要删除JAI和Swing等行。它将图像大小调整为300x300,并返回一个差值,如“1234”。最大差值在“11041”附近,如链接中所述。做除法,你可以简单地得到百分比。如果有兴趣,我可以稍后在这里发布修改后的代码

结果很酷,但我仍然得到了“数码相机照片”,检测到类似于“电视照片”。因此,我使用ImageJ检测图片中的边缘。使用检测边缘操作,ImageJ将图像转换为边缘检测到的灰色图像。然后我把两个边缘检测到的图像放在同一个比较器中,并将两个值相乘。结果更加准确


您希望比较哪种类型的相似性?图像大小相同,或者可以缩放/旋转/交叉?我只是想知道这两张图像是否相同(来自人类POV)。我最近发现了一个很棒的库,名为Rainbow4j,由Galen framework的开发人员开发和使用。它可以比较基于像素差异、颜色差异等的图像,具有很多可配置性。您不需要库来实现这一点。看看我的答案,我在你的参考资料中找到了答案,特别是这篇简单实现的文章真的很有帮助。。找不到那本食谱的404link@tobi这本书还有一个版本;更新我的帖子。