1. 3A算法全景概览:AE/AWB/AF的基本概念、三者之间的耦合关系、3A在ISP Pipeline中的位置
各位同学,咱们今天正式开讲ISP 3A算法。说实话,我做了这么多年图像算法,3A一直是ISP里最让人头疼、也最有意思的部分。你想想看,一个摄像头模组装到手机上,光线忽明忽暗、物体忽远忽近、颜色忽冷忽暖——要让每一帧画面都清晰、曝光准确、颜色自然,全靠这三个“A”在背后默默干活。
1.1 什么是3A?三个核心模块
3A是三个独立但又紧密配合的算法模块的统称:
- AE(Auto Exposure,自动曝光):控制进光量,让画面不暗不亮
- AWB(Auto White Balance,自动白平衡):校正色温,让白色在不同光源下看起来还是白色
- AF(Auto Focus,自动对焦):调整镜头位置,让目标物体清晰
我刚开始接触3A时,总觉得这三个东西各管各的,没什么交集。后来在项目里踩了坑才明白——它们之间的耦合关系,才是3A调试的真正难点。
1.2 AE:自动曝光的核心逻辑
AE的目标很简单:让图像的平均亮度落在目标范围内。但实现起来,要考虑的东西可不少。
| AE控制参数 | 作用 | 典型范围 |
|---|---|---|
| 曝光时间(Exposure Time) | 控制传感器感光时长 | 1/10000s ~ 30s |
| 模拟增益(Analog Gain) | 放大传感器输出信号 | 1x ~ 16x |
| 数字增益(Digital Gain) | 数字域放大信号 | 1x ~ 8x |
| 光圈(Aperture) | 控制进光孔大小 | F1.4 ~ F16 |
AE的经典策略是:先调曝光时间,再调增益,最后才动光圈。为什么?因为曝光时间直接影响运动模糊,增益会引入噪声,光圈影响景深。优先级搞反了,画面质量就会出问题。
1.3 AWB:让白色回归白色
AWB要解决的是色温问题。人眼有色彩恒常性,不管在日光灯下还是烛光下,看白纸都觉得是白的。但传感器没这个能力,它老老实实地记录光谱——所以需要算法来校正。
AWB的典型流程:
- 统计图像中的色温信息(通常用R/G、B/G比值)
- 判断当前光源色温(通过色温曲线或色温估计模型)
- 计算R、B通道的增益,让灰点落在白平衡目标线上
常用的AWB算法有:
- 灰度世界法(Gray World):假设场景平均色是灰色,R/G/B均值相等
- 完美反射法(Perfect Reflector):假设场景中最亮的点是白色
- 色温估计法(Color Temperature Estimation):通过色温曲线查表
1.4 AF:让焦点落在该落的地方
AF的核心是找到镜头的最佳位置,让目标物体的对比度最高。常见的AF方案有三种:
| AF类型 | 原理 | 优点 | 缺点 |
|---|---|---|---|
| 对比度检测(CDAF) | 搜索对比度峰值位置 | 精度高、算法简单 | 速度慢、会来回搜索 |
| 相位检测(PDAF) | 通过相位差计算偏移量 | 速度快、一次到位 | 需要专用像素、低光性能差 |
| 激光/ToF辅助 | 直接测量距离 | 不受纹理影响 | 成本高、功耗大 |
现在主流手机基本都是PDAF+CDAF混合方案——先用PDAF快速粗调,再用CDAF精调。嗯,这里要注意:PDAF在低光下容易不准,这时候我会强制切回CDAF模式。
1.5 三者的耦合关系——这才是重点
单独看每个A,都不算复杂。但把它们放在一起,问题就来了。
举个我实际遇到的例子:
- AE在调整曝光时间,画面亮度变化 → 影响AWB的色温统计 → AWB输出错误的增益 → 画面颜色偏了
- AF在移动镜头 → 画面模糊 → AE统计的亮度值偏低 → AE增加曝光 → 画面过曝
- AWB校正颜色 → 改变了R/B通道增益 → 影响了AE的亮度统计权重 → AE重新调整曝光
你看,这三个模块互相影响,形成了一个闭环。如果各自独立跑,很容易出现震荡——画面忽明忽暗、颜色忽冷忽暖、对焦来回抽风。
1.6 3A在ISP Pipeline中的位置
下面这张图展示了3A在ISP处理流程中的位置。注意,3A不是独立运行的,它们需要从ISP的统计模块获取数据,然后输出控制参数给传感器和ISP模块。
从图中可以看到:
- 传感器输出原始Bayer数据给ISP处理链路
- ISP处理模块(Bayer处理、去马赛克、色彩校正、降噪、锐化、HDR合成等)逐级处理图像
- 统计模块从处理链路中提取亮度直方图、色温统计、对比度统计等信息
- 3A算法根据统计信息计算控制参数,反馈给传感器(曝光时间、增益)和ISP模块(白平衡增益、对焦位置)
1.7 本章小结
好了,这一章我们走了一遍3A的全景:
- AE管亮度,AWB管颜色,AF管清晰度
- 三者之间存在强耦合,调试时要统一考虑
- 3A在ISP Pipeline中处于“控制中心”的位置,依赖统计模块提供数据