相似图像 - 如何比较它们

2024-02-14

我有超过 130 万张图像需要相互比较,并且每天都会添加数百张图像。

我的公司拍摄图像并创建一个可供我们的供应商使用的版本。

这些文件通常彼此非常相似,例如,两个不同的公司可以向我们发送两个不同的图像,一个 JPG 和一个 GIF,两者都带有麦当劳徽标,提交时间间隔几个月。

所发生的情况是,最后我们发现自己创建了两个不同时间的同一个徽标,而我们可以简单地复制/粘贴已经创建的徽标,或者至少建议将其作为艺术家可能的起点。

我已经寻找过创建指纹的算法或允许我在上传新图像时进行简单查询的算法,时间相对不是问题,如果创建指纹需要 1 秒,则需要 150 天才能完成创建指纹,但是这会节省大量费用,我们甚至可能需要 3 或 4 个服务器来完成它。

我精通 PHP,但如果算法是伪代码甚至 C,我可以阅读它并尝试翻译(除非它使用一些 C 特定库)

目前,我正在对所有图像进行 MD5 以捕获完全相同的图像,当我考虑调整图像大小并在调整大小的图像上运行 md5 以捕获已更改的图像时,出现了这个问题。以不同的格式保存并调整大小,但我仍然没有足够好的识别能力。

如果我没有提到它,我会很高兴看到一些只是建议可能的“相似”图像的东西。

EDIT

请记住,检查需要每分钟进行多次,因此最好的解决方案是为每个图像提供一些值,我可以存储这些值并在将来使用它们来与我正在查看的图像进行比较,而无需重新扫描整个服务器。

我正在阅读一些提到直方图的页面,或者将图像大小调整为非常小的尺寸,剥离可能的标签,然后将其转换为灰度,对这些文件进行哈希并使用它进行比较。如果我成功了,我将在这里发布代码/答案


尝试使用 file_get_contents 和:http://www.php.net/manual/en/function.hash-file.php http://www.php.net/manual/en/function.hash-file.php

如果哈希值匹配,那么您就知道它们完全相同。

EDIT:如果可能的话,我认为存储图像哈希值和数据库表中的图像路径可能会帮助您限制服务器负载。在初始图像上运行一次哈希算法并将哈希值存储在表中要容易得多...然后,当提交新图像时,您可以对图像进行哈希处理,然后在数据库表中进行查找。如果哈希值已经存在,则丢弃它。您可以使用哈希作为表索引,因此一旦找到匹配项,您就不需要检查其余部分。

另一种选择是不使用数据库...但是这样您就必须始终进行 n 查找。即检查传入图像的哈希值,然后在内存中对所有保存的图像运行一次搜索。

EDIT #2:请在此处查看解决方案:图像比较-快速算法 https://stackoverflow.com/questions/843972/image-comparison-fast-algorithm

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

相似图像 - 如何比较它们 的相关文章

