问题标签 [content-based-retrieval]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
550 浏览

algorithm - 想要一些关于如何开发图像检索系统的想法

我只是想更多地研究谷歌如何搜索图像。我知道这对我来说太复杂了,但我想尝试在我自己的一组图像上做。

这就是我的建议:对于文件夹中的大量随机图像,我可以使用一些关键字(可能不合适,根据您的想法进行更改),搜索一些图像并对其进行排序,就像 google image 所做的那样.

我已经与一些 Graphic 人讨论过如何确定图像之间的相似性,他们告诉我这样的事情:

  1. 全局颜色直方图
  2. 图像布局和基于块的直方图(我不是很熟悉)
  3. 基于 RAG 的描述。

所以,现在我真的需要你的想法,我不需要任何代码或其他东西,你能不能分享一下你在设计这样一个本地图像搜索系统时的想法,你如何定义图像之间的相似性,如何定义图像之间的相似性?你代表图像等。

我将继续与一些图形人交谈以学习,但我也非常希望您的想法能够让我开始。

0 投票
1 回答
11246 浏览

php - 识别相似图像的好方法?

我在 PHP 中开发了一种简单快速的算法来比较图像的相似性。

它的散列速度很快(对于 800x600 图像,每秒约 40 张),未经优化的搜索算法可以在 22 分钟内浏览 3,000 张图像,将每张图像与其他图像进行比较(3/秒)。

基本概述是您获取图像,将其重新缩放为 8x8,然后将这些像素转换为 HSV。然后将色调、饱和度和值截断为 4 位,并变成一个大的十六进制字符串。

比较图像基本上是沿着两个字符串走,然后添加它发现的差异。如果总数低于 64,则它是相同的图像。不同的图像通常在 600 - 800 左右。低于 20 并且极其相似。

我可以使用这个模型有什么改进吗?我还没有查看不同组件(色调、饱和度和值)与比较的相关性。色调可能很重要,但其他的呢?

为了加快搜索速度,我可能会将每个部分的 4 位分成两半,并将最高有效位放在首位,因此如果它们未通过检查,则根本不需要检查 lsb。我不知道一种有效的方法来存储这样的位,但仍然可以轻松地搜索和比较它们。

我一直在使用包含 3,000 张照片(大部分是唯一的)的数据集,并且没有出现任何误报。它完全不受调整大小的影响,并且对亮度和对比度变化具有相当的抵抗力。

0 投票
3 回答
4960 浏览

image - 相似图片搜索软件(如 TinEye)

在我们的一个社区网站中,我们允许用户上传图片。这些图片由我们的版主批准或拒绝。

为了限制我们的管理员所需的工作,我们希望将每张被拒绝的图片“记录”到某种数据库中,并在提交图像以供批准之前在该数据库中进行查找。如果相似的图片已经被拒绝,上传的图片将不会提交审批。

我们当然可以只记录图片的文件名、大小和 MD5 之类的内容以获取相似性,但我们肯定可以找到不同的裁剪或调整大小的图像。

TinEye.com 提供了类似的功能。

你知道任何类型的开源软件能够做到这一点吗?你还有其他建议吗?

谢谢!

0 投票
3 回答
4966 浏览

search - 谷歌如何通过图片搜索?

最近谷歌推出了图片搜索的新功能,这意味着我们可以通过在谷歌搜索框中上传图片来搜索其他图片。这怎么可能?

http://images.google.com

0 投票
2 回答
3397 浏览

image - 是否有任何 API 可以让我按图像搜索?

我有一张图片,我想搜索一下它是什么。有任何可用的 API 吗?

0 投票
0 回答
1142 浏览

opencv - 使用 OpenCV 或 LIRe 进行基于草图的图像检索

我目前正在伦敦大学攻读 BSc Creative Computing,并且正处于学习的最后一年。为了完成学位,我剩下的唯一模块是项目。

我对基于内容的图像检索领域非常感兴趣,我的项目想法就是基于这个概念。简而言之,我的想法是帮助新手艺术家使用 3D 模型作为参考来绘制透视草图。我打算通过渲染集合中每个 3D 模型的侧/顶/前视图来实现这一点,预处理这些图像并对其进行索引。在绘图时,用户会得到一系列与他/她的草图最匹配的模型(已经过预处理),这些模型可以用作进一步增强草图的指导。由于这种方法依赖于 3D 模型,因此用户也可以在 3D 空间中旋转草图并根据该透视图继续绘制。这种方法可以帮助漫画家或概念设计师快速勾勒出他们的想法。

在进行研究时,我遇到了LIRe,我必须说我印象非常深刻。我已经下载了 LIRe 演示 v0.9 并试用了包含的示例。我还开发了一个小型应用程序,它可以自动下载、索引和搜索相似的图像,以便更好地了解引擎的内部工作原理。即使使用有限的图像集(~300),这两种方法都返回了非常好的结果。

下一个实验是在提供草图而不是实际图像作为输入时测试输出响应。如前所述,系统应该能够根据用户的草图提供一组匹配模型。这可以通过将草图与渲染图像(当然随后链接到 3D 模型)进行匹配来实现。我通过将几个草图与一小组图像进行比较来尝试这种方法,结果非常好 - 请参阅http://claytoncurmi.net/wordpress/?p=17。但是,当我尝试使用一组不同的图像时,结果不如以前的场景好。我使用了 LIRe 提供的 Bag of Visual Words(使用 SURF)技术来创建和搜索索引。

我也在尝试一些OpenCV附带的示例代码(我从未使用过这个库,我仍在寻找我的方式)。

所以,我的问题是;

