086、ISP 统计信息系统的设计:AE、AWB、AF 直方图、ROI 统计与输出格式
从一次“过曝门”事件说起
去年夏天,某款旗舰机在户外强光下拍出的照片,天空一片死白,人脸却黑得像剪影。用户骂声一片,我们连夜定位问题——AE(自动曝光)统计模块输出的亮度直方图,在强光场景下居然把高光区域的像素全部截断了。原因很简单:统计窗口的ROI(感兴趣区域)没有覆盖到天空,而全局统计又因为传感器饱和区被算法错误地当作“有效亮度”处理了。更讽刺的是,AWB(自动白平衡)模块也在同一帧里把色温算偏了,因为ROI统计只取了画面中央的草地,忽略了边缘的蓝天。
那次之后,我彻底重构了统计信息系统的设计思路。今天这篇笔记,就聊聊ISP里最基础也最容易翻车的三个统计子系统:AE、AWB、AF,以及它们背后的直方图、ROI和输出格式设计。
统计信息系统的骨架:从硬件到软件的数据流
ISP的统计信息,本质上是硬件加速器对原始图像数据(RAW域或RGB域)的“摘要”。它不像CPU那样逐像素处理,而是通过可编程的统计引擎,在帧同步信号驱动下,以流水线方式输出一组数值。这些数值被3A算法(AE/AWB/AF)消费,反过来调整传感器曝光、增益、白平衡系数和镜头位置。
设计统计系统时,最容易被忽视的是“时间对齐”。硬件统计引擎通常工作在ISP管线的前端(比如Bayer域),而3A算法运行在CPU上,两者之间隔着几帧的延迟。如果你在代码里直接读取当前帧的统计值去控制下一帧的曝光,大概率会振荡——因为统计值对应的场景已经变了。正确的做法是给每个统计帧打上时间戳,并在算法里做