Zemax光学设计——单透镜设计

单透镜系统参数:

入瞳直径:20mm

F/#(F数):10

全视场:10°

波长:587nm

材料:BK7

优化方向:最佳均方根光斑直径

设计步骤

一、单透镜系统参数

步骤一:入瞳直径20mm

首先需要把已知镜头的系统参数输入Zemax中,系统参数包括三部分:光束孔径大小、视场类型及大小、波长

(1)在“系统选项”面板中打开“系统孔径”选项,将”孔径类型“设置为“入瞳直径”,孔径值设置为20,切趾类型设置为“均匀”

设置完成后,镜头数据随之变化

步骤二: 输入视场

(1)在“系统选项”面板中单击“视场”选项左侧的展开(小三角形)按钮,展开视场选项

(2)单击“打开视场数据编辑器”按钮,在“视场类型”选项卡中设置“类型”为“角度”

(3)在下方点击“添加视场”,两次,插入两行

(4)在视场1,2,3中的“Y角度(°)”列分别输入0,3.5,5,保持权重1 不变

 

步骤三:输入波长587nm 

 (1)在“系统选项”面板中单击“波长”(小三角)展开按钮

 (2)双击“设置”选项,弹出波长数据编辑器,直接勾选1,并将波长修改为0.587,

 (3)关闭该窗口即可

二、单透镜初始结构 

 接下来创建透镜的初始结构,单透镜由2个面组成,需要在镜头数据编辑器像面前插入一个表面

步骤四:在透镜数据编辑器内输入参数

(1)鼠标点击一下像面那一栏,然后键盘上按“Insert”键在像面前插入一个表面

(2)在面1的“材料”栏输入透镜材料“BK7”,表示当前面和相邻面之间的材料为BK7

系统要求的透镜F/#=10,表示焦距与入瞳直径的比值为10,这也是间接控制焦距的方法。通常直接在最后一个光学面的曲率半径上设置F/#的求解类型,在透镜后表面曲率半径上单击右键,选择F/#=10

步骤五:在最后一个光学面的曲率半径上设置F/#的求解

(1)在镜头数据编辑器中面2那一栏中的“曲率半径”栏右侧的方格中单击,弹出“在面2上的曲率解”对话框

(2)将对话框中的求解类型设为“F数”

(3)将“F/#”设置为10

 

设置完成后,其中的一些数据会发生变化

 

在初始结构中,透镜的曲率半径和厚度未知,,这些参数需要软件自动优化得到,但可以使用透镜后表面上边缘厚度解得到近轴焦平面的位置

在透镜后表面的厚度上单击鼠标右键,选择边缘光线求解类型,它表示近轴边缘光线会自动在下一个表面上聚焦并确定距离值

步骤六:在透镜后表面厚度上选择边缘光线高度求解类型

(1)在镜头数据编辑器面2中的厚度栏右侧方格单击,弹出“在面2上的厚度解”对话框

(2)将对话框中的“求解类型”设置为“边缘光线高度”

 

此时发现厚度变为200

 

步骤七:查看单透镜结构光路图与像差畸变图 

(1)查看2D视图 

 

3D视图

 

实体模型图

 

(2)执行“分析”选项卡——“成像质量”面板——“相差分析”组——“光线像差图”命令,打开“光线光扇图”窗口显示光扇图

 

三、单透镜的变量与优化目标

初始结构设置完成后,为找到最佳曲率半径值,下一步设置透镜需要优化的参数,即设置透镜的优化变量。单击需要优化的参数栏并按“CTRL+Z”组合键,可将该参数设置为变量,参数右边会出现V标识

步骤八:将单透镜的前表面曲率半径与透镜厚度设置为变量

 

 变量设置完成后,下一步需要在软件中设置评价函数。评价函数用来评价系统优化目标的好坏,在该单透镜中只需要优化得到最小的光斑即可

步骤九:优化单透镜

(1)执行“优化”选项卡——“自动优化”面板——“优化向导”命令,打开“评价函数编辑器”窗口

 

