4. 3A算法参数配置:AE、AWB、AF与协同关系
3A算法(AE自动曝光、AWB自动白平衡、AF自动对焦)是Camera HAL层Tuning工具中最核心的参数配置模块。三个算法并非独立运行,而是通过共享统计信息与状态机协同工作,共同决定最终图像质量。本章从参数配置入手,深入分析每个模块的关键调优项,并揭示三者之间的耦合关系。
4.1 AE(自动曝光)参数配置
AE模块负责控制传感器曝光时间、模拟增益、数字增益以及光圈(若支持),使图像亮度稳定在目标亮度附近。Tuning工具中AE参数主要分为目标亮度、收敛速度、权重分布三大类。
4.1.1 核心参数表
| 参数名称 | 数据类型 | 典型范围 | 说明 |
|---|---|---|---|
| TargetLuma | uint16 | 80~180 | 目标亮度值(Y通道均值),决定画面整体明暗 |
| ExposureTimeMin / Max | uint32 | 1~33000 μs | 曝光时间上下限,影响帧率和运动模糊 |
| AnalogGainMin / Max | float | 1.0~16.0 | 模拟增益范围,决定低光噪声水平 |
| DigitalGainMax | float | 1.0~4.0 | 数字增益上限,过高会放大噪声 |
| ConvergenceSpeed | uint8 | 1~10 | 收敛速度,值越大响应越快但易过冲 |
| MeteringMode | enum | 0/1/2 | 测光模式:0=全局平均,1=中心加权,2=点测光 |
4.1.2 权重网格配置
AE支持自定义权重网格(Metering Grid),将画面划分为N×N区域,每个区域赋予不同权重。Tuning工具中通常以16×16网格为基础,通过调整各区域权重值实现特定场景的曝光偏好。
// AE权重网格配置示例(16×16,中心区域权重为4,边缘为1)
uint8_t ae_weight_grid[16][16] = {
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,2,2,2,2,2,2,2,2,1,1,1,1},
{1,1,1,2,2,3,3,3,3,3,3,2,2,1,1,1},
{1,1,2,2,3,4,4,4,4,4,4,3,2,2,1,1},
{1,2,2,3,4,4,4,4,4,4,4,4,3,2,2,1},
{1,2,3,4,4,4,4,4,4,4,4,4,4,3,2,1},
{1,2,3,4,4,4,4,4,4,4,4,4,4,3,2,1},
{1,2,3,4,4,4,4,4,4,4,4,4,4,3,2,1},
{1,2,3,4,4,4,4,4,4,4,4,4,4,3,2,1},
{1,2,3,4,4,4,4,4,4,4,4,4,4,3,2,1},
{1,2,3,4,4,4,4,4,4,4,4,4,4,3,2,1},
{1,2,2,3,4,4,4,4,4,4,4,4,3,2,2,1},
{1,1,2,2,3,4,4,4,4,4,4,3,2,2,1,1},
{1,1,1,2,2,3,3,3,3,3,3,2,2,1,1,1},
{1,1,1,1,2,2,2,2,2,2,2,2,1,1,1,1},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}
};
4.2 AWB(自动白平衡)参数配置
AWB模块通过分析图像中R/G/B通道比例,估计当前光源色温并计算增益,使白色物体在不同光源下呈现中性白色。Tuning工具中AWB参数包括色温范围、增益限幅、统计区域选择等。
4.2.1 色温与增益映射
AWB核心是建立色温到R/G、B/G增益的映射表。典型配置如下:
| 色温(K) | R/G增益 | B/G增益 | 典型光源 |
|---|---|---|---|
| 2500 | 1.80 | 1.20 | 白炽灯 |
| 3200 | 1.50 | 1.35 | 卤素灯 |
| 4000 | 1.30 | 1.50 | 荧光灯 |
| 5000 | 1.10 | 1.60 | 日光灯 |
| 6500 | 1.00 | 1.80 | 阴天 |
| 8000 | 0.90 | 2.00 | 阴影 |
4.2.2 统计区域与白点检测
AWB统计区域通常与AE网格独立配置,但可复用AE的权重网格。白点检测通过色度阈值筛选出可能为白色的像素点,避免大面积纯色(如蓝天、绿草)干扰色温估计。
// AWB白点检测阈值配置
typedef struct {
uint16_t Cb_min; // 蓝色色度下限
uint16_t Cb_max; // 蓝色色度上限
uint16_t Cr_min; // 红色色度下限
uint16_t Cr_max; // 红色色度上限
uint16_t Y_min; // 亮度下限(排除暗区)
uint16_t Y_max; // 亮度上限(排除过曝区)
} AwbWhitePointThreshold;
// 典型室内场景配置
AwbWhitePointThreshold indoor_threshold = {
.Cb_min = 120,
.Cb_max = 140,
.Cr_min = 130,
.Cr_max = 150,
.Y_min = 30,
.Y_max = 220
};
4.3 AF(自动对焦)参数配置
AF模块通过移动镜头位置使图像清晰度达到峰值。Tuning工具中AF参数包括搜索范围、步长、对比度阈值、触发模式等。
4.3.1 AF工作模式与参数
| 模式 | 触发方式 | 典型参数 | 适用场景 |
|---|---|---|---|
| CAF(连续自动对焦) | 持续检测场景变化 | SearchRange=200, StepSize=8 | 视频录制、运动物体 |
| SAF(单次自动对焦) | 用户触发或AE锁定后 | SearchRange=300, StepSize=4 | 拍照、静止场景 |
| TouchAF(触摸对焦) | 用户点击屏幕 | SearchRange=400, StepSize=2 | 精确对焦指定区域 |
4.3.2 对比度统计与峰值检测
AF算法基于图像对比度(Focus Value, FV)曲线寻找峰值。Tuning工具需配置FV计算窗口、高通滤波器系数以及峰值判定阈值。
// AF对比度统计窗口配置(ROI区域)
typedef struct {
uint16_t left; // 窗口左边界(像素)
uint16_t top; // 窗口上边界(像素)
uint16_t width; // 窗口宽度
uint16_t height; // 窗口高度
} AfRoi;
// 默认对焦区域:画面中心1/4区域
AfRoi default_af_roi = {
.left = 640,
.top = 480,
.width = 640,
.height = 480
};
// 高通滤波器系数(3×3 Sobel-like)
int8_t hp_filter[9] = {
-1, -1, -1,
-1, 8, -1,
-1, -1, -1
};
4.4 3A参数之间的协同关系
AE、AWB、AF并非独立运行,三者通过共享统计信息和状态机紧密耦合。理解协同关系是Tuning工具高级配置的关键。
4.4.1 协同架构图
4.4.2 关键协同关系表
| 协同对 | 耦合方式 | 典型冲突 | 调优策略 |
|---|---|---|---|
| AE ↔ AWB | 亮度变化影响色温估计 | AE快速收敛导致AWB误判色温 | AE收敛后延迟200ms再更新AWB增益 |
| AE ↔ AF | 曝光变化影响对比度计算 | 低光下AE增益过高导致FV噪声增大 | AF统计窗口避开过暗/过曝区域 |
| AWB ↔ AF | 色温变化影响镜头色差补偿 | 混合光源下AF精度下降 | AF搜索前锁定AWB增益 |
| AE+AWB+AF | 三者共享统计网格 | 统计窗口不匹配导致数据冲突 | 统一使用16×16网格,各模块独立配置ROI |
4.4.3 协同调优流程
- 锁定AE基线:在标准光源(D65,5000K)下调整AE参数,使TargetLuma稳定在目标值±3%以内。
- 校准AWB映射:在多个色温点(2500K~8000K)下采集R/G、B/G增益,确保白平衡误差Δuv < 0.005。
- 优化AF曲线:在AE/AWB锁定状态下,扫描镜头全行程记录FV曲线,调整搜索步长和峰值阈值。
- 联合压力测试:在场景切换(如从室内到室外)时监控3A收敛时间,确保总收敛时间 < 1.5秒。
- 边界条件验证:在极低光(< 5 lux)和极高光(> 10000 lux)下验证3A稳定性,必要时调整增益限幅和色温范围。
4.4.4 协同状态机示例
// 3A协同状态机简化实现
typedef enum {
STATE_IDLE,
STATE_AE_CONVERGING,
STATE_AWB_LOCKING,
STATE_AF_SCANNING,
STATE_ALL_LOCKED
} ThreeAState;
ThreeAState current_state = STATE_IDLE;
void ThreeA_Update(void) {
switch (current_state) {
case STATE_IDLE:
// 启动AE收敛
AE_StartConvergence();
current_state = STATE_AE_CONVERGING;
break;
case STATE_AE_CONVERGING:
if (AE_IsStable()) {
// AE稳定后延迟200ms启动AWB
DelayMs(200);
AWB_StartLock();
current_state = STATE_AWB_LOCKING;
}
break;
case STATE_AWB_LOCKING:
if (AWB_IsStable()) {
// AWB锁定后启动AF扫描
AF_StartScan();
current_state = STATE_AF_SCANNING;
}
break;
case STATE_AF_SCANNING:
if (AF_IsFocused()) {
current_state = STATE_ALL_LOCKED;
}
break;
case STATE_ALL_LOCKED:
// 持续监控场景变化
if (SceneChanged()) {
current_state = STATE_IDLE;
}
break;
}
}
4.5 本章小结
AE、AWB、AF的参数配置是Camera HAL层Tuning工具的核心技能。AE控制亮度与噪声,AWB还原真实色彩,AF确保图像清晰。三者通过统计引擎和协同状态机紧密耦合,调优时需遵循“先AE、再AWB、后AF”的基线校准顺序,并在联合测试中验证场景切换的稳定性。掌握3A协同关系,是进阶Tuning工程师的必备能力。