昨天把 F 数和通光量说完了。拧小光圈,图会变暗,可现场为什么还老这么干?多半是为了景深。
之前有个项目,工件放在治具上,表面有台阶,高低差大概十来毫米。对焦对在中间那一档,上下两面边缘就发虚。调试的人把光圈从 F2.8 一路拧到 F8,糊是好了,图又暗回去,增益跟着顶上去。回头算了一下才发现,其实拧到 F4 左右就够那十毫米,多拧几档全是在给噪声买单。景深这东西能算,别光靠拧。
糊到什么程度算不能忍
镜头有一个对焦面,只有这个平面上的点能在传感器上聚成一个理想的点。前后偏开一点,那个点就变成一个小圆斑,光学上叫弥散圆。圆斑小到一定程度,人眼或者算法还当它是点;再大,就判成糊。
这个"还能忍"的上限,就是容许弥散圆直径,记作 ccc。工业视觉里它不是拍脑袋定的,通常跟像元尺寸挂钩。我自己做检测项目,习惯先取 ccc 等于 1~2 个像元:测边缘位置要求严的,取 1 个;一般有无、字符、粗定位,取 2 个也行。再大,亚像素拟合就开始飘。
还用昨天那台 2/3 英寸、2448×2048、像元 3.45 µm 的相机。一个像元是 0.00345 mm,两个是 0.0069 mm。后面的算例我按两个像元来,也就是 c=0.0069 mmc = 0.0069\,\mathrm{mm}c=0.0069mm。你要是测尺寸,自己换成一个像元再算一遍,景深差不多砍半。

近似公式从哪来
放大倍率 β=h/FOV\beta = h/\mathrm{FOV}β=h/FOV,靶面尺寸除以视野。工作 F 数昨天写过:Fw=(1+β)FF_w = (1+\beta)FFw=(1+β)F,近距离拍的时候用它,远距离 β\betaβ 很小,FwF_wFw 跟标称 FFF 差不多。
景深跟这三个量绑在一起。几何光学里推一遍(假设对焦在物距 uuu,弥散圆上限是 ccc),在 β\betaβ 不大、景深远小于物距的常见工况下,前后加起来大约是:
DOF≈2 Fw cβ2 \mathrm{DOF} \approx \frac{2\,F_w\,c}{\beta^2} DOF≈β22Fwc
这个式子值得记一下。说白了三件事:
光圈拧小(FwF_wFw 变大),景深变深,成正比。容许弥散圆放宽(ccc 变大),景深也变深------可算法能忍的糊是有上限的,不能靠放宽 ccc 偷懒。放大倍率 β\betaβ 一上去,景深按平方掉下来,所以小视野、高倍率项目景深薄得吓人,这是物理,不是镜头没选好。
完整公式其实还分前景深、后景深,两边并不严格对称,后景深略长一点。工业现场物距往往几百毫米,景深只有十几二十毫米,近似式和完整式差得很少,选型阶段用近似就够。真要卡在边界上,再拿完整式核一遍。
算一个:120 mm 视野,高低差 10 mm
还是上一篇那套:水平视野 120 mm,25 mm 镜头,靶面宽约 8.45 mm。
β=8.45120≈0.0704 \beta = \frac{8.45}{120} \approx 0.0704 β=1208.45≈0.0704
ccc 取两个像元 0.0069 mm。先看开在 F2.8:
Fw=(1+0.0704)×2.8≈3.00,DOF≈2×3.00×0.00690.07042≈8.3 mm F_w = (1+0.0704)\times 2.8 \approx 3.00,\qquad \mathrm{DOF} \approx \frac{2\times 3.00\times 0.0069}{0.0704^2} \approx 8.3\,\mathrm{mm} Fw=(1+0.0704)×2.8≈3.00,DOF≈0.070422×3.00×0.0069≈8.3mm
高低差要盖住 10 mm,F2.8 不够。拧到 F4:
Fw≈4.28,DOF≈11.9 mm F_w \approx 4.28,\qquad \mathrm{DOF} \approx 11.9\,\mathrm{mm} Fw≈4.28,DOF≈11.9mm
刚好过线。F5.6 大约 16.7 mm,F8 大约 23.9 mm。所以那个项目拧到 F8 是过量的,F4 到 F5.6 之间就够,多出来的几档全换成了曝光时间或者增益。

