首页/文章/ 详情

Ansys Zemax | 如何使用 Zenike 系数对黑盒光学系统进行建模

1年前浏览3558

通常需要在设计中表示光学系统,即使您没有详细的处方数据,如曲率半径、眼镜等。本文展示了如何使用 Zernike 系数来描述系统的波前像差,并在无法使用 Zemax 黑匣子表面文件的情况下生成光学系统的简单但准确的表示。如果您依赖于使用光学系统测量的实验数据,但您无法获得其处方数据,则通常会出现这种情况。(联系我们获取文章附件)

介绍

有时需要表示光学子系统,而不详细了解其处方。对于一阶计算,近轴透镜就足够了,但是当也需要波前像差时,可以使用Zernike相位系数来提供光学系统产生的波前的精确模型。

OpticStudio支持全面的黑盒功能,建议用于此目的。但是,如果无法提供 Zemax 黑匣子文件,则可以使用以下过程。

泽尼克相位数据

如果您想在不透露处方数据的情况下将像差数据分发给客户,则可以由 OpticStudio 生成这些 Zernike 相位系数,或者如果您正在测量没有处方数据的镜头,则可以通过干涉仪生成。根据您的干涉仪软件,您可能已经拥有OpticStudio Zernike格式的数据,网格相位数据或.INT文件。OpticStudio可以处理所有这些,但在本文中,我们将仅使用Zernike数据。

Zernike相位数据表示光学系统在特定场和特定波长下性能的测量。因为有关玻璃、曲率半径、非球面系数等的信息。不是 Zernike 数据的一部分,无法将 Zernike 数据缩放到不同的场或波长。因此,对于要模拟性能的每个(场、波长)对,您将需要一组 Zernike 相位数据。这些可以通过为每个(场,波长)组合提供一个单独的文件或(更有可能)为每个(场,波长)对提供单独的配置来输入OpticStudio。

有一个重要的例外:当被建模的系统是全反射系统时,可以使用Zernike标准SAG表面来模拟给定场点的所有波长下的性能。下一期将详细介绍此特殊情况。

起始设计

本文中使用的所有示例文件都包含在一个 zip 文件中,可以从本文顶部的链接下载该文件。我们将要看的第一个文件是“Cooke one field, one wavelength.zmx”,它基于 OpticStudio 分发的 Cooke 三元组示例文件。顾名思义,此文件基于单个(场,波长)对。

图片


它的波前看起来像这样:

图片

它的光斑大小是这样的:

图片

现在,泽尼克系数是描述光学系统产生的波前误差的紧凑方法。为了产生“黑匣子”模型,我们必须首先生成具有相同一阶特性的近轴光学系统,然后用Zernike数据像差该近轴系统产生的波前。

我们需要的关键近轴数据是出口瞳孔位置和出口瞳孔直径。所有波前数据都是在出射瞳孔中测量的,因此我们的黑匣子系统必须具有相同的瞳孔数据。对于此文件,瞳孔数据如下所示:

出口瞳孔直径 = 10.2337 mm

出口瞳孔位置 = -50.9613 mm

近轴当量

打开文件“Paraxis Equivalent.zmx”。它模拟了相同的系统,只有一个近轴透镜表面:

图片

请注意以下几点:

  • 它使用与原始设计相同的场和波长。

  • 其入射瞳孔直径设置为与原始系统的出射瞳孔直径相同的值。在此文件中,入射瞳孔、停止曲面和出射瞳孔都位于同一位置。

  • 近轴透镜的焦距和到图像表面的厚度均设置为等于原始文件的-1*出瞳位置。-1因子是因为EXPP是从图像到瞳孔测量的,但表面厚度是从瞳孔到图像的距离,因此需要改变符号。

  • 系统具有与原始系统相同的一阶属性。

该系统的出瞳与原始系统的出瞳大小完全相同,位置相同。为了在近轴透镜输出上添加像差,我们在近轴透镜之后使用Zernike标准相位表面。我们的目标是获取原始透镜的泽尼克系数,并将它们添加到近轴等效透镜的泽尼克表面上。

