1. AWB 概述:什么是自动白平衡
大家好,欢迎来到《AWB算法:色温估计与场景适配实战》的第一章。
自动白平衡,英文叫 Auto White Balance,简称 AWB。说白了,就是让相机在不同光线下,都能把白色拍成白色。你想想看,一张白纸在日光灯下偏蓝,在白炽灯下偏黄,但人眼看它还是白的。相机要做的,就是模拟这个能力。
我刚开始做 ISP 时,觉得白平衡不就是调个 RGB 增益嘛,有什么难的?后来在项目里被各种奇葩光源折磨过,才明白这里面的坑有多深。嗯,咱们慢慢聊。
1.1 人眼视觉系统的色彩恒常性
为什么人眼能自动纠正色偏?这得归功于我们大脑的“色彩恒常性”。
简单说,就是大脑会根据场景中的参考信息,自动推断出光源颜色,然后“减去”这个色偏。比如你走进一间暖色调的咖啡馆,一开始觉得灯光很黄,过几分钟就适应了,白墙看起来还是白的。
这个机制,本质上是一种高级的“场景理解”。
核心要点: 人眼的色彩恒常性 = 光源估计 + 色适应 + 记忆色修正。相机 AWB 只做到了前两步,第三步还在研究中。
我在一个手机项目里遇到过极端案例:用户在地下停车场拍白色车身,结果拍出来是蓝灰色的。用户投诉说“你们相机色偏严重”。其实是因为停车场用的是荧光灯,色温偏高。人眼在现场已经适应了,但相机没适应。这就是色彩恒常性缺失的典型表现。
1.2 AWB 在 ISP Pipeline 中的位置
一张 RAW 图从 Sensor 出来,到最终显示在屏幕上,要经过一整套 ISP 流水线。AWB 在哪个环节?
我习惯把 ISP Pipeline 分成几个关键阶段:
- 黑电平校正(BLC) — 去掉 Sensor 暗电流噪声
- 去噪(Denoise) — 降低噪声,为后续处理打基础
- 去马赛克(Demosaic) — 把 Bayer 格式转成 RGB
- 白平衡(AWB) — 就是我们今天的主角
- 颜色校正(CCM) — 把相机 RGB 转到标准色域
- Gamma 校正 / 色调映射 — 调整亮度和对比度
AWB 通常放在 Demosaic 之后、CCM 之前。为什么?因为白平衡需要在 RGB 空间里做,而且它会影响后续所有颜色处理。顺序错了,颜色就全乱了。
避坑指南: 我曾经在一个项目里把 AWB 放到了 CCM 之后,结果颜色怎么调都调不对。后来发现是顺序搞反了。记住:先做白平衡,再做颜色校正。顺序不能乱。
下面这张图,是我自己画的 ISP Pipeline 中 AWB 的位置。你看一眼就明白了。
1.3 AWB 的核心任务
AWB 要干三件事:
| 任务 | 说明 | 我的经验 |
|---|---|---|
| 色温估计 | 判断当前光源的色温值(K) | 纯色温估计不准,要结合场景 |
| 增益计算 | 算出 R/G/B 通道的增益系数 | 增益不能太大,否则噪声爆炸 |
| 场景适配 | 根据场景类型调整策略 | 室内外、顺逆光,策略完全不同 |
这三步环环相扣。色温估计错了,后面全白搭。我见过不少算法,色温估计做得挺好,但场景适配没跟上,结果在复杂光源下还是翻车。
小技巧: 做 AWB 时,别只盯着色温值。多关注场景中的“白色参考点”——比如白墙、白纸、云朵。这些区域才是判断色偏的关键。
1.4 为什么 AWB 这么难?
你可能会问:不就是调三个通道的增益吗?为什么还有这么多算法?
原因有三:
- 光源复杂: 混合光源(日光+灯光)、低色温(烛光)、高色温(阴天),每种情况都不一样。
- 场景多样: 室内、室外、夜景、逆光、人像、风景……同一个色温,不同场景的处理方式完全不同。
- 用户期望: 用户要的不是“准确”,而是“看着舒服”。有时候偏暖一点反而更讨喜。
我记得有一次做户外婚礼拍摄的算法优化。现场有自然光、舞台灯光、还有 LED 装饰灯,三种光源混在一起。AWB 怎么调都调不好。后来我加了一个“多光源估计”模块,才勉强搞定。嗯,这个后面会专门讲。
1.5 本章小结
这一章我们聊了:
- 什么是自动白平衡——让白色在各种光下都是白色
- 人眼的色彩恒常性——大脑自动纠正色偏的能力
- AWB 在 ISP Pipeline 中的位置——Demosaic 之后、CCM 之前
- AWB 的三个核心任务:色温估计、增益计算、场景适配