每一个视力表 App 都犯了同一个致命的错误:它们只向你展示字符。视力并非取决于字符的大小——而是取决于字符在你的眼睛上所对的角度。诊所视力表上的 20/20 线,只有当你站在 20 英尺外时才是 20/20 线;往前走 5 英尺,同样印刷的字符测试出的就是完全不同的视力。视力表的全部意义在于,必须在为其专门设计的唯一步行距离下进行观看。把这张视力表拍照放到手机屏幕上,然后随手递给一个习惯任意距离握持手机的人,你做出来的东西测得的数据将毫无意义。
因此,手机版的测试从几何原理出发。一个角度需要两条已测量的边,而这个活动将两者都测量了。
第一条边:屏幕尺寸,实测而非臆测
第一条边是屏幕上字符(即视标)的物理大小。该活动从设备读取显示屏的实际几何参数:其像素间距(每毫米像素数)和物理尺寸,而不是依靠猜测得出的“典型手机屏幕”。当测试绘制一个旨在对向特定角度的视标时,它知道屏幕玻璃上需要多少毫米的宽度,从而精确计算出需要多少个像素。
第二条边:相机充当卷尺——持续不断
第二条边是你与屏幕之间的距离,这也是让整个过程成为一次测量的诀窍所在:前置相机注视着你的面部,并在整个运行过程中持续追踪距离——利用相机的视场角和你的双眼间距作为参考标尺。
连续性至关重要。没有人能在长达数分钟的测试中保持手机完全静止——你会晃动、倾斜、调整位置。如果测试只在开始时测量一次距离,这种位置漂移就会默默积累成偏差。相反,每个视标都会根据显示瞬间的实时距离重新调整大小。漂移拉近 5 cm,下一个字母就会画得更小,从而使其依然能精确呈递测试所需的角度。漂移并不会破坏测试结果,它会被单独记录为该次测试的稳定性——即你在实际答题时采集的所有距离样本的离散度。(在开始答题、尚未稳定前的准备阶段采集的样本会被刻意排除——否则它们会拉宽本应专门用来描述测试过程本身的离散度。)
阶梯,以及随机概率如何决定其形态
你实际需要做的是:屏幕上会出现一个视标——一个拥有四个方向的“E字视标”,然后你回答它指向哪个方向:上、右、下、左。四个选项意味着瞎猜也有四分之一的正确率,而这 25% 的随机概率正是选择自适应规则的依据——即双降单升阶梯法:连续答对两次字母才会缩小,答错一次字母就会变大。面对四分之一的瞎猜概率,该规则会收敛到你心理物理学曲线上一个稳定、明确的点,而不是被侥幸猜对的结果拉偏。
自适应测试无法提前预知自身的时长——测试次数取决于你的回答。因此,进度是通过转折点(即阶梯改变方向的时刻)来计算的:单次测试以收集到固定数量的转折点为目标,而“已收集的转折点数除以目标转折点数”是自适应测试唯一能真实呈现的进度条。
测试完全拒绝运行的情况
手机屏幕在两个方向上都存在硬性限制。向下,有一个渲染下限:视标需要最起码的像素数量才能呈现出其形状,低于这个限制,显示屏在物理上就无法绘制出更小的字母——在你当前的距离下,该下限对应着某种可测试的最佳视力。向上,则有一个物理上限:即屏幕上所能容纳的最大视标。
在第一次测试之前,该活动会检查在你测得的距离下,该下限与上限之间是否确实存在可用的范围。如果不存在,测试将拒绝启动——屏幕会说明问题所在,而不是呈现一个根本无法移动的阶梯。而即使完成了测试,也可能在任一极限处结束:正确认出最小的可渲染字母意味着你的视力超出了此屏幕的测试范围,结果会直接以此句呈现,而不是给出一个虚高的数字。
判定关卡的先后顺序本身就是论据所在。当一次测试结束时,距离稳定性会先于阶梯法自身的判定做出评估——因为当你在前后晃荡时,即使阶梯收敛得再漂亮,也只是在对虚无进行精确测量。只有在距离记录通过检测后,阶梯法才能表态其是收敛了、触底了、还是到顶了。每种结局都对应着不同的结论,而其中只有一种会给出具体的数字。另外,中途放弃的测试不会保存任何内容:半途而废的阶梯测不出你的视力,它只能测出你在放下手机前坚持了多久。
这个数字有多可靠?
比你预期的要可靠得多——而且与邻近的测试相比,代码库中也明确说明了这一点。由于手机上没有任何东西可以测量绝对声压,因此听力测试带有一个常设的 ±10 dB 星号标注。而在这里,角度的两端都是在设备上测得的:视标大小来自于显示屏自身的像素间距,距离来自于摄像头。这里只假设了一个数值——成年人双眼间的平均距离(摄像头的距离参考值)——它带来的误差仅约为 ±0.02 logMAR,比此测试所模仿的临床视力表在重复测试中的离散度还要小。收敛的测试结果会报告 logMAR 及其等效的 Snellen 和小数视力,这在设备和人群之间本身就具有可比性。
现在来谈谈诚实的另一面,因为局限性是客观存在的,而且该活动也对此直言不讳。你可以眯眼。你可以在距离采样之间往前凑。四个方向可以被部分记住。屏幕亮度和室内光线决定了字母的对比度,而这在真正的视力表上是标准化的,手机却无法做到。双眼间距的假设是基于成年人的,因此儿童的测试结果会偏向远视。这是一次筛查评估,而非眼科检查,也非验光配镜处方——它能帮你注意到右眼比三月份时少看了一行,并提醒你预约眼科医生,而不是跳过检查。
每次测量仅针对一只眼睛,并记录在案
一次测试针对一只眼睛(或双眼);测试另一只眼睛则是第二次测试,两者的结果都会作为你目录中同一使用场景下的测量记录保存——而这正是关键所在。筛查测试所能产生的最具价值的东西,绝非任何单一的数字,而是其序列:同一只眼睛、相同的方案、相隔数月,每一次测试都带有其自身的稳定性记录,以便未来的你能够知道哪些结果是值得信赖的。
视力和听力测试共享其阶梯算法机制和拒绝机制——感官虽不同,但方案哲学是一致的。如需全面了解手机传感器在超越你自身感官之外还能测量哪些内容,请从工具概览开始。