端侧AE算法落地细节学习

基础架构

所有代码来源于aealgo.c/.h,通过接口得知,他不仅有init/run/ctrl/exit,还覆盖了路线表、WDR、统计配置、平滑、Iris/DCIris、RawReplay、AEB、仿真、人脸联动等能力.

主流程框架

顺序是 参数更新检查 → 统计采集 → 防闪烁检测 → 条件早退/平滑输出 → 跑核心算法 → 下发曝光 → 写回结果。

其中,核心决策代码为

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
void AE_RunAlgo(CVI_U8 sID)
{
#if CHECK_AE_SIM
AE_HLprintf("RUN____AE\n");
#endif
sID = AE_CheckSensorID(sID);

if (AeInfo[sID].stStitchAttr.enable && !AeInfo[sID].stStitchAttr.bMainPipe &&
pstAeExposureAttrInfo[sID]->enOpType != OP_TYPE_MANUAL) {
CVI_U8 mainID = AE_SENSOR_NUM, i;

for (i = 0; i < AE_SENSOR_NUM; i++) {
if (AeInfo[i].stStitchAttr.bMainPipe &&
AeInfo[i].stStitchAttr.u8Group == AeInfo[sID].stStitchAttr.u8Group) {
mainID = i;
break;
}
}

if (mainID != AE_SENSOR_NUM) {
memcpy(AeInfo[sID].stExp, AeInfo[mainID].stExp, sizeof(AE_EXPOSURE) * AE_MAX_WDR_FRAME_NUM);
AE_UpdateFps(sID, AeInfo[sID].stExp[AE_LE].u32ExpTime);
return;
}
}
AE_CalculateFrameLuma(sID);
AE_AdjustTargetY(sID);
AE_CalculateBvStep(sID);
AE_CalFaceDetectLuma(sID);
AE_CalFaceDetectBvStep(sID);
AE_CalculateSmoothBvStep(sID);
AE_CalCurrentLvX100(sID);
if (AE_IsDCIris(sID)) {
AE_RunDCIris(sID, pstAeExposureAttrInfo[sID]->enOpType);
}

if (pstAeExposureAttrInfo[sID]->enOpType != OP_TYPE_MANUAL) {
if (!AE_IsUseDcIris(sID)) {
AE_CalculateConverge(sID);
AE_ConfigExposureRoute(sID);
if (AeInfo[sID].bEnableSmoothAE && !AeInfo[sID].bMeterEveryFrame)
AE_ConfigSmoothExposure(sID);
AE_ConfigExposure(sID);
}
}
AE_UpdateFps(sID, AeInfo[sID].stExp[AE_LE].u32ExpTime);
}

可落地能力

统计输入能力:读取 AE zone RGB 与直方图,计算中心亮度、全局亮度、亮四分位亮度,支持 LE/SE 双帧统计
目标亮度与误差控制:基于补偿、LV分段、WDR目标区间动态计算 target range,并将亮度误差转 BV step
收敛策略能力:支持快收敛/常规收敛、黑白延迟帧、高ISO策略、稳定判定、过冲细调,属于完整的工程化收敛器,不是单一 PID
曝光路由能力:支持 Route 与 RouteEx 两种模式(时间+总增益 / 时间+AG+DG+ISPDG),并在运行时做限幅、去重、慢快门插点
平滑曝光能力:支持 meter 周期内插值的平滑 APEX 序列,非 meter 帧也可取平滑点输出,降低闪烁感
WDR能力:支持 LE/SE 双通道主从曝光、曝光比上下限、SE时间约束、同增益/分增益模式,且结果回填 ExpRatio
防闪烁能力:有独立 flicker 检测模块,按 25/30fps 和特定快门档位做垂直亮度序列判定
Face/Smart AE能力:支持人脸区域权重融合与 SmartExposure 限制(最小/最大曝光系数、间隔等)
Iris/DCIris能力:支持 Iris 与 DC Iris 参数更新、PWM 初始化与 PID 控制(位置/增量/积分模式),并可自动启停
手动曝光能力:支持 OP_TYPE_MANUAL,手动时间/增益控制仍走全套限幅与配置流程
AEB能力:支持 Bracketing 启动、按 EV 设置、按索引设置与结束恢复
RawReplay/仿真能力:有 RAW replay、AE 仿真模式入口与日志机制,便于离线调试与回放

硬件落地细节

真正下发 sensor again/dgain table 映射、积分时间更新、增益更新、WDR比值约束、sensor真实值回填、ISPDGain补偿、调试保护流程
结果输出包含 ISO、Luma、HistError、稳定标志、WDR短帧信息、路由回传、DCF字段。

实现边界及注意点

flicker 检测对帧率和快门档位有硬条件,非 25/30 或非指定档位会直接不判定
aeCtrl 目前几乎无实质控制分支,扩展命令能力偏弱
能力虽全,但高度依赖 sensor 回调质量(fps_set/inttime_update/gains_update/calc_table)。