1. AWB 基础概念:色温、色彩恒常性与 ISP 中的位置
各位同学好,我是你们这门课的老张。做了十几年图像处理,说实话,白平衡这关要是没过,后面调啥都是白搭。今天咱们先打好地基,聊聊 AWB 到底在干什么。
1.1 色温与白平衡的关系
先问个问题:为什么阴天拍的照片发蓝,而黄昏拍的发黄?
这就要说到 色温 了。色温不是温度,而是光源颜色的度量。单位是开尔文(K)。
| 光源场景 | 典型色温(K) | 人眼感觉 |
|---|---|---|
| 烛光 / 日出日落 | 1800 - 3000 | 暖黄 |
| 白炽灯 | 2800 - 3200 | 暖白 |
| 日光 / 正午 | 5000 - 6500 | 中性白 |
| 阴天 / 阴影 | 6500 - 8000 | 冷蓝 |
| 蓝天(无云) | 10000 - 15000 | 深蓝 |
你看,色温越低,光越偏红黄;色温越高,光越偏蓝紫。这个规律跟直觉是反的——低色温反而“暖”,高色温反而“冷”。
那白平衡是干嘛的?说白了,就是让传感器在不同色温下,都能把“白色”拍成白色。如果光源偏黄,传感器拍到的白色物体就会偏黄。AWB 算法要做的就是把这个黄色“扣掉”,让白色恢复成白色。
核心公式(简化版):
Rout = Rin × R_gain
Gout = Gin × G_gain
Bout = Bin × B_gain
其中 R_gain、G_gain、B_gain 就是 AWB 算出来的三通道增益。通常 G_gain 固定为 1.0,只调 R 和 B。
我个人习惯把色温理解成“光源的身份证”。拿到一张图,先猜它是在什么色温下拍的,然后反向补偿。这个思路贯穿整个 AWB 算法。
1.2 人眼视觉系统与色彩恒常性
你有没有想过,为什么人眼在烛光下看白纸,还是觉得它是白的?
这就是 色彩恒常性。人脑会自动“扣除”光源颜色,还原物体本色。但 CMOS 传感器没这个本事,它只会老老实实记录进入镜头的光线。所以 AWB 本质上是在模仿人眼的色彩恒常性。
我记得刚入行时,老板让我调一个室内场景的 AWB。我调了半天,总觉得颜色不对。后来才发现,人眼在混合光源下(比如窗户进来的日光 + 头顶的荧光灯)会自动取一个“折中”感知,但传感器不会。它会把两种光源的色温混在一起,导致画面局部偏色。嗯,这里要注意,混合光源是 AWB 的噩梦。
避坑指南: 我曾经在一个项目中,把 AWB 调得特别“准”,结果用户反馈说照片太冷。后来发现,用户习惯了暖色调的“记忆色”。所以 AWB 不是越准越好,而是要符合人眼的审美偏好。说白了,算法要带点“人情味”。
1.3 AWB 在 ISP Pipeline 中的位置
ISP(Image Signal Processor)是一条流水线。AWB 不是第一个,也不是最后一个,但它的位置非常关键。
下面这张图是我自己画的,展示了典型的 ISP 流程中 AWB 的位置:
你想想看,AWB 前面是黑电平校正和线性化,后面是去马赛克和 CCM。如果 AWB 没做好,白点偏了,后面的色彩校正矩阵(CCM)就会把错误放大。我见过一个项目,工程师花了两周调 CCM,结果发现是 AWB 的色温估计偏了 500K。白白浪费了时间。
警告: 千万不要在 AWB 没稳定的情况下调 CCM。先让 AWB 收敛,再动色彩矩阵。这是 ISP 调优的铁律。
1.4 本章小结
- 色温 是光源的颜色属性,低色温偏暖,高色温偏冷。
- 白平衡 就是通过调整 RGB 增益,让白色在不同光源下保持白色。
- 色彩恒常性 是人眼的自动白平衡能力,AWB 就是模仿这个能力。
- AWB 在 ISP 中位于 RAW 域、去马赛克之前,位置非常关键。