ZEMAX双高斯镜头设计全流程:从初始结构到像质优化
2026/9/18 16:26:02 网站建设 项目流程

聊起ZEMAX里的经典镜头设计,双高斯结构是绝对绕不过去的一课。无论是55mm标准定焦、人像镜头还是入门级定焦,双高斯的变化体几乎覆盖了中长焦大光圈镜头的半壁江山。这套结构最大的魅力在于:它能用相对不多的镜片数量,同时把球差、彗差、像散和场曲校到很不错的水平,对称形式又天然抑制了垂轴色差和畸变,特别适合做全画幅或APS-C画幅上的定焦镜头。这篇文章我就拿一个55mm焦距、F/2.0光圈的照相物镜当例子,完整走一遍从初始结构搭建、评价函数设计、局部优化到像质分析的全流程,顺便把我这些年用ZEMAX踩过的坑和调试经验一起写出来,给正在学ZEMAX光学设计、准备入门镜头设计的朋友一份可以直接照着操作的手册。

1. 项目概述与设计目标

1.1 为什么选双高斯结构做照相物镜

双高斯结构的历史可以追溯到19世纪末,后来经过Taylor等人的改良,成为照相镜头中生命力最强的形式之一。它最典型的特征是以孔径光阑为对称中心,前后两组近似镜像对称,每组通常由一枚正透镜和一枚负透镜构成。这个对称布局带来一个很大的好处:垂轴像差,比如彗差、畸变和倍率色差,在对称条件下会自动抵消大半。

用生活化的方式理解,双高斯结构就像一支两边重量非常平衡的扁担,光阑放在正中间,前后各挂一组透镜。光线从物方进来时,前组把光束收拢、后组把光束重新扩展,中间由一个近乎对称的布局把各种像差抵消掉。相比望远结构或反远距结构,双高斯的光焦度分配更均匀,场曲也更容易压平,所以在覆盖中等视场角、中等相对孔径的场景里,双高斯往往是性价比最高的起点。

在设计实践中,双高斯也是很多新手的“第一课”。原因并不复杂:它的初始结构容易从专利或教材里拿到,镜片数量适中,优化变量不算太多,老版本ZEMAX跑起来也很快。更重要的是,双高斯折射出的像差平衡思路,能让人直观理解“为什么镜头设计不是单纯堆镜片”。

1.2 55mm/F2.0设计指标拆解

任何一个光学设计项目,开工前必须先定清楚设计指标。相比“随便先跑跑看”,先想清楚边界条件能省掉后面一半的返工时间。这个项目我给自己定的核心参数如下:

参数项指标值备注
有效焦距55mm经典标准镜头焦段
相对孔径F/2.0入瞳直径27.5mm
像面尺寸全画幅 43.3mm对角线半像高21.65mm
工作波段486.1nm ~ 656.3nmF光、d光、C光
后焦距≥ 15mm留出镜筒与快门结构空间
设计目标RMS半径小于艾里斑半径尽量接近衍射极限

这里有个很关键的细节:指标里的“半像高21.65mm”是怎么来的。全画幅传感器的成像区域尺寸是36mm × 24mm,对角线就是sqrt(36²+24²),约等于43.3mm,半像高就是21.65mm。这个数值直接决定了视场设定。对于无穷远物距的照相物镜,ZEMAX里我习惯用Image Height这种视场类型,而不是用视场角,因为后面分析畸变和相对照度时更直观。

焦距55mm对应的人眼视角大约在46°左右(全画幅对角线视角约43°),属于标准镜头范畴。标准镜头最讲究“中庸”,既要保证中心分辨率够高,又要兼顾边缘像散和色差,所以双高斯结构在这个焦段上特别有发挥空间。

相对孔径F/2.0不算极致大光圈,但已经能让双高斯结构展现出它的优势区间。F/1.4或者更大的光圈,经典6片4组双高斯会显得吃力,通常需要增加镜片或者引入非球面。F/2.0刚好是个分水岭,用传统球面镜片也能得到不错的平衡,对新手非常友好。