再用完整公式核一下 F2.8:物距按薄透镜算大约 380 mm,前景深约 4.1 mm、后景深约 4.2 mm,合计 8.3 mm,跟近似式几乎一样。F8 完整式合计约 23.8 mm,近似 23.9 mm。这套参数下,近似式直接能用。
有人问:那我把 ccc 取成一个像元呢?所有数砍半,F2.8 只剩约 4.2 mm,F8 约 11.9 mm,要盖 10 mm 就至少得开到 F8 附近。所以容许弥散圆怎么取,比选哪支镜头还影响结论。我的习惯是先按检测算法能接受的糊定 ccc,再反推光圈,而不是先定光圈再看糊不糊。
完整公式什么时候才要搬出来
近似式成立的前提,是景深远小于物距,而且放大倍率不是特别大。摄影里常用的完整写法是先算超焦距:
H=f2F c+f H = \frac{f^2}{F\,c} + f H=Fcf2+f
对焦在物距 uuu 时,前景深、后景深分别是:
unear=HuH+u−f,ufar=HuH−u+f u_{\mathrm{near}} = \frac{H u}{H + u - f},\qquad u_{\mathrm{far}} = \frac{H u}{H - u + f} unear=H+u−fHu,ufar=H−u+fHu
两边一减,就是总景深。前面那个例子 f=25f=25f=25、F=2.8F=2.8F=2.8、c=0.0069c=0.0069c=0.0069、u≈380u\approx380u≈380,超焦距大概三万多毫米,前后景深加起来 8.3 mm,跟近似式对得上。F8 也是 23.8 对 23.9。
什么时候近似会糊弄人?一是工作距离很近、倍率已经到 0.3 以上,超焦距不再比物距大很多个数量级;二是你把光圈拧得很小,景深本身已经上百毫米,跟物距可比了。这两种情况我都会再用完整式核一眼,尤其是微距和远心方案。远心镜头还有自己的景深定义,不完全套这套式子,后面远心那篇再单独说。
有人喜欢把景深写成"前后对称的 ±DOF/2\pm\mathrm{DOF}/2±DOF/2"。严格讲后景深比前景深略长一点,差别通常不大。现场对焦我习惯对在台阶的中间偏前一点,把更长的后景深留给远处,这是老摄影的习惯,工业上高低差不大时差几毫米,够用就行。
现场几条容易踩的
第一,别忘了工作 F 数。远距离 β\betaβ 小,差别不大;倍率到 0.3、0.5 以上,FwF_wFw 比标称 FFF 大一截,景深按 FwF_wFw 算才对,按标称 FFF 会算少。
第二,景深公式里的 ccc 是像方的。有人拿物方精度直接当 ccc 往里代,单位差了 β\betaβ 倍,算出来能差一个数量级。物方能忍多大的糊,要除以 β\betaβ 才回到像方的 ccc。
第三,拧小光圈景深是深了,衍射斑也在变大。像元越小越明显,3.45 µm 这档拧过 F8、F11 就要小心。衍射跟景深怎么平衡,下一篇专门算。
第四,机构振动和工件定位重复性,也会吃掉你算出来的景深。纸面上 DOF 有 12 mm,治具每次放料高低晃 2 mm,相机支架再软一点,有效余量就没多少了。我做方案的时候,算完景深还会再扣掉定位公差和振动余量,剩下的才是"能用的"。
还有个土办法:现场来不及算的时候,先把光圈放到预估位置,拿块塞尺或者已知厚度的垫块把工件垫高、垫低,看边缘还能不能用。能用的高低范围,大概就是你的有效景深。这比盯着监视器拧着玩靠谱,也比只信公式心里踏实------公式假设的是理想对焦面,现场的对焦面本来就有点飘。
下篇聊衍射:光圈不是越小越好,艾里斑跟像元比一比就知道有没有拧过。