news 2026/10/4 2:20:30

ZEMAX照相物镜设计实战:从双高斯初始结构到像质优化

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ZEMAX照相物镜设计实战:从双高斯初始结构到像质优化

照相物镜大概是ZEMAX学习路上最典型的"第一个完整设计"了。说它典型,是因为它不长不短、结构不复杂但优化项齐全:要照顾孔径、视场、色差、场曲,还要考虑实际成像质量能不能达到商用要求。很多初学者卡在同一个地方——拿到ZEMAX不知道第一笔该画在哪里,镜头数据编辑器敲完初始结构后又不知道该看什么指标,好不容易跑完优化,出来的点列图还是不忍直视。这篇文章就按我自己走过的路子来梳理一遍,从指标设定到结构选型,再到ZEMAX里一步步落地和优化,尽量把"为什么这样做"也讲清楚,而不是只丢给你一串操作步骤。

1. 动手之前:先把这个"照相物镜"的设计指标定明白

1.1 为什么初始指标决定成败

很多人打开ZEMAX就开始往镜头数据编辑器里敲面型,这是最大的误区。光学设计的起点永远不是软件,而是一份明确的设计指标。换句话说,你要先回答这几个问题:焦距多少?相对孔径多大?视场角要覆盖多少?工作波段是什么?像质要求怎么衡量?这几个数字直接决定了后续选择的初始结构类型、镜片数量、材料组合,甚至优化策略。

照相物镜和显微物镜、望远物镜最大的区别在于:它是一个大像面、中长焦距、兼顾大视场和适中孔径的系统。这意味它不可能靠单片透镜完成,必然需要多片组合来校正各种像差。常见的初始结构有库克三片式、天塞型、双高斯型等等,它们的适用场景各不相同,选错了后面再怎么优化都费劲。

我这次设计的目标定得很常规,适合入门练手,也方便你对照复现:

参数设计值说明
有效焦距EFFL50 mm标准定焦镜头的常用值
F/#2.8常规入门镜头孔径,像差校正难度适中
全视场角42°(半视场21°)对应全画幅对角线约38mm的像面
工作波段486nm ~ 656nm(F、d、C光)可见光常规范围,用FdC三色光做色差校正
像质目标RMS弥散斑半径优于10μm对应普通CMOS传感器像元尺寸
畸变小于2%照相物镜对畸变有比较直观的要求

这里提一句F/#=2.8的由来。相对孔径是焦距与入瞳直径的比值,F/#越小,进光量越大,但像差也越难校。对于初次上手,F2.8是个好选择——它比F4更能暴露问题,又比F1.4好控制得多,优化过程里你能明显感受到各类像差的权重变化。

1.2 初始结构:天塞还是双高斯?

确定了指标,接下来选初始结构。这一步很多新手不重视,认为随便找个结构让软件优化就行。实际经验是:初始结构决定了你优化的起点和终点。如果初始结构类型本身就承载不了你要求的视场和孔径,那评价函数再怎么压、锤子优化怎么跑都白搭,最终只会得到一个被扭曲得面目全非的畸形系统。

50mm/F2.8这个搭配,双高斯或者其变形结构是非常成熟的选择,几乎所有标准镜头都在这个基础上演化。天塞结构也可以考虑,但天塞的视场做大之后边缘像质掉得快,对42°全视场来说不够从容。我的实际选择是双高斯型初始结构。双高斯结构本身对称性高,垂轴像差(畸变、倍率色差)天然被压制,彗差、像散、场曲的校正也相对容易,非常适合中焦大光圈镜头。

初始结构的来源渠道很多:ZEMAX自带的样例库、光学设计手册里的专利数据、或者经典教科书附录里的镜头数据。我建议初学者别直接在网上随便抄一串数字,最好从ZEMAX自带的示例库找——至少那些数据的单位和格式都验证过,不容易出现面型曲率正负号搞反这种低级错误。

提示:ZEMAX/OpticStudio的安装目录下通常伴随有示例文件库,里面有很多经典镜头的zmx文件,包括各种双高斯和天塞结构。拿来当初始结构比手输数据靠谱得多,也方便对照检查自己的输入有没有问题。

2. ZEMAX里的第一稿:从镜头数据编辑器到第一个像质报告

2.1 把初始结构敲进软件

选定结构后,打开ZEMAX,第一步是在系统选项里设定孔径类型和数值孔径。我用的是"入瞳直径"(Entrance Pupil Diameter),因为F/#=2.8、焦距50mm,入瞳直径就是50/2.8≈17.86mm。也可以直接选"像方F/#"作为孔径类型,不过用入瞳直径在后续缩放焦距时更好理解。

