当前位置: 首页 > article >正文

Ansys Zemax | 使用衍射光学器件模拟增强现实 (AR) 系统的出瞳扩展器 (EPE):第 4 部分

附件下载

联系工作人员获取附件

在 OpticStudio 中使用 RCWA 工具为增强现实(AR)系统设置出瞳扩展器(EPE)的示例中,首先解释了k空间中光栅的规划,并详细讨论了设置每个光栅的步骤。

介绍

本文是该四篇文章系列中的最后一篇,展示了如何检查封装图并模拟瞳扩展器系统的图像。此外,我们还讨论了 EPE 系统可能的改进方案及其他需考虑的因素。如需更多详细信息,请查阅系列中其他文章的链接。

如何在 OpticStudio 中使用衍射光学器件模拟增强现实 (AR) 系统的出瞳扩展器 (EPE):第 1 部分

如何在 OpticStudio 中使用衍射光学器件模拟增强现实 (AR) 系统的出瞳扩展器 (EPE):第 2 部分

如何在 OpticStudio 中使用衍射光学器件模拟增强现实 (AR) 系统的出瞳扩展器 (EPE):第 3 部分

获取 MTF 的方法

由于该系统采用非序列模式构建,因此计算 EPE 增强现实(AR)系统的调制传递函数(MTF)存在一定难度。为解决这一问题,我们提供了两种方法:

(1)使用 Detector Rectangle 提供的几何MTF数据直接进行计算;

(2)采用带有 Detector Rectangle 的 Huygens 点扩散函数(PSF)方法,并在外部软件(如MATLAB)中将 PSF 转换为MTF。

接下来的一节将详细介绍这两种方法。

方法 1:几何 MTF

几何MTF的计算过程相对简洁,只需按照以下步骤操作:

1. 打开本系列文章前一部分(即第3部分)中的示例文件:“step5_image_simulation.zar”。

2. 在文件中,忽略并隐藏 Slide 对象。

mceclip0.png

图 1.忽略和隐藏对象。

3. 将 Source DLL 更改为 Source Point 参数,如图 2 所示。

mceclip1.png

图 2.源点的参数值。

4.使用 X 半宽=0.005和 Y 半宽=0.005的参数来缩小最终的检测器图像。

mceclip2.png

5. 在追踪光线之后,我们可以观察到几何点扩散函数(PSF)和调制传递函数(MTF),如图3所示。需要注意的是,图3中的结果并不符合实际情况,因为聚焦点远小于艾里斑。这主要是由于该系统采用了理想的镜头模型(即近轴透镜)来模拟光引擎和人眼系统。然而,即便在用户考虑光引擎部件的实际镜头系统时,对几何 PSF/MTF 的分析仍然可能具有一定的参考价值。

mceclip3.png

图 3.几何 PSF 和 MTF。

制备衍射 PSF/MTF 的计算

在深入探讨如何计算衍射点扩散函数(PSF)/调制传递函数(MTF)之前,我们需要进行两项关键的调整,以确保在非序列模式下能够准确处理光线的相位。基于上一节关于几何 PSF/MTF 的讨论,我们将按照以下步骤进行操作。所有提及的更改均已被保存在名为“step6_calculate_PSF.zar”的文件中,该文件可以联系工作人员获取附件。

用用户定义的衍射 DLL 替换近轴透镜

两个近轴透镜对象被替换为了一个具有用户自定义衍射功能的DLL——“NSC_Paraxial_Lens.dll”所实现的衍射光栅。这个DLL的设计目的是模拟近轴透镜的工作方式,并且能够正确地处理光线的相位信息。在撰写本文时,非序列模式下的内置近轴透镜对象尚无法准确计算输出光线的相位,导致所有相干分析的结果都不准确。这款衍射 DLL 可以应用于任何需要使用近轴透镜并进行相干分析的场合。

在使用“NSC_Paraxial_Lens.dll”时,需要注意以下几点限制:

  • DLL 对 NSC_Paraxial_Lens 两侧材料的折射率有所要求,只能为1.0,或者光线在撞击物体时会终止。但在本例中,由于近轴透镜处于空气中,折射率满足要求,因此这一限制可以根据用户请求进行删除。

  • DLL 假定光线是从 -z 侧入射的。如果从 +z 侧照射到衍射面,光线将终止。为了解决这个问题,第二个衍射光栅对象被绕X轴旋转了180度,以确保光线来自衍射透镜的 -z 侧。这一限制同样可以根据用户请求进行删除。

  • DLL 仅适用于0级传输光,其他级次的光将被忽略。因此,用户应将起始级次和终止级次都设置为0,设置为其他数字将没有意义。这一限制是无法删除的,因为它符合 DLL 的工作原理。

  • DLL 仅适用于已定义的共轭物,即物体和像的距离已知时才能正常工作。这是一个无法消除的限制,因为近轴透镜是一个虚拟且不切实际的组件。因此,建议设计人员在设计成熟时,改用包含像差在内的真实光引擎系统,以评估更真实的条件。

mceclip4.png

图 4.近轴透镜被具有衍射 DLL NSC_Paraxial_Lens.dll的衍射光栅所取代。

使用 User Defined Object + Polygon_grating.dll 重新定义第二个(旋转)光栅

在撰写本文时,我们已修复了一个错误,即原先 Boolean Native/CAD 在处理光线相位方面存在不足。为解决这一问题,我们采用了用户定义的对象(User-Defined Object)来重新构建了第二个格栅,具体使用的是Polygon.dll。该用户定义的对象允许用户直接定义一个多边形板,其顶点坐标可通过对象参数(如p1x、p1y、p2x、p2y等)来指定。相较于使用 Boolean Native/CAD 来制作多边形板,这种方法提供了更高的便利性和灵活性。

