0

如何计算 PHP 中图像的主要颜色是什么?我更愿意将相似颜色的不同深浅组合到一个桶中,例如,所有深浅不一的蓝色都被计为“蓝色”。

换句话说,我想要一个接受图像并返回一个简单数组的函数,类似于:

"blue":90%, "white":10%

不需要高精度,只需按主要颜色和次主要颜色对图像进行分类即可。谢谢!

4

1 回答 1

2

这是一种方法:

1) 定义一组我们称之为质心的颜色——这些是您想要将图像分解成的基本颜色的中间部分。例如,您可以使用像k-means这样的聚类算法来做到这一点。所以现在你有了,比如说,100 个质心(桶,你可以把它们想象成),每个质心都是一个 RGB 颜色三元组,你可以手动为其附加一个名称。

2) 为新图像生成直方图:

  • 在gd或其他中打开图像
  • 将其转换为像素值数组(例如使用imagecolorat
  • 确定像素值和所有质心之间的距离(欧几里得距离可以)。将每个像素分类为最接近哪个桶。
  • 您的输出是每个像素的质心分配。或者,如果您只需要一个直方图,您可以计算每个质心出现的次数。

请记住,这种颜色分配有些主观。我不确定是否会有从颜色到名称的明确映射(例如,它取决于语言)。但是如果你用谷歌搜索,可能存在一个你可以使用的查找表,尽管我还没有遇到过。

希望这可以帮助!

于 2012-05-13T06:03:13.110 回答