0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何在OpticStudio中模拟人眼

LD18688690737 来源:Ansys 光电大本营 作者:Mike Tocci 2022-12-19 11:28 次阅读

本文是人眼模型的一个案例研究,并提供了更高级的序列模式建模技术的演示。我们将在OpticStudio中使用Liou & Brennan 1997眼睛模型创建人眼模型。在OpticStudio中成功生成这个眼睛模型后,我们将使用它来设计一个自由形式的渐进眼镜镜片。

简介

准确的人眼模拟和建模是一个难题;这是一个不断激发新的发展的课题。在本研究中,我们将使用在《Optics of the Human Eye》一书中展示的Liou & Brennan 1997模型在OpticStudio中创建人眼模型1。这是一个相当全面的眼睛模型。它考虑了许多其他模型没有考虑到的现实因素,如偏置瞳孔、弯曲的视网膜表面、向内的眼球和前后半部分具有两种不同梯度折射率剖面的晶状体。

在OpticStudio中成功生成这个眼睛模型后,我们将使用它来设计一个自由形式的渐进眼镜镜片。

人眼模型

我们将从建立人眼模型开始。你可以使用附件中的“Human_Eye_Model.ZMX”,以跳过手工输入所有的表面。该文件在本文的“附件下载”一节中的ZIP压缩文件中可用。

如果你要手动输入而不是加载附件,你要先把OpticStudio设置为序列模式,然后设置System...General...Units...Lens Units为“毫米”。接下来,你要设置波长(在系统部分找到)为“F, d, C(可见)”,如下所示:

aa40e2c8-7dfc-11ed-8abf-dac502259ad0.png

接下来,进入System Explorer...Aperture,设置光圈类型为Float By Stop Size,然后进入System Explorer...Glass Catalogs并添加目录MISC到您的玻璃目录。在视场数据编辑器中只设置一个视场,类型为Angle(Deg), X-Field值为5:

aaa27ef2-7dfc-11ed-8abf-dac502259ad0.png

现在在光阑前插入3个表面,并在光阑后插入另外3个表面。下面是建立所有表面的一步一步的指导,一次一个。调整每个参数步骤如下;任何被省略的参数都应该保持默认值。

Surface 0 OBJ
Comment Object
Thickness 1.0E+009
Surface 1
Comment Input Beam
Thickness 50

Surface 1只是一个虚拟平面,我们用它来让布局图更容易理解。因为我们只需要这个表面来可视化光线通过它,我们可以通过Object Properties...Draw来隐藏它,然后检查Do Not Draw This Surface

Surface 2
Comment Cornea
Radius 7.77
Thickness 0.55
Material Model: 1.376, 50.23
Semi-Diameter 5
Conic -0.18

要设置这些材料参数,你需要右键单击玻璃单元格,从下拉列表中选择“模型”作为解决类型,然后输入值。

ab2f26fe-7dfc-11ed-8abf-dac502259ad0.png

接下来,我们将在Surface 3插入角膜和房水之间的界面。

Surface 3
Comment Aqueous
Radius 6.4
Thickness 3.16
Material Model: 1.376, 50.23
Semi-Diameter 5
Conic -0.60

Surface 4代表系统的孔径光阑,在镜头数据编辑器中被标记为“STO”。这是我们眼睛模型的瞳孔平面。

Surface 4
Comment Pupil
Material Model: 1.376, 50.23
Semi-Diameter 1.25

为了模拟偏移的瞳孔位置,我们需要偏心这个表面。打开Surface Properties,然后点击Tilt/Decenter选项卡。设置这个表面的Decenter X值为-0.5mm,然后在After surface选择Reverse This Surface,如下图所示。

ab6d2198-7dfc-11ed-8abf-dac502259ad0.png

现在我们将对模型晶状体的前后部分进行建模。

Surface 5
Surf:Type Gradient 3
Comment Lens-front
Radius 12.4
Thickness 1.59
Semi-Diameter 5
n0 1.368
Nr2 1.978E-003
Nz1 0.049057
Nz2 -0.015427
Surface 6
Surf:Type Gradient 3
Comment Lens-back
Radius Infinity
Thickness 2.43
Semi-Diameter 5
n0 1.407
Nr2 -1.978E-003
Nz2 -6.605E-003

