zemax评价函数编辑器_ZEMAX软件使用入门

多图预警。

感觉写一个好的软件使用入门比单纯写像差理论要难,像差理论只要讲清楚原理和推导步骤就可以,软件使用则一直感觉没有把想说的都写出。先贴出来,抛砖引玉吧,希望可以有更好的提供给大家。

-----------------------------------------------------------------------------------------------------------------我是分割线

1.ZEMAX光学设计软件

ZEMAX光学设计软件是国内最流行的光学设计软件之一。由于众所周知的原因,国内相关从业者学生时代接触光学设计时候一般为ZEMAX,成为国内拥有最广大的用户群体光学设计软件。

目前ZEMAX软件已经更新到16以上的版本,软件界面等也有非常大的改变。最新的软件界面如下图所示,采用类似最新Office的界面风格,软件优化方法、光学面型、开发语言等都有大幅度的提升,增加了一个Part Designer,可以在里面进行光学结构件的设计,方便杂光、鬼像等分析。还有光源厂家的光源库,可以进行照明设计与分析。结合软件的序列和非序列功能,可以说,中小型镜头的设计与分析基本上可以满足。

软件目前有三个版本:标准版、专业版和旗舰版。不同版本的软件功能有差异,旗舰版是功能最全的版本。括号里面的网址是南京光研的软件介绍,有兴趣的可以看看各个版本的差异(

简单介绍如下:

三种不同的版本:Standard,Professional,Premium

ZEMAX有三种不同的版本:Standard、Professional和Premium。其中Standard是标准版,包含大部分工具,用于成像系统的序列光学系统的设计;Professional是专业版,包含非序列光学系统设计、偏振光线追迹、物理光学分析和Standard中所有的功能;Premium是旗舰版,包含所有的工具及资源,适用于更高级专业用户。包含ParkLink™、AssemblyLink™、光源模型库、高级光路分析以及快速追迹等等。

2软件界面介绍

本课程还是使用老版本ZEMAX软件,课程内容考虑再三,决定以实践应用为主,以镜头设计实例为牵引进行软件介绍。本文后面使用ZEMAX软件自带的1个例子进行软件使用介绍。

先介绍一下软件的界面。

ZEMAX软件的整体界面如下所示。

上图中软件界面的5个子界面分别如下

镜头数据编辑器

评价函数编辑器

多重结构编辑器

公差数据编辑器

面形扩展数据编辑器

软件主界面的功能划分大概如下图所示。界面最上面是软件Logo和镜头的文件夹信息。下面一栏是菜单栏,软件的所有功能都在菜单栏内。再往下是一行快捷操作菜单,一般也是最长使用的菜单项。

菜单栏的主要功能菜单有:

File:文件

Edit:编辑

System:系统

Analysis:分析

Tools:工具

Report:报告

Macros:宏

Extension:扩展

Window:窗口

Help:帮助

各个部件的主要内容如下:

Files:文件

文件菜单主要是镜头文件的新建、打开、保存/另存为等功能。同时包含序列/非序列混合模式和非序列模式的选择、插入镜头组件和喜好设置等功能。

最下面是最近打开的镜头文件,显示镜头文件数目可以设置。

注意每个菜单后面都有一个快捷操作间,可以在软件主界面快速使用相应功能,大大提供效率。

Editors:编辑

编辑菜单是软件各子编辑器的放置处,使用过程中需要的编辑器都在此菜单中,初学时寻找编辑器其可以在此寻找并打开编辑器界面。

System:系统

系统菜单主要涉及到光学镜头的系统参数设置,包括视场、波长、孔径光阑类型及值大小、系统的单位、玻璃库的选择、环境压力与温度等。如下图所示。

Analysis:分析

分析菜单提供的是在设计过程及设计完成后对光学系统的像质评价工具。涵盖几何光学到物理光学的评价方式。后面镜头像质评价功能主要在此菜单下的选项中。

Tools:工具

工具菜单中包含的主要功能是优化功能、公差分析功能、套样板以及其它功能,其中杂项菜单中有很多功能很实用,重点关注。

优化有三种方式:阻尼最小二乘法、全局优化算法、锤形优化算法三种。阻尼最小二乘法最常使用,全局算法和锤形优化算法属于宏观和微观上的全局优化算法,全局算法用于寻找更好的光学结构形式,锤形算法用于在局部搜索通过小步距寻找更佳性能光学系统。

Report:报告

提供对镜头文件参数的查看功能。

Macros:宏

软件的宏语言与宏指令运行等功能。

Extension:扩展

可以采用C/C++等编写基于ZEMAX的二次开发软件,也可以将开发的程序加入到ZEMAX中使用,便于扩展功能。

Window:窗口

显示当前打开的窗口。

Help:帮助

软件使用帮助功能。ZEMAX软件使用的优化操作数、多重结构操作数等,可以点击F1快速查看,方便优化中选择操作数,特别是初学阶段,非常有用。操作手册详细介绍了软件各个功能和相关参数说明,便于详细研究相关软件功能。

ZEMAX的软件界面基本上是这样。最新版本的界面虽然有非常大的改变,但是就如Word2003向Word2007的转变,熟悉基本操作后,仅有一个界面适应期,几乎没有学习成本。

3.第一个镜头设计-经典的单镜头设计实例(来源于ZEMAX user's knowledge base,侵删)

下面以练促学,尽量把设计过程详细的给出,从实践中快速进步。

3.1参数指标单透镜

焦距:100mm

F/#:4

半视场:5°

波长:632.8nm

物在无穷远

3.2简单分析入瞳口径计算

焦距为100mm,F/#为4,根据F/#定义,

F/#=焦距/光学入瞳直径,

计算得到光学系统的入瞳直径为25mm。系统为单波长要求

设计过程中需要考虑可加工性,包括中心厚度、边缘厚度等。

3.3光学参数的输入

3.3.1系统参数输入

系统参数的输入主要有三个方面:普通参数输入;

波长参数输入;

视场参数输入。

普通参数输入可以在System菜单中点击进入,也可以通过如下图所示的快捷键进入。

普通参数界面有10个输入界面,分别针对不同的情况输入。本例子中使用的是Aperture输入界面,如下图所示。孔径类型我们采用入瞳口径,值为25。设置结果如下,点击Apply确认输入,点击Ok按钮退出。

孔径界面中下方有两个选项,一个是物方远心的选择,一个是在更新中的解采用迭代方法。前一个在远心镜头设计中使用,后一个使用较少。

点击普通参数的单位界面,如下所示,确保透镜单位使用的是毫米单位。点击Apply确认输入,点击Ok按钮退出。

然后输入视场参数,视场参数输入界面如下图所示。从图中可以看出,视场设置有4中类型:角度、物高、近轴像高、实际像高。四种类型根据光学系统的实际情况灵活选择,后面涉及到具体镜头时再详细叙述。

本例子中物体位于无穷远,所以采用角度的视场类型。

半视场5度,归一化的0.7视场为3.5度,输入视场设置如下图所示。

波长设置界面如下所示。ZEMAX中波长的单位微米,和镜头单位没有关系。这一点大家要注意。

波长为632.8纳米,为0.6328微米。可以在波长界面的选择项点击下拉菜单,选择氦氖激光的波长,为我们所需要的0.6328微米。也可以直接在波长栏输入,后面有权重项,在多波长时可以对重要的波长增加权重。

波长设置完成后如下图所示。

3.3.2镜头数据输入

软件的镜头数据便捷界面如下图所示。表中除表头外,每一行代表的是一个表面。空白镜头有三个默认表面,一个是物面,一个是光阑面,一个是像面。这三个表面是成像光学系统里面必不可少的三个表面,是最简单的镜头模型。针孔模型就是最简单的镜头模型,大家可以和这三个表面做个对应参考。

本例子中,单透镜成像,一个透镜由两个表面,光阑面和透镜前表面重合,加上物面和像面,有4个表面,输入完成后如下图所示。

Comment栏是注释栏,可以在下面对应的表面进行表面的相关信息注释。本例子的注释如下,可以作为参考,实际可以根据需求灵活注释,方便理解就行。

材料选用肖特的N-Bk7玻璃,是最常用的玻璃。和此玻璃对应的成都光明玻璃为H-K9L。

解是预先编写好的一段程序,可以根据设定的某个参数值自动计算对应的值。本例中,我们系统的F/#为4,我们将透镜的后表面设置为“解”,类型选择F数,具体指为4,完成后如下图所示。

解设置完成后如下图所示。后表面的半径后边小表格内会出现F的字母标识。

3.3.3性能分析

软件的功能主要集中在Ansys。设计过程中,一般会通过Layout查看光学系统的结构显示图。最常看到的是MTF、Ray fans、畸变等参数必看。

本例子中我们关注Layout、Fans、Spot Diagrams参数。

未优化前,系统的像质如下图所示:

Layout

Analysis->Layout->2D Layout

快捷键:快捷键栏的“Lay”选项

SpotDiagran

Analysis->Spot Diagrams->Standard

快捷键:快捷键栏的“Spt”选项

OPD Fan

Analysis->Fans->Optical Path

快捷键:快捷键栏的“Opd”选项

Ray Fan

Analysis->Fans->Ray Aberration

快捷键:快捷键栏的“Ray”选项

根据前面章节的像差系统,该镜片有球差、慧差、离焦、场曲和像散等。

因为系统的后截距100是我们认为给定的,没有做调整,因此我们首先调整像面位置,查看是否有像质提升。这个需求可以通过快速对焦的方式实现。

菜单位置:Tools > Miscellaneous > Quick Focus

快捷键:"Shift+Ctrl+Q"

直接采用默认值,点击OK键,得到镜头数据变化如下图所示。

3.3.4优化

优化前需要设置变量,本例中选择3个变量。如下图所示。

优化变量设置好后,可以进行优化时评价函数的设置。一般情况下,我们先采用默认值,自动生成主要的优化约束条件,然后根据设计需求,增加相应参数的优化控制条件。ZEMAX采用的评价操作数的方式进行评价函数的设置,相关操作数的种类和作用可以参见软件使用手册,也可以在网上下载操作数的翻译的简化说明文档作为使用参考。下图给出的是评价函数编辑器的空白设置界面。

通过采用默认评价函数生成功能,可以得到不同评价类型的评价函数组。

按照上面设置生成的操作界面如下所示。由于是单透镜相对简单且透镜后面采用了F数解设置,所以可以不通过制定系统焦距操作数的焦距即可进行优化设计。

实际过程中,我们一般在操作数DMFS前面插入行,将设计的控制操作数写出,控制优化的走向和透镜形状等。

优化前后的评价函数值有明显减小,表明系统像质有减小。

优化后的相应光学系统性能参数如下图所示。可以从点列图中看到,相比于优化前,点列图的半径明显变小。Ray Fan图表明光学系统优化后达到了最佳焦面位置。

小结

首先给出老版ZEMAX软件的界面介绍。

通过一个单透镜的设计,初步接触了镜头系统参数的设置、镜头参数的设置、镜头像质评价、优化评价函数的设置、优化等等。

下一篇接着进行单片式风景物镜的设计。

参考资料:

1.Zemax manual 中文手册

2.Zemax user's knowledge base

作者:王庆丰

仅做学习交流使用,谢绝商业转载。

保留文章的所有权利。

转载请注明作者和出处。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

新系统如何测试软件,怎样检测电脑能否升级到最新的Windows11系统?官方检测工具帮你一招搞定!...

日前,微软正式发布了Windows11系统,新的Windows11操作系统不仅采用了全新的居中设计的开始键以及任务栏,同时还取消了Windows8引入的实时磁贴设计,取而代之的是最近文档、应用程序以及单独的搜索界面。再加上Windows11带来的全新的…

element upload预览_vue element upload实现图片本地预览

vue使用element实现本地预览,最主要的是将图片路径转换为base64,供大家参考,具体内容如下HTMLclass"avatar-uploader"action"123" //这个路径不重要,可以随便写:show-file-list"false":on-success&…

服务器个别目录下不能新建文件夹,域服务器不能创建sysvol和netlogon共享文件夹...

请教个问题。我这里有两台win2003sp2的DC,ip:172.16.1.2(PDC)和172.16.1.3(BDCexchange2003sp2);我发现我们的域服务器有问题,之前目录复制一直不成功,172.16.1.2(主域)的目录数据不能复制到172.16.1.3(bdc)&#xff0…

长安渝北工厂机器人_长安UNI-T智能工厂:机器人、激光焊, 一分钟一台车

生产线上没有人山人海、焊花四溅,误差被控制在0.2毫米、机器人边作业边实时检查……生产UNI-T的长安汽车重庆两江工厂今天(4月21日)下午在线展示其制造智能化、工厂数字化、工人年轻化。冲压车间工作人员介绍,UNI-T车身材质与宝马、奔驰一样,…

matlab 计算汉明距_matlab实现滑动平均滤波

什么是滑动均值滤波滑动平均滤波就是把连续取得的N个采样值看成一个队列,队列的长度固定为N,每次采样得到一个新数据放到队尾,并丢掉原来队首的一次数据,把队列中的N个数据进行平均运算,就可以获得新的滤波结果。具体的…

svg转css font,css – 如何将.svg文件转换为字体?

我在Stack Overflow上找到了两个相关的答案:不幸的是,这两者都不是真正的编码答案,这是我真正希望的(脚本转换的命令行实用程序,或者也许是某人可以编写这样的东西的API).尽管如此,通过结合这两个答案,我得到了我想要的东西.清理SVG(此步骤可能是可选的.)在自由软件…

个人家用nas_NAS不会用?NAS真的很难操作吗?可能是你没选对!

在这个大数据时代,越来越多的小伙伴们发现,无论手机容量如何扩充升级,还是无法满足越来越多资料的存储和备份。于是不少人有了想搭建NAS私有云的想法,配备了一台超大容量的NAS私有云,不仅可以即时备份电脑以及手机等设…

background的用法css,关于CSSbackground的使用方法

下面为大家带来一篇CSS background全部汇总。内容挺不错的,现在就分享给大家,也给大家做个参考。所有背景属性都不能继承。1. background-color所有元素都能设置背景颜色。background-color的默认值是transparent;也就是说,如果一…

我的世界服务器怎么修改合成表,《我的世界》1.8原版自定义合成表教程 怎么自定义合成表...

《我的世界》1.8原版自定义合成方法,很多玩家还不了解,今天给大家带来玩家“真名”分享的《我的世界》1.8原版自定义合成表教程,一起来看看吧。版本要求1.8优点:自定义合成表数量可以很大合成表可以很复杂没有名字、NBT不会合成自…

postgresql定义访问ip与用户_Postgresql-12.1最新版本在线安装以及配置使用全流程

Postgresql-12.1最新版本在线安装以及配置使用全流程 Postgresql-12.1简单介绍 PostgreSQL 12.1 已经发布,该版本在各方面都得到了加强,包括显著地提升查询性能,特别是对大数据集,总的空间利用率方面。 这个版本主要几大特点如下 …

construct2 ajax,Construct2/3

我们常在游戏中见到各种各样的剧情对话,电子游戏从最早的RPG类对话框演变至今,已经产生了无数种解决方案。但总的来说,常见的对话分为两类:最常见的galgame对话,可以看到较大的立绘图表现人物的表情动态(甚至动画)&…

tcp中的crc检验算法原理_在数据传输过程中的CRC 算法的简单说明

CRC校验(循环冗余校验)是数据通讯中最常采用的校验方式。在嵌入式软件开发中,经常要用到CRC 算法对各种数据进行校验。因此,掌握基本的CRC算法应是嵌入式程序员的基本技能。可是,我认识的嵌入式程序员中能真正掌握CRC算法的人却很少&#xff…

服务器修改用户组权限设置,如何:修改用户的权限

如何:修改用户的权限08/18/2008本文内容更新:2007 年 11 月随着时间的推移,若要对管理和项目需求进行更改,可能要求您更改 Team Foundation Server 服务器级或项目级用户的权限。更改单个用户的权限前,可将其移除&…

和氟西汀类似的备注_撒狗粮:可爱又霸气的给男朋友的微信备注

在微信里,你的男朋友是怎么被你备注的? 是“老公”,“儿子”,还是“死鬼”? 看看各地网友们的精彩备注吧!——————————————————————小垃圾大宝贝小闹闹周少爷chou狗软蛋蛋小可爱免费鸭…

服务器+返回500错误信息,HttpWebResponse远程服务器返回错误: (500) 内部服务器错误 的解决办法...

在工作中用C#开发了一个小程序,不断访问去请求一个网站的页面,在循环过程中有时会报“远程服务器返回错误: (500) 内部服务器错误”,有时不会,出现的时机也不太一样。开始以为是网站的问题,后来网站是可以正常访问的&a…

ogg 查看某条更新_明道云Web 6.1更新:日历视图上线

更新时间:2020年12月22日(周二)19点预计时长:2小时是否停服:否版本代号:Web 6.1(移动端需同步强制更新)主要更新功能日历视图日历视图让用户能从时间维度排列并管理业务数据&#xf…

服务器的可维护性,可靠性和可维护性

可靠性和可维护性可靠性一直是戴尔服务器产品线的一大亮点,R515也不例外。如内部结构所示,当你打开R515机箱的时候,你可以很明显地看到风扇的数量、分布的各个组件和双电源机箱。你也可以感觉出从中取出各个组件和拆装机箱都十分简便。配合低…

createdroptargets_使用DUILIB建立项目

使用DUILIB加载XML界面这篇主要目的就是教给大家怎样在自己的工程中加载XML界面,这是最基本的应用,对于界面控件响应啥的,我就不讲了,在大家懂了这个之后,我会给大家一个其它人写的博客,再看他的文章&#…

服务器缺少storportSYS文件,Windows操作系统蓝屏日志分析方法

或许你可以先检测下机器硬件健康状况,详情点击查看检测教程工具:X64 Debuggers And Tools-x64_en-us 下载地址:链接:http://pan.baidu.com/s/1cAO2ey 密码:9oms源文件:DMP蓝屏日志 ,文件目录查看…

vue 时区转换_vue---时间戳转换

在/assets下创建一个utils.jsfunction formatDate(date, fmt) {if (/(y)/.test(fmt)) {fmt fmt.replace(RegExp.$1, (date.getFullYear() ).substr(4 - RegExp.$1.length))}let o {M: date.getMonth() 1,d: date.getDate(),h: date.getHours(),m: date.getMinutes(),s: dat…