145、洞察驱动的实战标题——3A联动的“状态机设计“——AE/AF/AWB的时序协调与场景切换时的参数继承策略,避免“曝光跳变“和“色彩闪烁“
145、洞察驱动的实战标题——3A联动的"状态机设计"——AE/AF/AWB的时序协调与场景切换时的参数继承策略,避免"曝光跳变"和"色彩闪烁"去年秋天,我在某款旗舰机型上追一个极其刁钻的bug。用户从室内走到室外,取景画面先是猛地一白,然后像呼吸灯一样来回闪烁,持续两三秒才稳定下来。更邪门的是,色彩也跟着抽风——白墙一会儿偏蓝一会儿偏黄,跟霓虹灯似的。测试部同事在bug单上写“曝光跳变+色彩闪烁”,我盯着log看了整整两天,最后发现根子不在AE、AF、AWB任何一个单独模块上,而在它们之间的“交接仪式”上。3A联动的状态机,说白了就是三个各有脾气的子系统在抢同一个传感器和ISP资源。AE要调曝光时间和增益,AF要挪镜头位置,AWB要算白平衡系数——这三件事不能同时干,否则互相踩脚。但传统方案里,每个A都是独立的状态机,各自维护自己的状态,切换场景时各跑各的,于是灾难就来了。先说那个“曝光跳变”。场景切换瞬间,AE从室内低照度状态跳到室外高照度状态,如果直接按新场景的目标亮度去算曝光参数,曝光时间可能从1/30秒直接砍到1/1000秒,增益从6倍掉到1倍。这个跳变幅度太大,ISP的线性响应根本跟不上,画面自然先过曝再猛拉回来。更麻烦的是,AF这时候也在动——镜头从近焦推到远焦,画面内容变了,AE统计窗口里的亮度分布又变了,于是AE刚算好的参数又得重来。两个状态机互相触发,形成正反馈震荡。AWB那边更热闹。室内白炽灯色温2700K,室外日光5500K,AWB状态机如果直接切换色温估计值,白平衡增益会瞬间跳变。但AWB有个特性——它依赖画面里的白色参考区域,而AF移动镜头时,画面内容在变,白色参考区域也在变。于是AWB刚收敛到室内色温,AF一动