1. 3A算法全景概览:AE/AWB/AF基础原理、高通平台3A架构、调试工具链介绍
各位同学,欢迎来到《高通相机3A算法参数标定与场景适配》的第一章。
做相机调试这么多年,我经常被问到同一个问题:「3A到底调的是什么?」说白了,3A就是让摄像头学会「看」——看得清亮度、看得准颜色、看得稳焦点。没有3A,你拍出来的照片要么过曝、要么偏色、要么糊成一片。
这一章,我们先搭个全景框架。不急着调参数,先把AE、AWB、AF各自干什么、高通平台怎么组织它们、以及我们手头有哪些调试工具,理清楚。
1.1 三大核心算法:AE / AWB / AF
3A是三个独立又耦合的模块。我习惯把它们比作一个摄影团队:
- AE(自动曝光)——灯光师,负责控制进光量
- AWB(自动白平衡)——调色师,负责还原真实色彩
- AF(自动对焦)——焦点员,负责让主体清晰
下面逐个拆开讲。
AE — 自动曝光
AE的目标很简单:让图像亮度落在人眼舒服的范围。它通过调节三个参数实现:
- 曝光时间(Exposure Time):传感器感光时长,单位毫秒
- 模拟增益(Analog Gain):传感器内部放大倍数
- 数字增益(Digital Gain):ISP数字域放大倍数
高通平台里,AE策略通常走「先调曝光时间,再调增益」的路线。为什么?因为增益会引入噪声,曝光时间不会。我早期调一个低光场景时,发现增益拉太高,暗部全是噪点。后来强制限制最大增益,优先拉长曝光时间,效果立竿见影。
AWB — 自动白平衡
AWB负责把「白色」还原成白色。不同光源色温不同——烛光偏红(约2000K),日光偏蓝(约5500K)。传感器本身没有色温概念,拍出来的白色可能偏橙或偏蓝。
AWB的核心是估算当前光源色温,然后对RGB通道做增益补偿。高通平台用的是色温曲线 + 统计分区的方法:
- 把画面分成若干区域,统计每个区域的R/G、B/G比值
- 将这些比值映射到预先标定的色温曲线上
- 选出置信度最高的色温,计算增益
你想想看,如果画面里全是红色物体,AWB会不会把红色误判成低色温光源?会的。这就是AWB最头疼的问题——大色块干扰。我调过一台扫码设备,背景是深蓝色,AWB死活把蓝色往白色拉,结果整个画面发黄。最后靠调整色温曲线的置信度阈值才解决。
AF — 自动对焦
AF通过移动镜头找到最清晰的焦平面。高通平台主流方案是反差式对焦(CDAF)和相位对焦(PDAF)混合使用。
- CDAF:搜索对比度最大的位置,精度高但慢
- PDAF:通过专用像素检测相位差,速度快但受光照影响大
高通的做法是:先用PDAF快速跳到大致位置,再用CDAF微调收尾。这个策略在大部分场景下表现不错,但低光时PDAF容易失效,得回退到纯CDAF。
1.2 高通平台3A架构
高通的3A架构,说白了就是一套分层协作的框架。从上到下分三层:
| 层级 | 组件 | 职责 |
|---|---|---|
| 应用层 | Camera HAL / App | 下发策略、接收结果、控制流程 |
| 算法层 | AE / AWB / AF 算法库 | 执行核心计算、输出参数 |
| 驱动层 | Sensor / Actuator / ISP 驱动 | 执行硬件控制、上报状态 |
高通把3A算法封装在mm-camera或camx框架里。每个模块独立运行,通过消息队列通信。举个例子:AE算出新的曝光时间后,会发消息给ISP驱动,驱动再写寄存器。整个过程在帧消隐期内完成,不影响帧率。
我个人觉得,高通架构最聪明的地方是策略与算法分离。算法只负责「怎么算」,策略决定「什么时候算、算完怎么用」。这样换算法库不用动策略,换策略不用动算法。调试时,我们通常只改策略层的XML参数,不动算法核心。
1.3 调试工具链介绍
工具链是调试的「手」和「眼」。高通平台主要靠下面这几样:
1. QACT(Qualcomm Advanced Camera Tuning)
这是高通官方的调优工具,也是我们最常用的。它提供:
- 实时预览 + 参数调节滑块
- 3A参数在线修改(不用重新编译)
- 统计数据显示(亮度直方图、色温分布、对焦值曲线)
我习惯把QACT接上设备后,先看三个窗口:预览图、直方图、3A状态日志。这三个窗口能告诉你80%的问题。
2. CHI(Camera Hardware Interface)调试节点
高通从camx框架开始,把调试接口暴露在/sys/devices/platform/...或/d/文件系统下。你可以通过adb直接读写节点:
# 读取当前曝光时间
adb shell cat /d/camera/sensor/exposure
# 强制锁定AWB色温
adb shell echo "5500" > /d/camera/awb/force_ct
这个方式在自动化测试里特别有用。我写过一个脚本,遍历100组AWB参数,每改一组拍一张图,全自动跑完再挑最优。
3. 抓图与日志工具
- camx_dump:抓取原始帧和3A统计信息
- logcat + grep:过滤3A模块日志
- perfetto / systrace:分析3A耗时和帧率
1.4 3A算法全景架构图
下面这张图,把AE、AWB、AF在高通平台上的数据流和协作关系画出来了。建议你仔细看几遍,后面每一章都会回到这张图。
这张图里,数据从传感器出来,经过ISP处理,进入3A统计引擎。统计引擎把亮度、色温、对焦值分别喂给AE、AWB、AF。三个算法算出结果后,交给策略层做决策,最终通过驱动层控制硬件。整个环路每帧跑一次。
嗯,这里要注意:三个算法不是完全独立的。AE和AWB共用统计窗口,AF的合焦状态会影响AE的目标亮度(微距场景下亮度会变化)。调试时不能只盯着一个模块看。
1.5 本章小结
这一章我们做了三件事:
- 理清了AE、AWB、AF各自干什么、怎么干
- 看懂了高通3A的分层架构和协作方式
- 认识了QACT、CHI节点、抓图日志等调试工具