2. 初始结构搭建与系统参数设置

2.1 ZEMAX工作环境与基本设置

打开ZEMAX OpticStudio之后,第一步不是急着往Lens Data Editor里敲数据,而是先把系统级参数设置好。在System Explorer的Aperture选项卡里,我把Aperture Type设为Image Space F/#,数值填2。很多人习惯用Entrance Pupil Diameter,但在做实际镜头设计时,我更推荐用Image Space F/#,因为像方F数才是最终要保证的指标,ZEMAX会根据物方无穷远自动计算出相应的入瞳直径。

接着设置视场。在System Explorer的Field选项卡里,选择Image Height类型,输入几个有代表性的像高:0mm、5mm、10mm、15mm、21.65mm。这里为什么要中间隔几个点?因为后续优化和像质评价都需要看不同视场的变化趋势,如果只设置边缘视场,很容易出现中心好、边缘崩掉的局部最优解。多点视场能逼着优化器把全视场的像差平衡好。

最后设置波长。在System Explorer的Wavelength选项卡里添加F光(486.1nm)、d光(587.6nm)和C光(656.3nm),主波长设为d光。对于普通照相镜头,这三个波长的色差评价已经足够。暂时不用设置更复杂的波长权重,初版优化阶段先求稳,等结构收敛了再细化。

2.2 初始镜头数据表输入

很多人第一次做双高斯时,最头疼的就是“初始结构从哪来”。其实双高斯的经典起始结构在很多光学设计教材里都有,结构上就是围绕光阑对称的6片4组形式。我拿到的一个比较顺手的初始结构如下,单位是毫米,玻璃用的是成都光明玻璃库里的牌号:

面号曲率半径R厚度d玻璃
OBJ无穷大无穷大-
120.006.00H-LAK3
2250.000.50-
314.002.50H-F4
48.506.00-
STO无穷大5.50-
6-8.502.50H-F4
7-14.000.50-
8-250.006.00H-LAK3
9-20.0020.00-
IMG无穷大--

这个结构的思路很清晰:第1片是正光焦度的H-LAK3冕牌玻璃,第2片是负光焦度的H-F4火石玻璃,两者靠近光阑一侧形成前组。光阑之后是严格镜像对称的后组。H-LAK3的折射率在1.717左右,配合H-F4的1.620左右,一正一负产生足够的像差校正自由度,同时又不会让单面光焦度过于极端。

在Lens Data Editor里输入时,第2面的250mm大曲率半径其实是近似平面,它的作用不是产生多少光焦度,而是给第1片正透镜一个比较大的半径比,用来控制球差的符号。这一点新手容易忽略,总想着把所有半径都弄得很夸张,其实初始结构里留一些“松弛面”反而更好优化。

输入完成后,按快捷键Ctrl+L打开2D Layout看一眼光路形状。正常应该是一个左右对称的“蝴蝶形”光路,光线从左边进来,经过前组收窄,在光阑附近形成一个较窄的束腰,再经过后组发散到像面。如果看到有光线明显爬出镜头边界或者交叉得很乱,先检查数据是否输错,尤其是正负号。

2.3 一阶焦距快速缩放

初始结构输入后,系统的实际焦距大概率不是精确的55mm。这里有一个ZEMAX里非常实用但很多人不知道的功能:菜单栏Tools → Modify → Scale Lens。它能按当前系统的有效焦距比例,整体缩放所有曲率半径和厚度,使系统焦距精确匹配目标值。

使用这个功能前,需要先在Merit Function Editor里定义EFFL操作数来读取当前焦距,或者直接在System Explorer的“System Data”里查看Effective Focal Length。比如当前系统计算出来是43mm,目标55mm,Scale Lens会直接把所有尺寸缩放55/43倍。缩放之后,F数保持不变,视场角会对应变化,但只要后焦距也跟着变了,整体结构比例是协调的。