mceclip5.png

图 5. 3个对象,布尔原生、凸出和衍射光栅,被用户定义的对象 DLL + Polygon_grating.dll 替换。

检查 RCWA DLL 的版本

为了准确处理光线的相位信息,必须采用在2021年4月18日之后编译的 RCWA DLL。这个 DLL 可以通过 RCWA 可视化工具来访问,该工具位于“Programming”选项卡的“User Extensions”下,具体可参考图6所示。

mceclip6.png

图 6.在 RCWA 可视化工具中检查 RCWA DLL 版本。

用于获取瞳孔函数和惠更斯 PSF 的检测器

如图 7 所示,在 Annulus 对象之后设置了一个检测器,用于检查截短的瞳孔函数以进行分析。

mceclip7.png

图 7 在眼框处层压的四个对象。

mceclip8.png

图 8.截断的瞳孔功能。左侧显示相干辐照度。右侧显示 Coherent Phase。

此外,在计算惠更斯点扩散函数(PSF)时,需将 PSF Wave# 设置为眼图系统检测器的一个非零值。这个数值代表 System Explorer 中设计人员想要评估的光波长的波数,且必须为非零。重要的是,在评估惠更斯 PSF 时,应仅追踪一个波长。同时请注意,此设置通常会导致光线追踪速度变慢,因此仅在需要评估惠更斯PSF时才使用。图10展示了模拟的惠更斯PSF。

mceclip9.png

图 9.将 PSF Wave# 设置为非零值,以便在探测器上评估惠更斯 PSF。PSF Wave# 对应于 System Explorer 中定义的波长。

mceclip10.png

图 10.左图显示了在人眼探测器上计算的惠更斯 PSF。右侧显示了截断前出瞳处的相位分布。

此时,所有用于计算MTF的数据都已准备就绪。以下部分介绍如何通过 PSF 和 pupil 函数获取 MTF。

PSF 的讨论

用户可能会好奇为什么 PSF 会有细微的变动,以及瞳孔功能为何会呈现出一个倾斜阶段,原因在于第二个光栅的周期不够精确。如图11和图12所示,这一微小误差可以通过增加第二个光栅周期的有效数字来消除,确切的数值应为0.27779397次/微米。

mceclip11.png

图 11.将第二个光栅的周期更改为更准确的值,以消除瞳孔函数中的倾斜相位和所得 PSF 中的偏移。

mceclip12.png

图 12.将第二个光栅的周期更改为更准确的值后的仿真结果。

方法 2:通过傅里叶变换将惠更斯 PSF 转换为 MTF

根据给定的 PSF 计算 MTF 很容易。在这里,我们通过 MATLAB 进行了一个演示。

1. 为 MATLAB 生成用于交互式扩展的样板代码。

mceclip13.png

图 13.MATLAB 的交互式扩展样板代码。

2. 返回 OpticStudio 以启用交互式扩展的访问,如图 13 所示。

mceclip14.png

图 14.交互式扩展的开放访问权限。

3. 请打开随附的MATLAB代码并运行它。请注意,此代码专为本文中的示例而设计。若应用于其他系统,用户需在代码的第25行指定用于观察PSF的探测器编号,在第60行设置瞳孔的半直径,并在第61行输入近轴透镜的焦距。

4. 结果如图 14 所示。

mceclip15.png

图 15.在 MATLAB 中计算的 MTF。

结论

本文展示了针对增强现实(AR)系统设计的出瞳扩展器。文中附带了多个示例文件,并对每个文件中的关键设计要点进行了讨论。文章阐述了系统中采用的三个光栅的作用,并讲解了如何检查光束在波导中的传播足迹,以及如何进行此类系统的图像仿真。此外,还探讨了一些优化系统的潜在方法。最后部分,文章讨论了计算点扩散函数(PSF)和调制传递函数(MTF)的多种途径。


http://www.kler.cn/a/573650.html

相关文章:

  • 报错The default superclass, “jakarta.servlet.http.HttpServlet“(已经配置好tomcat)
  • 理解 React Portal:让你的组件跳出层级限制
  • JSONP解决跨域问题:原理、实现与局限
  • 家政保洁维修行业有没有必要做小程序?
  • MWC 2025 | 紫光展锐联合移远通信推出全面支持R16特性的5G模组RG620UA-EU
  • 【五.LangChain技术与应用】【10.LangChain ChatPromptTemplate(下):复杂场景下的应用】
  • centos8 虚拟机重启后无法识别网卡 ens33 问题原因总结
  • Exoplayer2源码编译FFmpeg拓展模块实现音频软解码
  • Python在NFT市场中的应用:从创建到交易的完整指南
  • Element-Plus悬浮窗模板
  • Kotlin 5种单例模式
  • 【2025.3最新版】从零开始的CSS网页开发学习笔记 1(包含CSS简介 CSS基础选择器 CSS字体属性 CSS文本属性 CSS引入方式)
  • WHAT - 前端异步事件流处理场景梳理
  • 详细探索如何用脚本实现M小ySQL一键安装与配置,提升运维效率!
  • LLaMA-2 7B 简介
  • Vue输入框获取焦点
  • 【深度学习】—— 深入 Keras:从基础到实战的深度学习指南 第11章 共12章
  • 聊一聊 IM 要如何提升用户体验?
  • 五、Redis 持久化:RDB 与 AOF 深入解析与优化策略
  • 深入探索 jvm-sandbox 与 jvm-sandbox-repeater 在微服务测试中的应用