OpticStudio中的人眼模型
概述
150多年来,人们已经发布了几十种人眼模型。从只由一个折射面组成的简化版人眼模型,到由4000个以上折射面组成的复杂人眼模型不一而足。这篇文章介绍了OpticStudio序列模式和非序列模式中的几种人眼模型以及它们的玻璃库数据。 文中使用的附件请从以下链接中下载:
https://customers.zemax.com/support/knowledgebase/knowledgebase-attachments/zemax-models-of-the-human-eye/eye-(1)
引言
人眼模型被用在如下场景中:设计用于人眼内部观察的仪器(如检查眼底相机的照明均匀性)、设计人眼视线会穿过的仪器(如研究眼科镜片、隐形眼镜和人造晶状体的特性)以及研究人眼本身(如研究角膜瘢痕、白内障等眼病对视网膜成像造成的影响)。
150多年来,人们已经发表了几十种人眼模型。从只由一个折射面组成的简化版人眼模型,到由4000个以上折射面组成的复杂人眼模型不一而足。有些模型中有梯度折射率晶状体,有些模型用两个或多个均质片层结构来表示折射率的梯度,有些则只有折射率均匀的晶状体。
适用于任何场合的“万能”人眼模型是不存在的。而且也不意味着更复杂的人眼模型就更好。例如,在使用包含梯度折射率晶状体的模型时, 如果它没能比均匀折射率晶状体模型提供更多的有效信息,那么实际上是完全没有必要的——因为这样的模型在优化或非序列模式中计算大量光线时, 会显著减慢计算速度。一般单波长近轴计算时,只需要一个很简单的球面模型。比较有代表性的用于近轴计算的简化模型,可由一个屈光度为60, 折射率为4/3的折射面组成。其表面半径为5.55mm,轴向长度为22.22mm。这个模型对于计算视网膜成像尺寸特别有用。因节点距离表面5.55mm, 故我们能通过向16.67mm远处投射光线,轻易得出一个已知位置、尺寸或视场角的物体在像面上的成像大小。这一近轴模型在计算10°的视场角时, 误差约为几个百分点。
附件链接中包含下面将介绍多个的OpticStudio模型,您可以下载这些文件。在使用之前,请您先参阅下方玻璃库部分。这些模型基于特定的波长范围和权重值、特定的视场角和权重值以及特定的瞳孔尺寸,您可以随意修改其中的参数来使之更适合于您的应用需求。
序列模式模型
序列模式中的人眼模型一般有两种用途:一种是通过外部光学系统来观察眼底(如检眼镜或眼底照相机),因此将视网膜作为物面。另一种是人眼通过光学系统来进行观察(如眼镜镜片或视觉仪器),因此将视网膜作为像面。
附件中的名为Eye_Retinal Image.zmx 和名为Eye_Retinal Object.zmx的文件中的模型在多个应用场合中都有良好表现。虽然这些模型都有相同的系统结构,但他们在数据编辑器中却有很大差异,我们会在后文中详述。Eye_Retinal Image.zmx 文件的人眼模型如下图所示:
因该模型通常用于评估视力,所以模型中对波长进行了加权,并且也对0°、10°和20°的视场角分别进行了1.0、0.2和0.1的加权,以此来表示这些角度上的相对视力。同时,模型中还包含直径为一个4mm的虹膜瞳孔。
下图展示的是名为Eye_Retinal Object.zmx的模型:
在这个模型中,眼底被视为一个物体。模型中F,d和C波长的权重分别为0.1、0.4和1,用来表示眼底的光谱反射率。在0°、10°和20°的视场角上加上相等的权重,并设置4mm的虹膜孔径。此模型像空间是无焦的。
文件中还包括一个长度为250mm的人眼调节建模(表示使用4个单位的光焦度调节进入角膜的光线),有时十分有用。
名为Eye_Accommodated.zmx的文件在调节时,晶状体前极点向前移动到前房,后极点向后移动到玻璃体腔,因此晶状体的轴向长度增加、直径减小,且表面形状改变。大多数调节都是通过晶状体前表面增加曲率和向前运动来实现的。
Eye_Accomodation模型与Eye_Retinal Image 模型采用同样的波长、视场角和瞳孔参数。注意,虽然该模型表示OpticStudio具有在序列模式中绘制超半球巩膜的能力(参见下边的OpticStudio工具),可以避免绘制出一个并不存在的表面,让眼睛模型更逼真,但超半球在光线追迹时会引入歧义。所以如果要在光线追迹中使用此模型,这些面可能需要用其他模型中的两个半球面来进行替换。
这些模型中的数据是从大量的参考文献中获取的,在此我们没有列出它们的来源。当数据精度的影响不明显时,通常可以将它们的值四舍五入来简化(如轴向长度简化为24.0mm、视网膜半径简化为11.0mm、松弛状态晶状体的前表面为简化为球面、半径为10.0mm)。除了使用的晶状体折射率是均匀的这一点以外,这些模型能够很好地代表真实眼睛的参数。这些模型利用微调晶状体后表面的圆锥系数来代替真实情况中的折射率梯度变化(模型中晶状体后表面不如实际情况中那样平坦, 以此来补偿眼球中线方向上较低折射率造成的影响)。在实际测量中,晶状体后表面近似是一个抛物面,它也是控制离轴像差的关键因素。
这种采用折射率均匀晶状体模型的优点是能够大大减少优化和非序列模式中光线追迹的时间,用途较为广泛。然而,在如探索晶状体的光学性质时,一定要使用梯度折射率模型。您可参阅知识库“如何在OpticStudio中建模人眼 (How to Model the Human Eye in Zemax) ”一文查看相关信息。
非序列模式模型
许多眼科仪器都是把光直接射入眼睛的,所以对光在眼中的传输效率和视网膜上光分布的均匀性等进行模拟非常有意义。某些应用中,例如在治疗糖尿病引起的视网膜病变时,光聚焦在视网膜上。其他如间接检眼镜等应用中,光聚焦在瞳孔上以照亮一个更广的范围。利用不同的光源设置,两种情况都能在OpticStudio中进行模拟。
真实眼睛的光学介质往往不是完全透明的,OpticStudio的非序列建模可以通过添加吸收、散射、内容物等多个属性模拟角膜瘢痕、白内障、玻璃体漂浮物和异物等对视力的影响,为研究眼睛的各种生理和病理变化提供了有力工具。此外,也可以用于研究光在角膜或人造晶状体的边缘发生的散射。
非序列人眼模型包含在Eye_NSC.zmx文件中,它使用了与序列模式眼睛模型相同的玻璃库。非序列元件编辑器里的第一个物体是位于眼球几何中心的参考点。你可以修改它的参数来实现整个眼球模型的移动和旋转。非序列实体模型 (NSC Shaded Model) 图的设置 (Settings) 赋予了模型90%的亮度和50%的透明度,方便我们观察眼球的内部结构。
这个模型F, d, C三个波长的权重相等,利用直径为6mm的光阑来表示适度扩张的瞳孔,默认的视网膜作为探测器其视角从边缘到边缘约为50°,用于眼底的大范围照明。模型的像素尺寸可能比点物体成的像大很多,因此对一点成像时,探测器查看器光分布可能会显示像素大小而非点物体像的大小,所以,如果想要研究点物体的像,则需要减小像素的尺寸(可能还要同时减小波长范围和光瞳尺寸)。注意:视网膜探测器的像素数量是影响计算时间的关键因素,所以探测器的最大面积不应超过眼底上想要观察的面积。模型可以通过控制Eye_Binocular.zmx文件中的空物体“参考点1”来设置两眼球的瞳孔间距和会聚角,还在光轴上添加了单光线光源来表示投射到物体表面的视线(在真实的眼睛中,视线一般与物空间的光轴成向鼻子方向偏转的4°夹角(α角)。但在本模型中二者是共线的)。当我们想要追迹通过固定会聚角的视线时,这个模型将会非常有用。
玻璃库
使用这些模型前,一定要将压缩文件中的EYE.AGF文件拷贝到OpticStudio的玻璃库文件夹下。你可以在设置 (Setup) 一栏中的配置选项 ( Project Preferences)…文件夹 (Folders)…玻璃 (Glass) 中查看文件夹的路径。在拷贝之后,按F4键打开玻璃库,确保在OpticStudio中能看到该文件。
玻璃库是根据已发表的真实眼睛中光学介质折射率的测量结果构建的,通常只适用于有限数量的波长,一般为F,d,C三个波长下的数据。因此,适合使用Conrady 公式,公式得出的结果范围限于可见光和近红外光谱,且Nd和Vd值不能够四舍五入。
如果波长范围需要扩展到紫外线或红外线,可以使用OpticStudio旧版的MISC玻璃库中利用Schott公式计算的334nm至2325nm的海水折射率数据。因为眼睛的房水和玻璃体液成分均与盐水相似,因此可以用海水的数据合理推测眼睛的数据。
用工具调整人眼模型
OpticStudio有很多工具可以调整眼睛模型,来让它们更加适合于特定的用途。 1. 布局图:在真实的眼睛中,某些曲面可能非常陡峭,并且有些边缘实际上并没有真正连接在一起,所以如果不显示边缘,布局图会更清晰、更逼真地代表眼睛。然而在一些应用中,显示这些边缘又是必要的。遇到这种情况,请在镜头数据编辑器 (sequential Lens Data Editor)…表面属性 (Surface Properties)…绘图 (Draw) 标签中,或非序列元件编辑器 (Non-Sequential Component Editor)…物体属性 (Object Properties) 中的绘图 (Draw)标签中进行设置。
在序列模式中,有些边缘是绘制出来的,另一些则没有被绘制出来。视网膜前半球被绘制成一个在角膜和晶状体之间的单独的面,以便视网膜能用表示成一个完整的球体。但实际上这个面是不存在的,如果它影响了你,你可以将其删除,并延长视网膜后半球使之与晶状体边缘连接在一起。Eye_Accommodated.zmx模型,设置了物方锥角(在系统 (System)…常规 (General)…系统孔径 (Aperture) 标签中)强迫晶状体进入一个超球体来产生不确定性,巩膜的外表面也是如此。这可以让我们绘制更逼真的眼睛模型,但这种不确定性意味着我们不能在非序列模式中对其进行光线追迹。要使用这个模型进行光线追迹,则通常需要删除超半球,并用其他模型中的两个半球代替。 在非序列模式中,我们能很容易地让一个物体包含其他物体,所以用超半球表示巩膜不会产生不确定性。非序列元件的超半球的绘制方法非常简单,将表面孔径设置为负值即可。
2. 波长:对于眼睛模型来说,OpticStudio插入F,d,C可见光光谱波长或插入带有相对照度权重的明视(或暗视)波长的功能非常有用。F,d,C波长通常适用于观察视网膜(如Eye_Retinal Object模型),而明视波长通常适用于通过人眼观察的光学系统(如 Eye_Retinal Image 模型)。打开系统选项 (System Explorer)…波长 (Wavelengths)…明视觉 (Photopic (Bright)),点击选为当前 (Select Preset)。
当波长的选择十分重要时,则应该注意:因为第二主平面靠近系统的孔径光阑,所以眼睛的横向色差非常小,但是轴向色差非常大。测量数据表明,真实眼睛中测量约2.5屈光度的像差时,与模拟眼睛预测结果相似。
3. 视场角权重:当用一台眼底相机观察视网膜时,保持大视场角(30°或以上)下的分辨率不会降低得很严重是十分必要的。故视场角也需要进行加权(眼科仪器制造商们提到的视场角一般指视场两边缘的夹角,而不是OpticStudio中视场边缘与光轴的夹角,故数值是OpticStudio中的两倍)。另一方面,把视网膜当作像面时,相对视力在中心处权重为1.0,在2.5°时下降为0.5,在10°时下降为0.2,在20°时下降为0.1,在边缘处下降为0.025。错误的加权会令优化结果不具参考意义。视场角和权重可在视场数据编辑器 (Field Data Editor) 中设置
4. 图像质量:把视网膜当成物面时,使用常用的像差和分辨率工具即可(光扇图、点列图、MTF图等)。然而当把视网膜作为像面时,则可能要使用Opticstudio中其他更好用的工具。
a.在分析 (Analyze)…扩展图像分析 (Extended Scene Analysis)…几何图像分析 (Geometric Image Analysis) 中有大量图片文件可供使用。其中的LETTERF.IMA文件和LINEPAIR.IMA文件与视力紧密相关,所以非常有用,当然你也可以很容易地创建自定义的图像文件。正常的视力(不同标准中的6/6,20/20,或1.0)代表能分辨出物空间中5分弧度物体(比如字母E的横杠)。在简化人眼模型中,这样的物体会在视网膜上得到一个0.024mm的像。将该数据应用于Eye_Retinal Image模型中(打开LETTERF.IMA并输入0.024mm的图像大小和对应视场角),几何图像分析 (Geometric Image Analysis) 表明:由于纵向色差,波长会对图像质量造成剧烈影响。这在比较光学系统发生改变前后在视网膜上成像的差别时非常有用,但是在得出有关视力的结论前却要保持谨慎,因为视力不仅与光学有关,大脑对眼睛接收到的信息作何处理同样是视力中的关键一环(所以直接将视力与LINEPAIR.IMA的光栅频率或MTF中的频率联系起来是不可取的)。
在分析 (Analyze)…扩展图像分析 (Extended Scene Analysis)…几何位图图像分析 (Geometric Bitmap Image Analysis) 中,我们可以用位图的形式观察真实的场景在视网膜上成怎样的像。图库中有大量图片,用户也可以轻松自定义测试图片。例如,把该功能窗口设置 (Settings) 中的ALEX200.BMP应用到Eye_Retinal Image 模型中,将像素大小设置为2.5微米(视网膜中央锥形受体大小),根据计算时间和图像质量选择合适的像素大小和每像素光线数(模型中的例子将ALEX放在离眼睛约8米处)。几何位图图像分析是一个比较光学系统改变前后在视网膜上成像变化的有力工具。
5. 光线瞄准:眼睛入瞳的形状和位置随视场角改变,所以即便是在正常的视场角和瞳孔尺寸时,开启光线瞄准也是必要的。你可以在系统配置 (System Explorer)…光线瞄准 (Ray Aiming) 中实现此操作。虽然近轴光线瞄准 (Paraxial) 通常满足需求,但仍然推荐用户阅读手册以了解光线瞄准的含义(此处我所提及的入瞳是光学系统的入瞳而非常规理解的虹膜瞳孔,请读者阅读时注意区分)。
6. 其他实用的OpticStudio工具 a.Toroidal表面:因为角膜在垂直方向上的曲率比水平方向上的曲率更大,所以大多数真正的眼睛都有像散。你可以在序列模式中的镜头数据 (Lens Data Editor) 的表面类型 (Surface Type) 中将表面类型设置为Toroidal。非序列模式中,则可直接输入。如果可能的话,用序列模式和非序列模式两种方式观察眼睛像散和离轴校正Toroidal透镜在视网膜上的成像。
b.眼睛的旋转、倾斜和偏心:可以用序列模式的坐标断点或非序列模式的坐标参数来表示眼睛的旋转、倾斜和偏心。在某些眼睛需要大角度旋转的情况中,我们需要意识到,六块眼外肌能让眼睛产生复杂的旋转变化,所以并没有一个固定的旋转中心。而对于眼睛只有小角度旋转的情况,旋转中心一般位于角膜前表面后15.4mm,向鼻子一侧1.6mm处。其实最简单的处理方式是在视网膜球体的球心设置坐标间断点(在上述模型中该点位于角膜前表面后13mm处的光轴上)以此表征眼球旋转,而且尚未发现这种方式会造成显著误差。
c. 公差分析:很多测量眼睛光学参数的研究提出:根据单个参数分布卷积预测的折射误差与实际测量值不符。OpticStudio的公差分析功能使测量值与理论值保持高度一致性。
总结
人眼光学模型种类众多用途广泛,但尚未有一个模型能适用于所有场合。一般用简单模型定性分析,用复杂模型定量分析。
OpticStudio中有多个创建和利用人眼模型的强大工具,花费时间研究这些工具的使用方法将非常有意义。