早上把焦距算完,镜头定了 25 mm。镜头上除了对焦环,还有一个环,就是光圈。
现场挺常见的一种情况:工件表面有高有低,边缘总有一半是糊的,调试的人就把光圈往小了拧,一路拧到 F16。糊是不糊了,图暗得没法看,于是又把增益推上去。昨天早上那篇说过,增益一推,噪点跟着就来。图是又清楚又亮了,放大一看满屏雪花,边缘照样不稳。反过来也有人怕图暗,光圈一直开到最大,结果景深浅得要命,工件稍微一晃就虚。
光圈这东西往哪边拧都有代价。这篇把 F 数是什么、拧一档差多少光、近距离拍为什么要多算一步讲清楚,再说说为什么拧小会变清楚,又为什么不能一直拧小。
F 数就是焦距除以口径
F 数的定义很简单:
F=fD F = \frac{f}{D} F=Df
fff 是焦距,DDD 是入瞳直径,可以粗略理解成从镜头前面往里看,光圈那个孔的有效直径。25 mm 的镜头开到 F2.8,入瞳大概 8.9 mm;拧到 F8,只剩 3.1 mm 左右。
进多少光看的是孔的面积,面积跟着直径的平方走。焦距不变时 DDD 跟 FFF 成反比,所以传感器上的照度跟 F 数的平方成反比:
E∝1F2 E \propto \frac{1}{F^2} E∝F21
光圈刻度 1.4、2、2.8、4、5.6、8、11、16 这么排,就是这个原因:每一档乘以 √2,面积减一半,光少一半。说白了,光圈拧一档,进光差一倍。这个关系值得记牢,后面估光量的时候天天要用。
用 F 数而不直接标孔径,好处是跟焦距无关。12 mm 的镜头开 F4,和 50 mm 的镜头开 F4,拍同样亮的东西,传感器上的照度差不多,曝光时间可以直接套过去。换镜头的时候这一点很省事。

拧三档差多少光,算一下
还是早上那套:2/3 英寸相机、25 mm 镜头、120 mm 视野。假设开在 F2.8 的时候,曝光 0.5 ms 灰度刚好合适。现在为了景深想拧到 F8,要补多少?
(82.8)2≈8.2 \left(\frac{8}{2.8}\right)^2 \approx 8.2 (2.88)2≈8.2
刻度上差了三档,按 √2 一档一档算就是 2³=8 倍;镜头上印的是取整后的数,所以直接拿 8 和 2.8 算出来是 8.2,当 8 倍用就行。要保持亮度不变,曝光得拉到 4 ms 左右;要么光源亮度加 8 倍;要么增益加 18 dB。这个 18 dB 眼熟吧,昨天早上开头那条读码线,雪花点满屏的就是这个增益。
4 ms 曝光静止拍照还凑合,工件要是在动就不行了。昨天算过,0.5 m/s 的线速、0.05 mm 的物方像素,曝光超过 100 µs 运动方向就要糊出一个像素以上,4 ms 是 40 个像素。所以光圈往小了拧,账最终都要算到光源头上。我自己一直是这个顺序:光圈先按清晰度定,亮度不够找光源,增益能不碰就不碰。
近距离拍,要看工作 F 数
镜头上刻的 F 数,是按物体在无穷远标的。物体拉近以后,像跑到离镜头更远的位置,打到传感器上的光锥变细,照度比按标称 F 数算的要低。这时候真正起作用的是工作 F 数:
Fw=(1+β) F F_w = (1+\beta)\,F Fw=(1+β)F
β\betaβ 还是放大倍率。严格说这个式子里还要带一个光瞳放大率,结构对称的镜头可以当它是 1,粗算够用。
早上那个例子 β 只有 0.07 左右,F8 对应的工作 F 数大约 8.6,照度比标称低 13% 左右,基本感觉不出来。可一旦做小视野,加接圈、上微距,β 到 0.5,F8 就变成 F12,光只剩 44%;β 到 1,就是 F16,只剩四分之一。现场经常有人加了个接圈,发现图一下子暗了一大截,还以为光源老化了,其实就是这个原因。另外,有的微距和远心镜头规格书上给的直接就是工作 F 数,跟普通镜头比之前,先看清楚标的是哪一个。
后面景深、衍射的公式里,用的都是 FwF_wFw,不是光圈环上的刻度。小倍率差得不多,大倍率一定要换算。

拧小了为什么变清楚,又为什么不能一直拧
变清楚主要有两个原因。
一个是离焦斑变小。物面高低不平,对焦对不准的那些点,在传感器上就不是一个点,而是一个小圆斑。像面离焦量为 δ\deltaδ 时,这个斑的直径差不多是:
b≈δFw b \approx \frac{\delta}{F_w} b≈Fwδ
F 数越大光锥越细,同样的离焦量,斑就越小。还是早上那套,工件表面有 10 mm 的高低差,换到像面上的离焦大约是 β2\beta^2β2 倍,也就是 0.05 mm 左右。F2.8 时斑约 16.5 µm,接近 5 个像素;拧到 F8,约 5.8 µm,不到 2 个像素,边缘一下就利索了。这其实就是景深,完整的公式下篇专门推。
另一个是像差。大光圈的时候,镜片边缘的光也参与成像,各种像差都上来了,画面边缘尤其发虚,暗角也重。一般镜头从最大光圈往回拧一两档,中心和边缘的解析力都会好一截,亮度也更均匀。所以标着 F1.4 的镜头,我在项目里很少开到 F2.8 以下。
可光圈也不能一直拧小。孔小到一定程度,衍射就起作用了,一个点成的像会变成一个艾里斑,斑的大小跟 FwF_wFw 成正比。按绿光粗算,F16 的时候艾里斑直径已经二十多微米,是 3.45 µm 像元的六倍多,焦对得再准也是糊的,而且是那种整体发灰、没劲的糊,跟离焦那种边缘拖影不太一样。离焦斑往下走、衍射斑往上走,中间哪一档刚好平衡,留到衍射那篇细算。
现场调光圈,我一般这么弄
对焦的时候先把光圈开到最大。大光圈景深浅,焦点偏一点画面就明显糊,最好找准;对好之后再拧回工作光圈,前后两边都留出余量。反过来,直接在 F11 下对焦,看着哪儿都差不多清楚,其实焦点可能偏在一头,工件一高一低,有一边就出了景深。有的镜头拧光圈焦点会轻微挪一点,拧完再看一眼图。
光圈环调好也要锁死。光圈环通常比对焦环松,设备一振转了一点,亮度就变,算法里的阈值全跟着漂,查起来还特别隐蔽。锁好画一道线,早上说的那个土办法这里一样好使。
多台相机用同一种镜头的项目,光圈尽量统一在同一档,把档位写进调试记录。以后换备件照着刻度一拧,不用再从头试。
下篇聊景深计算公式推导:容许弥散圆怎么跟像元尺寸挂钩,光圈和放大倍率在公式里各占多大分量。