接着设置视场。ZEMAX里视场有两种设置习惯:物方视场角或像高。对无限远成像的照相物镜,用角度视场更直接;如果是有限共轭的放大系统,用像高更合适。我这里选"角度",设定三个视场点就够了:0°(轴上)、15°(0.707视场)、21°(全视场)。三个视场点覆盖中心和边缘,兼顾了计算效率和像质评估的全面性,这是很多工程实践中的常用做法。

波长设定选F、d、C三色光,权重按1:1:1。主波长设为d光(587.6nm),因为大多数像质评价图默认以主波长为参考。这里有一个初学者容易忽略的点:在"系统选项-波长"里要勾上"F#C"然后点"可见光",ZEMAX会自动填入F、d、C这三个波长,不用手动一个个键。

镜头数据编辑器里,从光阑面开始输入透镜数据。双高斯通常是"光阑两侧对称分布两组双胶合或分离透镜"的布局,光阑面(STO)不一定是第一面,但前后表面曲率、厚度、玻璃材料需要逐一录入。玻璃材料选择上,双高斯常用的组合是重冕玻璃和重火石玻璃搭配,比如N-BK7和F2这类经典组合,一个低折射率低色散、一个高折射率高色散,配合起来校正色差和场曲。

输入完之后先别急着优化。按下Ctrl+L打开二维剖面图,检查光线能不能顺利通过每一片透镜,看看有没有光线被拦截、边缘是不是太厚、整个系统长度是不是合理。这一步相当于体检前的"望闻问切",花十分钟排查掉明显的低级错误,能避免后面优化跑到一半才崩溃。

2.2 用Seidel图先给设计"体检"

初始结构输进去之后,最该做的一件事不是优化,而是调出Seidel Diagram(赛德尔图,在Analyze-Aberrations-Seidel Diagram路径下)。赛德尔图把五种三级像差(球差、彗差、像散、场曲、畸变)和两种色差(轴向色差、垂轴色差)按表面分开罗列,能一眼看出当前每个面对各类像差的贡献量。

这步的价值在哪儿?打个比方,如果某一片透镜贡献了巨量的球差和轴向色差,你后续优化时就知道哪些面对这些像差敏感,调整半径或厚度时就有方向感。如果是光阑两侧的结构不对称导致垂轴色差大,你就有意识地让左右两侧的结构参数趋近对称。没有这种"看得见"的贡献分析,优化就是盲人摸象。

我的初始结构跑出来的赛德尔图典型特征是:球差为正且数值不小,场曲为正(因为正光焦度透镜组主导),畸变通常不大,轴向色差需要靠正负透镜组合来平衡。优化方向就很直观了——引入负球差贡献、压场曲、拉开色差校正的空间。

3. 像质评价:别急着优化,先学会看这几张图

很多初学者一上来就点Optimize,理由是"优化后会变好,看了也白看"。但实际操作中,不会读像质图就直接优化,大概率得到的是一个局部极小值里的"看起来很怪"的镜头。原因很简单,评价函数是数学上的综合值,不会告诉你"边缘视场彗差过大"这种具体问题。所以先学会看病,再开药。

3.1 点列图(Spot Diagram)

点列图(Analyze-Rays & Spots-Standard Spot Diagram)是最直观的像质评价图,它模拟的是点光源经过系统后,在像面上形成的弥散图形状。理想情况下,所有光线应该汇聚成一个理想像点;实际中因为像差存在,光线会散开成一个光斑。光斑的形状对应不同像差特征:

  • 圆形对称且中心密集、边缘稀疏——主要是球差
  • 光斑呈泪滴状、有拖尾——彗差
  • 子午方向长条状——子午像散;弧矢方向拉长——弧矢像散
  • 不同波长光斑在径向上错开——轴向色差;不同波长在横向错开——垂轴色差

对50mm/F2.8这个指标,我给自己定的目标是不论哪个视场,RMS半径都要控制在10μm以内。初始结构通常远超这个数,可能在30~50μm,但你通过点列图的形状能判断到底差在哪、优先优化谁。

3.2 MTF:照相物镜最重要的单张图

MTF(调制传递函数)是照相物镜设计绕不开的评价标准。简单说,它衡量的是镜头对不同空间频率(黑白条纹的疏密程度)的反差还原能力。空间频率的单位是lp/mm(线对每毫米),普通CMOS传感器奈奎斯特频率较典型值大约在70~100lp/mm之间,设计时要看这个频率下的MTF响应。

