按颜色分组照片

liv*_*cmg 8 php postgresql colors imagemagick photos

我有相当多的照片和RGB彩色地图(比方说约100种颜色).如何按颜色对图片进行分组并获得如下内容:http://labs.ideeinc.com/multicolr

我目前的想法是:使用ImageMagick,为每张照片执行此操作:

  1. 将其调整为较小的大小,以便可以更快地处理它.
  2. 使用我选择的颜色贴图,无需抖动即可对其进行量化.
  3. 获取照片的直方图以获取每种颜色出现的次数.
  4. 将颜色存储在数据库中,但我还没有弄清楚快速检索的最佳方法是什么.

你知道更好更有效的方法吗?我选择的语言是PHP,因为所有繁重的处理都将由ImageMagick完成,而数据库是PostgreSQL.先感谢您!

Nar*_*adu 1

我注意到您已经弄清楚如何从图像中获取最相关的颜色。不要调整图像大小太多,因为直方图可能看起来不同。

数据库可能看起来像这样:

图像表:

image_id | image_file
Run Code Online (Sandbox Code Playgroud)

颜色表:

color_id | color_rgb
Run Code Online (Sandbox Code Playgroud)

图像颜色表:

image_id | color_id | color_percent
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)