Zemax中Spot Diagram和MTF_zemax衍射圈入能量_HECHUANWANG的博客-程序员秘密

技术标签: Zemax学习  

Spot Diagram:       

       点列图的原理是显示光学系统在IMA面上的成像。换句话说,它就是通过计算,把一系列物方的点通过光学系统以后,成像在IMA面上的情况给实际绘制出来。

       为了表现方便,它可以选择一系列预定的模板形式,具体来说,比如一个在轴上的点,从无限远成像到IMA面上,ZEMAX就模拟在无限远有若干个发光点(光束),这些点平行射入入瞳,然后经过光学系统,最后成像在IMA面上。显然如果光学系统是完美的光学系统,那么这些点成像点为一个理想的点。但对于实际的光学系统,就会成像为一个弥散斑。那么这个弥散斑在IMA面上的像,就是Spot Diagram。同理,在非轴上点,也可以参照主光线的角度和位置,形成一系列的发光点,经过入瞳最后成像在IMA面上最后也形成一个弥散斑。
       如何通过Spot Diagram观察出光学设计的质量,简单说,这个弥散斑越小越好。如果你发现弥散斑足够小,满足你对光学系统最小弥散斑的要求(spot diagram的单位是微米)那么你的光学系统就完全可以进行实际的加工了。换句话说,就是你的光学系统已经可以设计完成了。
        如何才知道你的光学系统足够的好?这里有个参考,就是airy斑的参考。airy斑是物理光学的一个概念。它指出在形成的弥散斑直径在2.44*F*(主波长)以内的时候,该光学系统可以认为是理想(完美)光学系统。这样当你在Spot Diagram图中,在setting菜单中,设置显示airy斑。然后发现你的点列图完全都在airy斑环之内,你就可以认为你的光学系统设计已经完美。但实际上,很少有光学系统,可以满足符合airy斑直径的要求。那么说明你的光学系统有像差。
       究竟是哪种像差在起主要作用?主要的像差有,球差,慧差,像散,场曲,畸变。这些像差在spotdiagram上的表现各不相同。但由于一个光学系统通常是各种像差的混合。因此需要你对spotdiagram的形状进行判断。确认是主要是哪种像差,然后通过修改玻璃,或者曲率以及光阑的位置等加以调整。
       不同的像差有不同的像表现,同时随着像差的大小不同,这个像,也叫斑点的大小也不一样,显然像差越小的光学系统,其斑点也越小。衡量这个斑点大小有个定义,就是RMS半径定义,另外还有一个就是几何半径的定义。RMS是均方根半径,可以定量的反映这个系统实际的斑点大小。

       在Spot Diagram中还有几个参数可以参考, RMS RADIUS,均平方根半径是一个重要的半径参数,它是弥散斑各个点坐标,参考中心点,进行的坐标平方和后,除以点数量,然后开方的值,这个值的半径可以反映一个典型的弥散斑的大小,以定量的反映这个系统实际的斑点大小。但它不是全部弥散斑的直径,全部弥散斑的直径是GEO RADIUS。RMS RADIUS是重要的反映弥散质量的参数,它和在优化中和MF的值极大的吻合。(就是说MF的某个视场最后值就是RMS的半径) 

        RMS Radius与GEO Radius,前者表示点列图中大多数点的分布范围,即集中的弥散半径,后者表示点列图弥散的实际几何半径。

        需要说明的是:不同的射入入瞳的光线排列会对最后的RMS半径等有影响,但并不大。
关键影响RMS半径的是,每个airy斑的中心点参考点的选择:一种选择的方式是根据主光线的位置做为斑点中心光线的中点。另外一种方式是采用斑点的实际重心做为斑点中点。

        对于一个轴对称系统,在轴上,显然主光线中心和斑点重心是一点没有差别,但在轴外点成像。主光线的中心计算出来的RMS显然要比斑点重心计算的RMS半径要大。其实,通常采用的是斑点重心的参考中点方式。

