Java中识别具有相同内容的图像

2024-04-01

前段时间,我花了一些时间寻找如何确定两个图像是否相同的方法,以便回答这个问题 https://stackoverflow.com/questions/8644960/java-library-to-compare-image-similarity/。我现在面临一个稍微不同的问题:我手头有大约两千张图像,其中一些具有相同的内容,但彼此是缩放/旋转版本(旋转始终是 90° 的倍数),以及以下问题不同的压缩和图像格式(主要是 jpg,一些 png,没有其他)。缩放比例不会超过大约 2:1。我想做的是消除重复,同时保留最高质量的实例。由于 Java 是我唯一相当精通的语言,因此我需要使用 Java。

答案 https://stackoverflow.com/questions/603283/what-is-the-best-java-image-processing-library-approach另一个问题提供了许多有用的链接,但看起来其中任何一个都不能在缩放/旋转时识别重复项。

这个问题以及答案 https://stackoverflow.com/q/225210/1086871建议首先将所有图像缩放到非常小的尺寸(例如 32*32 或 16*16),然后基本上进行一些散列,并基于散列进行比较。这对我来说听起来很聪明,可以在比较之前对图像进行预排序,排序后这将是一个 O(n) 问题。但是,考虑到图像可能会旋转,我不知道如何处理;一种选择是手动浏览所有图像并决定旋转,因为它们所描绘的方向具有明确的方向(人眼可以很容易地决定“向上”应该是哪个方向)。如果可能的话,我想避免这种情况。

是否有既定的方法/算法(链接提到了 SSIM)来处理此类问题,或者你们中的任何人都可以想出比上述更好的方法?也许有人知道适合该任务的 Java 库(在链接的问题中提到了 OpenCV 的 Java 包装器,然后是 ImageJ、imgsclr)?任何帮助表示赞赏。