这个操作非常推荐在优化前做一次。如果初始焦距离目标太远,优化器可能陷入一个错误的局部解,或者变量太多导致过程极其缓慢。先缩放,让系统“在正确的焦距附近起步”,后面的优化会顺很多。

3. 核心优化流程:从初始结构到像质收敛

3.1 优化变量与约束条件

初始结构搭好之后,接下来就是把镜头从“能用”变成“好用”的关键环节:变量设置和评价函数设计。在ZEMAX里,双击Lens Data Editor中“Curvature”列旁边的方框或直接把变量列设为V,就能把曲率半径变成优化变量。厚度列同理,设为V后优化器可以自由调整镜片间距和镜片厚度。

我的变量设置习惯是:

  • 所有曲率半径先全部设为变量,包括大半径的近似平面,让优化器自己判断需不需要变弯
  • 所有空气间隔设为变量,但光阑两侧的间隔我会稍微小心,设了变量但会加边界条件防呆
  • 镜片中心厚度暂不设为变量,先固定,等曲率优化一轮之后再放开。这个“先曲率后厚度”的策略能有效防止厚度在优化初期乱跑导致镜片交叠

约束条件方面,ZEMAX里系统自带一个默认的边界约束链。在Merit Function Editor里打开Optimization Wizard,勾选“Assume Axial Symmetry”,再勾选“Use Angle Solve”之类的选项前,先把边界条件想清楚。我们需要保证:

  • 空气中心厚度不小于0.3mm,否则实际装配时会顶死
  • 镜片边缘厚度不小于1.0mm,不然加工很容易崩边
  • 玻璃中心厚度不小于1.0mm,太薄的镜片既难加工也容易变形

这些边界条件对应ZEMAX中的MNCA、MXCA、MNEG、MXEG等操作数。我习惯在评价函数编辑器里手动追加一组,例如MNCA命令后面跟目标面和最小厚度数值。边界条件不是越多越好,但几个关键位置一定要守住,否则优化完看到结果还得返工。

3.2 评价函数构建策略

评价函数是整个优化的“指挥棒”,它的设计质量直接决定收敛结果。对于照相物镜,我的默认选择是RMS Spot Size Centroid,也就是以质心为参考的RMS弥散斑尺寸。这是最贴近实际成像效果的指标之一,因为点列图上的弥散斑尺寸直接反映了光点落在像面上的紧凑程度。

在优化向导里,Optimization Wizard的设置如下:

  • Type: RMS Spot Size
  • Reference: Centroid
  • Pupil Integration: Gaussian Quadrature,环数6,臂数12
  • 视场权重:默认相等即可,如果有特别要求,比如中心视场更重要,可以手动加权

设置完默认评价函数后,还需要手动加入两个关键操作数来控制焦距和畸变。焦距控制用EFFL操作数,目标值55,权重设为1;畸变控制用DIMX操作数,权重视情况而定,初版优化可以先不约束畸变,等像质收敛后再说。

评价函数里的权重是一门学问。权重设置太大会引导优化器优先满足焦距而牺牲像质,太小则焦距漂移。我的经验是:EFFL权重设为1,让优化器把它当成“重要但不压倒一切”的约束。在此基础上,RMS Spot Size的默认权重由ZEMAX自动分配,整体平衡性比较好。

3.3 分阶段优化路线

双高斯这种对称结构,最忌讳一上来就全变量、全约束一起优化。变量多了,评价函数地形复杂,局部最优解特别多。我通常把优化分成三步走。

第一步:只优化曲率半径,所有厚度固定。先把焦距拉到位,让光线走到正确的像面附近。这个阶段迭代次数可以少一些,看到RMS半径从几十毫米快速降到几个毫米,就说明方向对了。

第二步:放开空气间隔和后焦距,曲率半径继续作为变量。这个阶段主要校正轴外像差,像散和场曲会明显改善。如果RMS下降停滞,试着把某个视场的权重稍微加大,打破优化器当前的“平衡点”。

