PIL.Image.quantize
文档页面给出:
Image.quantize(colors=256, method=None, kmeans=0, palette=None, dither=1)
colors – The desired number of colors, <= 256
kmeans – Integer
https://pillow.readthedocs.io/en/stable/reference/Image.html PIL.Image.Image.quantize
如何使用这个kmeans
参数?
如果kmeans
是"要使用的簇数",那么它的值与colors
不一样吗?或者是指定10个聚类,但只有3种颜色,让其他聚类挑选不感兴趣的颜色?
我没有在文档中看到您报告的kmeans
的定义为"群集"的数量,但从我的理解,在某些情况下群集的数量可能大于获得的颜色的数量。
假设您想要将具有100种独特颜色(灰度图像可以具有256种颜色)的灰度图像减少到8种颜色。在均匀量化方法的情况下(然而,枕头没有实现),如果这100种颜色均匀分布在(0,255)范围内,指定8个簇,您可能会得到8种颜色,但如果这100种颜色严重分布,那么在一个(或多个)簇中没有颜色的像素,您将得到7种(或更少)颜色的结果图像。
其他量化方法确保簇不是空的,因此颜色的数量总是与簇的数量相同。
量化主题的概述可以在这里找到。
然而,我做了一些测试,只指定kmeans
参数,我看不到任何颜色的减少,所以我猜参数kmeans
不是集群的数量,它可能是一个参数控制聚类算法收敛,正如Mark Setchell在评论中报道的。