1..有没有人尝试过实现基于草图的图像检索系统?如果是这样,你是怎么做的?

2.. LIRe/OpenCV 可以用于基于草图的图像检索吗?如果是这样,如何做到这一点?

PS。我已经阅读了几篇关于这个主题的论文,但是我没有找到任何关于这个系统的实际实现的文档。

非常感谢任何帮助和/或反馈。

问候,

克莱顿

0 投票
1 回答
633 浏览

computer-vision - 如何为基于内容的图像检索的向量/直方图集合创建索引

我目前正在编写一个基于视觉词的图像检索系统,它类似于文本检索中的向量空间模型。在这个框架下,每个图像都由一个向量表示(或者在文献中有时也称为直方图)。基本上,向量中的每个数字都会计算每个“视觉词”在该图像中出现的次数。如果 2 个图像的向量“接近”在一起,这意味着它们具有许多共同的图像特征,因此是相似的。

我基本上是在尝试为一组这样的向量创建倒排文件索引。我想要一些可以从数千(在试用阶段)扩展到数十万或数百万+图像的东西,这样自制的数据结构黑客将无法工作。

我看过 Lucene,但显然它只索引文本(如果我错了,请纠正我),而在我的情况下,我希望它索引数字(即向量本身)。我见过人们通过以下方式将矢量转换为文本文档的情况:

<3, 6, ..., 5> --> “w1 w2...wn”。基本上,任何非零组件都被文本单词“w[n]”替换,其中 n 是该数字的索引。然后将此“文档”传递给 Lucene 以进行索引。

使用这种方法的问题是向量的文本表示不编码特定“单词”出现的频率,因此检索到的图像的排名不会很好。

有谁知道可以处理向量的成熟索引 API,或者可能为我的向量建议不同的编码方案,以便我可以继续使用 Lucene?我还查看了 Lucene for Image Retrieval (LIRE) 项目并尝试了它附带的演示,但是运行该演示时生成的异常数量让我不确定是否使用它。

至于 API 的语言,我对 C++ 或 Java 持开放态度。

提前感谢您的任何回复。

0 投票
0 回答
962 浏览

mahout - Mahout 基于内容的相似性

我创建了一个自定义项目相似性,它基于产品分类模拟基于内容的相似性。我有一个用户只喜欢两个项目:

我的自定义itemSimilarity从 [-1,1] 返回值,其中 1 应该表示高度相似,-1 表示高度不同。用户喜欢的两个项目在分类树中没有任何最低的共同祖先,因此它们的值不是 1。但它们的值在某些项目中是 0、0.20 和 0.25。

我通过以下方式提出建议:

我得到以下结果:

乍一看有人会说,好的,它会产生建议。我尝试从 中打印值,itemSimilarity因为它在成对项目之间进行比较,我得到了这个令人惊讶的结果:

还有更多。它们不在生产订单中。我只是想说明一点。所有相异度为 -1 的项目都被推荐,而那些相似度为 0.0、0.2 和 0.25 的项目则完全不推荐。这怎么可能?itemSimilarity接口的方法ItemSimilarity有如下解释:

该接口的实现定义了两个项目之间的相似性概念。实现应返回 -1.0 到 1.0 范围内的值,其中 1.0 表示完全相似。

如果我使用 [0,1] 之间的相似性,我会得到以下建议:

并且成对相似度如下(仅针对那些树,其他为0):

编辑:我还打印出与1449133, 18886199with 最相似的项目:(GenericItemBasedRecommender)delegate).mostSimilarItems(new long[]{1449133, 18886199}, 10) 我得到了:[RecommendedItem[item:228964, value:0.125], RecommendedItem[item:950062, value:0.125], RecommendedItem[item:899573, value:0.1]]

仅对于项目 18886199,(GenericItemBasedRecommender)delegate).mostSimilarItems(new long[]{18886199}, 10)我得到了[RecommendedItem[item:228964, value:0.25]]. 因为1449133只有没有类似的项目。

我不明白为什么它不能与强烈的不同?另一个问题是为什么所有预测的偏好值都是8.04.5。我可以看到只有项目18886199与推荐项目相似,但是有没有办法将 8.0 的值与 case 中的相似度相乘0.25,并得到值2.0代替8.0。在计算相似度时我不能这样做,因为我还不了解用户,但我认为应该在推荐阶段完成。这不是推荐器应该如何工作,或者我应该创建一个自定义推荐器并以自定义方式完成工作?

如果 Mahout 社区的人能给我指路,我将不胜感激。

0 投票
3 回答
5895 浏览

apache-camel - Camel: How to go all "when" in "choice when"

I need to ask a problem on the operator "choice when" in Apache Camel route. In the following example, if I have two soap-env:Order elements which have 1, 2 value, then I want to create two xml file named output_1.xml and output_2.xml. However, the code can only create one file output_1.xml. Can anyone give me any ideas or hints? Thanks for any help.

0 投票
1 回答
3040 浏览

mahout - Mahout 是否提供了一种确定内容之间相似性的方法(用于基于内容的推荐)?

Mahout 是否提供了一种确定内容之间相似性的方法?

我想生成基于内容的推荐作为 Web 应用程序的一部分。我知道 Mahout 擅长获取用户评分矩阵并根据它们生成推荐,但我对协作(基于评分)推荐不感兴趣。我想对两段文本的匹配程度进行评分,然后推荐与我在用户个人资料中为用户存储的文本最匹配的项目......

我已经阅读了 Mahout 的文档,看起来它主要促进了协作(基于评级)的推荐,而不是基于内容的推荐......这是真的吗?