首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >找到颜色相似的图像

找到颜色相似的图像
EN

Stack Overflow用户
提问于 2009-06-01 18:08:06
回答 4查看 5.3K关注 0票数 7

根据这里的建议@ SO,我对一组股票图像的平均颜色进行了分类。

代码语言:javascript
复制
 r,g,b = image.convert("RGB").resize((1,1), Image.ANTIALIAS).getpixel((0,0))

现在,我想向用户展示一个颜色轮,并对我的目录进行搜索,以找到与所选颜色最接近的图像。

我已经阅读了几个问题张贴在这里,建议“找到两种颜色之间的距离”,并参考Flickr黑客书籍。

Flickr Hack距离算法似乎基本上是:

diffr = checkImage.r - search_r

diffg = checkImage.g - search_g

diffb = checkImage.b - search_b

距离=(扩散*扩散+扩散*扩散+扩散*扩散)

如果距离<阈值,则匹配。

这种方法需要我计算搜索颜色与每个图像的颜色指纹之间的距离。我想知道是否有一种方法可以根据选定的颜色(中心点)和预先确定的阈值(或搜索半径)指定“搜索区域”。然后构造一个类似SQL的查询,以返回属于该区域的所有图像。

这个是可能的吗??

顺便说一句,我正在使用PIL和相关库在Python中实现这一点。

非常感谢你的帮助!

高级

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-06-01 18:49:42

您可以通过对每个组件进行比较来显着地节省计算量,而不是通过平方来查找距离。

代码语言:javascript
复制
if abs(check.r - search.r) < threshold and
   abs(check.g - search.g) < threshold and
   abs(check.b - search.b) < threshold 

将其与缓存表相结合可能足以满足您所做的任何工作。

票数 3
EN

Stack Overflow用户

发布于 2013-10-21 13:01:37

色差(Delta ) --两种颜色之间的差异或距离是色彩科学中感兴趣的指标。

您可以找到Python代码这里

注意,在计算RGB之前,需要将Delta E转换为Lab

RGB -> XYZ -> Lab

更多信息:

布鲁斯·贾斯汀·林德布鲁姆网站

颜色转换数学与公式

颜色增量/比较数学

票数 4
EN

Stack Overflow用户

发布于 2009-06-01 18:31:12

如果是我,我会少花点心思,把搜索缓存在第二个表中,比如:

代码语言:javascript
复制
CREATE TABLE `image_search` (
    `id` int not null auto_increment,
    `image_id` int not null,
    `r` tinyint not null,
    `g` tinyint not null,
    `b` tinyint not null,
    `distance` tinyint not null,
    `hit` bool not null,
    PRIMARY KEY (`id`),
    UNIQUE KEY `image_id_by_rgb_by_distance` (`image_id`,`r`,`g`,`b`,`distance`),
    KEY `image_id_by_rgb_by_distance_by_hit` (`image_id`,`r`,`g`,`b`,`distance`,`hit`),
);

从那里拔出来找你的火柴,就像

代码语言:javascript
复制
SELECT `image_id`
FROM `image_search`
WHERE `r` = $r
AND `g` = $g
AND `b` = $b
AND `distance` = $distance
AND `hit` = 1

如果你没有得到结果,那就去做

代码语言:javascript
复制
SELECT `image_id`
FROM `image_search`
WHERE `r` = $r
AND `g` = $g
AND `b` = $b
AND `distance` = $distance

如果没有结果,那么运行您的图像目录做比较,并存储每个结果,积极或消极,在表中。

只有在没有缓存结果的情况下,它才会很慢。如果您的UI鼓励用户选择某些有用的预设颜色,您可以预先计算这些颜色,并提供更多帮助。

此外,当您将图像添加到目录中时,预计算所有先前执行的搜索也会得到额外的积分。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/935992

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档