2. 光学成像基础:透镜成像原理、景深与焦深、分辨率与放大倍率
各位同学,欢迎来到第二章。这一章是后面所有自动对焦算法的物理基础。说白了,如果你不懂透镜怎么成像,那后面写的对焦代码就是空中楼阁。我个人习惯,在讲算法之前,一定先把光学底子打扎实。
2.1 透镜成像原理
先聊最核心的。一个凸透镜,能把物体发出的光汇聚到一点,形成实像。这就是我们显微镜成像的基本原理。
公式很简单,就是高斯成像公式:
1/f = 1/u + 1/v
其中:
- f:透镜焦距
- u:物距(物体到透镜的距离)
- v:像距(像到透镜的距离)
嗯,这里要注意。在显微镜里,物体通常放在 f 和 2f 之间。这样成的像是倒立、放大的实像。你想想看,如果物体刚好在 f 上,那像就在无穷远,根本没法成像在传感器上。
关键点: 自动对焦的本质,就是调整物距 u 或像距 v,让像平面刚好落在图像传感器上。
我在项目中遇到过一个问题:有个同学调了半天对焦算法,发现图像始终模糊。最后排查出来,是镜头装反了。嗯,别笑,真事。透镜的曲率半径不一样,装反了成像质量会严重下降。
2.2 景深与焦深
这两个概念经常被混淆。我简单说一下。
- 景深 (Depth of Field, DoF):物体在光轴方向上能移动多远,像还能保持清晰。
- 焦深 (Depth of Focus):像平面能移动多远,像还能保持清晰。
说白了,景深是物体侧的事,焦深是传感器侧的事。它们通过放大倍率 M 关联:
焦深 ≈ M² × 景深
为什么会这样?因为显微镜的放大倍率通常比较大,所以焦深往往比景深大得多。这意味着,传感器位置稍微偏一点,可能还能接受;但物体位置稍微动一下,图像就糊了。
避坑指南: 我曾经在做一个高倍率显微对焦项目时,发现步进电机每次移动0.1mm,图像变化剧烈。后来一算,景深只有0.05mm。所以,步进电机的步长必须小于景深,否则永远对不准焦。
景深的计算公式:
DoF = (2 × λ × f²) / (A²)
其中 λ 是波长,f 是焦距,A 是数值孔径。你看,数值孔径越大,景深越小。这就是为什么高倍镜对焦特别难。
2.3 分辨率与放大倍率
很多人以为放大倍率越大,看得越清楚。其实不是。分辨率才是决定清晰度的关键。
根据瑞利判据,光学系统的极限分辨率:
δ = 0.61 × λ / NA
其中:
- δ:能分辨的最小距离
- λ:照明光波长
- NA:数值孔径
举个例子。用绿光(λ=550nm)照明,NA=0.65的物镜,分辨率大约是:
δ = 0.61 × 550 / 0.65 ≈ 516 nm
也就是说,两个点距离小于516nm,你就分不开了。这时候你就算把放大倍率提到1000倍,看到的也是一团糊。
注意: 放大倍率不能超过数值孔径的1000倍。这是经验法则。比如NA=0.65,有效放大倍率上限就是650倍。再大就是「空放大」,没有意义。
我建议你在设计自动对焦系统时,先算清楚这个。否则你花大价钱买了高倍镜头,结果传感器像素密度不够,或者照明波长不对,分辨率根本提不上去。
2.4 三者关系总结
把这三个概念串起来,你会发现:
| 参数 | 对景深的影响 | 对分辨率的影响 | 对放大倍率的影响 |
|---|---|---|---|
| 数值孔径 NA ↑ | 景深 ↓ | 分辨率 ↑ | 有效倍率 ↑ |
| 焦距 f ↑ | 景深 ↑ | 分辨率 ↓ | 倍率 ↓ |
| 波长 λ ↑ | 景深 ↑ | 分辨率 ↓ | 无影响 |
你看,这是一个权衡。想要高分辨率,就得接受小景深。而小景深意味着对焦精度要求更高。这就是为什么自动对焦算法在高倍显微镜下特别重要。
核心思路: 自动对焦算法,本质上是在小景深条件下,快速找到最佳像平面。你理解了景深和分辨率的关系,就能理解为什么有些对焦算法在低倍镜下跑得飞快,到了高倍镜就卡壳。
我记得有一次调试一个40倍物镜的对焦系统。景深只有1.2微米,步进电机每走一步是0.5微米。结果每次对焦都要来回扫好几遍,因为稍微过冲一点,图像就完全糊了。后来我改用了闭环控制,加上实时图像反馈,才稳定下来。
嗯,这一章的内容就到这里。下一章我们会讲图像清晰度评价函数,也就是怎么用算法判断「图像是否清晰」。那是自动对焦的核心环节。