我认为这个问题的一般答案需要一种无监督的机器学习方法来生成局部不变特征 - 基本上,这是一种查找不随缩放或旋转而改变的哈希值的奇特方法 - 然后运行聚类算法。以下是一些可能相关的论文:

  • 一种基于PLSA模型的重复图像检测新方法 http://www.ijcte.org/icmv/ICMV2010/095-ICMV2010-W00173.pdf
  • 基于图像分析的高效图像重复检测 http://infoscience.epfl.ch/record/103736/files/EPFL_TH3797.pdf- 这里有很多东西,因为这是某个家伙的整个博士论文
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java中识别具有相同内容的图像 的相关文章

  • 使用罗马图书馆获取所有 RSS 提要条目

    我正在使用 Java 的 Rome 库来解析一些 RSS 默认情况下需要 25 个条目 请告诉我 如何获得接下来的 25 个条目 我的测试代码是 public static SyndFeed getSyndFeedForUrl String
  • Spring boot + hikari - dataSource 或 dataSourceClassName 或 jdbcUrl 是必需的问题

    尝试启动 Spring 应用程序时出现以下错误 ERROR 5908 main com zaxxer hikari HikariConfig HikariPool 1 dataSource or dataSourceClassName or
  • 超时后如何重新建立 JDBC 连接?

    我有一个长时间运行的方法 它通过 EntityManager TopLink Essentials 执行大量本机 SQL 查询 每个查询只需要几毫秒即可运行 但查询数量却有数千个 这发生在单个 EJB 事务内 15 分钟后 数据库关闭连接
  • Javafx-场景快照不显示值和系列

    我制作了一个非常短的应用程序 它使用 javafx 生成图表 应用程序显示正确的值 图表 但当我做快照时 图像仅显示轴和标签 但不显示系列和值 stage setTitle Line Chart Sample final DateAxis
  • 在基于 RESTful 的应用程序中管理状态

    我们正在评估用于基于 Web 的应用程序的技术 一些建议是采用基于 RESTful 的服务方法 技术堆栈 1 春天 2 Apache CXF JAX RS 我的问题是 1 如何在请求之间管理状态 例如 用户已经过身份验证 现在他正在发出一系
  • 使用简单的 UPDATE 查询“不支持 DML 操作”

    我收到错误Not supported for DML operations当我使用以下 HQL 时 Query UPDATE WorkstationEntity w SET w lastActivity timestamp WHERE w
  • 了解 Android 上的默认键盘

    我想知道 Android 中用户选择的默认键盘 我知道我可以使用以下命令访问启用的输入法列表InputMethodManager 但我想知道用户当前使用的是哪一个 到目前为止 我已经尝试获取当前的输入法子类型 InputMethodMana
  • 将 .cer 格式的证书添加到 .bks 密钥库中

    我需要将 cer 格式的证书添加到 BKS 密钥存储中 SO 上对此进行了描述 如何将 cer 转换为 BKS https stackoverflow com questions 21284466 how to convert cer to
  • CXFServlet 抛出 java.lang.NoSuchMethodError:

    java lang NoSuchMethodError org codehaus stax2 ri EmptyIterator getInstance Lorg codehaus stax2 ri EmptyIterator at com
  • Java + JNA:找不到指定的过程

    我正在尝试使用 Visual Studio 创建一个 dll 文件并在 java 项目中使用 访问它 该库似乎已加载 但总是抛出相同的异常 线程 main 中出现异常 java lang UnsatisfiedLinkError 查找函数
  • Spring - 捕获bean创建异常

    我想在我的代码中捕获 bean 实例化异常 我有什么选择 一种方法是使用基于 Java 的容器配置 Configuration public class AppConfig Bean public SomeBean someBean try
  • 在JPA、关系型数据库等中,什么是Tuple? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在研究 Hibernate 和 JPA 并且一直在寻找这个术语 有人可以用实用和说教的方式向我解释一下这个术语是什么 以及它与 J
  • 将resourceBundle与外部文件java一起使用

    我一直在阅读有关此问题的其他问题和答案 但我不明白资源边界是如何完全工作的 我认为这与 Joomla 使用多语言选项的方式类似 基本上 您有要阅读的不同语言的不同消息的文件 所以我在 src Lang 文件夹中创建了 System prop
  • indexoutofboundException :setSpan (2...2) 结束长度超出长度 1

    I ve a MultiAutoCompleteTextView当用户按空格键时 我在其中创建芯片文本的自定义控件 我不希望用户在文本框为空时最初输入空格 所以我放了一个inputFilter以防止用户最初放置空格 这是过滤器代码 priv
  • java.lang.NoSuchFieldError:APPLICATION_CONTEXT_ID_PREFIX

    我在运行项目时收到此错误 最终结果为 404 该项目是在Spring框架上进行的 我读了很多帖子 发现要么是混合了罐子 要么是多余的罐子 接下来我尝试整理我的罐子 以下列表是我的构建路径中的内容 antlr 2 7 6 jar asm ja
  • Keycloak - 自定义表单操作在流程中不可见

    我正在尝试为用户注册实现自定义表单操作 我在表单上添加了一些自定义字段 我希望验证这些字段 在浏览了 keycloak 文档后 我意识到我需要 扩展 FormAction FormActionFactory 将actionfactory打包
  • 如何动态更新属性文件?

    我的应用程序是一个批处理过程 它从 application properties 文件中提取环境变量 我使用的密码必须每隔几个月更新一次 我想自动化密码更新过程并将更新后的密码保存在属性文件中 以便在将来的运行中使用 但我尝试进行的任何更新
  • jtree 编程式多选

    是否能够以编程方式选择 JTree 中的多个树节点 我已经设置了多选模式tree getSelectionModel setSelectionMode TreeSelectionModel DISCONTIGUOUS TREE SELECT
  • 改造 POST java.io.IOException:由 java.io.EOFException 引起的连接上的流意外结束:\n 未找到:

    我已经解决了与此相关的所有问题 但尚未找到适合我的解决方案 我在用着retrofit 2 8 1 and OkHttp 4 5 0 我的服务界面如下所示 public interface MlApiService POST Multipar
  • 在java中读取文本文件[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 当每行都包含整数 字符串和双精度数时 如何在 Java 中读取 txt 文件并将每一行放入数组中 每行都有不同数量的单词 数字 Try

随机推荐

  • 如何选择具有列名称的所有表并更新该列

    我想找到我的数据库中包含列名 Foo 的所有表 并将其值更新为 0 我在想这样的事情 但我不知道如何将 UPDATE 放在该代码上 我计划有关于 MySQL 数据库内的事件的这条语句 我使用的是 WAMP 这个想法基本上是每天运行一个事件
  • 角度资源不调用我的错误回调函数

    我已经这样做了几个小时 但我不明白为什么当我的 Rails 后端引发正确的错误时 Angular 没有触发我的错误回调 我正在使用角度 1 2 0rc1 根据文档 non GET class actions Resource action
  • Wordpress - 如何使 URL 返回具有自定义内容类型的动态 JSON?

    首先是一些背景知识 我尝试按照此处的说明进行操作 https developer apple com library archive documentation General Conceptual AppSearch UniversalL
  • 为什么 C++ 中的析构函数以与初始化相反的顺序取消分配内存?

    以与变量相反的顺序取消分配内存有什么好处 考虑这个例子 Type1 Object1 Type2 Object2 Object1 假设Object2使用一些内部资源Object1并且只要Object1已验证 例如 Object2s 析构函数访
  • 过滤 QueryDSL 搜索的结果

    我使用 QueryDSL 作为 Spring Data Rest 的一部分来从我们的 API 中搜索实体 是否可以以某种方式过滤搜索 API 以便默认情况下不会找到 已停用 的汽车实体 目前 我在汽车实体上有一个标志 当它设置为 true
  • 加速 Selenium Webdriver

    我在 Perl 语言绑定下使用 Selenium Webdriver 2 0 和 Firefox 20 它非常慢 例如 一个常见的操作是填写几个
  • 获取 Playwright 中输入元素的值

    如何返回 elem 的值以便我可以验证它确实是1 const elem await page input my input await elem fill 1 另外 从 v1 20 开始 还有toHaveValue可以验证元素值的匹配器 a
  • 如何使用 php 获取 XML 中所有现有标签的列表

    我有一个 xml 数据 如下所示
  • 替换 Camel v2.16.0 中已弃用的 beanRef()

    我们正在从 Camel v2 13 升级到 v2 16 并发现 beanRef 已被标记为已弃用 Apache Camel 推荐的替代 替代方案是什么 我在 Camel v2 16 0 文档网站上找不到任何有用的东西 甚至更新的示例尚不可用
  • 错误:在调用 FB.init() 之前调用了 FB.login()

    我使用这个 Facebook 登录按钮代码 div div
  • Jetty 如何处理具有不同依赖项的相同类的类加载?

    我想知道当多个依赖路径可能导致同一个类时 jetty 如何处理 例如 Jetty 预先打包了 JSTL 1 2 但我添加了一个依赖项来加载 JSTL 1 2 4 在编译时 如果我断点测试它在eclipse中下载源代码 它会在1 2 4版本处
  • 使用 MongoDB 进行两阶段提交

    这就是我的想法 当使用 MongoDB 等每个操作都是原子操作并且不支持除此之外的事务时 您是否发现这种模拟两阶段提交的解决方法有任何问题 transaction scope read message from servicebus Upd
  • Bootstrap 3选择内联输入形式

    我正在尝试获取输入并选择彼此内联的选项 例如该演示使用 Bootstrap 2 死链接 http bootply com 93408 遵循 Bootstrap 3 指南 我设法做到这一点 div class container div cl
  • 获取文本框中插入符号的位置

    如何获取 TextBox 控件可见客户区域中的插入符位置 x y 我需要向文本框添加自动完成功能 我发现了WPF 的解决方案 https stackoverflow com questions 1053539 finding the pos
  • Bash 'read' 命令在 Mac 上不接受 -i 参数。还有其他选择吗?

    我有一个 bash 脚本 在我的工作 Ubuntu 机器上运行良好 但遗憾的是 当我尝试在我的 Mac OSX Lion Mountain Lion 笔记本电脑上运行它时 它就崩溃了 杀死它的那行是这样的 while z SSHFS PAT
  • rufus cron 作业在 Apache/Passenger 中不起作用

    我有一个在 Apache Passenger 上运行的 Rails 应用程序 它有一个 rufus scheduler cron 作业 在后台运行并通过电子邮件发送通知 当我在 WEBrick 服务器上运行正在开发的应用程序时 电子邮件会像
  • 如何在地图视图中添加自定义标注视图

    我是 Objective C 中的 MapKit 新手 我可以在地图视图中添加自定义注释 我需要放置自定义标注视图 如下图所示 但我不明白如何设计这样的标注视图 我知道我需要在注释方法的视图中添加标注 MKAnnotationView ma
  • VB.net 中 json.net 的简单工作示例

    我从一个提供者那里得到了以下简化的 JSON 字符串 自从我使用 Visual Studio 和 vb Net 以来已经很长时间了 所以我很生疏 Venue ID 3145 Name Big Venue Clapton NameWithTo
  • 需要用Java将文件上传到S3上

    我最近开始在 AWS 上工作 我目前正在开发 S3 存储的上传功能 根据我的理解 可以有两种方法将文件上传到 S3 客户端的文件上传到我的服务器 我使用我的凭据将此文件上传到 S3 服务器 我还可以向客户端隐藏此信息 因为我不会显示上传详细
  • Java中识别具有相同内容的图像

    前段时间 我花了一些时间寻找如何确定两个图像是否相同的方法 以便回答这个问题 https stackoverflow com questions 8644960 java library to compare image similarit