2. 光学成像基础:透镜成像原理、景深与焦深、MTF与分辨率、光圈与进光量
做自动对焦算法,光学成像基础是绕不开的坎。我见过不少算法工程师,代码写得漂亮,但一碰到镜头参数就懵了。说白了,不懂光学,你调出来的对焦算法就是瞎蒙。这一章,咱们把几个核心概念掰开揉碎了讲清楚。
2.1 透镜成像原理
先问个问题:镜头到底是怎么把外面的世界“塞”进传感器里的?
答案就是高斯成像公式:
1/f = 1/u + 1/v
其中:
- f — 焦距(镜头光学中心到焦点的距离)
- u — 物距(物体到镜头光学中心的距离)
- v — 像距(镜头光学中心到成像面的距离)
这个公式看着简单,但实际项目中坑不少。我记得有一次调试一款手机摄像头模组,发现近摄时画面总是模糊。查了半天,发现是像距调节范围不够,导致近处物体无法清晰成像。嗯,这就是公式没算明白。
关键点:自动对焦的本质,就是通过改变像距 v(移动镜头组)或改变焦距 f(液体镜头等),让目标物体的像恰好落在传感器平面上。
实际镜头不是单透镜,而是多片镜片组成的复杂系统。但核心逻辑不变:
- 物距越近,像距越远(镜头需要伸出去)
- 物距越远,像距越近(镜头缩回来)
- 物距无穷远时,像距等于焦距
我的习惯:做对焦算法前,先把镜头的物距-像距映射表拿到手。很多厂商会提供这个数据,没有的话自己标定。这能省掉后面大量调试时间。
2.2 景深与焦深
这两个概念经常被混淆,我刚开始做这行时也犯过糊涂。
| 概念 | 定义 | 对应关系 |
|---|---|---|
| 景深 (DoF) | 物体空间中,能清晰成像的纵深范围 | 物方 |
| 焦深 (FoF) | 像方空间中,传感器可前后移动而不失焦的范围 | 像方 |
景深受三个因素影响:
- 光圈大小 — 光圈越小,景深越大(这个后面细说)
- 焦距长短 — 焦距越长,景深越浅
- 对焦距离 — 对焦越近,景深越浅
焦深呢?它决定了你对焦算法的“容错空间”。焦深越大,传感器位置偏差一点也能接受;焦深越小,对焦精度要求就越高。
我曾经踩过的坑:做一款长焦镜头的对焦算法,焦深只有几个微米。我按常规步长去搜索对焦位置,结果每次都跳过最佳点。后来把搜索步长缩小到焦深的1/3,才稳定下来。记住:步长不能大于焦深的一半,否则会错过峰值。
2.3 MTF与分辨率
MTF(调制传递函数)是衡量镜头成像质量的核心指标。说白了,它描述的是镜头传递“对比度”的能力。
为什么对比度重要?你想想看,一个黑白条纹图案,经过镜头后,黑的不够黑,白的不够白,边缘模糊了。这就是MTF下降的表现。
MTF曲线通常这样看:
- 横轴:空间频率(lp/mm,线对/毫米)
- 纵轴:对比度传递比例(0~1,1为完美)
分辨率呢?它和MTF的关系是:
分辨率 ≈ 1 / (2 × 像素尺寸)
但注意,镜头分辨率 ≠ 传感器分辨率。系统总分辨率由两者共同决定:
1/系统分辨率² = 1/镜头分辨率² + 1/传感器分辨率²
这个公式我建议你记下来。做项目时经常要判断瓶颈在哪——是镜头不够好,还是传感器像素太高了?
实战经验:我习惯在选型阶段就拿到镜头的MTF曲线。重点关注两个频率点:
- 奈奎斯特频率(对应传感器像素尺寸)
- 低频(10-20 lp/mm)—— 决定整体对比度
如果低频MTF低于0.3,这个镜头基本没法用,对焦算法再牛也救不了。
2.4 光圈与进光量
光圈用F数表示:F = 焦距 / 通光孔径直径。
F数越小,光圈越大,进光量越多。F1.4比F2.8进光量多4倍(因为面积和直径平方成正比)。
光圈对自动对焦的影响体现在三个方面:
| 影响维度 | 大光圈(小F数) | 小光圈(大F数) |
|---|---|---|
| 进光量 | 多,适合暗光 | 少,需要补光或长曝光 |
| 景深 | 浅,对焦精度要求高 | 深,容错性好 |
| 衍射效应 | 小,分辨率高 | 大,F16以上分辨率明显下降 |
| 对焦速度 | 快(相位检测信噪比高) | 慢(对比度检测信号弱) |
我的建议:做自动对焦算法时,一定要把光圈值作为输入参数。不同光圈下,对焦策略应该不同。大光圈时用更精细的步长,小光圈时可以加大步长提高速度。
2.5 知识体系总览
下面这张图把本章的核心概念串起来了。我建议你多看几遍,理清它们之间的关系。
这张图展示了四个核心概念如何支撑自动对焦算法。每个概念都不是孤立的——比如光圈既影响景深,又影响进光量,还影响MTF的衍射极限。做算法时,这些因素要综合考虑。
总结一下本章的核心要点:
- 透镜成像公式是自动对焦的数学基础,理解物距-像距关系才能设计搜索策略
- 景深决定了对焦的容错范围,焦深决定了搜索步长的上限
- MTF是评价镜头质量的黄金标准,选型和调试时都要看
- 光圈影响进光量、景深、衍射和速度,不同光圈要用不同策略