我有相当多的照片和RGB彩色地图(比方说大约100种颜色)。如何按颜色对图片进行分组并获得如下内容:http://labs.ideeinc.com/multicolr?
我目前的想法是:使用ImageMagick,对每一张照片执行以下操作:
你知道更好更有效的方法吗?我选择的语言是PHP,因为所有繁重的处理都将由ImageMagick完成,而数据库是PostgreSQL。提前谢谢你!
发布于 2010-07-19 09:41:46
我注意到你已经知道如何从图像中得到最相关的颜色。不要调整图像的大小,因为直方图看起来可能不一样。
数据库看起来可能是这样的:
图像表:
image_id | image_file彩色表:
color_id | color_rgbimage_color表:
image_id | color_id | color_percentcolor_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发布于 2010-07-19 12:31:36
颜色本质上是三维向量(不管它们是否表示为HSV、RGB、CMYK)。不幸的是,关系数据库大多不能很好地在多个维度上工作。
如果将图像缩小到单一的“平均”颜色,那么解决方案就会变得简单一些:简单的分析将意味着需要将新图像与现有的图像进行比较,以确定相似性的级别。然而,一种更好的方法是将矢量数字化,即在数据库中找到类似的值。
例如,24位颜色124,39,201作为1位颜色: 0,0,1到2位颜色: 1,0,2 .
如果你想在图像中看到更多的颜色,那么我建议将固定颜色图的最近值减少到没有错误传播和识别最常用颜色的顶部'N‘。在此之后,您所做的工作将需要一些尝试和努力--在临时图像中对频率进行以上加权的方法可能是必要的,或者您可能只需查看上面的N颜色与计算值的N匹配的图像(对M和X值进行一些调整)。
结果表明,C.
发布于 2012-03-25 09:27:03
我注意到你需要做什么。解决这个问题的最好方法是将你的图像从RGB转换到CIE-实验室的颜色配置文件。
然后,你可以计算出这两种颜色在3d空间的距离。
M.M.
https://stackoverflow.com/questions/3279501
复制相似问题