Spot Diagram与RayFan的区别:

        Spot Diagram的形成,我们也可以在轴外子午面上选择一点做为发光点。这个点同样将光线射向系统的入瞳和光阑位置。和Ray Fan不同的就是,这次我们考虑的更全面些。这一束光线不是Ray Fan的一个子午面方式,而是一个面阵的方式发散。而是全面的射入入瞳。为了计算和比较,有几种布置光线的方式可以选择,比如随机点方式,矩形方式,圆形方式,还有三角方式等等。目的是能尽量保证平衡射入这个系统。

 

衍射极限:

当我们说已达衍射极限时,这个词的意思是,光学系统的表现被绕射这个基本物理效应所限制,而不是因为设计或是生产等原因造成的。判断系统是否已达绕射极限的常用方法是计算或量测光程差(Optical Path Difference,OPD) 。如果OPD的峰谷差值(Peak to Valley) 差异小于四分之一个波长时,我们说这个系统已达绕射极限。除了上述方法外,有许多其他的方式也可以用来评价系统是否已达绕射极限,例如Strehl ratio、RMS OPD、标准差、最大斜率误差等等。这些评价方式各有不同之处,系统在其中一个评价标准下已达绕射极限,在另一个评价标准下却还没达到,这种情况也是有可能的。在一些Zemax OpticStudio的绘图功能中,例如MTF、绕射圈入能量(Diffraction Encircled Energy) ,绕射极限的显示是可选的选项。这个资料通常是藉由从视野中的某个参考点追迹一系列光线并计算而来,追迹时会考虑到光瞳切趾(Pupil Apodization)、渐晕、F/#、孔径以及穿透率等设定,但光程差的部分会被强制设定为零,忽略真正的(有像差的) 光路径。如果系统中的视场设定在x与y上都设为0 ,则参考的视场点会以这个轴上的视场点为主。如果没有(0,0) 这样的视场点存在的话,系统将选择视场1的座标做为参考点。

MTF:

        低频部分反映物体轮廓传递情形;中频部分反映光学物体层次传递情况;高频部分反映物体细节传递情况。

什么是MTF  
调制传递函数(Modulation Transfer Function,简称MTF)是描述光学系统性能最重要的一种方式。MTF描述了影像在不同空间频率下的对比度,是一种利用傅立叶理论来描述成像光学系统的方式。
空间频率的定义是在成像焦平面上,单位是cycles/mm,如果系统是无焦系统,则定义为cycles/milliradian,milliradian是微弧度,也可以用其他角度单位描述。“Cycles”才是描述正弦震幅的MTF反馈最精确的用语。通常我们会听到人们用“line pair”来描述,但严格来说,line pair (线条对)指的是一对非黑即白的线条排列,而不是正弦的变化。不管是正弦变化,还是黑白线条,OpticStudio都可以计算。
 Click To Enlarge

上面的Geometric Bitmap Image Analysis中,可以在三个男孩的区块上,看到“好”的影像品质(注1):但要多好才算是好?我们可以使用不同条纹图的对比度来当作量化的依据。MTF描述了不同空间频率时,从物面成像到像面的光学传递函数(Optical Transfer Function)的模数(Modulation),MTF是一个用来描述光学系统性能常用的方式,并且我们也经常把MTF设为优化的目标或是公差分析的对象。
 Click To Enlarge

上图是这个镜头的MTF曲线图,显示了不同空间频率下的对比度,以及这个镜头能支援的最大空间频率。在这个范例中,我们把空间频率显示最大限制到100 cycles/mm。途中还可以看到一条黑线,代表衍射极限时的最大效能,这条线是假设镜头完全没有像差时,以该镜头的F/#来说,所能达到的最好对比度。

注:注意,很明显的影像品质会受到萤幕解析度以及影像压缩的影响。这个模拟中的原始影像是相片等级的。请看这篇知识库文章以取得更多细节:How to Produce Photo-Realistic Output Images

MTF用途:

