1534 字
8 分钟
AF 自动对焦系统总览:从选主体到驱动镜组

自动对焦并不是一次“判断清不清晰”,而是一套闭环系统:先决定画面里谁应该清晰,再估计当前离焦状态,驱动镜组移动,最后用新一帧图像确认结果。拍照时它要尽快锁定,录像时还要在主体运动、遮挡和构图变化中保持稳定。

AF 系统在解决哪四件事#

一套完整 AF 可以拆成四层:

  1. 目标选择:人脸、眼睛、触控点或中央区域,谁拥有对焦优先级;
  2. 焦点观测:用 CDAF 清晰度分数、PDAF 相位差或深度信息估计离焦;
  3. 镜组控制:把观测换成位置、方向、速度和制动命令;
  4. 时序决策:在锁定、搜索、跟踪、丢失和重捕获状态之间切换。

四层必须协作。测量再准确,如果 ROI 选错,镜头只会非常可靠地对错地方;马达再快,如果缺少减速和回差补偿,也会越过焦点来回振荡。

ROI 决定“清晰”属于谁#

同一画面通常存在多个物距。前景人物和远处背景分别对应不同的最佳镜组位置,全画面平均分数容易被纹理丰富的背景支配。

对焦框选错,算法会清晰地对错地方

前景主体与背景各自拥有清晰度峰值;ROI 权重决定哪一个峰值主导搜索。

ROI 综合分数0.45
当前更清晰主体
对焦区域

这张大光圈样片本身具有浅景深。滑杆模拟镜组位置,预览模糊量由选中 ROI 的教学分数驱动;真实离焦卷积不会是均匀 CSS blur。

中央对焦、触控对焦和眼部追踪的差别,首先在于它们怎样产生 ROI、权重和主体身份。主体暂时被遮挡时,系统还要决定保持原距离、扩大搜索区域,还是切换到新目标。

把多个区域合成一个焦点评价值#

设第 ii 个小区域的清晰度统计为 sis_i,目标选择层给出的权重为 wi0w_i \ge 0,最简单的 ROI 评价值可以写成:

SROI=iwisiiwi+εS_{\mathrm{ROI}} = \frac{\sum_i w_i s_i}{\sum_i w_i + \varepsilon}

眼睛区域可以获得较大权重,背景和不可信区域获得较小权重。这里的 SROIS_{\mathrm{ROI}} 只是把“该对谁”交给控制层的接口;sis_i 可以来自 CDAF、PDAF 置信度或二者融合,并不限定具体焦点评价算子。

下面的独立 NumPy 示例构造了人物与背景各自的焦点评价曲线。改变人物权重后,综合分数的峰值会从纹理更强的背景转向人物:

import numpy as np
position = np.linspace(0.0, 1.0, 101) # 归一化镜组位置
person = 0.75 * np.exp(-0.5 * ((position - 0.32) / 0.08) ** 2)
background = 1.00 * np.exp(-0.5 * ((position - 0.78) / 0.10) ** 2)
def roi_score(person_weight: float) -> np.ndarray:
weights = np.array([person_weight, 1.0 - person_weight])
scores = np.stack([person, background])
return np.average(scores, axis=0, weights=weights)
for weight in (0.25, 0.85):
score = roi_score(weight)
best = position[np.argmax(score)]
print(f"人物权重={weight:.2f}, 最佳镜组位置={best:.2f}")

这与上面的互动实验使用同一种教学模型:每个物距被简化为一条平滑单峰曲线。真实画面会受到纹理方向、噪声、运动、遮挡与多个局部峰影响,不能仅凭这个高斯模型预测真实镜头位置。

观测、控制和确认组成闭环#

CDAF 从最终图像统计清晰度,适合确认峰值,但单次测量通常不给出移动方向。PDAF 通过成对子像的相位差估计焦前或焦后,能快速给出初始方向和离焦量,却依赖相位像素、标定和有效纹理。实际系统常让 PDAF 快速接近,再由 CDAF 或相位残差确认。

得到离焦估计后,控制器还要把它换成镜组命令。镜头的命令位置不等于实际位置:摩擦、回差、温度、重力方向和机械惯性都会改变响应。AF 因而必须观察移动后的新帧,而不是把一次马达命令当作完成。

把镜组位置记为 xtx_t,观测层给出的带符号离焦量记为 ete_t,最简闭环更新可以写成:

xt+1=clip ⁣(xt+K(ct)et, xmin, xmax)x_{t+1}=\operatorname{clip}\!\left(x_t + K(c_t)e_t,\ x_{\min},\ x_{\max}\right)

ctc_t 是观测置信度,增益 K(ct)K(c_t) 在高置信度时允许较大动作,在低置信度时缩小动作或直接保持。量产系统还会加入镜组动力学、回差补偿、稳定等待和状态机;这个式子只用来说明“观测—动作—新观测”的反馈关系。

拍照 AF 与视频 AF 的目标不同#

单次 AF 更关心锁焦延迟和成功率,可以容忍较明显的快速移动。连续 AF 更关心观感:

  • 主体小幅运动时不过度追随测量噪声;
  • 路人短暂穿过时不立刻切换焦点;
  • 确认主体持续运动后再平滑加速;
  • 主体丢失时保留距离预测,并限制大范围拉风箱;
  • 变焦或构图变化后,以可控速度重新捕获。

这就是为什么视频 AF 往往看起来比静态 AF 慢:它优化的是稳定、平滑和叙事意图,不只是最短到达时间。

AF 与 AE、ISP 的耦合#

曝光不足会让相位和清晰度统计淹没在噪声里;曝光时间过长又会把运动模糊伪装成离焦。降噪和锐化若在搜索过程中剧烈变化,也会破坏跨帧分数的一致性。因此 3A 需要共享状态:AE 在关键搜索阶段限制亮度跳变,AF 向 AE 提供锁定或运动信息,ISP 则保证统计链路尽量稳定。

工程验收关注什么#

  • 近、中、远多个物距与镜组全行程;
  • 人脸进出、遮挡、多主体竞争和低纹理目标;
  • 低照、逆光、闪烁光源与快速运动;
  • 不同纹理方向下的 PDAF 置信度;
  • 镜组回差、温度、姿态与重复定位误差;
  • 视频中的焦点呼吸、切换延迟和稳定性;
  • 信息不足时能否降低置信度并安全回退。

AF 的核心不是“找最清晰的一帧”,而是持续回答三个问题:该对谁、该往哪走、什么时候应该停下或等待。后续两篇将分别展开 CDAF/PDAF 的观测原理,以及搜索、马达控制与连续追焦策略。

AF 自动对焦系统总览:从选主体到驱动镜组
https://cloudsir.top/posts/how-autofocus-works/
作者
CloudSir
发布于
2026-08-25
许可协议
CC BY-NC-SA 4.0
RGB 为什么要转换成 YCbCr?从矩阵、码值范围到往返误差
AE 怎样稳定收敛?从曝光闭环到防频闪