Java的图像比较技术

Fly*_*ynn 7 java comparison fft image-processing

我正在寻找几种方法来比较两个图像,看看它们有多相似.目前我计划将百分比作为"相似性指数"的最终结果.我的计划大纲是这样的:

  1. 用户选择2个图像进行比较.
  2. 使用按钮,可以使用多种不同的方法比较图像.
  3. 最后,每个方法旁边都有一个百分比,表示基于该方法的图像有多相似.

我最近做了很多阅读,我读过的一些东西似乎非常复杂和先进,而不是像我这样只有大约一年的Java经验的人.到目前为止,我读过:

  • 傅立叶变换 - 我发现这在Java中实现相当混乱,但显然Java Advanced Imaging API有一个类.虽然我不确定如何将输出转换为实际结果

  • SIFT算法 - 看起来非常复杂

  • 直方图 - 可能是迄今为止最简单的直方图

  • 像素抓取 - 似乎可行,但如果两个图像之间有相当大的变化,它看起来不会产生任何类型的准确结果.我可能错了?

我还想先使用Sobel滤波器预处理图像,然后进行比较.问题是实际的比较部分.

所以,是的,我想看看是否有人有想法比较Java中的图像.希望此前有人做过类似的项目.我只想获得一些关于可行的比较技术的输入,这些技术在Java中实现起来并不困难.

提前致谢

bjo*_*rnz 4

  • 傅里叶变换 - 这可用于有效地计算互相关性,这将告诉您如何对齐两个图像以及它们在最佳对齐时的相似程度。
  • 筛选描述符 - 这些可用于比较局部特征。它们通常用于对应分析和对象识别。(另见冲浪
  • 直方图 - 归一化互相关通常会在全局级别上比较图像时产生良好的结果。但由于您只是比较颜色分布,因此您最终可能会宣称有大量雪的室外场景与有大量白色壁纸的室内场景类似......
  • 像素抓取 - 不知道这是什么......

您可以从本文中获得一个很好的概述。您可能要研究的另一个领域是基于内容的图像检索(CBIR)

抱歉,不是 Java 特定的。HTH。