4. RK AE 算法架构:模块组成、统计信息采集与曝光策略

自动曝光(AE)是 ISP 图像质量的核心闭环之一。RK AE 算法采用 “统计反馈 + 多策略决策” 架构,将硬件统计单元与软件策略解耦,使调优工程师能够通过参数配置灵活控制曝光行为。本章深入拆解 RK AE 的模块组成、统计信息采集机制以及曝光策略与决策逻辑。

4.1 RK AE 算法模块组成

RK AE 算法由四个核心模块构成,形成从数据采集到控制输出的完整流水线:

模块名称 功能描述 输入/输出
统计信息采集模块 从 RAW 域或 YUV 域提取亮度直方图、分区平均亮度、Flicker 检测等原始数据 输入:RAW/YUV 帧;输出:统计结构体
场景分析与分类模块 基于统计信息判断当前场景类型(室内/室外、逆光/顺光、低照度/高动态) 输入:统计结构体;输出:场景标签
曝光策略决策模块 根据场景标签与目标亮度,选择曝光策略(全局 AE、局部 AE、HDR AE) 输入:场景标签 + 目标亮度;输出:策略 ID
曝光参数计算模块 计算最终的曝光时间、模拟增益、数字增益、光圈(如有) 输入:策略 ID + 统计反馈;输出:3A 参数
调优提示: 在 RK 平台中,统计信息采集模块的配置直接影响后续所有决策。务必确认 ae_stats_config 中的分区权重与 ROI 设置符合实际场景需求。

4.2 统计信息采集机制

RK AE 的统计信息采集基于硬件 ISP 的 AE 统计引擎,以帧同步方式输出以下关键数据:

  • 亮度直方图(Histogram): 256 bins,覆盖 0~255 亮度范围,用于评估整体亮度分布与动态范围。
  • 分区平均亮度(Zone Mean Luma): 将图像划分为 15×15 或 9×9 网格,每个网格输出 Y 均值,用于局部亮度分析。
  • Flicker 检测状态: 检测 50Hz/60Hz 频闪,输出频闪频率与置信度。
  • 饱和度统计: 统计过曝像素占比(>250)与欠曝像素占比(<5),用于防饱和控制。
关键寄存器映射: 在 RK3588/RK356X 系列中,AE 统计信息通过 isp_stats 节点读取,数据结构定义在 rkisp_ae_stats 中。调优时可通过 media-ctl 工具实时 dump 统计信息进行验证。
// 伪代码:RK AE 统计信息结构体示例
struct rkisp_ae_stats {
    uint32_t frame_id;              // 帧序号
    uint32_t hist[256];             // 亮度直方图
    uint16_t zone_mean[15][15];     // 15x15 分区平均亮度
    uint8_t  flicker_freq;          // 0:无, 1:50Hz, 2:60Hz
    uint8_t  over_exposed_ratio;    // 过曝像素占比 (0~100)
    uint8_t  under_exposed_ratio;   // 欠曝像素占比 (0~100)
};

4.3 曝光策略与决策逻辑

RK AE 支持多种曝光策略,决策逻辑基于场景分类结果与用户配置的优先级。以下为典型策略对比:

策略名称 适用场景 决策依据 参数调整特点
全局 AE(Global AE) 均匀光照、顺光场景 全图平均亮度趋近目标值 优先调整曝光时间,增益次之
局部 AE(Local AE) 逆光、侧光、局部高亮 ROI 区域亮度权重提升 降低全局权重,提升 ROI 权重
HDR AE 高动态范围场景(明暗差异大) 直方图双峰分布检测 启用多帧合成或 DOL HDR 模式
防闪烁 AE(Anti-Flicker AE) 室内荧光灯/LED 光源 Flicker 检测状态为 50Hz/60Hz 曝光时间锁定为光源周期的整数倍
避坑指南: 在 HDR AE 策略下,如果统计信息中的过曝占比超过 15%,决策逻辑会强制降低曝光时间,此时需同步调整模拟增益以避免整体亮度骤降。建议在调优时设置 ae_hdr_over_exposure_threshold 为 10%~12%。

4.4 AE 决策逻辑流程

下图展示了 RK AE 从统计信息采集到最终参数输出的完整决策流程:

RK AE 决策逻辑流程图 RK AE 决策逻辑流程图 统计信息采集 场景分析分类 曝光策略选择 全局 AE 局部 AE HDR AE 曝光参数计算与输出 说明:策略选择基于场景分类结果,支持动态切换与优先级配置

4.5 曝光参数计算与反馈控制

在选定策略后,RK AE 通过 PID 控制器 或 查表法(LUT) 计算最终曝光参数。反馈控制逻辑如下:

  1. 误差计算: error = target_luma - current_luma
  2. 增益分配: 根据误差大小,按优先级分配曝光时间、模拟增益、数字增益。
  3. 限幅保护: 检查参数是否超出硬件限制(如最大曝光时间、最大增益),若超出则重新分配。
  4. 平滑滤波: 对输出参数进行 IIR 滤波,防止曝光突变导致闪烁。
// 伪代码:RK AE 参数计算核心逻辑
void rk_ae_calculate_params(ae_stats *stats, ae_params *params) {
    int error = params->target_luma - stats->current_luma;
    
    // 1. 优先调整曝光时间
    if (abs(error) > 10) {
        params->exp_time += error * 0.1;  // 比例控制
        params->exp_time = clamp(params->exp_time, MIN_EXP_TIME, MAX_EXP_TIME);
    }
    
    // 2. 若曝光时间饱和,调整模拟增益
    if (params->exp_time >= MAX_EXP_TIME && error > 5) {
        params->analog_gain += error * 0.05;
        params->analog_gain = clamp(params->analog_gain, MIN_GAIN, MAX_GAIN);
    }
    
    // 3. 数字增益作为最后手段
    if (params->analog_gain >= MAX_GAIN && error > 3) {
        params->digital_gain += error * 0.02;
    }
    
    // 4. 应用 IIR 平滑
    params->exp_time = 0.7 * params->exp_time + 0.3 * params->exp_time_prev;
    params->analog_gain = 0.8 * params->analog_gain + 0.2 * params->analog_gain_prev;
}
调优参数推荐: 在 RK 平台 ae_tuning_config 中,建议设置 iir_coefficient = 0.3(平滑强度),max_exp_time_ms = 30(防止低帧率),max_analog_gain_db = 24(避免噪声过大)。

4.6 本章小结

RK AE 算法架构通过 统计信息采集 → 场景分析 → 策略选择 → 参数计算 的闭环流程,实现了灵活且可配置的自动曝光控制。调优工程师需要重点掌握:

  • 统计信息的分区权重配置对局部 AE 策略的影响。
  • 场景分类阈值与策略切换的平滑过渡参数。
  • PID 或 LUT 参数对曝光收敛速度与稳定性的平衡。