- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想处理图像以在每个图像中建立 9 个区域,然后找到每个区域的平均颜色,然后将其保存到这样的 char 字段中:
255,255,255,255,255,255,107,195,305
然后要找到与给定图像相似的所有图像,我必须计算每对颜色之间的距离(与相同区域进行比较),例如:
这些图像之间的差异是 1:
255,255,255,255,255,255,107,195,305
255,255,255,255,255,255,107,195,304
这些图像之间的区别是 3:
255,255,255,255,255,255,105,195,305
255,255,255,255,255,255,107,195,304
我的问题是如何执行这样的查询,并按相似度排序?该字段只是一个字符串,值以逗号分隔。
这样的查询有可能很快吗?还是我应该寻找不同的方法?我们谈论的是数千张图片
编辑:作为@therealsix,一种选择是将每个平均颜色值放入单独的列中。
最佳答案
一个更“SQLey”的方法来做到这一点,可能是使用一个更规范化的数据库方法,有 2 个表:
Image(ImageID int, ... other columns as required ...)
ImageZone(ImageID int, ZoneIndex int, ColourValue int, ...)
所以对于你的例子,你可能有
ImageID ZoneIndex ColourValue
------- --------- -----------
1 1 255
1 2 255
...
1 9 304
2 1 255
...
2 9 305
然后,为了获得距离,类似于(我是 SQL Server 专家,但这应该很容易翻译成 MySQL):
SELECT
Candidate.ImageID,
Candidate.ImageFile, /* or whatever... */
Scores.Difference
FROM
(
SELECT
Original.ImageID AS OriginalID,
Candidate.ImageID AS CandidateID,
SUM(ABS(Original.ColourValue - Candidate.ColourValue)) AS Difference
FROM ImageZone AS Original
INNER JOIN ImageZone AS Candidate
ON (Original.ImageID <> Candidate.ImageID)
ON (Original.ZoneIndex = Candidate.ZoneIndex)
) AS Scores
INNER JOIN Image AS Candidate ON (Scores.CandidateID = Candidate.ImageID)
WHERE Scores.OriginalID = 1 /* or the image ID you want to look up */
ORDER BY Difference
因此内部查询为每个候选区域创建一行,例如(O = 原始,C = 候选):
O.ImageID O.ZoneIndex O.ColourValue C.ImageID C.ZoneIndex C.ColourValue
--------- ----------- ------------- --------- ----------- -------------
1 1 255 2 1 255
... then ...
1 9 305 2 9 304
1 1 255 3 1 99
... then ...
99 9 100 98 9 99
然后汇总为总差:
OriginalID CandidateID Difference
---------- ----------- ----------
1 2 1
1 3 10
...
99 98 500
然后,您仅在 OriginalID 为 1 的地方从该虚拟表中进行选择,并将其连接回原始图像表以获得最低“差异”分数(在本例中为 2)所需的任何详细信息。
恕我直言,这是一个更简洁的数据库设计(如果您以后使用更多区域等,则非常适合)。
关于php - 如何在 SQL 查询中通过相似性查找图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5590100/
我需要在基于 Java 的应用程序中使用 Wordnet。我想: 搜索同义词集 找到同义词集之间的相似性/相关性 我的应用程序使用 RDF 图,我知道 Wordnet 有 SPARQL 端点,但我想最
假设我们有一个 IEnumerable Collection,其中包含 20 000 人 对象项。那么假设我们创建了另一个 Person 对象。 我们想列出所有与这个人相似的人。这意味着,例如,如果姓
我使用 JAWS 作为普通的 wordnet 来查找单词之间的相似性。 我安装了 wordnet 2.1 并添加了 jar 文件:edu.mit.jwi_2.1.4.jar 和 edu.sussex.
我用这段代码做了一个词嵌入: with open("text.txt",'r') as longFile: sentences = [] single= []
我正在尝试找出确定各种对象或数组之间的共性或相似性的最佳方法,并且有兴趣获得社区的意见。我目前正在用 javascript 构建一个早期研究原型(prototype),我需要采用一种巧妙的方式来比较对
我在将 Flash 游戏转换为 C# 时遇到问题。在 Flash 中我会使用这种语法: public function doMove() { eaze(this).to(actionTime,
我有一批形状为 (bs, m, n) 的向量(即维度为 mxn 的 bs 向量)。对于每个批处理,我想计算第一个向量与其余 (m-1) 个向量的 Jaccard 相似度 例子: a = [ [
如何使用 Whoosh 获取文档的相似性度量? 我想创建一个“相关”特征,对与文档具有高度相似性的其他先前编入索引的文档进行排名。 我是否将文档作为长查询字符串输入?我是否将文档添加到索引并以某种方式
我编写了一个 Python 函数,它接受两个列表,使用 Levenshtein 比较它们并将足够相似的单词合并到一个名为“merged”的列表中。 我如何为超过 6 个列表执行此操作?确保将每个列表与
请原谅我对 Go 的了解非常有限。我有这样的定义 type ErrorVal int const ( LEV_ERROR ErrorVal = iota LEV_WARNING
我正在从事文本分析项目,一次比较两个不同的报告并将结果保存到 pandas 数据框中。 我能够得到 cosine 和 jacard 的相似性,但需要确保我得到正确的度量。作为参数,我使用位于给定文件夹
我是一名优秀的程序员,十分优秀!