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}
};
调优提示:在逆光场景下,建议降低中心区域权重并提高边缘权重,避免主体过暗。在夜景模式下,适当降低TargetLuma值(如100~120)可减少噪声放大。

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
};
常见问题:若AWB在混合光源下频繁跳变,应增大色温平滑滤波系数(如从0.3调整为0.6),同时检查白点检测阈值是否过窄导致有效统计点不足。

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
};
关键指标:AF收敛时间应控制在200ms以内(SAF模式),CAF模式下FV波动幅度应小于5%。若出现反复拉风箱现象,应增大峰值判定滞后阈值(Hysteresis)。

4.4 3A参数之间的协同关系

AE、AWB、AF并非独立运行,三者通过共享统计信息和状态机紧密耦合。理解协同关系是Tuning工具高级配置的关键。

4.4.1 协同架构图

3A算法协同架构 图像传感器 3A统计引擎 AE算法 曝光/增益控制 AWB算法 白平衡增益 AF算法 镜头位置控制 3A协同决策与优先级仲裁 反馈控制 说明:统计引擎从传感器获取原始数据,分发至AE/AWB/AF模块;各模块计算结果经协同决策仲裁后,统一控制传感器与镜头

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 协同调优流程

  1. 锁定AE基线:在标准光源(D65,5000K)下调整AE参数,使TargetLuma稳定在目标值±3%以内。
  2. 校准AWB映射:在多个色温点(2500K~8000K)下采集R/G、B/G增益,确保白平衡误差Δuv < 0.005。
  3. 优化AF曲线:在AE/AWB锁定状态下,扫描镜头全行程记录FV曲线,调整搜索步长和峰值阈值。
  4. 联合压力测试:在场景切换(如从室内到室外)时监控3A收敛时间,确保总收敛时间 < 1.5秒。
  5. 边界条件验证:在极低光(< 5 lux)和极高光(> 10000 lux)下验证3A稳定性,必要时调整增益限幅和色温范围。
实战经验:在HAL层Tuning工具中,建议将3A协同状态机设计为有限状态机(FSM),包含IDLE、AE_CONVERGING、AWB_LOCKED、AF_SCANNING等状态。状态切换时需插入100~300ms的稳定延迟,避免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工程师的必备能力。