接下来,我们将模拟晶状体后部和眼睛玻璃体之间的界面。

Surface 7
Comment Vitreous
Radius -8.1
Thickness 16.23883
Material Model: 1.336, 50.23
Semi-Diameter 5
Conic 0.96

最后,我们将在Surface 8上建模眼睛的视网膜。这在镜头数据编辑器中被标记为“IMA”,代表图像表面。

Surface 8
Comment Retina
Radius -12
Semi-Diameter 5

快速检查一下系统的3D布局(第一个表面被设置为表面2,而不是默认的表面0),显示出有些东西不是很正确:

ac281d2c-7dfc-11ed-8abf-dac502259ad0.png

在布局图中,顶部和底部的边缘光线被瞳孔切断。这是不可能的,特别是当我们选择系统的光圈类型为Float By Stop Size:根据定义,顶部和底部边缘光线应该成功地通过瞳孔。我们的光瞳有些问题。当我们的瞳孔不可信时,我们会检查Pupil Aberration Fan(这是一个分析工具,可以在Analyze Tab...Aberrations...Pupil Aberration下找到)。我们系统的光瞳像差光扇图是这样的:

ac4764ac-7dfc-11ed-8abf-dac502259ad0.png

光瞳像差光扇图告诉我们在负X轴方向上有40%的瞳孔像差。这是由于OpticStudio将光线瞄准(非偏心的)近轴入瞳造成的。记住,我们让瞳孔偏离0.5mm,这是瞳孔半直径的40%,在x轴的负方向。

幸运的是,OpticStudio有一个简单的解决方法:光线瞄准(Ray Aiming),前往System Explorer...Ray Aiming,设置光线瞄准为Paraxial,如下图所示:

ac6a2ce4-7dfc-11ed-8abf-dac502259ad0.png

点击OK按钮,现在我们看到光瞳像差被消除了:

aca34b14-7dfc-11ed-8abf-dac502259ad0.png

3D布局显示了成功通过偏心瞳孔的上、下边缘光线:

acfc8bb6-7dfc-11ed-8abf-dac502259ad0.png

这是Liou & Brennan(1997)的眼睛模型。此时,你的镜头数据编辑器应该是这样的:

ad151aaa-7dfc-11ed-8abf-dac502259ad0.png

更改3D布局图的设置让Z旋转=90,并设置它第一表面为表面1(输入光束),你会看到自顶向下的模型,包括补偿瞳孔和离轴视场(我在下图模型的各个部分添加了一些注释标签):

ad276f98-7dfc-11ed-8abf-dac502259ad0.png

分析性能

为了分析这个镜头,让我们先看点列图。从Analyze Tab...Rays and Spot下拉打开标准点图:

ad40029c-7dfc-11ed-8abf-dac502259ad0.png

接下来检查FFT MTF:

ad64debe-7dfc-11ed-8abf-dac502259ad0.png

注意,我选择的最大频率为100 lp/mm。这相当于5 um的单点分辨率,与20/20斯内伦视力检测表要求的分辨率非常接近。你可以看到,这个模型应该能产生分辨率高达100 lp/mm的图像,因此是一个20/20人眼的好模型。

最后,为了更好地了解这个“病人”的视力,我们将检查衍射图像分析。衍射图像分析特征与几何图像分析特征相似,只是使用了复杂的系统光学传递函数(OTF)来计算图像外观。该方法考虑了实际光学系统的有限通带和其他衍射效应对成像的影响。

为此,我们将其设置为以20/20斯内伦视力检测表对应的大小来成像字母“F”。前往Analyze Ribbon...Extended Scene Analysis...Extended Diffraction Image Analysis,点击Settings,设置值如下图所示:

adb0a5b0-7dfc-11ed-8abf-dac502259ad0.png

这是衍射图像分析图:

aded314c-7dfc-11ed-8abf-dac502259ad0.png

外部光学元素