在优化向导面板中可以进行:优化函数、光瞳采样、厚度边界等参数组的设置

优化函数:是设计的核心,是优化需要得到的结果。以成像质量为目标。可以是波前、对比度、点列图、角向。通常优化镜头的分辨率是以光斑最小为标准

光瞳采样:即优化时的光线采样,包括高斯求积和矩阵阵列采样。当系统为旋转对称结构且不存在渐晕的情况下,使用高斯求积,追迹最少的光线能够得到较高的优化效率。当系统存在渐晕时,只能使用矩形阵列采样,需要追迹大量光线才能得到精确的结果

厚度边界:用来控制优化过程中镜片与空间间隔大小,保证得到的镜片不会太厚或太薄,空气厚度不至于优化为负值等

(2)在优化向导与操作数面板中的“优化向导”选项卡中进行参数设置,设置“成像质量”为点列图,X权重,Y权重为0,点击“应用”即可

生成的评价目标操作数如下

 

(4)执行“优化”选项卡——“自动优化”面板——“执行优化”命令,打开”局部优化“对话框 

 

采用默认设置,单击开始按钮开始优化,

执行后显示优化时间为0.469s,当前评价函数变为0.032967548

 

单击“退出”按钮,退出对话框

四、单透镜优化结果分析与改进设计 

步骤十:查看单透镜结构光路图与像差畸变图

 (1)查看3D视图

 

(2)查看像差图

 

从图中可以看出,优化后的透镜非常厚,已经成为了一个圆柱形,这对于实际加工来说是不合理的,说明我们在设置优化目标时没有对透镜的厚度进行限制,导致镜片厚度不符合常理

下面来修正评价目标,将透镜厚度边界条件加入评价函数中。设置透镜最小中心和边缘厚度为2mm,最大中心厚度为10mm.

步骤十一:重新优化单透镜 

(1)展开“优化向导和操作数”参数设置面板,在“优化向导”标签——“厚度边界”参数组中勾选“玻璃”复选框

(2)在“最小”栏输入2,“最大”栏输入10,“边缘厚度”栏输入2,如下图所示,单击应用按钮 

 

 

生成的评价目标操作数

 

(3)执行“ 优化”选项卡——“自动优化”面板——“执行优化”命令,打开局部优化对话框

(4)采用默认设置,单击“开始”按钮进行优化。

步骤十二:重新优化后,查看单透镜结构光路图与像差畸变图

 

 

设计生成合理的透镜结构后,通过点列图(不是为什么电脑不显示点列图,只好以上面的文本形式代替)观察成像效果,三个视场的RMS光斑分别为15微米,54微米,95微米,从光斑逐渐变大的趋势来看,可以推理出像面位置应该处于第一个视场聚焦点,由于场曲存在,使第二、第三视场的光斑越来越大。

为了改善这种情况,通过分析该系统,在设置初始结构时,系统使用了一个边缘光线高度求解类型,该操作限制了像面位置只能在近轴焦平面处,极大的限制了光斑优化,需要改进

(1)单击面2中的“厚度”栏,将求解类型设置为变量

 

(2)继续执行与前面类似地优化过程,优化结果如下

 

 三个视场的RMS光斑分别为35微米,15微米,49微米。

通过判断该单透镜系统具有两种主导性像差:像散和场曲。这种情况下系统像质是否能够继续提高,需要根据占主导的像差来分析确定,如果要继续提高单透镜的成像光斑效果,需要减小系统的像散和场曲。

可以通过改变视场来改变外视场的像差,虽然系统设定的视场角度不能改变,但是可以通过改变光阑的位置来改变不同视场的光线与透镜的高度

步骤十三:通过改变视场来改变外视场的像差

(1)在面1前插入一个新的表面,并将其设置为新的光阑面

 

(2)再将该面的“厚度”栏设置为变量

 

上述操作将视场光阑移至镜片的外部,通过再次优化,不同视场在透镜上的高度被重新分配,从而可以校正轴外视场的像差

(3)继续执行优化操作

 

 

优化后三个视场的RMS光斑分别为16微米,14微米,24微米,比之前有明显改善

