
106、AWB 灰区检测:白点提取、灰区建模与离群点剔除算法从一次“偏色翻车”说起去年夏天,某款旗舰机在户外草坪场景下,AWB 把绿色拍成了偏黄绿,用户反馈“像蒙了一层雾”。我拿到 log 一看,灰区检测模块把大量绿色像素当成了“灰点”参与白平衡计算——因为那片草坪的 R/G 和 B/G 比值恰好落在我们预设的灰区边界附近。更离谱的是,算法还把几块被阳光直射的白色石头给剔除了,理由是“亮度太高,可能是高光溢出”。这就是典型的灰区检测翻车:白点提取不干净,灰区建模太死板,离群点剔除又过于激进。从那以后,我花了三个月重构了灰区检测 pipeline。今天这篇笔记,就聊聊我在这个模块里踩过的坑和最终落地的方案。白点提取:别把“白”想得太简单很多人以为白点就是 RGB 三个通道值接近的像素。错。在 ISP 的 raw 域,白点指的是“场景中反射光源色温的物体表面”,它不一定是视觉上的白色。比如一块灰色水泥地,在 5000K 光源下,它的 R/G 和 B/G 比值就代表了光源色温。第一步:亮度筛选先做亮度门限。太暗的像素噪声大,太亮的像素可能已经饱和。我一般用 Y 分量(亮度)做双门限:// 这里踩过坑:直接用RGB均值做亮度会受色温影响//