(1)确定不同的对比度目标。经光学系统成像后,光学系统截至空间频率就是该系统的分辨率极限,用不同的接收器截接收时能达到的对比度阈值所对应的分辨率为实际分辨率。例如,目视系统MTF≥0.05(也有说0.03)。

(2)判断不同设计方案的优势。镜头C是分辨率和对比度都高,照片细腻明亮(高端镜头)。镜头A和镜头B一个侧重于对比度,另一个侧重分辨率,要看具体的选择。不过对比度好的镜头更加讨喜。

(3)用来指导进一步校正像差的方向。主要是不同视场的子午和弧矢像差不同。

(4)特征频率传递函数值和MTF曲线积分制均可评价像质。

 

根据指标设计一个光学系统,如何判断指标是否合理?是否会出现提出的MTF值大于衍射极限的极端情况?根据下图进行大概判断(他人图)。



如何优化MTF
当RMS波前差(RMS Wavefront)趋近于0的时候,MTF也会趋近于他的衍射极限效能。因此预设的RMS Wavefront评价函数事实上非常适合拿来初步优化,以到达最佳的空间频率响应。然后需要时,你可以再使用特定的MTF优化操作数,当作最终的系统微调。
MTF计算会比波前计算还要久很多,因此我们强烈建议一开始先用波前差来优化。此外当系统的性能还远远不到堪用程度时,直接优化MTF往往会在优化过程中停顿。举例来说,如果我们把前一章节提到的成像透镜,设定让他稍微失焦,你可以看到MTF会滑落得非常快,马上到达0,之后又再次爬升。
 Click To Enlarge

这会让解析度的变化非常不可预期,导致局域优化器可能会停滞不动,因为MTF必须先变差,然后才会变好。虽然我们也可以使用Hammer或是Global Search来处理这个问题,但最好的方法仍然是先用波前差优化,直到所有需要的空间频率都至少落在MTF第一次降到最低点之前。至少要到这个阶段,我们才建议你开始针对特定MTF设定优化目标。


衍射MTF 优化
在分析时最常用的MTF演算法是基于Fraunhofer绕射理论的。计算的方法是追迹一批在光瞳上网格分布的光线,然后寄用快速傅立叶转换(fast Fourier transform)换算(因而称为FFT MTF)。产生的MTF是不同空间频率的正弦强度分布通过系统后的模数(modulation)。如果需要,也可以显示出实数、虚数、相位或是方波强度分布(黑白相间线条)的结果。
而当在优化时,通常我们仅需要针对特定的空间频率优化,而不需要完整计算所有空间频率的MTF。因此,使用MTF*这种一次只能计算一个特定空间频率操作数时(请参阅Help取得更多资料),我们还提供叫做GRID的参数,让使用者可以切换要使用上述计算曲线图使用的网格取样方法还是另一种更快速、较少取样的方法,预设系统会采用第二种方法,并且在几乎所有优化场合下,我们也都建议使用此方法。
类似于Gaussian Quadrature,这个稀疏取样的计算方法会收敛的非常、非常快,并且可以用比网格方法少很多的光线数就精确到小数点以下好几位。
以下的表格显示了两种方法的收敛程度、收敛所需时间。计算的基础是一个双高斯系统,我们测试了在OpticStudio中计算轴上50 lp/mm的多波长MTF下,几个不同的取样数时的各种数据。
http://forum.zemax.com/Uploads/Images/91511074-0bbf-4975-af97-4004.gif

下面是相同的资料,但是改用看边缘的视场:
http://forum.zemax.com/Uploads/Images/52879c32-37db-4e5e-9b64-8832.gif

