2. 人眼生理基础:眼球结构、视网膜与中央凹、视锥细胞与视杆细胞、视觉感知特性

做眼动追踪这些年,我越来越觉得——你如果不了解人眼,就别谈什么光学设计。说白了,我们做的所有近眼显示方案,最终都是要跟这颗眼球打交道。它可不是一个简单的摄像头,它是一个极其精密、非线性、还带点“脾气”的光学系统。

这一节,我就带你从工程师的视角,把眼球拆开看看。嗯,咱们不搞医学解剖那套,而是从光学和信号处理的角度,理解它到底是怎么工作的。

2.1 眼球结构:一个活着的“光学模组”

先看整体。眼球直径大约24mm,形状像个球,但前后径略长。我个人习惯把它类比成一个“自动对焦+自动光圈+曲面传感器”的集成模组。

  • 角膜:最外层的透明组织,提供约2/3的屈光力。相当于镜头的前组镜片,曲率半径约7.8mm。
  • 虹膜与瞳孔:自动光圈。瞳孔直径在2-8mm之间变化,光照强时缩小,暗时放大。做眼动追踪时,瞳孔大小直接影响红外光的反射强度。
  • 晶状体:变焦镜头。通过睫状肌调节曲率,实现远近对焦。年龄大了调节能力下降,就是老花。
  • 玻璃体:填充眼球内部的胶状物质,折射率约1.336。嗯,这里要注意,它会影响光线路径。
  • 视网膜:曲面传感器。后面重点讲。

避坑指南:我曾经在早期设计眼动追踪光路时,把眼球当成标准球面模型来算。结果实际测试偏差很大。后来才发现,角膜并非完美球面,而是非球面,中央区域更陡,边缘更平。这个差异在离轴追踪时尤其明显。

下面这张图,是我习惯用来跟团队讲眼球结构的框架。它把眼球拆成了“光学层”和“感知层”两部分。

眼球结构:光学层 vs 感知层 光学层(光路传输) 角膜(前组镜片,屈光力+43D) 曲率半径7.8mm,非球面 虹膜/瞳孔(可变光圈) 直径2-8mm,影响红外反射 晶状体(变焦镜头) 调节范围约+10D到+20D 玻璃体(填充介质) 折射率1.336,光路计算用 ⚠ 关键:角膜非球面特性 离轴追踪时偏差可达0.5° 感知层(信号处理) 视网膜(曲面传感器) 厚度0.1-0.5mm,10层结构 中央凹(高分辨率区) 直径1.5mm,视锥细胞密集 视锥细胞(明视觉/彩色) 约600万个,S/M/L三种 视杆细胞(暗视觉/灰度) 约1.2亿个,高灵敏度 ⚠ 关键:中央凹与周边差异 分辨率差异可达100倍

2.2 视网膜与中央凹:曲面传感器上的“像素岛”

视网膜不是均匀的。你想想看,如果整块传感器都是同样密度,那数据量得有多大?人眼进化出的方案是——只在中央区域堆高密度像素,周边区域稀疏采样。

中央凹(Fovea):直径约1.5mm的区域,位于视网膜正中央。这里只有视锥细胞,没有视杆细胞。每个视锥细胞几乎都单独连接一根神经纤维,所以空间分辨率极高。你阅读这段文字时,其实就是在用中央凹逐字扫描。

我做过一个实验:让受试者盯着屏幕中心,然后在周边区域显示一个很小的光点。结果发现,偏离中央凹2°以外,人眼对细节的分辨能力就急剧下降。这直接影响了我们做注视点渲染(Foveated Rendering)的策略——中央凹区域必须全分辨率渲染,周边可以大幅降采样。

实战技巧:在设计眼动追踪系统时,我建议把中央凹的角分辨率作为基准。人眼中央凹的角分辨率大约1弧分(0.0167°)。这意味着,如果你的显示系统PPD(每度像素数)低于60,人眼就能看出像素感。嗯,这就是为什么高端VR头显都在往这个方向卷。

2.3 视锥细胞与视杆细胞:双模传感器

视网膜上有两种感光细胞,它们分工明确:

特性 视锥细胞 视杆细胞
数量 约600万 约1.2亿
分布 中央凹密集,周边稀疏 中央凹无,周边密集
灵敏度 低(需要强光) 高(可感知单个光子)
色彩 彩色(S/M/L三种) 黑白(只有一种)
响应速度 快(约10ms) 慢(约100ms)
主要功能 明视觉、细节、色彩 暗视觉、运动检测

视锥细胞有三种类型,分别对短波(S,蓝)、中波(M,绿)、长波(L,红)敏感。它们的峰值波长大约在420nm、530nm、560nm。有意思的是,L和M的响应曲线有很大重叠,所以人眼对红绿之间的差异最敏感,对蓝黄之间的差异次之。

视杆细胞只有一种,对波长约500nm的蓝绿光最敏感。这就是为什么在暗光环境下,我们看东西是偏蓝绿色的——说白了,视杆细胞在加班,视锥细胞已经下班了。

注意:视杆细胞的响应速度比视锥细胞慢一个数量级。这意味着在暗光环境下做眼动追踪时,瞳孔反应和眼球运动的采样率需要相应降低。我曾经在低光照条件下用240fps的相机做追踪,结果发现视杆细胞的滞后导致瞳孔中心定位出现系统性偏差。后来把帧率降到120fps,配合更长的曝光时间,反而更准了。

2.4 视觉感知特性:人眼不是线性系统

做近眼显示,光懂解剖结构还不够。你得理解人眼是怎么“感知”世界的。这里有几个关键特性,直接影响我们的光学设计:

2.4.1 对比度敏感度函数(CSF)

人眼对不同空间频率的对比度敏感度不一样。对中频(约4-8 cpd)最敏感,低频和高频都差一些。这意味着,你在显示系统中引入的高频噪声(比如像素网格),人眼其实没那么在意。但中频的伪影(比如摩尔纹)就非常明显。

2.4.2 视觉暂留与临界闪烁频率

人眼有约20-30ms的视觉暂留。当闪烁频率超过约60Hz时,人眼就感觉不到闪烁了。但这是针对中央凹的。周边视野对闪烁更敏感,临界频率可以到80-90Hz。所以做VR头显时,我建议把刷新率做到90Hz以上,否则周边视野的闪烁感会让人头晕。

2.4.3 亮度感知的非线性

人眼对亮度的感知是近似对数的。也就是说,在暗区,你能分辨很小的亮度差异;在亮区,你需要更大的亮度差才能感觉到变化。这就是为什么HDR显示需要10bit甚至12bit的色深——在暗部区域,8bit的量化步长太大了,会出现条带效应。

核心总结:人眼不是一台均匀的相机。它是一台“中央高分辨率、周边低分辨率、对中频敏感、对暗部细节挑剔”的智能传感器。我们做眼动追踪和光学联动,本质上就是在跟这些特性打交道。理解它们,你才能设计出真正“看着舒服”的近眼显示系统。

好了,这一节就到这里。记住我刚才说的那些坑——角膜非球面、视杆细胞滞后、CSF曲线——下次做设计时,你会感谢自己现在花时间理解了这些基础。


公众号:蓝海资料掘金营,微信deep3321