第三步:把玻璃厚度也设为变量,同时增加边缘厚度约束。这个阶段是把初版结构从“光学上可用”推向“工程上可加工”的关键一步。很多人在前两步做完了就急着看MTF,结果一检查边缘厚度全是负数,这就是没走这一步。

每一步优化后都看一眼2D Layout,确认透镜没有交叉、光路没有异常折转。这里分享一个我踩过的坑:某次优化完RMS已经很好,但2D Layout里第二片镜片边缘厚度为负数,镜片变成了“中间厚边缘也厚”的怪形状,检查边界条件才发现是之前把MNEG写错了表面号。边界条件一定要写着有效,ZEMAX不会替你检查这种低级问题。

4. 像质分析与设计迭代

4.1 点列图:RMS半径与艾里斑

优化到RMS半径不再明显下降时,先打开点列图(Spot Diagram)看看弥散斑分布。对于F/2.0这种相对孔径,艾里斑半径大约可以用1.22 × λ × F/#估算,以587.6nm主波长计算,约1.22 × 0.0005876mm × 2 ≈ 1.43μm。如果全视场的RMS半径都小于这个值,说明系统已经接近衍射极限。

不过实际工程里我一般不强求全视场进入艾里斑。中心视场进入艾里斑是基本要求,边缘视场允许到2倍甚至3倍艾里斑,只要MTF在奈奎斯特频率附近还能保持合理对比度就行。人眼对照片边缘的“模糊”宽容度其实比中心高不少。

点列图里还要留意弥散斑的形状。如果中心视场是圆形对称,边缘视场出现明显的拖尾或明显不对称,那多半是彗差或倍率色差没校干净。对称双高斯结构按理说彗差不大,如果出现这种情况,检查一下光阑两侧的透镜是否真的对称了,或者光阑位置是否偏离了设计中心。

4.2 MTF曲线:判断分辨率的硬指标

MTF(调制传递函数)是评判照相物镜分辨率最硬核的指标。在ZEMAX里打开MTF vs. Field或FFT MTF,看不同视场在各空间频率下的对比度。

对于全画幅CMOS传感器,像素尺寸假设3.76μm,奈奎斯特频率大约在133 lp/mm。实际评价时我一般看30 lp/mm、50 lp/mm和100 lp/mm三条线。30 lp/mm决定大对比度细节,100 lp/mm接近传感器极限,全画幅镜头能在这个频率保持30%以上对比度就算不错。

初版优化结果如果MTF掉得太快,尤其是中频段塌陷,最常见原因是高阶球差没有校干净,或者色差残余偏大。这时候回到优化阶段,尝试将某个面的曲率半径重新设为变量,或者把胶合面拆开改成分离透镜,往往能获得额外自由度。

还有一个容易被忽视的点:MTF曲线在零视场附近出现周期性起伏,通常意味着系统存在少量焦移,这时候可以检查后焦距是否正好在最佳像面位置。ZEMAX有Quick Focus功能,能在当前后焦距附近自动搜索最佳像面,这个功能对初版设计特别有用。

4.3 畸变、场曲与色差控制

畸变在双高斯结构里一般不会太大,因为对称结构天然抵消了径向畸变。打开Field Curvature/Distortion图,如果畸变控制在1%以内,这个设计基本合格。注意照相镜头的畸变一般用TV畸变和光学畸变两个口径,ZEMAX里显示的通常是光学畸变,如果想看TV畸变需要额外写宏或者用Image Simulation分析。

场曲方面,双高斯结构的优势是匹兹伐场曲相对容易压制。但仍要注意子午场曲和弧矢场曲是否拉开差距。如果两者差别过大,像散明显,可以尝试增大光阑两侧负透镜的曲率半径差,或者微调负透镜的玻璃折射率。

色差控制主要看轴向色差和倍率色差。打开Longitudinal Aberration图,如果F光和C光的焦点分离过大,说明轴向色差偏大,通常需要调整正负透镜的色散搭配。双高斯设计里把正透镜用低色散冕牌玻璃、负透镜用高色散火石玻璃,就是为了平衡色差。H-LAK3和H-F4这个组合已经算合理,但如果色差超标,可以把正透镜换成色散更低的H-FK类玻璃,负透镜换成色散更高的H-ZF系列。