请注意,一般来说,我们会说对于优化或是公差分析来说,1%的收敛就足够了。使用仪器量测MTF时,通常在重复性测试中,无法达到0.1%以下的一致性。我们不需要在优化时使用终极的精度;通常三个有效位置便已足够。不过,两种演算法事实上都可以在取样足够的前提下,收敛到所需的精度,而第二种快速演算法通常可以快上好几个数量,并且还更加准确许多。
网格取样演算法只有在一个已知的情况下会收敛得比较快:当系统像差非常大,而结果的MTF非常低的时候,例如低于5%。请注意在这种系统中,通常我们不会用MTF来描述他的性能,并且更不会拿来当作优化目标或是公差分析标准。OpticStudio会自动的侦测,当遇到这种系统时,自动切换到使用网格取样方法。另外也请注意,在这种情况下,几何MTF (Geometric MTF)会是一个更好的选择。


几何MTF (Geometric MTF)
想像我们有一个35-mm的单眼相机,其光圈最大是f/1.8。这个镜头的像差在光圈全开时非常糟糕。当光圈渐渐缩小时,像差会降低,而影像品质会提升。但影像的提升不会持续下去,小光圈的绕射效应比较强,而阻止你得到更好的成像品质(透过缩小光圈的方式)。
当系统中的像差达到好几个波长的时候,我们推荐使用者改用Geometric MTF工具,以及GMT*优化操作数。几何MTF的计算方法主要是使用Gaussian Quadrature方法得到几何的光斑资料,然后进行傅立叶转换。
使用几何MTF的主要优点是相对于绕射方法快非常多。几何MTF在系统像差非常大的时候非常准确,而绕射MTF此时会需要非常多的取样来收敛。在这种情况下,几何方法通常可以快上100倍或更多。
几何MTF甚至可以考虑光学表面散射造成的影响,散射会造成背景变亮,进而降低MTF。
GMTF在使用Global Search时也非常有用,使用者可以有效率的搜寻所有参数空间,发现好的设计的所在区域。
当绕射效应很明显、很重要的时候,则永远都应该使用绕射计算。


Huygens MTF
基于FFT的方法来计算点扩散函数(PSF)以及MTF是广为人知的方法,其利用到Fraunhofer绕射理论,并有以下几个假设:
*系统的F/#足够大,而使绕射理论可以使用
* PSF大部分能量所占据的区域大小相对于系统出瞳到像面的距离足够小。
*出瞳相对于入瞳没有明显的畸变。这代表在入瞳上均匀的分布的光线到达出瞳时,也必须是合理的均匀。
*取样数足够高而能够准确计算PSF。

大部分(但不是全部)的系统都符合这些假设,而能够使用Fraunhofer理论假释,并用FFT方法计算MTF。
Huygens MTF则不一样,他不使用FFT方法。其唯一的假设是F/#要足够大,而让纯量绕射理论能够使用。当然取样也需要足够高而能准确计算PSF。
你可以阅读此知识库文章了解更多Huygens计算方法:What is a Point Spread Function
理论上所有的成像系统都应该可以符合Huygens PSF计算所需的假设Huygens MTF一般来说会比FFT MTF还慢,但在FFT MTF假设失效的系统中更加准确。
有一种状况我们只能用Huygens计算:如果主光线无法追迹经过系统时,我们就无法计算参考球面波前。参考球面对于许多波前计算都很重要。在这种情况下,我们可以改用Huygens PSF以及MTF计算。其中一个例子就是多镜面望远镜,这种系统中,主光线是无法到达像面的。
http://forum.zemax.com/Uploads/Images/13637df0-5a16-42a9-a02e-050c.gif

由于主光线无法追迹到达像面,OPD也就无法计算,因而任何需要OPD资料的计算也都无法进行:
http://forum.zemax.com/Uploads/Images/e2deb13c-f5a7-4156-93bf-866b.gif

此时Huygens PSF以及MTF计算能完美的运作,因为他们不需要指定任何光线做为参考:
http://forum.zemax.com/Uploads/Images/d671b158-87d1-4e7c-bf7b-c6f1.gif

http://forum.zemax.com/Uploads/Images/05a0f86d-ce52-4124-8f0f-e583.gif

此档案可以在OpticStudio的范例资料夹中找到,位置是\Samples\Non-sequential\Miscellaneous\Multiple mirror telescope. ZMX 