随机推荐

  • 自定义流利验证器

    我对使用 fluidvalidator 非常陌生 我所知道的只是基本的rulefor 但说到习惯我就完全无能为力了 有人可以指导我吗 我需要验证可为空的布尔属性 我需要比较 5 个 bool 属性 如果至少选择了其中之一 则它应该返回 tr
  • IntelliJ 不理解 Java9-ea 上的 java 库

    我在用jdk9 ea 149并创建了一个样本javafx应用程序 IntelliJ不理解java库 它显示了所有导入语句红色他们都是变灰 即使是java util List java util ArrayList它有同样的问题 我可以在外部
  • 如何在 SwiftUI 中创建此视图?

    I am trying to create a view like this in SwiftUI sorry it s so huge 具体来说 我试图在屏幕的顶部四分之一处构建滚动的标签 条形图栏行 对我来说 它看起来像一个水平滚动的
  • Keras 中的 CNN 模型条件层

    我正在尝试建立一个conditional CNN模型 模型是 At the first stage我的模型 我将数据提供给Model 1 then based on the prediction of Model 1 我想要train th
  • 如何使用 InteractionManager.runAfterInteractions 使导航器转换更快

    由于逻辑复杂 我必须渲染很多组件this props navigator push 缓慢的导航器转换使应用程序不可用 然后我注意到here http facebook github io react native docs performa
  • 将行添加到 Word 文档中的现有表(打开 XML)

    我需要打开包含现有表 例如 3 列 的现有 Word 文档 docx 并向该表添加新行 有什么办法可以做到这一点吗 我正在使用 Open XML 我正在创建这样的表 第一次 Table tbl new Table Set the style
  • 在等待挂起操作取消时处置 SemaphoreSlim 是否安全?

    我必须使用 SemaphoreSlim 来确保对代码某些部分的单线程访问 并且希望确保我正确处理所有内容 假设我有以下课程 public class Foo private readonly CancellationTokenSource
  • 如何在多种类型上使用 GraphQL 片段

    我有一个 Gatsby 项目 它对两种不同类型的内容有非常相似的 GraphQL 查询 常规页面和 wiki 文章 按块分页 export const query graphql query slug String page content
  • 使用 fft 和 ifft 更改频率而不使用整数

    我知道我可以通过改变变量来改变整数频率shift但我怎样才能改变频率使用带小数位的数字 例如 754 或 1 2345 or 67 456 如果我改变变量 shift 到一个非整数类似的数字5 1 我收到错误下标索引必须是小于 2 31 的
  • 验证 Google 地图中的某个点是陆地还是水域

    然后谷歌地图 将水域与水域分开 嗯 不是圣经意义上的 但是 我想知道我有哪些选项来验证 Lat Lon 的点是陆地还是水域 谷歌地图显然有这些数据 水体是蓝色的 但是 API 中有什么东西我可以用它来实现吗 如果没有 他们不提供服务是因为他
  • Android 中使用 ArrayAdapter 和 ListView 的大型数据集

    出于学习目的 我想编写一个 Android 应用程序 将显示从 0 到 Integer MAX VALUE 的数字列表 我目前有一个 应用程序将显示从 0 到 100 的数字 这很简单 因为您只需 创建一个数字数组 然后将其传递给适配器 当
  • Brightway2 - 获取即时交换的 LCA 分数

    我在对 Brightway2 的 LCA 结果进行后处理分析时遇到一些问题 运行 LCA 计算后 例如 如果我输入 top activities 我会得到一堆活动及其相关分数的列表 但是没有一个活动 分数与我的功能单元直接相关 它们似乎是我
  • CLR 字符串引用不(始终)匹配

    来自里希特和这次讨论 https stackoverflow com questions 8482479 why are 2 separate string references equal in other words why are s
  • 无法从链接的 SQL Server 查询视图

    在 SQL Server Management Studio 中 我链接了 SQL Server sql02到我的本地服务器 sp addlinkedserver sql02 GO 我可以从此服务器查询表 SELECT FROM SQL02
  • 如何从多个 mysql 列中选择不同的值并将它们放入一个 PHP 数组中?

    我有一个歌曲表 其中每首歌曲最多可以有 3 种不同的流派 因此 在我的表中 对于每首歌曲 我都有 流派 1 流派 2 和 流派 3 列 我正在尝试显示列表中可用的所有类型 这是一个随机示例集 genre1 genre2 genre3 met
  • 如何配置 WWW::Mechanize 以在代理和 https 后面工作?

    我已经使用 WWW Mechanize 编写了 Perl 代码来检索网页 当我检索 http 网页时 它工作正常 但不适用于 https 我已经检查过了 我有 Crypt SSLeay 包 还有什么可能是错误的 错误信息是 Error GE
  • 如何设置列值等于行号?

    我如何设置更改表后添加的列的值等于sql server 2008中的行号 也就是说 我希望该列的值等于行号 的行 我还希望该字段允许 NULL 值 因此 它就像自动增量但允许空值 这就是为什么不想使用具有自动增量的标识或主键列 那么如何才能
  • 如何限制 HttpModule 每个请求只能调用一次?

    这是我的 HttpModule 实现 带有模块的文件 public class HttpModuleRewriter IHttpModule region IHttpModule public void Init HttpApplicati
  • 禁用segue动画

    我想在我的故事板中显示 例如推送 segues 以连接我的视图控制器和导航控制器 然后视图控制器上的导航栏将正确显示 例如 使用显示详细信息或呈现模式 导航栏将消失 但我不想继续动画 Xcode 发出如下警告 在 iOS 9 0 之前 无法
  • 相似图像 - 如何比较它们

    我有超过 130 万张图像需要相互比较 并且每天都会添加数百张图像 我的公司拍摄图像并创建一个可供我们的供应商使用的版本 这些文件通常彼此非常相似 例如 两个不同的公司可以向我们发送两个不同的图像 一个 JPG 和一个 GIF 两者都带有麦