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)的多种途径。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/981811.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构】堆和priority_queue

堆的定义 堆是什么?实际上堆是一种特殊的(受限制的)完全二叉树,它在完全二叉树的基础上要求每一个节点都要大于等于或者小于等于它的子树的所有节点。这个大于小于体现在节点的值或者权重。 如图所示: 根节点大于等于…

大语言模型学习--本地部署DeepSeek

本地部署一个DeepSeek大语言模型 研究学习一下。 本地快速部署大模型的一个工具 先根据操作系统版本下载Ollama客户端 1.Ollama安装 ollama是一个开源的大型语言模型(LLM)本地化部署与管理工具,旨在简化在本地计算机上运行和管理大语言模型…

1.Big-endian/ little endian大端对齐、小端对齐

一、大端模式、小端模式的介绍 Little endian:是低位字节排放在内存的低地址端、高位字节排放在内存的高地址端。 Big-endian:是高位字节排放在内存的低地址端、低位字节排放在内存的高地址端。 西门子是大端模式,因为比如 MW100 MB100(高位…

基于Python的PDF特殊字体提取器开发实践

基于Python的PDF特殊字体提取器开发实践 一、应用背景与功能概述 在PDF文档处理场景中,我们常常需要针对特定格式的文本内容进行提取分析。本文介绍的"PDF特殊字体提取器"是一款基于Python开发的桌面应用程序,主要解决以下业务需求&#xff…

【基础4】插入排序

核心思想 插入排序是一种基于元素比较的原地排序算法,其核心思想是将数组分为“已排序”和“未排序”两部分,逐个将未排序元素插入到已排序部分的正确位置。 例如扑克牌在理牌的时候,一般会将大小王、2、A、花牌等按大小顺序插入到左边&…

搭建laravle 数字产品销售平台 php

一个专为单一供应商设计的数字市场平台,旨在为销售数字产品和服务提供一站式解决方案。无论是软件、电子书、音乐、视频还是其他类型的数字内容,都能帮助商家高效地管理和销售他们的数字商品。 主要特点 单一供应商模式:专注于单一品牌或供应…

flink集成tidb cdc

Flink TiDB CDC 详解 1. TiDB CDC 简介 1.1 TiDB CDC 的核心概念 TiDB CDC 是 TiDB 提供的变更数据捕获工具,能够实时捕获 TiDB 集群中的数据变更(如 INSERT、UPDATE、DELETE 操作),并将这些变更以事件流的形式输出。TiDB CDC 的…

大模型——打造自己的AI搜索引擎

大模型系列——打造自己的AI搜索引擎 你可能听说过 Perplexity,这是一个引起轰动的 AI 搜索引擎,但它是收费的。本文介绍使用开源 AI工具创建本地 Perplexity 的替代方案。 你可能听说过 Perplexity,这是一个引起轰动的 AI 搜索引擎。与传统搜索相比,它提供简洁、综合的查…

五、并发爬虫

本节聚焦于使用协程、线程、进程实现并发爬虫任务。 Python 线程受全局解释器锁(GIL)制约,同一时刻仅能执行一个线程,无法充分利用多核 CPU 优势,且频繁切换线程会增加开销,影响爬虫性能。 协程是轻量级线程…

Avalonia 中文乱码

代码字体文件设置成支持中文的,但是编译的代码还是显示的乱码,原因是代码文件的文件编码格式不支持中文导致的。 如下面的2个页面一部分中文显示正常,一部分显示正常,一部分显示乱码。

Verilog学习方法—基础入门篇(一)

前言: 在FPGA开发中,Verilog HDL(硬件描述语言)是工程师必须掌握的一项基础技能。它不仅用于描述数字电路,还广泛应用于FPGA的逻辑设计与验证。对于初学者来说,掌握Verilog的核心概念和基本语法&#xff0…

PCB电路板基础知识与应用详解:结构与工作原理

电路板,简称PCB(Printed Circuit Board),是电子设备的核心部分,几乎所有现代电子产品都离不开电路板的支撑。本文将带您全面了解电路板的基本结构、工作原理及其在电子工程中的重要作用。 什么是电路板? 电…

使用Qt调用HslCommunication(C++调用C#库)

使用C/CLI 来调用C#的dll 任务分解: 1、实现C#封装一个调用hsl的dll; 2、实现C控制台调用C#的dll库; 3、把调用C#的dll用C再封装为一个dll; 4、最后再用Qt调用c的dll; 填坑: 1、开发时VS需要安装CLI项目库…

标签的ref属性 vue中为什么不用id标记标签

标签的ref属性 vue中为什么不用id标记标签 假设有一对父子组件,如果父组件和子组件中存在id相同的标签,会产生冲突。通过id获取标签会获取到先加载那个标签。 标签的ref属性的用法 在父组件App中,引入了子组件Person。 并使用ref标记了Pe…

嵌入式硬件发展历程

微型计算机架构:CPURAM存储设备 以前常把CPU称为MPU,但现在随着发展,分为两条道路: 一、发展历程 1、集成 然后把CPURAMFlash其他模块集成在一起,就称为MCU也称单片机,他们Flash和RAM比较小,运行裸机程…

Java进阶:Zookeeper相关笔记

概要总结: ●Zookeeper是一个开源的分布式协调服务,需要下载并部署在服务器上(使用cmd启动,windows与linux都可用)。 ●zookeeper一般用来实现诸如数据订阅/发布、负载均衡、命名服务、集群管理、分布式锁和分布式队列等功能。 ●有多台服…

Java spring客户端操作Redis

目录 一、创建项目引入依赖 二、controller层编写 (1)String类型相关操作测试: (2)List类型相关操作测试: (3)Set类型相关操作测试: (4)Has…

TMS320F28P550SJ9学习笔记1:CCS导入工程以及测试连接单片机仿真器

学习记录如何用 CCS导入工程以及测试连接单片机仿真器 以下为我的CCS 以及驱动库C2000ware 的版本 CCS版本: Code Composer Studio 12.8.1 C2000ware :C2000Ware_5_04_00_00 目录 CCS导入工程: 创建工程: 添加工程: C…

【Java学习】String类变量

面向对象系列七 一、String类似复刻变量 1.似复刻变量 1.1结构 1.2常量池检查 1.3构造方法 1.4""形式 1.5引用 2、字符数组 2.1不可变性 2.2常创性 二、String类变量里的方法 1.获取 1.1引用获取: 1.2字符获取: 1.3数组获取 1.…

3.1、密码学基础

目录 密码学概念与法律密码安全分析密码体制分类 - 私钥密码/对称密码体制密码体制分类 - 公钥密码/非对称密码体制密码体制分类 - 混合密码体制 密码学概念与法律 密码学主要是由密码编码以及密码分析两个部分组成,密码编码就是加密,密码分析就是把我们…