最后,Huygens还有一个优点,那就是不同组态(configuration)的MTF可以被一起考虑并计算。这对于多镜面望远镜设计也非常有用,但特别是对于所谓的Very Long Baseline系统非常好用,这种系统的主镜会被分拆开,相隔非常长的一段距离。在这种状况下,我们无法使用常见的入瞳来计算,因为击中主镜的光线太少而没有效率。在这种特殊状况下,Huygens会变成唯一可用的方法。
要优化Huygens MTF的话,请使用MTH*操作数。


总结
调制传递函数(MTF)是光学系统设计中非常重要的参数。OpticStudio提供了许多种不同的演算法来计算。
*基于Frauhofer理论的FFT方法是最常见的做法。OpticStudio会计算该镜头能支援的所有空间频率下的MTF响应,以MTF对频率的方式来表示。当要优化或是公差分析MTF时,我们只需要针对特定几个空间频率计算MTF,因此会采用较快速的且精度较高的计算方式。如果需要,我们也提供参数可以切换使用网格取样方法计算MTF。
*对于有巨大像差的传统光学系统,几何MTF会以很快的速度计算MTF。他会是一个很好的“估算工具”,优化时速度会跟RMS Spot Radius几乎一样快。
*对于不符合Fraunhofer近似的系统,或是光线无法被追迹的系统,我们可以改用Huygens计算。它提供了精确的MTF计算。唯一的缺点是Huygens计算速度明显比较慢。

无论使用哪种方法,请注意MTF会随着RMS波前差接近零而逼近绕极限。因此我们强烈推荐使用RMS波前差来初步优化。同时,请不要在所有想要的空间频率都落在第一个MTF低点之前就开始优化MTF。

优化选择:

        一般设计中常选择Wavefront或Spot Radius。通常使用的处理规则是如果系统接近衍射极限(假定PTV波前误差小于2个波长),那么就使用Wavefront,否则使用Spot Radius。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/HECHUANWANG/article/details/78774570

智能推荐

如何解决过拟合问题?_过拟合解决办法_打工人小飞的博客-程序员秘密

如何降低过拟合?这是深度学习中非常重要的问题。关于过拟合的相关概念和过拟合带来的危害,可参考笔者之前的博客:过拟合与欠拟合简要总结。如何解决过拟合?1. 获取和使用更多的数据集对于解决过拟合的办法就是给与足够多的数据集,让模型在更可能多的数据上进行“观察”和拟合,从而不断修正自己。然而事实上,收集无限多的数据集几乎是不可能的,因此一个常用的办法就是调整已有的数据,添加大量的“噪音”,或者对图像进行锐

python输入一行字符_python 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。..._weixin_39827589的博客-程序员秘密

原博文2018-06-25 19:46 −一、参考解法: s =input('请输入字符串:') dic={'letter':0,'integer':0,'space':0,'other':0} for i in s: if i >'a' and i'A' and i

【渗透测试基础-4】资产收集之nmap扫描_nmap资产发现_像风一样9的博客-程序员秘密

目录1 资产收集简介2 nmap使用2.1 nmap命令字的帮助手册2.2 无参数:nmap IP2.3 主机发现:-sP/sn2.4 端口扫描:-p2.5 TCP全连接扫描:-sT2.6 SYN半连接扫描:-sS2.7 隐蔽扫描2.8 显示服务器详细版本:-sV2.9 显示操作系统类型:-O2.10 保存文件2.11 全面扫描: -A2.12 时序选项:-T3 nmap 扫描重要常用参数归纳3.1 重要常用参数3.2 常用命令及参数☆☆☆☆☆4 收集常用端口信息4.1

ubuntu终端颜色配置_飞翔的哈士奇的博客-程序员秘密

