快速算法检测图像中的主要颜色?

bod*_*ydo 8 python algorithm colors python-imaging-library

有谁知道快速算法来检测图像中的主要颜色?

我目前正在使用k-means与Python的PIL一起找到颜色,但它很慢.一个200x200图像需要10秒钟才能完成处理.我有几十万张图片.

Bri*_*n L 10

一种快速方法是简单地将颜色空间划分为二进制位,然后构建直方图.这很快,因为每个像素只需要少量的决策,而你只需要在图像上进行一次传递(并且一次通过直方图以找到最大值).

更新:这是一个粗略的图表,以帮助解释我的意思.

在x轴上是将颜色分成不连续的区域.y轴显示每个bin的值,即与该bin的颜色范围匹配的像素数.此图像中有两种主要颜色,由两个峰显示.

颜色直方图

  • 最简单的方法是在直方图中占据前五个箱子!你可能会发现坐在几个箱子里的胖峰 - 在这种情况下你会想要找到_local maxima_而不是绝对最大值(即如果你想象最常见颜色的"山丘"直方图,找到山顶而不是前五个点,可能都在一个最大的山上).您可能会发现首先平滑直方图很有帮助. (4认同)