1. 课程导入

在手机、相机、无人机、车载摄像头以及机器视觉设备中,自动对焦(AF)、自动曝光(AE)、自动白平衡(AWB)是决定成像质量与用户体验的三条核心控制链路。它们分别回答三个问题:画面是否清晰、亮度是否合适、颜色是否自然。三者看似独立,实际上共享统计信息、受同一帧图像约束,并在时域上相互影响。本课程的目标,是建立一套可复用的定位方法,让你在遇到“对不上焦、忽明忽暗、偏色发绿”等问题时,能够快速判断问题出在哪条链路、哪个环节、哪类参数。

一、学习目标

完成本课程后,你应当具备以下能力:

  • 能区分 AF、AE、AWB 三类问题的表象特征,避免把偏色误判为曝光问题、把失焦误判为噪声问题。
  • 能读懂 3A 统计信息,包括对焦评价值(FV)、亮度直方图、色温估计与增益收敛曲线。
  • 能按“现象—数据—模块—参数—验证”的顺序定位问题,而不是盲目调参。
  • 能识别常见误区,例如把场景切换导致的收敛延迟当成算法失效。
  • 能针对典型场景(逆光、夜景、纯色墙面、混合光源)给出排查路径。

二、核心概念

自动对焦通过分析图像高频信息或相位差信息,驱动镜头或传感器移动到清晰位置。对比度检测(CDAF)依赖对焦评价值峰值,相位检测(PDAF)依赖左右像素相位差,激光对焦则依赖距离测量。定位时首先要确认对焦模式、对焦区域和评价值曲线是否正常。

自动曝光通过测光统计(全局、中央重点、点测光)计算目标亮度,再调节曝光时间、模拟增益、数字增益和光圈。AE 的核心是“测光权重 + 目标亮度 + 收敛策略”。常见问题是测光区域被高光或暗部主导,导致主体过曝或欠曝。

自动白平衡通过估计场景色温,对 R、G、B 通道施加不同增益,使白色物体在图像中呈现为白色。AWB 的难点在于混合光源、大面积单色场景和低色温环境。定位时要关注色温估计值、增益收敛状态和灰点统计是否可信。

关键认识:AF、AE、AWB 不是三个孤立模块。AE 改变亮度会改变对焦评价值的对比度,AWB 改变通道增益会影响亮度统计,AF 的镜头位置变化又会改变画面内容。因此定位时必须考虑三者的耦合关系。

三、整体框架

本课程按照“概念—原理—数据—定位—复盘”的路径展开。下图展示了 3A 问题定位的整体框架:从用户现象出发,经过数据采集与模块划分,最终落到参数调整与验证闭环。

3A 问题定位整体框架 用户现象 模糊 / 明暗 / 偏色 数据采集 FV / 直方图 / 色温 模块划分 AF / AE / AWB 参数验证 闭环回归 AF 自动对焦 对焦模式 / 区域 / 评价值 CDAF / PDAF / 激光 失焦、拉风箱、对错目标 关键数据:FV 曲线、相位差 AE 自动曝光 测光权重 / 目标亮度 曝光时间 / 增益 / 光圈 过曝、欠曝、闪烁、振荡 关键数据:直方图、收敛曲线 AWB 自动白平衡 色温估计 / 灰点统计 R / G / B 通道增益 偏色、跳变、单色失效 关键数据:色温值、增益矩阵 耦合与验证闭环 亮度变化影响对焦评价值 · 通道增益影响亮度统计 · 镜头位置改变画面内容 · 需联合回归验证

从图中可以看到,定位不是单线流程,而是一个带反馈的闭环。任何一次参数调整,都要回到用户现象重新验证,确认没有引入新的问题。

四、方法流程与典型场景

推荐使用“五步定位法”:

  1. 复现现象:固定场景、光源、距离和拍摄参数,确认问题可稳定复现。
  2. 采集数据:抓取 3A 统计日志,包括 FV、亮度、色温和增益。
  3. 划分模块:判断问题主要落在 AF、AE 还是 AWB,或属于耦合问题。
  4. 定位参数:检查阈值、权重、收敛步长、场景切换判定等配置。
  5. 验证回归:修改后在同一场景复测,并补充边界场景。

例如,夜景拍摄出现“画面偏黄且噪点多”,表面看是 AWB 偏色,实际可能是 AE 拉高增益后噪声增大,导致灰点统计被污染,AWB 估计色温偏移。此时若只调 AWB 增益,问题会反复出现。正确做法是先确认 AE 的增益上限和降噪策略,再检查 AWB 在低照度下的色温估计范围。

提示:定位时优先看“数据是否合理”,再看“算法是否合理”。大多数现场问题来自场景与参数不匹配,而不是算法本身错误。

五、常见误区与复盘清单

误区 表现 正确做法
把偏色当曝光问题 画面发绿就调亮度 先看 R/G/B 增益与色温估计
把失焦当噪声问题 画面模糊就加降噪 先看 FV 曲线是否出现峰值
忽略收敛时间 切换场景瞬间截图判定失败 等待收敛完成后再评估
只调单模块 AF 正常但 AE 振荡 联合检查三者耦合关系
缺少边界场景 实验室正常,现场异常 补充逆光、夜景、混合光源测试
# 3A 定位常用日志字段示例
af.fv_curve      = [12, 45, 88, 130, 96, 60]   # 对焦评价值曲线
af.focus_pos     = 312                          # 当前镜头位置
ae.target_luma   = 120                          # 目标亮度
ae.current_luma  = 168                          # 当前亮度
ae.exposure_time = 8333                         # 曝光时间(us)
ae.analog_gain   = 4.0                          # 模拟增益
awb.color_temp   = 4200                         # 估计色温(K)
awb.gain_r       = 1.85                         # R 通道增益
awb.gain_b       = 1.42                         # B 通道增益
awb.converged    = false                        # 是否收敛