Java库比较图像相似性

我花了相当一段时间研究一个图书馆,使我能够比较Java中的图像。

我没有真正发现任何有用的东西,也许我的Googlesearch技能还不够高,所以我想我会问你们,如果你能指出我的方向,我可以find这样的东西。

基本上我想要做的是比较两个图像彼此,并得到两个相似的价值。 像一个百分比左右。

我希望你们有我可以使用的东西,我不知道如何写这样的东西自己…

PS:它不一定是在Java中,这只是我的应用程序将运行的环境。

你可以看看SO本身的两个答案: 这一个是关于图像比较本身,提供链接到C ++的东西 (如果我正确地阅读),而这个提供了更广泛的方法的链接,一个在C中 。

我build议从第二个链接开始,因为这个讨论中的链接会导致一些相关技术的实现代码,这些技术你可能能够自己“翻译”成Java。

这是最好的,我的谷歌技能可以做,没有Java,但对不起。 我希望这是一个很好的起点!

编辑: 这是与你的问题谁用Java写他自己的比较类的人 。 虽然我没有阅读源代码。 他明确指出,他也无法为此findJava库,所以这就是他自己写的原因。

哦, 关于SO的这个问题可能是关于这个的最好的链接 ,所有关于image processing的Java库。 希望其中有一个可以比较图像的相似性。

好的,上次编辑: Java Image Processing Cookbook展示了一个基本algorithm的Java实现,以确定两张图片之间的差异。 它也有一个电子邮件联系谁写的人,以及许多参考。 没有图书馆。

编辑后阅读您的问题的评论:除非你已经检查了所有上述链接,因为你想要的东西似乎是检查两个图像是否相等,我会build议从Javaimage processing食谱开始(因为有一个在Java中执行一个algorithm来检查相同的图像)和最后一个链接到一个SO问题。 另外, 请检查PerceptualImageDiff和该项目的源代码(C ++); 这听起来非常漂亮 – 显然应该检查两幅图像是否与人类视觉系统相同

就在我头顶, OpenCV是一个很好的image processing库,但如果你只是想比较图像,可能是矫枉过正。 如果是这样的话,我会用ImageJ去。

有人已经问过如何在这里使用OpenCV来做到这一点 。

我会使用C ++,但是如果你必须使用Java,那么这里有一个为OpenCV制作了Java包装的项目。

我使用这个链接的类来比较两个产品图像,结果很酷。 实现它只是用来比较两个图像并不难,你只需要删除JAI和Swing等等。 它将图像大小调整为300×300,并返回“1234”等差异值。 最大差值接近“11041”,在链接中说明。 做一个部门,你可以简单地得到百分比。 如果有兴趣,我可以在稍后发布修改后的代码。

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

获取图像的边缘检测forms