现在,在OpticStudio中已经建立了一个良好的人眼模型,就可以向设计中添加外部元素。例如,如果你有一个测量的得到的角膜图,你可以用“网格凹陷”表面替换角膜表面,并将数据导入OpticStudio。或者,如果你有一个特别设计的人工晶状体(IOL)模型,你可以用该模型代替两个梯度表面。

在这个例子中,我们将设计一个渐进多焦点镜头(PAL),我们将从添加一个眼镜镜片到我们的模型的前面开始。我们将优化该PAL以提供近、中、远目标的良好成像。

当“病人”上下移动他的眼睛时,为了仿真眼睛运动的模型,我们希望保持眼镜在合适的位置,并让眼睛模型围绕其中心旋转。也就是说,我们必须在眼球的中心放置一个坐标间断面,然后让整个眼球模型围绕这个点旋转。为了做到这一点,我们首先将眼镜镜片放入镜头数据编辑器,然后我们将向前移动适量的厚度,以到达眼睛的中心。然后我们会放入一个坐标中断表面,然后我们会向后移动到眼睛模型的第一个表面的理想位置,角膜。乍一看,这可能有点令人困惑,但正如您将看到的,它实际上非常简单。

首先,在输入光束(表面1)和角膜(表面2)之间插入三个表面。这三个表面将代表眼镜镜片的前表面和后表面,以及倾斜眼睛的坐标间断面。你会注意到,我将镜片放置子啊距离眼睛15mm处。

我们将把坐标间断面设置在在眼球的中心(我估计距前角膜表面大约13mm)。这样,眼睛就会以一种模仿人眼实际运动的方式围绕中心旋转。下面是设置这三个新表面的指南。

你会看到从眼镜镜片的后表面到坐标间断面(在眼球中心)的厚度是28毫米(从眼镜到角膜15毫米加上角膜到眼球中心13毫米)。然后,坐标间断面后,有一个负13mm的厚度,回到角膜表面。面2和面3分别代表眼镜镜片的前表面和后表面。

Surface 2
Surf:Type Even Asphere
Comment glasses-front
Radius 100
Thickness 3
Material POLYCARB
Semi-Diameter 20
Surface 3
Surf:Type Extended Polynomial
Comment glasses-back
Radius 100
Thickness 28
Semi-Diameter 20

表面4代表位于眼球中心的坐标间断面。

Surface 4
Surf:Type Coordinate Break
Comment center of eye
Thickness -13

现在让我们添加一些新的配置。打开多重结构编辑器(MCE),并按Ctrl-Shift-Insert两次,或按MCE工具栏中的Insert Configuration按钮。我们需要两个额外的多重结构操作数,所以现在按两次Insert。现在MCE中应该有九个空格。

我们要做的第一个结构是眼睛通过晶状体直视远处的物体。第二种配置将代表眼睛通过透镜稍微向下看,观察一个中距离物体。最后,第三个配置将代表眼睛向下看,观察一个非常近的物体。改变对象的距离是用一个THIC操作数(改变Surface 0的厚度)来处理的,改变眼睛的上下角度是通过改变Surface 4(坐标中断面)的Tilt About X(参数3)来处理的。下表列出应如何填写MCE:

ae53bc00-7dfc-11ed-8abf-dac502259ad0.png

我们现在有了一个镜片和一个眼球,我们设置了眼球,使它以一种现实的方式旋转。还有一个小步骤可以帮助我们更容易理解布局图:我们需要将全局坐标参考面设置为镜头数据编辑器(LDE)中的坐标间断之前的一个。这里的想法是,在我们的坐标间断面(曲面4)之后的曲面将相对于坐标中断之前的曲面倾斜一些。

当我们制作布局图时,我们希望在图中显示眼球旋转时,眼镜镜片保持在原位(而不是当眼镜围绕着眼睛移动时,眼球保持在原位)。为了确保这一点,我们转到System Explorer...Aperture,并将全局坐标参考面设置为4之前的任何面(如表面1)。

快速检查3D布局(第一个表面设置为1;旋转X、旋转Y和旋转Z的值设置为0;配置设置为All;和Y补偿设置为-50)表示有些东西不太正确:

