一个名为 “What Colors Are We?” 的 Show HN 项目在 Hacker News 上拿到448分。作者 Tony Alexander 用一组”足够好”的简单方程,在 RGB 色彩空间中圈定出接近真实肤色的区域,并附上 JavaScript 取色器与 Python 程序化生成算法——目标是让角色创建器、数字绘画等工具更容易做出包容性的肤色选项。
五档肤色、五十档肤色,还是1670万色?
项目直指数字世界肤色表征的困境:Emoji 说人类有5种肤色(或卡通黄);化妆品品牌说50种;角色创建器甩给你1670万色任选。作者认为这些都偏离了现实——一个人的肤色远不止一个颜色。他相信存在一种介于”几个”与”几百万个”之间的更好方案。
方法:球面采样加非线性映射
技术实现相当精巧:在三维空间中定义肤色区域,用均匀球面采样(确定性采样或拒绝采样)生成候选点 (t,u,v),再通过一组拟合方程非线性映射到 RGB 值(例如 r = 28.77x + 36.78y – 19.70z + 187.14)。作者坦言方法论”不科学”——他是凭个人感知拟合的曲线,并非研究人员,但目标就是”够用就好”的起点。
坦诚的局限性
项目页大方列出了局限:肤色受血流、黑色素浓度、皮肤层光散射、白癜风、雀斑等复杂生物过程影响;一些健康状况(如银中毒导致蓝灰色皮肤、高胆红素导致发黄)会超出”合理”范围;显示设备与观看环境不同,同一 RGB 值看起来也不同。作者强调结果只是简化表示,不应被当作权威。
社区反响
评论者 m_w_ 说:做 VR 头像软件时曾硬编码肤色选项,”要是三四年前就有这东西就好了”;vermarish 原本期待用 PCA 降维,”函数拟合的做法非常巧妙”;也有批评:andai 认为结果里能看到绿、蓝、紫色,383toast 觉得浅肤色多样性不足——作者回应说,只保留”真实颜色”本身就是一个会排除真实肤色的难题。
项目页:toneyalexander.github.io/inclusive-color-space | HN讨论:news.ycombinator.com/item?id=49170165