图片

在镜头之间复 制泽尼克数据

返回“Cooke One Field One Wavelength.zmx”文件,然后单击“分析...波...泽尼克标准系数OpticStudio计算系统的波前,然后拟合一系列Zernike多项式。

图片

波前的采样和Zernike项的数量都可以由用户通过“设置”对话框定义。确定波前是否充分采样或泽尼克项数量的关键参数是RMS拟合误差和最大拟合误差。此设计使用采样和项数的默认参数,可提供

图片

这意味着,当我们从从泽尼克系数重建的波前中减去真实的波前时,误差是百万分之一波的数量级。这已经足够接近了!但是,一般来说,您可能需要调整波前采样和最大 Zernike 项才能达到可接受的拟合。

我们现在需要将泽尼克系数数据从这个设计转移到近轴等效设计中。这可以通过打印出 Zernike 数据并重新键入来完成,但这很乏味。对于宏来说,这是一个很好的工作。

以下宏(也包含在文章附件中),称为Zernike Readout.zpl,从此镜头获取Zernike数据,并将其以Tools...在额外数据编辑器上导入数据可以读取。它经历的步骤如下:

首先,它定义了它需要的所有变量(L1-19)。




















! This macro writes out the Zernike standard coefficients! of a lens file in a format that can be directly imported! into the Extra data Parameters of a  Zernike Standard Phase surface
! First define the variables we need! Enter whatever values are appropriate! Use INPUT statements if you prefermax_order = 37 # can be up to 231sampling = 2 #sampling is 1 for 32x32, 2 for 64x64 etcfield = 1wavelength = 1zerntype = 1 # Get standard, not fringe or Annular coefficientsepsilon = 0 # only used for Annular Zernike coefficientsreference = 0 # reference to the chief rayvector = 1 # use the built-in VEC1 array to store the dataoutput$ = "zernike.dat"path$ = $PATHNAME() # save the data in the same location as the file we are usingfile$ = path$ + "\" + output$PRINT "Writing data to ", file$

