Inclusive Color Space: 生成多样肤色的算法与色彩空间

Show HN: Simple algorithm and color space to generate diverse skin tones

Inclusive Color Space: 生成多样肤色的算法与色彩空间

这是一个旨在解决数字世界中肤色多样性缺失的项目。作者通过手动标注大量肤色数据,结合主成分分析(PCA)技术,构建了一个简化的肤色色彩空间。项目提供了基于 JavaScript 的自定义颜色选择器和 Python 生成的算法代码,帮助开发者在角色创建器、数字艺术等场景中更包容地描绘世界。尽管作者坦诚这并非完美的科学模型,但它为构建更具包容性的数字工具提供了一个极佳的起点,让每个人都能在数字世界中找到属于自己的色彩。

我们的目标不是定义权威标准,而是找到一组简单而‘足够好’的方程,让多样化的肤色在数字世界中得以真实呈现。
  1. vermarish

    这真是项漂亮的工作!起初我以为这会涉及使用 PCA 将 3D 映射到 2D,这样虽然能得到一个更易用的选择器,但代价是无法代表每一个人。

    接着,我以为这会止步于使用 U 空间向量(构成 PCA 图像基础的那些向量)及其对应的椭圆来构建色彩空间,但并非如此,函数拟合是个非常巧妙的想法,哪怕它是手工执行的。

    最后,我很欣赏对不同 r 值进行采样的呈现方式。无论你从固定的 r 值还是 r 值范围中采样,我敢打赌这在游戏设计或动画领域会有很棒的应用。

    不过我仍然不太理解开头的手工数据标注过程?这似乎会引入某种偏见,但第一个点云和结果的一致性确实足以说明一切。

  2. s1mon

    试图从第一性原理去理解这些东西总是很有趣的。颜色,尤其是肤色,是非常复杂且难以测量和建模的事物。它不仅仅是一个物理量,还关乎基于光照和众多因素的人类感知。

    看起来作者做了一些研究现有方法的工作,但我没看到任何关于 Pantone Skin Tones [0] 的引用。无意冒犯,我曾参与过 3 个涉及为化妆品应用测量肤色的项目。Pantone 的范围并非 100% 完美,但做得相当不错且易于理解。它有两个轴:一个是明暗轴,另一个是红黄轴 [1]。

    [0] https://www.pantone.com/na/en-us/skintone

    [1] https://cosmeticsbusiness.com/pantone-skintone-guide-80945

  3. herf

    > 我们是什么颜色?简短的回答也许是“棕色”,而长篇大论的回答则非常非常长。

    Pete Shirley(《Ray Tracing In One Weekend》的作者)也是一位兼职色彩科学家,他让我意识到,如果你把任何种族的人的照片饱和度调到 100%,肤色就会变成橙色。我记得好像听说过有些面部检测器就是基于这个原理工作的,但我不记得是在哪里听说的了。

  4. dahart

    太棒了!

    我之前也看过这个,并使用了 The Pudding 关于化妆品/粉底色号的数据(https://pudding.cool/2018/06/makeup-shades/),将其绘制到了 Oklab 色彩空间(https://observablehq.com/@55th/foundation-shades)。这些色号自动形成了与文章中相同的月牙形。

  5. mbo

    不错。这些颜色大多数看起来都挺对,但我同时也看到了绿色、蓝色和紫色?如果你是从空间中手工精选颜色,那倒不是问题。

    “仅限逼真颜色”会是另一个问题。而且我不确定是否有办法在不排除一些真实颜色的情况下解决那个问题。

    (也许如果颜色选择器的形状不同?我对色彩空间了解不多。)

同日更多故事

2026-08-04