【问题标题】:How to search pictures that look like uploaded picture如何搜索看起来像上传图片的图片
【发布时间】:2012-03-11 18:25:06
【问题描述】:

我有一个索引几千张图片的数据库。它们由应用程序转换,因此我在技术上更改了图片。现在我想实现一个搜索来查找看起来像给定图片的图片。我可以使用时间戳,但图片或图片元数据的细微差别会妨碍找到正确的图片。

所以我需要一个命令行工具,它可以找到看起来像给定图片的图片,如果这也匹配具有另一个灵魂但内容相同的图片,那将是最佳选择。

最后,我将使用system 在 ruby​​ on rails 应用程序中实现此功能,但如果我有匹配工具,我认为这不是问题。

【问题讨论】:

  • 正确答案将取决于您所说的“看起来”的确切含义。这些是随机的全彩色 JPG 吗?线条艺术?你会计算颜色大致相同的图像吗?还是两张包含不同面孔的图像?或者脸需要相似吗?这是一个难题,您需要降低问题的复杂性以获得合理的解决方案。
  • 这是 JPEG,它应该找到看起来像上传的原始图像,只是分辨率不同。

标签: ruby-on-rails linux bash search image-processing


【解决方案1】:

也许您可以查看recommendify。来自github页面:

Recommendify 是一个基于 ruby​​/redis 的推荐引擎 - 建议可以增量更新/处理,并在多个 主机。 worker 是用纯 ruby​​ 和原生 C 实现的。

还有一个照片匹配的例子here

【讨论】:

  • 这行不通,因为我的搜索不应该基于用户数据。应该基于图片的相似度
【解决方案2】:

我认为像Tin Eye 这样的大多数图像相似度引擎都使用某种形式的locality sensitive hashing。我不确定是否有任何 ruby​​ 库,但一种简单的算法是将图像压缩到 16x16。通过将一个像素块平均为一个像素来做到这一点。然后你可以使用差的总和(或平方差的总和......)来获得任意两张图片之间的增量。

【讨论】:

    【解决方案3】:

    我找到了适合我的解决方案。让我远离使用基于 Web 的 endines 的一个原因是这些图片包含可靠的数据,因此我需要一个可以在本地工作且无需任何外部服务连接的服务。

    我安装了isk-Daemon 一个服务,它带有一个小型网络服务器、一个 SOAP 和一个 XML-RPC 引擎来使用它。因此,我还编写了一个IskClient 类,将图像添加到数据库并将它们连接到 MySQL 数据库中的图像,并运行查询以获取相似的图像。我可能会从这个类中构建一个 gem。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-27
      • 1970-01-01
      相关资源
      最近更新 更多