你怎么能找到“我的”呢;“多数颜色”;使用PHP创建一个图像?

你怎么能找到“我的”呢;“多数颜色”;使用PHP创建一个图像?,php,algorithm,image-processing,imagemagick,gd,Php,Algorithm,Image Processing,Imagemagick,Gd,如何计算PHP中图像的主要颜色?我更喜欢将相似颜色的不同色调组合到一个桶中,例如,所有蓝色的色调都被算作“蓝色” 换句话说,我想要一个函数,它获取图像并返回一个简单数组,类似于: "blue":90%, "white":10% 不需要高精度,只需按主色和次主色对图像进行分类即可。谢谢 这里有一种方法: 1) 定义一组我们称之为质心的颜色——这些是你想要将图像分割成的基本颜色的中间部分。您可以使用集群算法来实现这一点,例如。所以现在你有了,比如说,100个质心(桶,你可以把它们想象成),每一个都

如何计算PHP中图像的主要颜色?我更喜欢将相似颜色的不同色调组合到一个桶中,例如,所有蓝色的色调都被算作“蓝色”

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

"blue":90%, "white":10%
不需要高精度,只需按主色和次主色对图像进行分类即可。谢谢

这里有一种方法:

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

2) 要生成新图像的直方图,请执行以下操作:

  • 在中打开图像或其他任何内容
  • 将其转换为像素值数组(例如,使用)
  • 确定像素值和所有质心之间的距离(正常)。将每个像素分类为它最接近的存储桶
  • 输出是每个像素的质心指定。或者,如果您只需要一个直方图,您可以只计算每个质心出现的次数
请记住,这种颜色分配有点主观。我不确定是否会有一个从颜色到名称的明确映射(例如,它的颜色)。但如果你在谷歌上搜索,可能会有一个你可以使用的查找表,尽管我还没有遇到过

希望这有帮助


Ben

开始时您选择了多少桶/颜色?这可能有点棘手。如果扣环部分使事情复杂化,那么一个将颜色聚合到非常广泛的平均值的答案将使我朝着正确的方向前进。类似于#0000FF:90%,#FFFFFF:10%的东西这应该被标记为
算法
。谢谢,这非常有用。你认为三维欧几里德距离(r,g,b)可以精确地将像素颜色映射到质心,或者你知道任何考虑人类感知的颜色测量计算吗?这是一个好问题。。。这些链接可能会有所帮助:而且(更技术性):