1. 白平衡基础概念:色温、白平衡与人眼机制
做图像处理这些年,我经常遇到刚入行的同学问:「白平衡不就是把画面调暖或调冷吗?」嗯,这么说也对,但太表面了。今天咱们从根上聊清楚——色温是什么、白平衡在解决什么问题、人眼为什么那么厉害,以及相机传感器为啥就做不到。
1.1 什么是色温
色温这个概念,最早来自物理学家对黑体辐射的研究。说白了,就是给一个黑体加热,随着温度升高,它会发出不同颜色的光。这个温度值,就用开尔文(K)来表示。
核心记忆点:色温越低,光越偏红/黄;色温越高,光越偏蓝。别记反了。
举个例子:
- 烛光:约 1800K,暖黄色
- 白炽灯:约 2800K,暖白色
- 日光:约 5500K,中性白
- 阴天:约 6500K,偏蓝色
- 蓝天阴影:约 8000K-10000K,冷蓝色
我在项目中遇到过最典型的场景:室内暖光灯下拍出来的照片,人脸像煮熟的螃蟹。这就是色温偏低导致的偏色问题。
| 光源类型 | 色温范围(K) | 视觉感受 |
|---|---|---|
| 烛光/火焰 | 1500 - 2000 | 暖黄 |
| 白炽灯 | 2500 - 3000 | 暖白 |
| 荧光灯 | 4000 - 5000 | 中性白 |
| 正午日光 | 5000 - 6000 | 标准白 |
| 阴天 | 6000 - 7500 | 冷白 |
| 蓝天阴影 | 8000 - 10000 | 冷蓝 |
1.2 什么是白平衡
白平衡,说白了就是让相机在不同色温的光源下,都能把「白色」还原成白色。你想想看,一张白纸在烛光下是暖黄色的,在阴天是偏蓝的。但人眼看起来,它始终是白的。相机可没这个本事,它需要算法来帮忙。
白平衡的本质,就是调整图像中 R、G、B 三个通道的增益,让中性色(灰、白)在色温变化下保持中性。数学上很简单:
R_out = R_in * gain_R
G_out = G_in * gain_G
B_out = B_in * gain_B
其中 gain_R、gain_G、gain_B 就是我们要算的三个系数。通常固定 G 通道增益为 1.0,只调 R 和 B。
我的习惯:调试白平衡时,先找画面中的中性色块(灰卡、白墙、云朵),看它们的 R/G/B 比值是否接近 1:1:1。如果偏红,说明 R 增益太高了。
1.3 人眼的白平衡机制
人眼为什么这么强?因为它有一套叫「色彩恒常性」的机制。简单说,人眼会主动补偿光源色温带来的偏色。
具体怎么做到的?靠两种细胞配合:
- 视锥细胞:三种类型,分别对红、绿、蓝光敏感
- 视杆细胞:负责亮度感知,不参与颜色
人眼会「自适应」调整三种视锥细胞的敏感度。比如在暖光下,它会降低对红色的敏感度,提高对蓝色的敏感度。这样一来,白色看起来还是白色。
但人眼也有局限。我记得有一次在混合光源下做实验——一边是暖色台灯,一边是冷色日光灯。人眼会「顾此失彼」,看左边觉得正常,看右边就觉得偏色。这就是为什么混合光源场景最难处理。
注意:人眼的白平衡适应需要时间。从室内走到室外,你会觉得画面偏蓝,过几秒才恢复正常。相机可没这个「适应期」,它必须一帧一帧地算。
1.4 相机传感器与白平衡的关系
相机传感器是「死脑筋」。它只记录每个像素的 R、G、B 值,根本不管光源是什么颜色。这就带来了两个问题:
- 传感器响应曲线不匹配人眼:CMOS 的 R/G/B 滤镜透光率在不同波长下差异很大
- 传感器没有「色彩恒常性」:它不会自动补偿光源色温
所以,白平衡算法必须做两件事:
- 估计光源色温:判断当前场景是什么光源
- 计算增益系数:根据色温调整 R/B 通道
我做过一个项目,在工业相机上跑白平衡。传感器是 Sony IMX334,它的 B 通道在低色温下响应特别弱。如果不做白平衡,拍出来的暖色场景全是红彤彤的。后来我加了一个「色温查找表」,把不同色温下的增益系数提前标定好,效果才稳定下来。
1.5 本章知识体系
下面这张图,把色温、白平衡、人眼机制和传感器关系串起来了。我建议你多看几遍,理解它们之间的逻辑链条。
1.6 小结
这一章我们聊了四个核心概念:
- 色温:光源颜色的量化指标,低暖高冷
- 白平衡:让白色在不同光源下保持白色的算法
- 人眼机制:色彩恒常性,自动补偿色温
- 传感器局限:没有自适应能力,必须靠算法
理解这些基础,后面讲灰度世界、完美反射、色温估计这些算法时,你才能知道它们到底在解决什么问题。我曾经带过一个新人,他调白平衡调了三天都没调好,后来发现是他连色温和增益的关系都没搞懂。嗯,基础打牢了,后面才走得快。