首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java图像比较技术

Java图像比较技术
EN

Stack Overflow用户
提问于 2010-12-01 19:22:20
回答 2查看 16.7K关注 0票数 7

我正在寻找几种方法来比较两幅图像,看看它们有多相似。目前,我计划将百分比作为“相似性指数”的最终结果。我的节目大纲如下:

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

我最近读了很多书,我读过的一些东西似乎非常复杂和先进,对像我这样只有一年Java经验的人来说不是这样的。到目前为止,我已经读到过:

  • 的傅里叶变换- im发现这在Java中实现起来相当混乱,但显然有一个类。虽然我不确定如何将输出转换为实际结果
  • SIFT算法-看起来非常复杂
  • 直方图--可能是迄今为止提到的最简单的
  • Pixel抓取看起来可行,但是如果两幅图像之间有相当大的变化,它看起来就不会产生任何精确的结果。我可能错了?

我还想先用Sobel滤波器对图像进行预处理,然后进行比较。问题在于实际比较部分。

所以,是的,我想看看有没有人想过用Java来比较图像。希望这里有一些人曾经做过类似的项目。我只想了解一些可行的比较技术,这些技术在Java中并不难实现。

提前感谢

EN

回答 2

Stack Overflow用户

发布于 2010-12-01 20:06:06

  • 傅里叶变换-这可以用来高效地计算互相关,这将告诉你如何对齐这两幅图像,以及它们在最佳对齐时的相似程度。
  • Sift描述符--它们可以用来比较本地特性。它们常用于对应分析和目标识别。(另见浪花)
  • 直方图-归一化互相关通常产生良好的结果比较图像在一个整体水平上。但由于您只是比较颜色分布,您可能会宣布一个室外场景与大量雪类似于室内场景与大量白色壁纸.
  • 像素抓取-不知道这是什么..。

您可以从本论文获得一个很好的概述。您可能需要研究的另一个字段是基于内容的图像检索

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

票数 4
EN

Stack Overflow用户

发布于 2010-12-02 02:10:54

作为简单像素抓取的一个更好的选择,尝试SSIM。但是,它确实要求您的图像本质上是从相同的角度来看相同的对象。如果您正在比较使用不同算法压缩的图像(例如,JPEG JPEG2000),这是非常有用的。而且,这是一种相当简单的方法,您应该能够合理地快速地实现,以看到一些结果。

我不知道Java实现,但是有一个使用C++实现OpenCV。您可以尝试重用它(通过类似于javacv的方法),或者从头开始编写它。算法本身并不复杂,所以您应该能够直接实现它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4328187

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档