迭代 1:让它运行起来
在第一个版本中,在 RGB 空间中进行中值切割量化,划分七个 ROYGBIV 区域,经三轮区域内颜色选择和跨区域去重。但代码杂乱,有十三个命名常量和六条判断灰色规则,逻辑难理解,还在弥补 HSL 色彩空间不足,于是迁移到 OKLCH 色彩空间,用全新 K - means 算法重新开始,目标是让光谱展示颜色“事实”,调色板体现颜色“感觉”。
迭代 2:聚类、合并、选择
从照片选五种颜色是聚类问题,已在 OKLCH 色彩空间分析图像,从 HSL 饱和度到 OKLCH 彩度转变能更好衡量颜色“鲜艳程度”,可根据彩度阈值筛选颜色。使用 K - means++ 算法,K 值设为 10 过度聚类,初始点根据输入像素哈希值确定。设定合并距离阈值 0.07 并预计迭代调整。聚类数量超五个用最近对逻辑合并,少于五个进行补救处理。最后,聚类质心典型半径内彩度最高的像素成色板。用此算法为十二张测试图像生成调色板,部分合理但需调整。
迭代 3:色相加权距离并增加 K 值
对十二张样本图像基准测试,发现 K = 14 是理想值,能在灰色图像中找到彩色点缀。合并步骤中,色度平面权重是亮度轴两倍,避免算法合并错误聚类对。这两个改变带来明显改进,但部分色彩鲜艳图像中,深暖色调聚类仍成色板,色度加权对此无帮助。
迭代 4:幻影防护、质量分割、质心感知代表色
四张图像存在问题,通过三个结构调整解决。一是删除像素权重低于 2.5% 且质心彩度低于 0.05 的聚类;二是根据图像消色差和彩色像素质量分配色板插槽,合并同一亮度桶中的聚类对;三是根据聚类本质选色板,质心彩度低于 0.03 时选最接近质心的像素,否则用彩度最高规则。下一轮改进可减少同色系渐变、合并近似重复颜色、按亮度排序色板。这轮迭代让调色板更似人工挑选,无需硬编码边缘情况或针对特定场景优化。