如何使用枕头图像量化' kmeans '参数?



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在评论中报道的。