ae7639e2-7dfc-11ed-8abf-dac502259ad0.png

问题是当我们的眼睛模型向下旋转时,它并不是真的向下“看”。这是因为视场值在眼睛旋转时保持不变,我们想要的是视场改变,以便聚焦的光束总是击中视网膜的同一部分(视网膜上的这个焦点被称为中央凹)。所以我们真正想保持不变的是像高,而不是视场角。为了做到这一点,我们要将视场类型从角度(Deg)更改为真实像高。

为了转换为真实像高视场定义,我们可以检查主光线的坐标,并手动将该值输入到视场数据编辑器中。但是,我们也可以使用视场转换工具。要做到这一点,从System Explorer...Fields...Open Field Data Editor打开“视场数据编辑器”,导航到“视场属性”中的“视场类型”选项卡。然后,在转换到下拉框中选择真实像高:

aece94d4-7dfc-11ed-8abf-dac502259ad0.png

这将转换我们的视场类型,以便它根据实际像高定义。如果需要的话,我们可以把这些值四舍五入。通过这样设置我们的视场数据,我们将保证无论我们选择哪种配置,主光线将在X = 1.462mm, Y = 0.0处与像面相交(即视网膜)。这是一个很好的仿真情况,无论人眼旋转到哪里,视场中心总是在视网膜上的同一个精确点(中央凹)。

以下是一个3D布局图,从侧视图显示了系统的3种配置(远、中、近对象距离):

af5b9b68-7dfc-11ed-8abf-dac502259ad0.png

我们系统的三种结构的MTF曲线和衍射图像从远到近依次如下所示:

af72a010-7dfc-11ed-8abf-dac502259ad0.png

af876338-7dfc-11ed-8abf-dac502259ad0.png

afa30a20-7dfc-11ed-8abf-dac502259ad0.png

请注意,由于我们的模型没有包括通过晶状体的调节(以适应从远到近的物体距离的变化),系统在中距离和近的物体上显示出非常差的性能,就像我们预期的老花眼患者一样。

准备优化

我们将优化眼镜镜片,使其具有自由形状,试图适应眼睛向下旋转。我们的下一步是在镜头数据编辑器 (LDE)中设置变量。我们唯一感兴趣的是改变镜片前后表面的形状。

在LDE中,设置表面2(眼镜前)的半径、圆锥和第2阶项到第12阶项为变量——这个曲面总共应该有8个参数成为变量。我们还将Surface 3(眼镜后表面)的最大值设置为40,相同表面的标准半径设置为20.0。最后,将Surface 3的所有40个多项式系数项设为变量。

在优化镜片形状之前,我们需要建立一个评价函数。在Optimize Tab...Optimization Wizard的优化函数编辑器(MFE),将优化函数和参考值设置为“RMS”、“波前”和“质心”。设置瞳孔积分方法为“高斯求积”,选择6环12臂;我们需要高采样,因为我们预计波前形状是高度复杂的,基于PAL表面轮廓自由度的数目。请注意,假设轴对称框没有选中,我们将保持默认:

afdf5980-7dfc-11ed-8abf-dac502259ad0.png

点击“OK”,OpticStudio会自动为我们生成几百个优化操作数。

在我们开始优化之前,我们只需要添加几个边缘厚度操作数,以保持眼镜镜片的边缘不会变得太厚或太薄。眼镜镜片包括一个扩展的多项式表面类型,因此在优化期间它不会保持旋转对称。因此,我们必须使用操作数来检查镜头周围多个点的边缘厚度。XNEG和XXEG就是这样的操作数。我们将这些操作数添加到价值函数中,以确保眼镜镜片的边缘厚度在1到8mm之间。

在优化函数的开头插入两个新操作数。下面是这两个新操作数的设置:

第一个新操作数

Type XNEG
Surf1 2
Surf2 3
Zone 0
Target 1
Weight 1

第二个新操作数

Type XXEG
Surf1 2
Surf2 3
Zone 0
Target 6
Weight 1

优化PAL

