使用方法
- 打开页面就会看到一张由种子 24680 生成的伪等色板:300×300 的圆点图里藏着一个 0~9 的数字。先看清楚显示器亮度与环境光,把色板放正对着自己。
- 在「你在色板里看到的数字」里填 0~9,点「提交作答」,或直接裸按 Enter(这是一个单行数字框)。看不出数字就点「看不到任何数字」,它会以 −1 提交,和看错一样计入答题数。
- 提交后统计条立刻更新:已答、答对、答错、答对率。页面不会告诉你正确答案是什么,这样你没法靠反复试错把「答案」问出来。
- 点「换一题」生成新种子(种子号显示在统计条里),再答一题。建议连续答 8~12 题再看结论,单题不足以说明什么。
- 点「查看小结」按答对率给出结论档位,并重复一次免责声明。下方的 24 行色对表可以「加载更多」「导出 CSV」「复制对照表」。
这个颜色盲测测试能解决什么问题
一是「想知道自己红绿分辨是不是偏弱」的问题。红绿色觉障碍在男性中约占 8%(约 1/12),女性约 0.5%(约 1/200)——一个 40 人班级(男女各 20)按概率期望约有 1.7 人。很多人是成年后体检才第一次发现,用这个页面可以做一次低成本的初筛体验。
二是「看别人的色盲模拟图不如自己测一次」的问题。色盲模拟展示的是「他们眼中的世界」,属于被动观看;本页是主动作答,图形由随机种子生成、答案不可见,能避免「看了答案再说自己看见」的自我欺骗。
三是「为什么有的配色我分不清」的问题。页面给出的 24 组易混淆色对里,有 23 组的 WCAG 对比度低于 3:1、其中 12 组低于 1.5:1——也就是说这些颜色「明暗几乎一样」,只能靠色相区分。把它和颜色对比度检测配合看,就能理解为什么图表配色要么拉开亮度、要么加图案或文字标注。
四是「色板到底怎么造出来的」的问题。本页把色板的构造过程完全公开:种子 → PRNG → 225 个圆点的位置与颜色、5×7 点阵掩膜决定哪些点属于图形。你可以换种子复现任何一道题,也可以核对「图形与背景的相对亮度是否真的相等」。
颜色盲测测试不做这些事:不做色觉障碍诊断;不含真实 Ishihara 色板图片(那套图受版权保护,且需要印刷色卡与标准光源才能成立);不做色相排列测试(FM-100)与色觉镜检查——这些都要在眼科用实体设备完成。想看别人眼中的世界用色盲模拟。
原理与规则说明(含关键变量)
一句话概括算法:用 mulberry32(种子) 生成伪随机序列,在 15×15 的网格上放 225 个圆点,每个点的位置抖动、半径与颜色都由这个序列决定;点属于「图形」还是「背景」由一张 5×7 的二值点阵掩膜决定——掩膜描的是数字 0~9 的笔画。
- 伪随机数:
mulberry32是一个 32 位整数状态的 PRNG,同一个种子给出完全相同的序列(实测种子 24680 两次运行的前 5 个数都是 0.436068、0.750079、0.433400、0.163919、0.243833),所以任何一道题都能用种子号复现。这不是密码学安全随机数,但对出题来说够了。 - 掩膜与网格:点阵是 5 列 × 7 行,每个「亮」单元映射到画布上 40×40 像素的区域,整块数字区 200×280 居中放置(偏移 x=50、y=10)。网格边长 20px、圆点半径 9~13px,于是相邻圆点互相重叠,形成伪等色板那种「一片杂色点」的观感。
- 颜色是两次取样的结果:图形点取色相 135°(绿)附近、背景点取色相 28°(橙)附近,饱和度都在 62% 上下抖动。这两个色相的中点夹角约 107°,正好横跨红绿色觉障碍的混淆方向。
- 亮度匹配是本页最重要的参数:图形色相取明度
L=41.3%、背景色相取L=53.1%,两者换算成 WCAG 相对亮度后分别是 0.3006 与 0.3000,比值 1.0018、对比度 1.002:1。也就是说这两个颜色在明暗上几乎一模一样,只能靠色相区分。如果偷懒把两者都取L=50%,对比度会升到 1.573:1,色觉障碍者也能靠明暗「猜」出数字,测试就失效了。这就是伪等色板(pseudo-isochromatic plate)的设计前提。
遵循的标准与依据。色板的构造思路来自 Ishihara 假同色图一类伪等色板:图形与背景等亮度、只在色相上分离。亮度计算采用 WCAG 2.x 相对亮度公式(先对每个 sRGB 通道做反伽马线性化,再按 0.2126R + 0.7152G + 0.0722B 加权),这是本页能把「等亮度」这件事算出具体数字的原因。色觉障碍的分类参照 ICD-10 的 H53.5 色觉障碍条目(红色盲/红色弱/绿色盲/绿色弱/蓝色盲/蓝色弱等)。PRNG 与掩膜是本页自定的实现,不构成医疗标准。
输入经过怎样的转换得到输出。五步:① 种子 → mulberry32 序列;② 按 15×15 遍历,每个格中心加 ±3px 抖动得到圆心,半径 9 + 随机×4;③ 用圆心反查 5×7 掩膜(列 = (x−50)÷40、行 = (y−10)÷40),决定取图形色还是背景色;④ HSL 抖动后经 hsl→rgb 转成十六进制;⑤ 拼成一段 SVG(225 个 <circle>,外层用圆形 clipPath 裁成圆盘)。作答时只把输入与你提交的数字比对,绝不在 DOM 里写出答案。
边界与阈值。圆点总数 225;图形点数量取决于数字的笔画,实测 0~9 的掩膜亮点分别是 16、10、14、15、14、17、15、11、17、15,平均 14.4 个(占 35 格掩膜的 41%)。结论档位按答对率划分:≥80% 提示未发现明显异常,<50% 提示建议进一步检查,两者之间提示结果不明确。这些阈值是本页为「娱乐性小结」自定的,不是医学界值。
完整示例(数值仅作演示)
示例条件:种子 24680、图形数字「5」(掩膜亮点 17 个)、画布 300×300。逐步复算:
mulberry32(24680)前 5 个数:0.436068, 0.750079, 0.433400, 0.163919, 0.243833;- 网格 15×15 = 225 个圆点,半径范围
9~13px,圆心抖动±3px; - 数字区
5 列 × 7 行 × 40px = 200×280,居中偏移x=50, y=10; - 图形点色相 135°、明度 41.3% →
rgb(40,171,73),相对亮度 0.3006; - 背景点色相 28°、明度 53.1% →
rgb(210,130,61),相对亮度 0.3000; - 两者亮度比 1.0018、WCAG 对比度 1.002:1(远低于 3:1,只能靠色相分辨);
- 对照:若两色都用
L=50%,对比度升到 1.573:1,图形会「靠明暗也能看出」。
下表 24 行里的第 1 行「红 ↔ 绿」对比度 1.25:1、第 20 行「蓝 ↔ 绿」1.06:1,都是同一原理在真实色值上的体现——它们明暗接近,只能靠色相区分,因此红绿色觉障碍者容易看错。统计条里的「图形/背景亮度比」会用你当前这道题的实际取样值显示,与本例的 1.0018 同源。
输入范围与对照表
- 作答数字:
0~9的一位整数(输入框min=0 max=9 step=1)。−1 是内部约定的「看不出任何数字」,只由按钮产生。空值、非整数、超过 9 的输入会被明确拒绝并指出原因,不会静默归零。 - 种子:5 位数字(10000~99999),由「换一题」随机生成并显示,方便复现同一道题。
- 色板:固定 300×300、225 个圆点,移动端按容器宽度等比缩放,最小屏宽 360px 下完整显示不横向滚动。
下面这张 12 行表是色觉障碍类型与混淆轴(患病率为男性常见口径,来源 Colour Blind Awareness 与 NIH 的公开区间):
| 类型 | 患病率(男) | 混淆轴 | 本页色板 | 说明 |
|---|---|---|---|---|
| 红色盲 Protanopia | ≈1.0% | 红—绿 | 可提示 | L 视锥缺失,红色看起来偏暗 |
| 红色弱 Protanomaly | ≈1.3% | 红—绿 | 可提示 | L 视锥光谱响应偏移 |
| 绿色盲 Deuteranopia | ≈1.2% | 红—绿 | 可提示 | M 视锥缺失,最常见的一类 |
| 绿色弱 Deuteranomaly | ≈5.0% | 红—绿 | 可提示 | 占比最高,程度通常较轻 |
| 蓝色盲 Tritanopia | ≈0.003% | 蓝—黄 | 有限 | S 视锥缺失,红绿都能分 |
| 蓝色弱 Tritanomaly | ≈0.01% | 蓝—黄 | 有限 | 本页橙绿配色基本测不出 |
| 杆体单色视(全色盲) | ≈0.0033% | 全轴 | 可提示 | 约 1/30000,伴畏光与视力低 |
| 蓝锥单色视 | <0.001% | 全轴 | 有限 | 极罕见,只剩蓝锥工作 |
| 锥体功能不全 | <0.001% | 全轴 | 有限 | 三种视锥均异常 |
| 后天色觉障碍(青光眼) | — | 蓝—黄先受累 | 参考 | 需眼科检查确认 |
| 后天色觉障碍(白内障/黄斑) | — | 蓝—黄或全轴 | 参考 | 晶状体黄化影响短波 |
| 药物或中毒性色觉异常 | — | 多变 | 参考 | 需就医并与用药史对照 |
合计口径:红绿色觉障碍在男性约 8%、女性约 0.5%;蓝黄色觉障碍约 0.01%(男女接近)。本页橙绿配色主要针对红绿轴,对蓝黄轴只能间接提示,表格里已按「可提示 / 有限 / 参考」标注。
边界与精度说明
- 答案不在页面里。图形数字只存在于生成色板时的那次计算中,不写进 DOM、不写进
data-*、不写进任何可见文本。所以无法「先看答案再作答」。提交后也只返回「正确/不正确」,不会告诉你正确数字是几。 - 等亮度是测试成立的前提,也是最大的脆弱点。相对亮度比 1.0018 意味着图形与背景在明暗上无差别;但只要显示器开了夜间模式或护眼模式,系统会整体压低蓝光并改变色相与亮度,等亮度关系就被破坏,结论随之失真。屏幕亮度建议在 120~200 cd/m²、环境光均匀、避免强反光。
- 色域与色彩管理。页面用的是 sRGB 色值(如
rgb(40,171,73))。在广色域屏(P3)且浏览器未做色彩管理时,橙绿两色会被同时推往更饱和的方向,对比度可能略升,属于正常偏差,不是算法错误。 - 圆点半径 9~13px 与噪点强度。半径越大、相邻点重叠越多,图形的边缘越模糊,难度越高;抖动量 ±3px 是为了避免出现规则的网格纹理(规则纹理会让人靠纹理走向而不是色相辨认数字)。这两个参数在本页固定,不做难度调节,以免把「难度」误当成「色觉」。
- 单题不构成结论。按二项分布,即使答对率 75% 的真值,在 8 题里也可能只对 5 题。所以小结档位只做三档粗分,并且必须配合免责声明阅读——第 1 种色觉障碍的公开患病率是 1%,而屏幕上单题出错的概率远高于 1%。
- 225 个圆点是性能与观感的折中。格边长 20px 时数字的笔画宽度约 40px(两个格),足以被辨认;把网格加密到 20×20 会让数字更细腻,但 SVG 元素数会涨到 400 个,移动端渲染变慢,收益不大。
常见问题
我看不出数字,是不是色盲?
不能这样推断。看不出数字的常见原因按概率排序是:显示器开了夜间或护眼模式(改变了色相与亮度)、屏幕亮度太低或环境光太强、色板没有正对自己、单题恰好超出你的辨色阈值。本页「颜色盲测测试」的设计前提是等亮度配色,任何整体色偏都会让结果失真。要确诊请到眼科做色觉检查。
为什么答完不告诉我正确答案?
因为一旦显示答案,你就能靠反复点击把答案「问」出来,测试就没意义了。所以页面只用「正确/不正确」给反馈,答案始终留在生成色板的那次计算里。想核对某一道题,可以用统计条里的种子号重绘同一个色板,再自己比对。
种子是干什么用的?
种子决定了 225 个圆点的位置、半径与颜色。mulberry32 是确定性 PRNG,同一种子必然生成同一张图(实测种子 24680 两次运行完全相同)。这让你可以复现任何一道题,也让「图形与背景等亮度」这件事可被逐点复核。
真实的 Ishihara 色板也是这么做的吗?
原理一致:图形与背景等亮度、只在色相上分离,用一堆大小不一的圆点掩盖边界。但真实色卡是用特定油墨印刷、在标准光源(约 D65)下使用的实物,且那套图有版权,网页无法复用。本页是用同一原理程序化生成的近似演示,圆点分布与色相取值都是自定的。
为什么我的结果每次都不一样?
因为每点一次「换一题」就换一个种子,图形数字与圆点分布都会变。单题结果受随机性影响,所以建议连续答 8~12 题再看「查看小结」里的答对率,而不是拿一两题的成败下结论。
色盲能被治好吗?
先天性红绿色觉障碍由视锥细胞的基因决定,目前没有治愈手段;市面上一些「色盲矫正眼镜」主要是通过滤光改变对比,能帮部分人区分某些色对,但不能恢复正常的色觉。后天性的色觉异常(青光眼、白内障、药物影响)需要先治原发病,应到眼科就诊。本页不提供任何治疗建议。
那 24 组色对表有什么用?
它是给做图表与界面的人用的:如果两种颜色在「对比度」列低于 3:1,说明它们只靠色相区分,红绿色觉障碍者可能分不清。这类配色应当改为拉开亮度(让对比度 ≥3:1),或额外加图案、线型、文字标注,而不是只换色相。表里 24 组有 23 组低于 3:1。
这些作答记录会上传吗?
不会。色板在你的浏览器里用 SVG 画出来,作答只在本地变量里比对,没有 fetch、XMLHttpRequest、表单提交或 localStorage。打开开发者工具的 Network 面板可以看到全程零请求;刷新页面后答题记录清零,重新从演示题开始。