步骤十四:使用像模拟功能展示透镜成像效果

打开“图像模拟”命令,在窗口中设置“导入文件”,

 

 

显示图像如下图所示 

 

单透镜可优化的变量有限,很难实现更高的成像效果。单透镜设计到这里就介绍完了。 

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

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

相关文章

红黑树的插入

一.红黑树的特征 红黑树是二叉搜索树红黑树分为内部结点和外部结点,将空指针视为外部结点,其它结点视为内部结点根结点和外部结点都是黑色从根结点到外部结点的路径上不能有连续的红结点从根结点到外部结点的路径上黑结点的数目相同从根结点到外部结点的最长路径的长度不超过最…

Spring Framework远程代码执行漏洞 CVE-2022-22965 漏洞复现

Spring Framework远程代码执行漏洞 CVE-2022-22965 漏洞复现和相关利用工具 名称: Spring Framework 远程命令执行漏洞 描述: Spring core是Spring系列产品中用来负责发现、创建并处理bean之间的关系的一个工具包,是一个包含Spring框架基本的核心工具包&#xff0…

爬虫代理技术与构建本地代理池的实践

爬虫中代理的使用: 什么是代理 代理服务器 代理服务器的作用 就是用来转发请求和响应 在爬虫中为何需要使用代理? 隐藏真实IP地址:当进行爬取时,爬虫程序会发送大量的请求到目标网站。如果每个请求都使用相同的IP地址&#xff…

深入Python元编程:了解声明与初始化定制元类

更多资料获取 📚 个人网站:ipengtao.com 简介 在Python中,元编程是指在运行时创建或定制类的编程。元类是Python中最强大的元编程工具之一,允许您控制类的创建过程。元类是类的类,它控制类的实例化,允许您…

【软件测试学习】—软件测试模型(二)

【软件测试学习】—软件测试模型(二) 我 | 在这里 👩‍🦰👩‍🦰 读书 | 长沙 ⭐计算机科学与技术 ⭐ 本科 【2024届】 🎃🎃 爱好 | 旅游、跑步、网易云、美食、摄影 🎖️…

修复 MyBatis 中空值引起的 SQL 语法错误

修复 MyBatis 中空值引起的 SQL 语法错误 背景 最近在查看别人的项目代码时&#xff0c;遇到了一个问题&#xff1a;数据库中的数据为空。在调试过程中&#xff0c;发现问题出现在调用 MyBatis 中的方法&#xff1a;listByIds(Collection<? extends Serializable> idL…

QML Column Row 属性 pyside6

在 QML 中&#xff0c;Column 和 Row 是常用的布局元素&#xff0c;用于水平&#xff08;Row&#xff09;和垂直&#xff08;Column&#xff09;排列它们的子元素。以下是这两个元素的主要属性列表&#xff1a; Column 属性 spacing: 子元素之间的垂直间隔。width 和 height:…

F22服装管理软件系统 前台任意文件上传漏洞复现

0x01 产品简介 F22服装管理软件系统是广州锦铭泰软件科技有限公司一款专为服装行业开发的综合性管理软件。该产品旨在帮助服装企业实现全面、高效的管理&#xff0c;提升生产效率和经营效益。 0x02 漏洞概述 F22服装管理软件系统UploadHandler.ashx接口处存在任意文件上传漏洞…

Web实现悬浮球-可点击拖拽禁止区域

这次要实现的是这种效果&#xff0c;能够在页面上推拽和点击的&#xff0c;拖拽的话&#xff0c;就跟随鼠标移动&#xff0c;点击的话&#xff0c;就触发新的行为&#xff0c;当然也有指定某些区域不能拖拽&#xff0c;接下来就一起来看看有什么难点吧~ 需要监听的鼠标事件 既…

Android进阶之路 - TextView文本渐变

那天做需求的时候&#xff0c;遇到一个小功能&#xff0c;建立在前人栽树&#xff0c;后人乘凉的情况下&#xff0c;仅用片刻就写完了&#xff1b;说来惭愧&#xff0c;我以前并未写过文本渐变的需求&#xff0c;脑中也仅有一个shape渐变带来的大概思路&#xff0c;回头来看想着…