在ZEMAX里直接按Ctrl+M或者Analyze-MTF-Measured,就能看到MTF曲线。对于我的设计目标:零视场在50lp/mm时MTF尽量高于0.5,边缘视场(21°)在50lp/mm时至少也高于0.3。如果曲线整体偏低,就要检查是不是焦面位置没找对(点列图里的RMS半径是不是最小化在像面上)——常常有人把优化目标设定为"最小RMS半径"但忘了勾选"优化后更新像面位置",导致MTF看起来差得离谱,其实是离焦了。

3.3 场曲与畸变

场曲和畸变是"被点列图和MTF绑架时最容易忽略的两个家伙"。一个镜头即使MTF很高,如果场曲大,中心和边缘不可能同时清晰;如果畸变大,拍出来的直线就是弯的。这两个像差在Optimization里通常没有在默认评价函数里给高权重,所以你必须单独检查。

打开Analyze-Aberrations-Field Curvature/Distortion,看到两张图:左边是场曲(子午T和弧矢S两条曲线),右边是畸变百分比。对于50mm镜头,我一般把场曲控制在0.2mm以内,畸变最好小于2%。如果超了就回到评价函数编辑器里,手动加入DIMX(畸变最大值)等操作数限制住——这个后面细说。

3.4 波前图(Wavefront Map)

波前图展示的是系统出瞳处实际波前与理想球面波的偏差(RMS Wavefront Error)。它比点列图更"物理",因为点列图本质是几何光线的分布,而波前差直接决定衍射极限下的能量集中度。一个经验:当波前RMS误差小于λ/14(马雷夏尔判据)时,系统接近衍射极限,点列图基本没有改善空间。我通常用波前图来验证优化是否到了"再压几何像差也压不动"的阶段,如果波前已经很平了,就说明瓶颈不在像差校正,而在结构本身或衍射极限。

4. 优化阶段的几个关键动作:评价函数、变量与边界条件

4.1 默认评价函数怎么设置

ZEMAX的优化器核心是评价函数(Merit Function,MF),它把所有像差量化成一个综合数值,优化器的工作就是不断让这个数值变小。打开Optimization-Merit Function Editor,点"Default Merit Function",弹出的对话框就是设置优化目标的地方。

先说三个关键选项:

  • 像质评价基准:有RMS Spot Radius(几何点列图RMS半径)、RMS Wavefront(波前RMS)、MTF等。我初期用RMS Spot Radius,因为几何优化快且稳定;最后再用MTF优化微调。不推荐一上来就优化MTF——那会非常慢,而且容易陷入局部极值。
  • 光瞳采样:默认的3环6臂对初步优化够用,最终精优时建议增加到6环12臂,减少采样带来的误差。
  • 厚度边界:默认的边界条件通常在玻璃最小中心厚度0.1~0.5mm、最大中心厚度5~10mm。这直接关系到后续能不能加工,别等到设计完成发现镜片厚度才0.05mm,那就真是"图上好看,工厂流泪"了。

评价函数设定完,ZEMAX会自动生成一长串操作数(Merit Function Editor里的每一行都是一个操作数),包括各种像差、边界条件、基本系统参数。这里有一个新手经常踩的坑:默认操作数太多了,看得眼花缭乱,但优化完发现畸变爆表、后焦距太短导致装不下快门或CMOS——因为默认评价函数里并没有强制这些约束。解决办法就是手动加操作数,在评价函数末尾再加入DIMX限畸变、TTHI限总长、MNCA/MXCA限空气间隔等。

4.2 变量选择:不是越多越好

进入变量设置(Variable)时,请克制住"把所有参数都设为变量"的冲动。变量太多会让优化器在一个巨大参数空间里乱撞,极容易撞进局部极小值。合理的做法是:

  • 曲面半径全部设为变量
  • 空气间隔(尤其光阑两侧)设为变量,因为厚度变化对像差影响灵敏
  • 透镜中心厚度暂时固定,避免优化过程中出现负厚度或过厚导致结构畸形
  • 非球面在这阶段先别想,先用球面跑到底

跑第一轮局部优化(Local Optimization,在Optimize-Optimization里点Start)之后看点列图,通常会发现RMS半径从几十微米压到了十几微米,但边缘视场可能仍拖着长尾巴。这说明彗差或像散还残着,可以把对应视场的权重加大,或者把部分透镜的厚度也放开当变量。我经验是:空气间隔对边缘视场像差影响显著,透镜厚度对轴上球差影响更大,交替放开、分段优化,效果比一次性全放开好得多。