5. 加工可行性与公差分析

5.1 边界条件与工艺规范

优化到光学像质满意之后,进入工程可行性复查。这一步对实际项目来说生死攸关,光学设计做得再漂亮,加工装不出来也是白搭。

首先是检查每个面的入射角。如果某一个表面光线入射角过大,比如超过45°,反射损失会显著增加,镀膜压力也大。ZEMAX里可以查看各面入射角,若发现某面异常,考虑将附近表面的曲率半径重新分配。

其次是镜片形状。双高斯结构里靠近光阑的负透镜通常弯向光阑方向,弯度大,加工时容易遇到“非球面度检查”或“中心厚度不足”的问题。我把每个镜片的中心厚度和边缘厚度列成表格,逐一确认。中心厚度小于1mm、边缘厚度小于0.8mm的镜片,对于冷加工来说废品率会明显上升。

最后是口径链的匹配。照相物镜要配合机械镜筒,镜片外径通常做成台阶状方便压圈固定。ZEMAX里的半口径是一个参考,实际机械设计时会在此基础上加余量。如果某片镜片半口径突然比相邻镜片小很多,机械结构上会很难处理,这时候微调厚度或曲率让口径过渡更平缓。

5.2 公差分析快速入门

公差分析是很多自学ZEMAX的人最容易跳过的一步。实际上在工业流程里,公差分析是设计交付前的必要环节。简单来说,公差分析回答的问题是:“按当前的加工和装配精度,最终镜头性能能保住多少?”

在ZEMAX里打开Tolerance tab,设置如下基本公差项:

  • 曲率半径:±0.02mm
  • 厚度:±0.05mm
  • 表面偏心:±0.02mm
  • 镜片倾斜:±0.2′
  • 折射率:±0.001

然后选择Compensator为后焦距或最后一片镜片间隔(实际装配时通过调焦环微调),统计方式用RMS Spot Radius,运行100次Monte Carlo模拟。如果模拟结果显示90%的样本RMS半径在2倍艾里斑以内,说明这套公差设计基本合理。

如果灵敏度分析发现某个表面对偏心或倾斜特别敏感,那说明这个表面放大了像差敏感度。常见解决方案是调整光阑位置或重新分配光焦度,让光线在该面上的入射高度降下来。双高斯结构里,光阑前后那两片负透镜往往是最敏感的元件,设计时就要有心理预期。

6. 常见问题与实战调试技巧

6.1 优化不收敛的几种典型原因

用ZEMAX做双高斯设计,优化不收敛或者优化结果极差,我十次里能碰到八次是以下原因。

第一个原因是变量太多,评价函数地形过于复杂。新手特别容易把15个变量一次性全打开,ZEMAX一跑就是几小时,结果评价函数稳定在一个巨大的数值上。解决方法是拆阶段优化,先把曲率半径设为变量优化50轮,再看趋势。趋势对了再放开厚度变量,给优化器一个相对平稳的初始环境。

第二个原因是边界条件写错。常见错误包括MNCA设置成最小空气厚度反而约束了玻璃厚度,或者某几个表面连在一起导致约束矛盾。我建议每加一条边界约束,就运行一次Evaluate Merit Function,看贡献值有没有异常巨大。如果某条操作数贡献值比其他大几个数量级,优先排查它。

第三个原因是最佳像面漂移。有时候优化器把所有像差都压低了,但RMS还是几十微米,一查发现是后焦距偏离了当前视场的最佳像面位置。这时候用Quick Focus先把像面找回来,再继续优化。

6.2 ZEMAX宏脚本常见报错排查

现在越来越多人在设计流程里写ZPL宏做批量分析或自定义评价。ZEMAX宏语法其实不复杂,但常见报错很让人头疼。最典型的就是“unknown symbol getthickness”。

