第二章:默认优化函数——RMS vs PTV、光斑半径 vs 波前差的选择逻辑
好,咱们直接进入正题。默认优化函数(Default Merit Function)是Zemax里最常用的工具,但很多人只是点一下「OK」就完事了。说实话,这样有点浪费。
我刚开始用Zemax那会儿,也是默认设置一到底。后来有个项目,客户要求成像质量极高,我怎么优化都差一口气。折腾了两天,最后发现——就是默认函数里的一个选项选错了。嗯,从那以后,我再也不敢小看这个对话框了。
2.1 默认优化函数到底在干什么?
说白了,默认优化函数就是Zemax帮你自动生成一组操作数,用来评价当前系统的成像质量。你不需要手动写几百行操作数,它一键生成。
但问题来了——它生成的评价标准是什么?
默认函数的核心有两个维度:
- 评价指标:RMS(均方根)还是 PTV(峰谷值)
- 评价对象:光斑半径(Spot Radius)还是波前差(Wavefront)
这两个维度组合起来,就是四种常见的优化模式。选错了,你的优化方向可能就偏了。
2.2 RMS vs PTV:你更关心「平均」还是「最差」?
先讲RMS和PTV的区别。这个其实不难理解。
- RMS:所有采样点的误差的均方根值。它反映的是整体水平。
- PTV:所有采样点中,最大值与最小值的差值。它反映的是最差的那个点。
我打个比方。你带一个班的学生考试,RMS就是全班平均分,PTV就是最高分和最低分的差距。你想想看,如果你只想让全班平均分高,那你可以不管那个考0分的学生。但如果你在乎的是「不能有人不及格」,那你就得盯着PTV。
在光学设计里,这个选择很关键。
我的经验是:
- 如果你做的是成像系统,比如相机镜头、显微镜物镜,我建议优先用RMS。因为成像质量看的是整体,一个点稍微差点没关系,整体好就行。
- 如果你做的是激光聚焦系统或者光纤耦合,那就要用PTV。因为激光能量集中,一个坏点就能毁掉整个光斑。
我曾经做过一个激光雷达的接收镜头。一开始用RMS优化,结果仿真效果不错,但实际测试时发现边缘视场有杂散光。后来改成PTV,把最差的那个视场压下去,问题就解决了。嗯,这就是教训。
2.3 光斑半径 vs 波前差:你优化的是「几何」还是「物理」?
接下来是第二个维度。光斑半径和波前差,这两个东西其实对应的是两种不同的光学理论。
- 光斑半径(Spot Radius):基于几何光学。它计算的是光线在像面上的弥散斑大小。说白了,就是看光线有没有聚焦好。
- 波前差(Wavefront):基于物理光学。它计算的是实际波前与理想波前的偏差。这个更接近真实的衍射极限。
我个人的习惯是这样的:
| 场景 | 推荐选择 | 原因 |
|---|---|---|
| 初始结构优化 | 光斑半径 | 速度快,容易收敛,适合粗调 |
| 精细优化 | 波前差 | 精度高,接近真实像质 |
| 大像差系统 | 光斑半径 | 波前差在大像差时可能不准确 |
| 接近衍射极限的系统 | 波前差 | 必须用波前差才能反映衍射效应 |
你想想看,如果你的系统像差很大,比如一个简单的单透镜,你用波前差去优化,它可能根本收敛不了。因为波前差算法在像差大的时候会失效。这时候老老实实用光斑半径,先把像差压下来,再切换成波前差做精调。
一个小技巧:
我一般会分两步走。第一步,用「光斑半径 + RMS」快速把结构拉到一个合理的范围。第二步,换成「波前差 + RMS」做精细优化。这样既快又准。
2.4 四种组合,怎么选?
好了,我们把两个维度组合起来,就是四种模式:
- RMS + 光斑半径:最常用,适合大多数成像系统。整体像差控制好,速度快。
- PTV + 光斑半径:适合对最差视场有要求的系统,比如激光聚焦。
- RMS + 波前差:适合高精度成像系统,接近衍射极限时用。
- PTV + 波前差:很少用。除非你对波前差的均匀性有极端要求,比如干涉仪系统。
我记得有一次做投影镜头,客户要求全视场MTF一致性很高。我一开始用RMS+光斑半径,优化出来平均MTF不错,但边缘视场掉得厉害。后来改成PTV+波前差,虽然优化时间长了点,但最终全视场MTF一致性非常好。嗯,有时候慢就是快。
2.5 实际操作:在Zemax里怎么设置?
这个其实很简单。打开默认优化函数对话框(快捷键 Ctrl+E 或者从菜单栏点),你会看到:
Optimization Function 栏选择 "RMS" 或 "PTV"
Data 栏选择 "Spot Radius" 或 "Wavefront"
然后点 OK,Zemax就会自动生成对应的操作数。你可以在编辑窗口里看到它生成了哪些操作数,比如:
- RMS + 光斑半径:会生成 TRAC、TRAC、TRAC... 然后计算 RMS 值
- RMS + 波前差:会生成 OPDX、OPDY 等操作数
我个人建议,生成之后不要直接跑优化。先看一眼生成的操作数,确认一下采样点数量是否合理。默认的采样点有时候不够,尤其是对于大孔径系统。
注意:
如果你用的是波前差优化,一定要确保系统已经接近衍射极限。否则波前差计算可能不准确,优化会跑偏。我曾经在这个坑里摔过一次,优化了半天,结果像质反而变差了。后来才发现是初始结构太差,波前差算法失效了。
2.6 避坑指南
最后,我总结几个常见的坑,都是我自己踩过的:
- 不要一直用默认设置:默认是RMS+光斑半径,但你的系统不一定适合。
- 不要忽视采样点:默认的采样点可能不够,尤其是对于非球面或自由曲面系统。我一般会手动增加到6-8个环。
- 不要混用评价标准:优化过程中不要频繁切换RMS和PTV,否则优化方向会乱。先定好一个,优化到收敛再切换。
- 波前差不是万能的:对于大像差系统,波前差优化效果很差。老老实实用光斑半径。
好了,这一章就讲到这里。下一章我们会讲如何手动构建优化函数,以及什么时候需要手动写操作数。到时候我会分享一些我自己的操作数模板,很实用。