4.3 锤形优化:什么时候用、期望什么结果

局部优化卡在某个数值降不下去时,新手容易陷入"反复改权重"的循环。这时更该做的是换策略:运行锤形优化(Hammer Optimization,即全局优化的一种)。锤形优化的原理是在当前解附近做随机扰动再加局部优化,相当于"敲打"当前的结构参数,看能不能锤出另一条下山路径。

锤形优化前,建议把评价函数里的操作数精简一遍,只保留核心像差指标和必要的边界条件。因为锤子在随机搜索时,如果评价函数里塞满了无意义的约束,很大概率会锤出一个满足约束但像质平庸的结果。我的习惯:默认函数生成后,把那些权重为0或次要的自动生成操作数删掉,手动加上核心像差限制,剩下的交给锤子。

锤形优化跑一轮(通常花几分钟到十几分钟,取决于结构和采样)后,观察两个指标:一是MF值是否显著下降;二是系统是否发生"面目全非"的变化。如果优化后的结构变成了一片透镜曲率极大、厚度极薄、看起来很离谱的状态,说明初始结构选得有问题或约束没到位。如果结构基本合理、MF下降、像差曲线也有明显改善,那这轮锤形就是成功的。

注意:锤形优化不是万能钥匙。它适合在局部优化效果有限时做"跳出局部极小值"的尝试,但不建议反复锤——每锤一轮都会让结构更"怪",更偏离实际可加工状态。除非你目标做非球面或自由曲面整形,否则球面系统锤个一两轮就该收手了。

4.4 玻璃替换:最后一公里的细节

在ZEMAX里做玻璃替换(Glass Substitution)是设计流程后期的高性价比操作。方法是在玻璃列里选中某片透镜的玻璃,右键选择"Substitute",打开玻璃替换窗口,ZEMAX会从玻璃库里逐个尝试可选玻璃,并报告对应的MF变化。

但这里有个反直觉的经验:玻璃替换放到优化后期做,而不是前期。前期结构参数还没定型,换玻璃带来的MF改善会被后续优化淹没,看不出真正价值;后期结构基本定型,玻璃替换的增益才真实反映在像差曲线上。实际操作中,我一般做一轮玻璃替换后立即跑一轮局部优化,让曲率半径适应新玻璃,然后对比替换前后的MTF、色差表现再决定保不保留。

5. 公差与可制造性:设计收尾不是"图上好看"就完了

5.1 公差分析:别让设计死在加工环节

很多自学ZEMAX的人从来没打开过公差编辑器,直到把图纸送到加工厂才被告知某个空气间隔公差过严加工不了。光学设计的最后一公里永远是公差分析——它回答的是:当你镜片的曲率半径、厚度、偏心、倾斜在制造误差范围内波动时,像质还能不能保住?

ZEMAX里公差制表符(公差数据编辑器)可以设定各种公差类型:曲率半径公差、厚度公差、表面偏心、元件偏心、元件倾斜、折射率公差、阿贝数公差等等。初学者先别追求全参数建模,用最核心的几个就够了:

公差类型典型值说明
曲率半径(TFRC)2~5个光圈光圈数越小越难加工,常规加工能力在2~5
厚度(TTHI)±0.05mm常规机械加工可达
表面偏心(TSDX/Y)±0.01~0.02mm视装配方式和镜筒定心工艺而定
元件偏心(TEDX/Y)±0.02~0.05mm反映透镜在镜筒里的装配精度
表面倾斜(TSTX/Y)±0.01~0.02mm精密车削镜筒时较易控制
折射率(TIND)±0.001材料批次差异范围

公差分析执行后,结果会给一个像质指标(比如某个视场MTF在50%概率下的值)。我的经验标准是:全视场在50lp/mm时MTF仍能高于0.25,说明公差分配合理,可直接加工。如果某一片透镜的偏心公差要求严于装配能力,就该考虑是不是能把这部分公差放宽,用胶合或光阑靠前结构等方式降低敏感度。

5.2 从设计到实物的几个现实提醒

