一张照片可能包含上百万种颜色,颜色提取工具如何归纳出少数几个“主色”?核心是颜色量化。
两种经典算法
- 中位切分法:把颜色空间按像素分布反复对半切分,直到得到目标数量的色块,每块取平均色作为代表色,优点是确定性好、覆盖均衡
- K均值聚类:随机选K个初始质心,把每个像素归到最近的质心,再不断更新质心直到稳定,优点是灵活,但结果受初始值影响
实现细节
实际工具通常会先把图片缩小(如最长边200像素内)减少计算量,再跳过透明像素,按颜色分桶统计数量,取前几名的平均色。像素占比大但灰暗的背景色可能排前,鲜艳的小色块可能靠后,这是算法与肉眼感知的差异。