(请注意,采样和最大 Zernike 项应设置为您用于上述 Zernike 分析的值。然后,宏获取出口瞳孔直径和 Zernike 数据 (L21-27):








! Then get the Exit Pupil Diameter. Use VEC1 to store the dataGETSYSTEMDATA 1EXPD = VEC1(13) # see the manual for the data structurenormalization_radius = EXPD/2
! Then get the Zernike coefficients up to the maximum required orderGETZERNIKE max_order, wavelength, field, sampling, vector, zerntype, epsilon, reference

请注意,泽尼克曲面的归一化半径是出口瞳孔直径的一半。然后,宏将数据打印到 .DAT 文件的正确格式,以便 Zernike 标准相表面读取它 (L29-43):
















! Then write them out to file in the format needed for the Import ToolOUTPUT file$FORMAT 1 INTPRINT max_orderFORMAT 9.8PRINT normalization_radiusFOR order = 1, max_order, 1    z_term = order + 8 # offset to the correct location in the data structure, see manual!    PRINT VEC1(z_term)NEXT orderOUTPUT SCREEN
! EndPRINT "Program End"END

Zernike 数据输入到“Zernike 标准相”曲面的“参数”列中,如下所示:

图片

将此宏放入 {Zemax}/宏文件夹中,单击编程...ZPL宏...刷新列表,以便宏显示在菜单列表中,然后运行它。它将在与原始OpticStudio文件相同的文件夹中创建一个名为“zernike.dat”的文件。如果在记事本中打开此文件,您将看到:

图片

此文件包含泽尼克标准相表面所需的所有数据。第一个数字是 Zernike 项的数量,然后是归一化半径,然后是每个 Zernike 项。额外数据编辑器的导入工具可以直接读取此文件。

返回到近轴等效透镜文件。在 Surface 2 属性的“导入”选项卡中浏览并打开 zernike.dat 文件:

图片

按“导入”按钮,成功导入数据后将出现Zemax消息框:

图片

波前错误现在显示:

图片

和点图显示

图片

此文件生成与原始文件相同的光线追踪结果!在随附的zip中,文件“Zernike Equivalent.zmx”显示了完成的系统。此外,文件“Direct Comparison.zmx”将同一文件的原始版本和Zernike版本显示为两种不同的配置。这允许在文件的两个版本之间轻松进行比较。

图片

Zemax
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2023-04-04
最近编辑:1年前
武汉宇熠
光机电领域优秀供应商
获赞 342粉丝 240文章 854课程 9
点赞
收藏
作者推荐

Ansys Zemax | 建立增强现实头戴式显示器

增强现实(AR)系统为多道光路的架构和自由曲面(free-fromoptics)的使用提供了良好的示范。这篇文章说明了如何在序列模式中,使用楔形棱镜(wedge-shapedprism)和自由曲面建立头戴式显示器(HMD)。我们将以三个范例档案演示不同阶段的模型建立。简介在设计一个增强现实(augmentedreality,AR)透视头戴式显示器(OST-HMD)时,我们会针对两道光路进行优化:微显示器的投影路径以及供用户看见外界的透视路径。为了达到最佳的AR效果,光学设计者必须确保虚拟图像和现实景物能正确结合。此技术可被广泛应用在军事和医疗辅助等方面。考虑到实际用途,设计者必须将整个光学系统设计成一个精巧且非侵入式的装置,同时具备大视角(FOV)和小f-number等优点。这篇文章说明如何使用楔形自由曲面棱镜和胶合辅助镜头(cementedauxiliarylens)建立上述的光学系统。参考专利本文的范例参考了专利PatentUS2014/0009845A1的设计。在范例档案中,我们针对各表面大量的运用了倾斜(tilt)和偏心(decenter)技巧。在下方的示意图中,我们可以看到系统使用自由曲面棱镜(FFSprism)和胶合辅助镜头(cementedauxiliarylens,图中黄色部分)这两个光学组件改变入射光的行进方向。FFS的使用增加了设计的自由度,使系统可使用较少的光学组件达成目的,大幅减少装置的重量。另一方面,胶合辅助镜头(cementedauxiliarylens)可有效修正畸变,改善透视影像的质量。下图参考自专利并稍加修改。设计方针OST-HMD包含了两个光学组件:1)楔形FFS棱镜和2)胶合辅助镜头。在OpticStudio中我们会先建立FFS棱镜,并根据原始规格进行参数设定,接着以微显示器投影路径(第一道光路)为目标进行优化。在完成上述步骤后,我们在多重结构编辑器(multi-configurationeditor)中建立胶合辅助镜头。借由这个镜头的辅助,可以有效减少畸变的影响,并消除光学系统的场曲情况。透过以上的步骤,我们可以改善第二道光路使观察者看到的外界景物不会扭曲变形。在仿真环境中,我们翻转了整个光学系统,使光线路径与现实情况完全相反。在实际应用上,我们会以微显示器作为HMD的光源,人眼的视网膜则会是像面。前后者分别作为整个光学路径的出/入瞳。然而为了精确的架设各个组件且能有效的在OpticStudio中进行优化,我们会将实际的出瞳作为OpticStudio中的入瞳,并以微显示器作为整个系统的像面。在接下来的篇幅,我们都会以光线在OpticStudio中的追迹方向来描述。关于HMD的建立,首先我们会逐一插入表面以建立棱镜,并追迹单一视场角(fieldangle)的一条主光线。接下来,为了倾斜棱镜使光线按预期的路线行进,我们会在适当的位置插入CoordinateBreak表面。此外,我们还需要考虑组件的几何关系,并为各表面设定适合的材质,使这个光学系统成为一个合理的设计。由于序列模式(SequentialMode)无法仿真出全反射(TIR)的现象,我们必须在发生TIR的表面上再覆盖上一个表面,并定义该表面为具有Pickupsolves的反射镜表面(MIRROR),使追迹光线能符合实际情况。在完成对单一视场的优化之后,我们接着利用多重结构编辑器(Multi-ConfigurationEditor,MCE)建立第二道光路。最后我们会纳入制造上的考虑,并对整个系统的表现进行最终的优化。楔形自由曲面(FFS)棱镜为了简化一开始的光线追迹过程,我们将系统的入瞳大小设置为6mm(人眼瞳孔尺寸约为2-8mm),并设定单一视场点(fieldpoint)。当所有的表面都正确的被建立,且光线能顺利的通过棱镜后,我们可以逐步的扩大FOV和入瞳尺寸。(更多关于FOV的论述可参考后续的”定义视角”段落)在序列模式中,我们利用多个倾斜或偏心表面建立棱镜。为了确认各表面的位置和存在必要性,我们必须思考系统中的光线是如何通过棱镜,并与各表面交互作用的。在下方示意图中我们可以清楚看到光线的路径、各表面的作用和编号,这些信息有助于棱镜模型的建立。上方示意图中的红色数字代表该表面在镜头数据编辑器(LensDataEditor,LDE)中的表面编号,CoordinateBreak的存在已纳入考虑。至于“S#”则代表了棱镜的实际表面,可以在本文参考的专利模型中找到对应的表面。(我们也可以在LDE中的Comment区域看到上述的编号)举例,我们可以看到上方红框中的8-9-10表面代表了示意图中的表面9,同时也代表了实际棱镜的S1’表面,即S1的反射面(内表面)。而表面8和10则分别代表了LDE中的表面8和10,并作为表面9的CoordinateBreak。进行以上步骤时,光阑(stop,在此为系统的入瞳)位置将被设为全局坐标参考(GlobalCoordinateReference)。棱镜的第一面(S1或是CoordinateBreak加入后LDE中的Surface3)位于光阑后方18.25mm处,等同于Surface1在LDE中的厚度。而这个距离在实际应用上是作为使用装置时的适眼距(eyerelief)。除了坐标的设定之外,我们还需要思考如何设计表面的倾斜或偏心,才能使入射光顺利到达像面。专利设计中的参数和示意图可以在这方面提供不少帮助。如下方示意图,可以看到入射光自S1(LDE中的Surface3)进入棱镜,接着落在S2(LDE中的Surface6)上。示意图中的S2作为一个平面镜,使进入棱镜的光线全数反射。在实际应用上S2是一个镀膜的半反射镜(half-mirror)。光线在到达该表面后会分成两个行进路径:1)在棱镜内部发生反射,最后到达上方的微显示器;2)使外界光线顺利通过的透射路径。我们会在稍后的篇幅使用多重结构化编辑器建立第二道光路。为了使光线符合示意图中的行进方向,我们会再次使用倾斜和偏心的功能调整表面的位置。注意:为了更完整的呈现光线追迹路径,我们根据专利中微显示器的位置对像面进行调整,透过表面的倾斜或偏心使光学组件呈现正确的几何关系。检视光路图,我们会发现光线须在S1的内表面(即S1’)反射,才能顺利抵达微显示器(像面)。根据专利的说明,前述的光线转折是由界面处的全反射(TIR)所造成。我们在后续的”全反射(TIR)”段落中会提到更详尽描述,此处仅针对OpticStudio的操作做说明。由于在序列模式中无法仿真TIR,因此我们需要额外将S1’设为反射镜表面。此外,将表面的求解(Solvetype)设为Pickup,可使此表面更符合S1(LDE中的surface3)的实际表现,允许入射光同时呈现反射和穿透的现象。我们可以根据下图完成上述的设定步骤,使各表面对应的参数随LDE中Surface9变更。最后我们以相同的方式在像面(LDE中的Surface12)前插入一个表面,并设定正确的x-tilt和y-decenter。定义视角(FOV)由于自由曲面的设计会随视场(field)变化,为了分析系统的FOV我们需要尽可能设定更多的视场点。OpticStudio允许使用者在给定的视场中间分割,并有效率进行优化。此外,这些视场点还必须在X和Y方向给予定义。由于范例档案中的光学系统并非旋转对称(该系统对称于YZ平面,但对XZ平面是非对称的),我们无法确保光线在正向和负向均有相同的行进路线。全反射(TIR)在实际的光学系统中,从微显示器出发的光线会在S1’面发生TIR。当光线从高折射率的介质射向折射率较低的介质,且入射角大于临界角时,此现象可能会发生在两介质的交界面。TIR的临界角如下所示:ni代表光线入射的介质折射率,而nr代则是发生折射的介质折射率。在本范例中,光线自PMMA(n=1.492)射向S1’表面。此时S1’表面的外侧为空气,因此nr=1。由以上的关系式我们可以得到TIR发生的临界角(θc)为42.09度。实际的光线入射角会成为优化过程中的约束条件。创建矩形孔径我们可以在LDE的semi-diameter参数调整表面上的孔径(aperture)大小。考虑现实中楔形棱镜的几何关系,本范例中会以矩形孔径的形式呈现。矩形孔径可被定义在棱镜的任何表面上,我们可以在SurfaceProperty…ApertureType中将孔径改为RectangularType。(由于CoordinateBreak是虚拟表面,这些表面不会对光线行进造成任何改变,因此我们无法在此定义孔径。)优化系统针对RMS波前(wavefront)进行优化,并且以质心(centroid)为参考点。我们可以逐步增加光瞳采样(PupilIntegration)中的环(ring)和臂(arm)以改良设计。以上步骤均可在优化函数编辑器(MeritFunctionEditor)中完成。至于约束条件的部分,我们可以选择以有效焦距(EFL)、厚度、全局坐标、光线路径长度、倾斜/偏心参数、角度和畸变等物理量作为限制。首先,我们需要使用全局坐标约束条件(GLCX/GLCY/GLCZ)确保S1和S1’表面(LDE中的Surface9和3)对齐,毕竟在实际应用上这两个面本来就是一体的。这些操作数(operand)将被用在surface9和3的pickup参数上。为了使整体光学架构更为简洁,我们可将光线路径长度作为约束条件。特别是从S3到像面以及S1’到像面的距离,针对这两个长度进行限制可确保像面被放在合理的位置。对表面的倾斜/偏心参数进行限制可使棱镜在优化过程中保持正常的形状,避免出现其中一个表面异常远离其他表面的现象。一开始所有表面的型态为标准透镜(StandardLens),在优化的过程中会渐渐的变成偶次非球面(EvenAsphere),部分表面最后将变为自由曲面型态。在本案例中,S1、S1’和S3表面(LDE中的surface3,9,12)会以ExtendedPolynomial的型态呈现,surface2则会是EvenAsphere。设定多重结构化编辑器(Multi-ConfigurationEditor)到目前为止,第一道光路(投影路径)的优化已大致完成。接下来我们将进行第二道光路(透视路径)的建立和优化。在这个阶段中,我们主要针对S2表面上的辅助镜头(auxiliarylens)进行设计。下图为FFS棱镜优化完成后的LDE,参数可能会因为优化的过程和视场的添加而存在些微的差异。我们可以在最终的范例档案中得到非球面和自由曲面系数。注意:在进行优化后,各表面在LDE中会呈现不同的颜色。我们也可以根据偏好在surfaceproperty中对颜色进行变更。在进行辅助镜头的建构时,我们首先将S4加入已建立的FFS棱镜模型中。此时多重结构编辑器(Multi-ConfigurationEditor,MCE)可以帮助我们将整个系统一分为二。如下图,我们可以看到投影路径和透视路径清楚的呈现。在根据光路对光学系统进行划分前,我们需要先在像面前加入S4表面(在实际应用上,S4会是第二道光路的光线在到达像面前的最后一个表面)。在LDE中加入S4和对应的CoordinateBreak后的结果如下(surface14,15,16为新增的内容)。接下来我们会以多重结构编辑器(Multi-ConfigurationEditor,MCE)对光学系统进行划分。在明确的分割系统后,我们可针对不同目标和表面特性对单一光路进行优化。举例而言,设计者可以在针对FFS棱镜以RMS波前和有限远像面优化的同时,对辅助镜头和透视光路以无焦(afocal)为目标进行相同操作。在透视路径中,我们希望能在配戴装置的情况下仍可清晰看到外界景物,因此像面在这道光路中不会是位于焦点上的。为了使HMD的存在不影响使用者正常观看周遭环境,在模拟中我们必须使无穷远出发的影像光线能顺利映像在人眼的角膜(cornea)上。同时,我们还需要对辅助镜头进行优化,减少透视光路的畸变并消除光学系统的屈光效果。关于MCE的设定,我们可以在HelpFiles中找到许多有用的信息。(推荐阅读“MultipleConfigurationEditor”和“Multi-ConfigurationOperands”这两个段落)观察上方个别光路的示意图和LDE,可以发现第一道光路包含了LDE中surface0到surface13的所有组件,以及像面(surface17,18)。第二道光路则涵盖了S1和S2表面,但不包括S1’和S3表面。因此在针对此光路进行设计和优化时,S1’和S3及相对应的CoordinateBreak均会被忽略,仅会考虑Surfaces0-7,14-16和18。同时,像面的CoordinateBreak也会被忽略,因为我们希望像面可以垂直于Z轴,正如实际应用上的外界入射光。在上方的MCE中,我们可以看到在configuration被设置为参数”1”,代表该操作数是有效的,而”0”则代表了该操作数不会对优化结果造成影响。透过操作数IGNR的设置,我们可以决定哪些表面会真正影响模拟结果,而哪些表面则是要被忽略的。举例而言,观察MCE我们可以发现surface14到16(第3到5横列)不会对第一道光路造成影响。此外还有一点特别重要的是操作数GLSS的使用,我们利用这个操作数将Surface6(FFS棱镜的S2)材质改为玻璃。该表面在一开始的第一道光路中被当作反射镜表面,为了模拟第二道光路,我们必须赋予该表面可被穿透的特性,以便在序列模式下同时仿真出透射和反射的效果。此外,多重结构操作数AFOC可使第二道光路中的”离焦空间(AfocalImageSpace)”设置被启用。在优化多重结构的过程中,MCE和LDE的参数均可被调整以改进结果。我们可以借由操作数CONF将操作数归类到多重结构的其中一种结构中,这些操作数只会对该结构造成影响。在CONF后方的”Cfg#”输入结构的编号,例如本例的第一道光路即输入”1”,MCE会将此横列下方的所有操作数纳入该结构的优化计算,直到下一个CONF出现为止。分析我们可以利用MCE或者其他工具栏的功能对系统的表现进行分析。由于本范例中的模型使用了自由曲面且具有缺乏旋转对称的特性,我们使用了HuygensPSF的分析方法。如果想在分析的过程中加入矢高(sag)和曲率(curvature)的考虑,我们可以在上方工具栏中依序选择分析(Analyze)...表面(Surface)...矢高图(Sag)/曲率图(Curvature)。更多细节上的变更可以在设定(Settings)选单中完成。视场光焦图(FieldMap)是另一个我们可以选用的分析工具,我们可以在分析(Analyze)...PAL/Freeform中找到这个功能。在设定选单中我们可以针对各种特性进行分析,例如特定表面的光焦度(power)。在本范例中,我们使用该功能评估在透视路径(see-throughpath)中光线抵达像面时所受到屈光的影响。要达到使人眼无法辨别差异的程度,设计者必须尽可能减少光学系统的屈光能力(约小于0.5D),才可降低使用时的疲劳和不适感。参考资料1.Cheng,Dewen,HongHua,andYongtianWang.“OpticalSee-ThroughFree-FormHead-MountedDisplay.”U.S.Patent0009845.9January2014

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