设计文件里看起来完美无缺,一旦到了实际加工和装配,马上会遇到几个ZEMAX里看不到的问题:

  • 镜片边缘过薄:边缘厚度小于1mm的透镜很容易在加工中崩边或应力碎裂。设计时最好控制边缘厚度不低于1mm,特别小的镜片甚至要求2mm以上。
  • 胶合面工艺:双胶合透镜如果胶合面曲率差异过大,胶层厚度不均会引入局部像差,导致实测MTF低于设计值。所以胶合面的曲率匹配在图纸上就要标注清楚。
  • 机械结构带来的杂散光:照相物镜还得考虑镜筒内壁的杂散光抑制——设计时ZEMAX可以仿真涂层和光阑,但实际装配中镜片边缘漏光、螺纹反光导致鬼像的问题,是ZEMAX默认模型里模拟不到的。
  • 装调时的后焦调整:批量生产的镜头通常用后焦(像面位置)微调来补偿加工误差,设计时要留出足够的后焦距可调区间(±0.5mm甚至更大),否则装调环节毫无余地。

个人经验是,设计完成后最好在ZEMAX里把结构转换为CAD导出到机械设计软件里做一版装配仿真,确认镜片边缘夹持结构、压圈、隔圈的空间都留够了再出图。这一步虽然不属于"光学设计"本身,但能让你的设计方案真正被车间落实。

6. 我自己的收尾流程:一套顺序很难出错的检查清单

最后分享我这几年做照相物镜设计时固定使用的收尾顺序,照着做基本不会漏项:

  1. 像质检查:点列图RMS半径、MTF、场曲/畸变、波前图,逐项对照设计指标,确认都达标。
  2. 边界条件复核:打开镜头数据编辑器,确认没有负厚度、没有边缘厚度过薄的透镜面,玻璃库里的材料均可采购且价格正常。
  3. 公差分析:设定合理的制造公差,跑至少100次蒙特卡洛仿真,确认90%以上的样本仍满足成像需求。
  4. 玻璃替换对比:做一轮玻璃替换测试,看看是否有更便宜的玻璃能在同等像质下替代原设计,这能显著拉低成本。
  5. 机械接口留量:确认后焦距留有余量,入瞳位置、主面位置满足机械结构设计要求。
  6. 虚拟装配检查:导出CAD模型,在结构软件中模拟装入镜筒,确认无干涉、有压圈可调余地。

这整套流程走下来,一个50mm/F2.8的常规照相物镜基本是板上钉钉的。我自己带过不少新人,完全照着这个顺序练手,大概率两周内就能上手做简单变焦和广角镜头的初始设计。当然,ZEMAX的坑远不止本文这些,比如瞳差的计算、更精确的鬼像分析、非序列模式的杂散光模拟,都是后面的进阶内容。但先把这颗"第一个照相物镜"做扎实,后面的路就会顺很多。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/4 2:14:00

Windows 11 25H2与2026年首个累积更新:镜像下载、安装排障全指南

1. 25H2 这个版本到底改了什么1.1 从 24H2 到 25H2 的版本脉络微软的 Windows 11 版本号一直遵循"年份上下半年"的命名规则,25H2 指的就是 2025 年下半年发布的功能更新版本。原本按照一年一次大版本更新的节奏,25H2 应该是 2025 年 9 月到 10…

作者头像 李华
网站建设 2026/10/4 2:11:58

网文IP变现真相:拆解斗破苍穹从连载到授权的收入链

经常有人私信问我一个特别直白的问题:斗破苍穹的作者天蚕土豆到底赚了多少钱。问的人一半是羡慕,一半是好奇,还有一小部分读者想在“写网文能不能发财”这件事上找一个参考答案。我以前在平台做过内容运营,也帮几个作者对接过版权…

作者头像 李华
网站建设 2026/10/4 2:10:25

OpenRig自动绑定全流程指南:骨架生成、权重与导出经验

上个月接了个短片项目,26个角色要在10天内完成绑定。按传统的做法,光是给主角做一整套带表情的基础绑定就要三四天,剩下二十几条命根本不够排期。当时我正好在一个建模群里看到有人提了一嘴OpenRig,说是开源自动绑定工具里比较省心…

作者头像 李华
网站建设 2026/10/4 2:10:13

Claude Code Skills原理与实战:沙箱能力调度机制解析

1. “skills”不是功能模块,而是Claude Code生态里的能力调度中枢最近在好几个前端团队的内部分享会上,都被问到同一个问题:“我们装了Claude Code,也配好了API Key,但为什么点开‘Skills’面板后全是灰色图标&#xf…

作者头像 李华
网站建设 2026/10/4 2:09:57

DeBiFormer实战:三招提升图像分类准确率至82%以上

简介:视觉Transformer(ViT)凭借全局建模能力刷新了图像分类精度上限,但高计算开销也限制了其在资源受限场景下的落地。如何在保证精度的同时降低注意力计算量,成为工程优化的重要方向。DeBiFormer提出的可变形双级路由…

作者头像 李华