094、AWB的AI化实践——从灰度世界到语义分割驱动白平衡的演进,如何用场景语义修正色温估计偏差

📅 2026/8/19 5:49:36
094、AWB的AI化实践——从灰度世界到语义分割驱动白平衡的演进,如何用场景语义修正色温估计偏差
094、AWB的AI化实践——从灰度世界到语义分割驱动白平衡的演进,如何用场景语义修正色温估计偏差去年秋天,我接手了一个量产项目的AWB疑难杂症。客户反馈,在傍晚的公园里,手机拍出来的天空是紫的,草地是黄的,人脸像得了黄疸。我们抓了log,看了统计值,色温估计在6500K到7500K之间疯狂跳变,AWB增益也跟着抖。最要命的是,这个场景里明明有大面积的绿色植被和天空,按灰度世界理论,RGB三个通道的均值应该趋于一致,但实际统计下来,G通道的均值明显偏低,R和B通道的均值被天空和草地拉得离谱。我当时的第一反应是检查统计窗口的权重配置,但翻遍了寄存器,发现权重没问题,问题出在统计本身——这个场景的“灰色”假设根本不成立。灰度世界算法有个致命前提:场景中所有颜色的平均反射率是灰色的。但真实世界哪有那么多灰色?傍晚的公园,天空是橙红色的,草地是深绿的,人脸是偏黄的,这些高饱和度的颜色混在一起,平均下来根本不是灰色,而是偏暖的棕色。于是AWB算法就拼命往冷色方向拉,试图把这种“伪暖色”纠正回来,结果就是天空变紫、草地变黄。这就是灰度世界在复杂场景下的根因失效——它不是算法错了,是假设错了。后来我们试了完美反射法,假设场景中最亮的点代表白色。但傍晚的公园里,最亮的点是天空的云彩,那云彩被夕阳染成了橙红色,完美反射法直接把这个橙红色当成了白色参考,色温估计直接崩到3000K以下。再试了动态阈值法,把像素按亮度分成多个区间分别统计,但问题依旧——因为场景里根本没有一个区间是真正的中性色。那段时间我天天盯着色温曲线看,发现一个规律:当场景里出现大面积纯色物体时,传统统计法必然失效。纯色的草地、纯色的天空、纯色的墙面,这些在统计上都是“毒药”。而人眼之所以能准确判断白