至此,设计的所有艰苦工作都已完成。附件'Human_Eye_Model.ZMX'已经完成到此为止的所有上述工作。

剩下要做的一件事就是通过Optimize Ribbon...Optimize打开优化工具并点击开始按钮来优化设计。

一段时间后,OpticStudio将完成优化,你将得到一个有趣的,自由形式的渐进添加镜头(PAL)。在这个演示中,我们用锤形优化工具做了几个小时的进一步优化:

affbde34-7dfc-11ed-8abf-dac502259ad0.png

根据这种布局,我们可以看出我们的凹陷剖面相当极端。我们还可以通过表面凹陷分析来进一步研究。注意,在本例中,我们让优化器肆意运行。在设计将要建造的系统时,我们必须考虑成本和没有在这里做的凹陷轮廓。仔细考虑并选择向优化器公开的变量始终是一种良好的习惯。在这个例子中,我们简单地将PAL的所有40个多项式项作为变量,但实际上我们应该通过以下两种方法确定哪些是重要的因素:

1.使用一些基本的考虑。例如,考虑是否需要X/Y对称项,并根据此选择设置哪些项为变量。

2.测试哪些变量“有效”。一种常见的技术是每次向优化器提供一个变量,并检查该变量是否有帮助。如果优化器不能使用这个变量找到更好的解决方案,那么排除它可能是合理的。将它设置为0并保持不变,然后继续下一个。

合适的变量选择确保最终设计是实际的和可制造的,不太昂贵,也大大提高优化性能。不过,在这种情况下,我们将简单地继续,假设该系统是可制造的,并符合我们的物理设计规范。

我们可以看到,优化器已经为所有三种配置找到了一个非常好的解决方案。我们可以使用分析工具检查所有三种配置的性能。注意,这一次,我们的系统在所有三种配置中都有衍射限制(RMS光斑尺寸小于艾里半径),所以我们将在扩展衍射图像分析设置中检查衍射限制选项。我们新优化的系统的三种结构的MTF曲线和衍射图像如下所示,顺序从远到近:

b0301b86-7dfc-11ed-8abf-dac502259ad0.png

b093ca32-7dfc-11ed-8abf-dac502259ad0.png

b0c6a86c-7dfc-11ed-8abf-dac502259ad0.png

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 模型
    +关注

    关注

    1

    文章

    3172

    浏览量

    48714
  • Studio
    +关注

    关注

    2

    文章

    189

    浏览量

    28636
  • 编辑器
    +关注

    关注

    1

    文章

    801

    浏览量

    31119
  • 晶状体
    +关注

    关注

    0

    文章

    5

    浏览量

    4158

原文标题:如何在OpticStudio中模拟人眼

