
050、AWB混合光源场景——多光源局部白平衡与AI方法在安霸与海思平台上的部署上个月在做一个车载后装记录仪的项目,客户反馈了一个极其刁钻的场景:地下车库出口,左边是暖黄光的钠灯,右边是正午阳光直射,车头正好压在白平衡分界线上。出来的画面,左边脸是蜡黄的,右边脸是惨白的,中间还有一条明显的色温断层。我们拿海思的样机去复现,发现ISP的全局AWB算法直接把整个画面拉到了5000K的中间值,结果两边都不讨好,人脸肤色像得了黄疸。这种混合光源场景,传统全局统计的AWB算法基本就是抓瞎,因为统计窗口里同时存在两种甚至三种不同色温的光源,统计出来的R/G、B/G直方图是双峰的,全局白平衡只能取一个折中的增益,必然导致局部偏色。先说清楚为什么全局AWB在混合光源下会崩。ISP的AWB模块通常是把画面分成若干统计网格,每个网格输出R/G和B/G的均值,然后算法根据这些统计值去估计一个全局色温,再换算成R、G、B三通道的增益。问题在于,当画面里同时存在3000K和6000K的光源时,统计网格里有些格子是3000K的响应,有些是6000K的响应,还有一部分格子是两种光源的混合响应。全局估计器拿这些数据去拟合一个色温,结果就是拟合出一个不存在的中间色温,然后整个画面套用这个色温的增益。更麻烦的是,如果画面里有人脸,人脸区域恰好落在混合区,肤色就会变得非常诡异。我们当时在安霸CV2x平台上先试了传统的多区域白平衡方案。安霸的ISP架构里,AWB统计模块支持把画面分成最多16个区域,每个区域独立输出统计值,然后可以给每个区域配置独立的增益。这个思路听起来很直接:把画面分成网格,每个网格独立做白平衡,然后做空间平滑过渡。但实际部署的时候踩了个大坑——安霸的AWB增益寄存器是全局的,你没法直接