我有相当多的照片和RGB色彩图(让我们说大概有100种颜色)。如何按颜色对图片进行分组并获得如下内容:http://labs.ideeinc.com/multicolr?
我目前的想法是:使用ImageMagick,为每张照片执行此操作:
答案 0 :(得分:1)
我注意到你已经想出如何从图像中获取最相关的颜色。不要调整图像大小,因为直方图可能看起来不同。
数据库可能看起来像这样:
图片表:
image_id | image_file
颜色表:
color_id | color_rgb
image_color table:
image_id | color_id | color_percent
color_percent列将用于分组/ where子句
获取图片:
select
image_id
sum(color_percent)/count(color_percent) as relevance
from
image_color
where
color_id IN (175, 243) # the colors you want to involve in this search
and color_percent > 10 # this will drop results with lower significance
group by
image_id
order by
relevance
答案 1 :(得分:1)
颜色本质上是三维向量(无论它们是否表示为HSV,RGB,CMY [K])。不幸的是,关系数据库大多不是很擅长在一维以上的工作。
如果将图像缩小为单个“平均”颜色,则解决方案会变得更简单: 一个简单的分析意味着您需要将新图像与每个现有图像进行比较,以确定相似程度。然而,更好的方法是将矢量数字化,在数据库中找到相似的值。
e.g。对于24位颜色124,39,201 作为1位颜色:0,0,1 作为2位颜色:1,0,2 ....
如果你想在图像中查看更多颜色,那么我建议减少到最接近固定颜色图的值而不进行错误传播,并确定最常用的顶部'N'颜色。之后您需要进行一些试验和努力 - 上面的方法可能需要对临时图像中的频率进行加权,或者您可能只是查看顶部NM颜色与计算值的NX匹配的图像(对于某些图像)调整M和X值。)
下进行。
答案 2 :(得分:0)
我注意到你需要做什么。解决该问题的最佳方法是将图像从RGB转换为CIE-LAB颜色配置文件 然后你可以计算3d空间中两种颜色之间的距离。
M.M。