文章出处:【微信号:光电资讯,微信公众号:光电资讯】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    使用OpticStudio的多重结构功能模拟分光棱镜

    OpticStudio,分光棱镜可以在序列或非序列追迹模式下模拟
    的头像 发表于 01-07 11:18 3231次阅读
    使用<b class='flag-5'>OpticStudio</b><b class='flag-5'>中</b>的多重结构功能<b class='flag-5'>模拟</b>分光棱镜

    matlab一个会走路的模拟人!!!

    在网上不经意间发现一个用代码码出的会走路的模拟人~~~!!很有意思,拿出来和大家分享下。
    发表于 07-21 13:03

    何在verilog模拟模拟flash访问?

    为高2.使用IP内部的启动原语 - 检查高但是使用这两个,SPI端口不会出现在端口列表。那么我们如何在verilog模拟模拟flash访
    发表于 05-12 07:18

    如何完成一个模拟人工膝关节的驱动电路?

    如何设计一个模拟人工膝关节的驱动电路
    发表于 04-20 16:35

    设计一款模拟人体生命体征的模拟器详细资料说明

    设计要求:设计一款模拟人体生命体征模拟器,要求其能准确模拟人体生命的各种体征(呼吸,心跳,体温,声音);并且能够对相关参量进行有效控制。以呼吸或者心跳体征为主要模拟实现的功能:
    发表于 09-03 17:27 1次下载
    设计一款<b class='flag-5'>模拟人</b>体生命体征的<b class='flag-5'>模拟</b>器详细资料说明

    如何将OpticStudio的HUD设计转换进入Speos

    Speos 作为分析抬头显示器性能的绝佳工具,一旦系统在 OpticStudio 完成设计,我们可以将系统整体作为 STEP 文件导入至 Speos 当中。
    的头像 发表于 09-20 10:59 1258次阅读

    如何将OpticStudio的信息转换为有限差分本征模

    上述光束之间的重叠分析将为我们提供模态分析更好的模态结果,该模态将作为 Zemax 光束文件从 Lumerical 导出到 OpticStudio
    的头像 发表于 10-08 11:41 892次阅读

    OpticStudio的整体透镜设计

    本案例的目的是设计一个由圆柱形纳米棒组成的衍射超透镜,人为调整纳米棒的半径和排列可以在超透镜表面上产生所需的相位分布。该设计的近场和远场分析在Ansys FDTD、RCWA(严格耦合波分析)和 OpticStudio得到验证。
    的头像 发表于 10-28 11:44 2800次阅读

    如何安装OpticStudio的完整过程

    永久许可证:如果您的支持协议还在有效期限内,您可以安装任何版本的OpticStudio,前提是该版本与下面步骤3显示的许可证类型相容。如果您的支持协议已过期,则必须安装在支持到期日之前发布的OpticStudio版本。
    的头像 发表于 11-22 09:51 6755次阅读

    Zemax:安装Ansys版本的OpticStudio

    这仅适用于将使用AnsysFlexlm 许可证的人员。Ansys版本的Opticstudio不能与旧版Zemax许可证一起使用。Opticstudio的旧版Zemax版本不适用于Ansys许可证。
    的头像 发表于 01-15 14:33 1654次阅读

    解析Zemax OpticStudio复合表面的工作原理

    本文主要介绍了 OpticStudio 的复合表面类型,该功能将作为 Zemax OpticStudio 22.3 版本(支持于订阅制专业/旗舰版)和 Ansys Zemax
    的头像 发表于 02-14 10:33 1271次阅读
    解析Zemax <b class='flag-5'>OpticStudio</b><b class='flag-5'>中</b>复合表面的工作原理

    如何利用Zemax OpticStudio模拟AR系统的全息光波导

    AR系统通常使用全息图将光耦合到波导,从而将光从显示引擎传输到佩戴者的眼睛。本文演示了如何在OpticStudio中使用全息图表面作为平面波导结构内的耦合器,以及展示了如何继续改进第一部分
    的头像 发表于 03-31 10:17 2311次阅读

    设计抬头显示器时要使用哪些OpticStudio工具

    本文为使用OpticStudio工具设计优化HUD抬头显示器系统的第二部分,主要包含演示了如何使用OpticStudio工具设计分析抬头显示器(HUD)性能,即全视场像差(FFA)和NSC矢高图
    的头像 发表于 05-05 12:29 2333次阅读
    设计抬头显示器时要使用哪些<b class='flag-5'>OpticStudio</b>工具

    何在OpticStudio建模和设计真实波片

    本文介绍了如何在 OpticStudio 建模和设计真实的单色和消色差波片。它将演示如何使用双折射材料,通过构建评价函数来计算相位延迟,并使用 Universal Plot 将相位延迟与波片厚度的关系可视化。
    的头像 发表于 06-05 14:01 2377次阅读
    如<b class='flag-5'>何在</b><b class='flag-5'>OpticStudio</b><b class='flag-5'>中</b>建模和设计真实波片

    何在 Zemax OpticStudio 对人体皮肤建模以进行生理测量

    。本文演示了如何在 Zemax OpticStudio 对人体皮肤建模以进行生理测量,并说明了使用 ZOS-API 对基于 PPG 的心率传感器进行的时间相关模拟。 文章附件可通过最
    的头像 发表于 06-17 09:01 749次阅读
    如<b class='flag-5'>何在</b> Zemax <b class='flag-5'>OpticStudio</b> <b class='flag-5'>中</b>对人体皮肤建模以进行生理测量