返回博客

OKLab 色彩空间:291 色拼豆的数学解法

问题

把图片转成拼豆图纸,核心是找最接近的豆色。直觉做法是 RGB 空间里算欧氏距离——但效果很烂。

为什么 RGB 不行

RGB 不是感知均匀空间:相邻数值的颜色差异,人眼感知不均匀。绿色系微小的 RGB 差人眼很敏感,而红色系差 10 个数值都看不出区别。

解法:OKLab

OKLab 是感知均匀的色彩空间:数值距离 ≈ 人眼感知差异。

流程:

  1. 图片像素 sRGB → OKLab
  2. KD-Tree(k 维树)加速最近邻搜索,291 色查找从 O(n) 变 O(log n)
  3. 5 种抖动策略(Floyd-Steinberg 误差扩散等)处理色阶断层,还原渐变层次

效果

  • 双引擎:bead-grid-studio(221 色)+ pixel-to-beads(MARD 291 色)合并
  • 渐变、肤色、天空等区域层次感大幅提升

启示

“简单可行”的算法方案,在真实产品里往往不够——感知质量比数值正确更重要。

📍 定位中…
--° --
体感 --°💧 --%💨 --
加载中…
🔊