1. 白平衡基础概念:色温、白平衡与色彩恒常性
各位同学好,我是老周。在ISP调试这行摸爬滚打了十几年,今天咱们来聊聊白平衡——这个看似基础、实则坑最多的模块。
说实话,我刚入行时也觉得白平衡不就是“把白色调准”吗?后来被现实狠狠教育了几次。有一次项目赶着量产,室内灯光下拍出来的肤色偏黄,客户直接拒收。从那以后,我才真正沉下心去理解白平衡背后的物理原理和视觉机制。
这一章,我们先打好地基。把色温、白平衡、人眼色彩恒常性这几个概念彻底讲透。
1.1 什么是色温
色温这个概念,说白了就是描述光源颜色的一个数值。单位是开尔文(K)。
你想想看,一个黑体(理想辐射体)被加热到不同温度时,会发出不同颜色的光。温度低的时候偏红,温度高的时候偏蓝。这就是色温的物理来源。
| 光源场景 | 典型色温(K) | 视觉感受 |
|---|---|---|
| 烛光、日出日落 | 1800 - 3000 | 暖黄、偏红 |
| 白炽灯 | 2700 - 3200 | 暖白 |
| 荧光灯、日光灯 | 4000 - 5000 | 中性白 |
| 正午阳光、闪光灯 | 5000 - 6500 | 标准白 |
| 阴天、阴影 | 6500 - 8000 | 冷白、偏蓝 |
| 蓝天(无云) | 10000 - 15000 | 深蓝 |
这里有个容易混淆的点:色温越高,颜色越冷(偏蓝);色温越低,颜色越暖(偏红)。跟直觉正好相反。我在给新人培训时,经常有人问“为什么高温反而发蓝?”——因为黑体辐射的峰值波长随温度升高向短波(蓝光)移动。
1.2 什么是白平衡
白平衡,英文叫White Balance,简称AWB(自动白平衡)或WB。它的核心目标就一个:让白色物体在任何光源下都呈现为白色。
为什么需要这个?因为相机传感器是“诚实”的。它记录的是场景中物体反射的光谱能量分布。如果光源偏黄,白色物体反射的光也会偏黄。相机如果不做处理,拍出来的白色就是黄的。
白平衡的本质,就是对三个颜色通道(R、G、B)施加不同的增益,把偏色的白色拉回到标准白色。
// 白平衡的数学本质
// 假设标准白色在D65光源下为 (R0, G0, B0)
// 当前光源下白色响应为 (R_src, G_src, B_src)
// 则白平衡增益为:
gain_R = R0 / R_src
gain_G = G0 / G_src
gain_B = B0 / B_src
// 对全图每个像素应用增益
R_out = R_in * gain_R
G_out = G_in * gain_G
B_out = B_in * gain_B
嗯,这里要注意:增益不能无限大。我在调试高通平台时,遇到过极端低色温(烛光)场景,B通道增益被拉到3.0以上,结果噪声爆炸,暗部全是彩色噪点。所以实际工程中,我们会给增益设置上限,比如1.0~2.5之间。
1.3 人眼视觉系统的色彩恒常性
为什么相机需要白平衡,而人眼却好像不需要?
其实人眼也有“白平衡”,只不过它是自动的、无意识的。这个能力叫做色彩恒常性(Color Constancy)。
你想想看,一张白纸在阳光下是白的,在烛光下你依然觉得它是白的。但相机拍出来,烛光下的白纸是黄澄澄的。这就是人眼和相机的根本区别。
人眼的色彩恒常性主要依赖两个机制:
- 视觉适应:视网膜上的视锥细胞会根据环境光调整灵敏度。待久了,大脑会“校准”掉光源的颜色。
- 先验知识:大脑知道“白纸是白的”,所以即使视网膜接收到的信号偏黄,大脑也会修正感知。
相机没有这种“先验知识”。它只能靠算法去估计光源颜色,然后做反向补偿。这就是AWB算法的核心任务——光源估计。
1.4 为什么相机需要白平衡
这个问题其实前面已经回答了,但我还是想从工程角度再强调几点:
- 传感器是色盲的:CMOS传感器只记录光子数量,它不知道当前是什么光源。它忠实记录,但忠实不等于好看。
- 下游模块依赖白平衡:在ISP pipeline中,白平衡是色彩处理的第一步。如果白平衡不准,后面的色彩校正矩阵(CCM)、伽马校正、饱和度增强都会跟着错。一步错,步步错。
- 用户体验的底线:我做过用户盲测,偏色是用户最敏感的缺陷之一。尤其是肤色偏黄偏绿,用户一眼就能看出来。白平衡不准的照片,用户会直接定义为“废片”。
- 不同场景需要不同策略:比如拍风景时,稍微偏蓝的冷色调反而更讨喜;拍食物时,暖色调更有食欲。所以白平衡不只是“准确”,还要“好看”。
本章知识结构
下面这张图,我把本章的核心概念和它们之间的关系画了出来。你可以把它当作一张“思维导图”来理解。
这张图把本章的三个核心概念串联起来了。你可以看到:色温是物理基础,白平衡算法是工程实现,色彩恒常性是生物参照。三者缺一不可。