用代码评论代替代码注释

在一个软件项目中&#xff0c;某些逻辑部分可能非常复杂&#xff0c;容易让人困惑。为了确保其他开发人员能够理解这些代码&#xff0c;同时也为了自己回顾时能够快速上手&#xff0c;我们通常会编写相关文档或添加大量注释来对这些复杂的逻辑进行解释。这样做的好处是能够提高…

Go语言基础:包、函数、语句和注释解析

一个 Go 文件包含以下几个部分&#xff1a; 包声明导入包函数语句和表达式 看下面的代码&#xff0c;更好地理解它&#xff1a; 例子 package mainimport "fmt"func main() { fmt.Println("Hello World!") }例子解释 第 1 行&#xff1a; 在 Go 中&am…

go学习之文件操作与命令行参数

文章目录 一、文件操作1.基本介绍2.常用文件操作函数和方法3.关于文件操作应用实例4.写文件操作应用实例&#xff08;创建文件并写入文件&#xff09;1&#xff09;基本介绍2&#xff09;基本应用实例-方式一 5.判断文件是否存在6.统计英文、数字、空格和其他字符数量 二、命令…

Kubernetes

Kubernetes Docker的安装Docker安装&#xff1a;安装docker依赖环境配置国内docker-ce的yum源&#xff08;这里采用的是阿里云&#xff09;安装docker。插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自…

Sui主网升级至V1.14.2版本

Sui主网现已升级至V1.14.2版本&#xff0c;同时Sui协议升级至31版本。其他升级要点如下所示&#xff1a; #14875: [修复] 为所有权限设置共识度量值。 #14811: [Narwhal] 改进每个权限的共识信息度量的可用性。 完整变更日志&#xff1a;Release mainnet-v1.14.2 MystenL…

考虑极端天气线路脆弱性的配电网分布式电源配置优化模型_IEEE33节点(附带Matlab代码)

随着新能源技术及智能电网的发展&#xff0c;越来越多的分布式电源加入配电网中&#xff0c;不仅改变了配电网结构及供电方式&#xff0c;而且提升了配电网的供电质量。但是在全球气候变暖的背景下&#xff0c;极端天气发生的频率也越来越高&#xff0c;一旦发生必将对配电网系…

HashMap的死循环及数据覆盖问题

目录 一&#xff0c;HashMap 线程不安全的原因 二&#xff0c;HashMap 死循环问题 死循环发生的条件 死循环的具体过程 死循环执行步骤1 死循环执行步骤2 死循环执行步骤3 三&#xff0c;HashMap 数据覆盖问题 数据覆盖执行流程1 数据覆盖执行流程2 数据覆盖执行流…

8、CobaltStrike使用

文章目录 一、实验拓扑图二、实验步骤 一、实验拓扑图 二、实验步骤 1、登录"Kali"操作机&#xff0c;在终端中进入CS文件夹&#xff0c;然后使用命令chmod x teamserver给teamserver文件赋予执行权限&#xff0c;然后查看当前主机的本地IP地址。 2、启动服务端服务…

SAS9.2软件“OLE:对象的类没有在注册数据库中注册“问题的解决. 2023-11-25

操作系统测试平台: Win7 sp1 32bit (6.1.7601.26321 (Win7 RTM)) ; Win 11 64bit(具体版本不详) 其它win平台理论上也可以,可自行测试 1.安装依赖库(必要步骤) 下载地址: Microsoft Visual C 2005 Redistributable 下载 Microsoft Visual C 2008 Redistributable 官方vc库总…

信号类型(通信)——最小频移键控(MSK)

系列文章目录 《信号类型&#xff08;通信&#xff09;——仿真》 《信号类型&#xff08;通信&#xff09;——QAM调制信号》 《信号类型&#xff08;通信&#xff09;——QPSK、OQPSK、IJF_OQPSK调制信号》 目录 前言 一、MSK信号特点 1.1、最小频移 1.2、相位连续 二…