博客简介本篇博客介绍ubuntu终端颜色配置,效果图如下:编辑终端配置文件,添加颜色信息终端运行指令:gedit ~/.bashrc在文件最后一行插入PS1='${debian_chroot:+($debian_chroot)}\[\033[01;35;01m\]\u\[\033[00;31;01m\]@\[\033[01;36;01m\]\h\[\033[00;31;01m\]:...

pip手动更新_pip 手动升级_萌兔biubiu的博客-程序员秘密

这里写自定义目录标题pip手动更新pip手动更新今天我的电脑pip不能自动更新了,急得不行,搜索了半天找到了手工更新pip的方法,mark一下下载pip进入https://pypi.python.org/pypi/pip3.下载后解压缩4.进入解压后的文件夹,按住shift,右键点击,打开cmd 或者 power shell5.输入python setup.py install...

形态学图像处理:膨胀与腐蚀_小龙在山东的博客-程序员秘密

形态学(morphology)一词通常表示生物学的一个分支,该分支主要研究动植物的形态和结构。而我们图像处理中指的形态学,往往表示的是数学形态学。下面一起来了解数学形态学的概念。数学形态学(Mathematical morphology) 是一门建立在格论和拓扑学基础之上的图像分析学科,是数学形态学图像处理的基本理论。其基本的运算包括:二值腐蚀和膨胀、二值开闭运算、骨架抽取、极限腐蚀、击中击不中...

随便推点

hyperledger fabric1.4.4 多机器部署教程_fabric 1.4.4 多机部署_多多-江北残刀的博客-程序员秘密

hyperledger-fabric 的官方文档里没有针对多节点的配置,只给出了单机网络的部署方法。不知道是不是觉得程序员弄懂了单机天然就会部署多机器?一直想着写个教程,拖到这会儿,发现实施起来还挺费劲。本文以官方文档https://hyperledger-fabric.readthedocs.io/en/release-1.4/build_network.html 为参考,尝试将其中介绍的fa...

‘org.springframework.web.servlet.DispatcherServlet‘ is not assignable to ‘javax.servlet.Servlet,jaka_肆虐de悲伤丶的博客-程序员秘密

DispatcherServlet爆红如下导入servlet依赖后正常 <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> </dependency>...

CSS---z-index_css z-index_杨旭华 的博客-程序员秘密

z-indexz-index表示谁压着谁,数值大的会压盖住数值小的只有定位的元素才有z-index值,只有设置了固定定位、相对定位、绝对定位了的原色它们才会拥有z-indexz-index的值是没有单位的 值是一个正整数 默认的z-index的值是0如果多个定位元素没有设置z-index属性 或者z-index值设置一样,那么写在HTML后面的定位元素就会压盖住前面的定位元素<...

数字图像处理:第十七章 纹理分析_数字图像处理图像出现很多颗粒状_GarfieldEr007的博客-程序员秘密

第十七章 纹理分析目录1.    引言2.    纹理的统计特征3.    基于纹理的分割作业1. 引言     纹理是对图象的象素灰度级在空间上的分布模式的描述,反映物品的质地,如粗糙度、光滑性、颗粒度、随机性和规范性等。当图象中大量出现同样的或差不多的基本图象元素(模式)时,纹理分析是研究这类图象的最重要的手段之一,此外分形方法也十分重要[2

Linux(ubuntu)系统键盘指法打字练习软件汇总_放羊Wa的博客-程序员秘密

linux(ubuntu)系统键盘打字练习软件汇总以下打字练习软件安装完成后只要在终端中输入对应的软件名称即可启动对应的程序typespeed(屏幕中单词飘过,正确输入单词,单词消失)sudo apt install typespeedgtypist(课程较为全面)sudo apt install gtypistktouch(和金山打字较像,对速度和准确度要求较高)s...

关于ApplicationContextAware_吃螺丝粉的博客-程序员秘密

最近发现一个蛮好玩的类 ApplicationContextAware可以用来很方的获取spring容器中的类和验证之前关于spring的一些知识上代码package com.pobo.liang.ws.utils;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans....

推荐文章

热门文章

相关标签