3. 自动白平衡原理
自动白平衡(AWB)的目标,是让相机在不同光源下把“白色”还原为白色,从而避免画面整体偏黄、偏蓝或偏绿。它与自动曝光联动时,会直接影响色彩判断、肤色表现和画面稳定性。理解AWB,关键要抓住四个环节:色温估计、白点检测、增益计算和结果约束。灰度世界法与完美反射法是两类经典思路,前者假设整幅图像平均反射为灰,后者假设图像中存在高亮白点或镜面反射点。
一、核心原理:从色温到白点
不同光源具有不同色温。低色温如烛光、钨丝灯偏暖,画面容易偏橙黄;高色温如阴天、蓝天下偏冷,画面容易偏蓝。AWB的本质,是根据图像统计信息估计当前光源色温,再对R、G、B三通道施加不同增益,使白色区域在三通道中趋于平衡。通常以G通道为基准,计算R增益和B增益:
R_gain = G_avg / R_avg
B_gain = G_avg / B_avg
R' = R × R_gain
B' = B × B_gain
G' = G
如果R_avg偏低,说明画面偏蓝,需要提高R增益;如果B_avg偏低,说明画面偏黄,需要提高B增益。但直接按全图平均值计算,遇到大面积单色场景时容易失效,例如大片草地会让算法误判为偏绿,红色墙面会让算法误判为偏红。因此,现代AWB不会只依赖一种假设,而是结合白点检测、色温曲线和置信度约束。
二、灰度世界法与完美反射法
灰度世界法基于“自然场景平均反射率趋近于灰色”的假设。它统计整幅图像的R、G、B均值,并让三者趋于相等。优点是实现简单、计算量小,适合一般户外和混合光场景;缺点是对单色主导画面非常敏感。例如拍摄大面积蓝天时,算法会误认为画面偏蓝,从而过度增加红色增益,导致画面发黄。
完美反射法基于“图像中最亮像素接近白色”的假设。它通常选取亮度最高的若干像素,认为这些点应满足R≈G≈B,再据此计算增益。该方法对包含白色物体、镜面高光或高亮区域的场景效果较好,但如果画面中没有真正白点,或者高光过曝,就会把错误点当作白点,造成偏色。实际工程中常把灰度世界法与完美反射法结合,用灰度世界法提供全局估计,用完美反射法校正高光白点。
两种经典方法的对比:
- 灰度世界法:统计全图均值,假设平均反射为灰,适合色彩分布均衡的场景。
- 完美反射法:提取高亮白点,假设最亮点为白,适合有白色参考物的场景。
- 灰度世界法对单色场景敏感,完美反射法对过曝和无白点场景敏感。
- 工程中常将两者加权融合,并加入色温曲线限制增益范围。
三、白点检测与色温估计
白点检测是AWB中最关键也最容易被忽视的步骤。它的任务是从图像中找出“可能是白色”的像素,而不是把所有亮像素都当成白点。常见做法是把图像从RGB转换到YCbCr或Lab空间,利用色度分量判断像素是否接近中性色。例如在YCbCr中,Cb和Cr接近128的区域通常更接近灰白;在Lab中,a和b接近0的区域更接近中性色。
白点检测通常包括以下步骤:
- 将图像分块,剔除过暗、过曝和低饱和度区域。
- 在色度平面上筛选接近中性色的像素,形成候选白点集合。
- 对候选点做聚类或直方图统计,排除零散噪声点。
- 根据候选点计算R/G、B/G比值,映射到色温曲线。
- 结合场景亮度、曝光状态和上一帧结果,输出平滑后的色温与增益。
色温估计并不是直接输出一个绝对温度值,而是把白点统计结果映射到一条“白点轨迹”或“色温曲线”上。不同色温下,白点在色度平面上的位置不同。算法通过查找最接近的曲线点,得到当前光源的估计色温,再查表得到R、B增益。这样可以把增益限制在合理范围内,避免灰度世界法在单色场景中产生极端偏色。
四、常见AWB算法流程与工程案例
在实际相机管线中,AWB通常位于RAW域或RGB域,与自动曝光(AE)紧密配合。一个典型的AWB流程如下:
1. 获取统计信息:分块计算R/G/B均值、亮度直方图、色度直方图
2. 白点检测:筛选低饱和、中高亮度、色度接近中性色的像素
3. 色温估计:将白点映射到色温曲线,得到估计色温T
4. 增益计算:查表得到R_gain、B_gain,并做归一化
5. 时域平滑:与上一帧增益加权,限制单帧变化幅度
6. 输出应用:将增益写入ISP白平衡模块,完成色彩校正
以室内钨丝灯场景为例,画面整体偏黄,白点检测会发现候选白点的B/G比值偏低。色温估计模块将其映射到约2800K附近,增益计算输出较高的B_gain和较低的R_gain,使画面恢复中性。若此时AE正在提升曝光,AWB应适当降低更新速度,否则曝光变化会改变白点统计,导致色温估计来回跳动,出现“色彩呼吸”现象。
常见误区:把AWB当成单纯的“调色”模块,忽略它与AE、ISP管线、传感器响应的耦合。实际上,曝光不足时噪声会污染白点检测;曝光过度时高光剪切会破坏完美反射法;不同镜头的暗角和色差也会影响白点分布。因此,AWB调优必须结合曝光状态、镜头阴影校正和噪声水平一起看。
五、方法对比与调优清单
| 方法 | 核心假设 | 优点 | 局限 | 适用场景 |
|---|---|---|---|---|
| 灰度世界法 | 全图平均反射为灰 | 简单、快速、无需白点 | 单色场景易偏色 | 色彩分布均衡的户外 |
| 完美反射法 | 最亮像素为白 | 有白点时精度高 | 无白点或过曝失效 | 含白色物体的室内 |
| 白点检测+色温曲线 | 中性色像素可聚类 | 鲁棒性好、可控性强 | 依赖色度空间和阈值 | 手机、安防、车载 |
| 融合算法 | 多假设加权 | 兼顾全局与局部 | 参数多、调优复杂 | 复杂光照与动态场景 |
调优时建议按以下清单逐项检查:
- 白点检测阈值是否随亮度和噪声自适应,而不是固定值。
- 色温曲线是否覆盖常见光源,并留出边界保护。
- R/B增益是否限制在合理范围,避免极端偏色。
- 时域平滑是否足够,避免帧间闪烁和色彩呼吸。
- 与AE联动时,曝光变化期间是否降低AWB更新权重。
- 低照度下是否降低AWB强度,防止噪声导致误判。
总结来看,灰度世界法提供全局色彩平衡的基础,完美反射法提供白点参考,白点检测和色温估计则把两者连接成可工程化的AWB流程。真正稳定的AWB,不是追求单帧最准,而是在不同光源、不同曝光和不同场景下保持色彩一致、过渡自然,并与AE形成协同。