这个报错我遇到过很多次,基本上两种原因。第一种是你用的ZEMAX版本较老,不支持GetThickness这个函数,此时换成RAGZ(surface)就能解决,RAGZ返回指定表面到下一表面的厚度,是最通用的厚度获取方法。第二种是宏里变量名和保留字冲突,比如把某个自定义变量叫了Thickness或Surface,也会被解析器认成函数名。改一下变量名,报错就消失了。

如果你在宏里要获取某个面的曲率半径,用CV(surface)取曲率,注意ZEMAX里默认存的是曲率而不是半径,1/CV才是半径。这个“曲率和半径”的坑,比“unknown symbol”坑的人还多。

6.3 高阶优化工具:Hammer与Global Search

局部优化陷入平台期时,光靠Local Optimization很难跳出来。我的经验是先用Global Search或者Hammer Optimization这类全局工具去探索更优解空间。

Hammer Optimizaiton会在当前局部最优解的邻域随机扰动多个参数组合,试图跳出局部极小值。它适合在局部优化已经收敛但像质不达标时使用。操作上非常直接:在Optimization选项卡里选择Hammer Current,保持评价函数不变,让它跑一段时间。多数情况下它会给出一个比当前解更好的方案。

Global Search则是从多个随机初始点并行搜索,一般在项目起步阶段对初始结构不确定时使用。双高斯结构的初始结构比较明确,我用Global Search的机会不多,但遇到高级变体设计时会用。跑一次Global Search通常需要较长时间,电脑性能允许的话可以挂机过夜。

需要提醒的是,全局优化给出的“最优解”很可能是个非物理解,比如镜片厚度为负或者某个半径小得离谱。拿到全局结果后,第一件事是检查2D Layout和边界条件,而不是直接惊喜地开始加工。

6.4 扩展:从球面到非球面与自由曲面

经典6片4组双高斯全用球面镜片,设计到F/2.0已经接近极限。如果想做到F/1.4,或者想进一步提升边缘像质,最直接的方法就是引入非球面。在ZEMAX里把某个表面类型从Standard改成Even Asphere,然后选择圆锥系数和几项非球面系数作为变量,重新优化。

非球面的放置位置有讲究。对于双高斯结构来说,把非球面放在光阑附近收益最大,因为那里的光线高度最低,非球面对轴上球差和子午彗差的校正效果最明显。但非球面制作和检测成本高,实际设计中要权衡。

更高阶的自由曲面设计通常用在非成像或离轴系统中,比如扩展多项式面型(Extended Polynomial)在AR/VR、HUD、车灯中的自由曲面反光镜设计。序列模式下用扩展多项式优化需要注意项数不要一开始就开太多,否则评价函数会变得极其不稳定。建议先加圆锥系数,再逐步增加2~3项多项式,每加一轮都重新优化并观察当前像差的变化。非序列模式则更适合做照明系统的分光棱镜或导光结构分析,和成像镜头设计的路数不同。

写在最后:一点个人体会

这套55mm双高斯流程走下来,最深的体会是:光学设计不是“把参数交给ZEMAX然后等结果”的纯体力活,而是每一步都要理解“优化器在干什么、为什么这么干”。双高斯结构之所以适合练手,正是因为它让球差、彗差、像散、场曲这些像差项变得可以被你亲手操控。每调整一个曲率半径,你都能在点列图和MTF上直观看到响应。

我自己的习惯是每个设计项目保留一个“设计日志”,记录初始结构、变量设置、评价函数里的关键操作数以及每轮优化的RMS值变化。这样做的好处是,当优化陷入死胡同时,能很快倒回去分析是哪个环节出了问题,而不是把所有参数推倒重来。最后再分享一个小技巧:ZEMAX里按Ctrl+Shift+D可以快速打开当前表面的详细分析窗口,做单面像差追踪时非常方便,比一层层点菜单顺手得多。希望这篇流程对正在啃双高斯设计的你有帮助。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询