1. 白平衡基础概念:色温、白平衡与人眼vs相机
做图像处理这些年,我经常被问到同一个问题:「为什么手机拍出来的照片有时候偏黄,有时候偏蓝?」
答案其实就藏在两个词里——色温和白平衡。今天咱们就把这两个概念彻底聊透。
1.1 什么是色温?
色温,说白了就是衡量光线颜色的物理量。单位是开尔文(K)。
你可能会觉得奇怪:为什么暖色调(偏黄红)的色温反而低,冷色调(偏蓝)的色温反而高?
嗯,这得从黑体辐射说起。想象一块铁被加热——刚开始暗红(约1500K),逐渐变成橙黄(约3500K),最后变成蓝白(约6500K以上)。温度越高,颜色越偏蓝。
常见光源色温参考:
| 光源类型 | 色温范围(K) | 视觉感受 |
|---|---|---|
| 烛光/日出日落 | 1500 - 3000 | 暖黄、温馨 |
| 白炽灯 | 2700 - 3300 | 暖白 |
| 荧光灯/日光灯 | 4000 - 5000 | 中性白 |
| 正午阳光/闪光灯 | 5000 - 6500 | 标准白 |
| 阴天/阴影 | 6500 - 8000 | 冷白、偏蓝 |
| 蓝天 | 10000 - 20000 | 深蓝 |
我在项目中遇到过最典型的场景:室内灯光下拍出来的产品图偏黄,客户说「这颜色不对」。其实不是相机坏了,是色温没校准。
1.2 什么是白平衡?
白平衡,就是让相机在任何色温的光源下,都能把白色物体还原成白色的过程。
你想想看:一张白纸在烛光下是暖黄色,在阴天是冷蓝色。但人眼会觉得它始终是白的——因为人眼有自动色温适应能力。相机没有这个能力,所以需要算法来补偿。
白平衡的本质:
对图像R、G、B三个通道分别乘以不同的增益系数,让中性色(灰、白)的R=G=B。
数学表达:R_out = R_in * gain_R,G_out = G_in * gain_G,B_out = B_in * gain_B
举个例子:在3200K的钨丝灯下,图像偏黄(R通道偏强)。白平衡算法会降低R通道增益,同时提升B通道增益,把颜色拉回来。
1.3 人眼视觉系统 vs 相机传感器
为什么人眼能自动适应色温,相机却不行?
这里有个关键差异:人眼是「感知」颜色,相机是「测量」颜色。
| 对比维度 | 人眼视觉系统 | 相机传感器 |
|---|---|---|
| 色适应 | 自动、连续、全局 | 需要算法估计和补偿 |
| 动态范围 | 极高(约20档) | 有限(约10-14档) |
| 色彩恒常性 | 天生具备 | 需要白平衡算法模拟 |
| 响应曲线 | 非线性(对数) | 线性(RAW域) |
| 分辨率 | 中心高、边缘低 | 均匀分布 |
我记得刚入行时做过一个实验:在混合光源场景下(一半日光灯、一半白炽灯),人眼能同时看清两边的颜色,但相机拍出来总有一边偏色。这就是色彩恒常性的差距。
避坑指南:
我曾经在开发AWB算法时,直接用sRGB图像做色温估计,结果偏差很大。后来才发现:白平衡应该在RAW域(线性空间)做,因为sRGB已经做了伽马校正和颜色矩阵变换,会破坏色温信息的线性关系。
1.4 知识体系总览
下面这张图,是我自己梳理的本章核心逻辑。建议你多看几遍,把概念串起来。
1.5 为什么白平衡这么重要?
我直接说结论:白平衡是图像质量的基石。
- 白平衡不准,后续所有颜色处理(饱和度、色调、肤色美化)都会跑偏
- 在计算机视觉任务中(如目标检测、语义分割),偏色会直接降低模型精度
- 对于医疗影像、工业检测等场景,颜色准确性是刚需
一个小实验:
找一张白纸,分别在日光灯下和白炽灯下用手机拍一张。然后对比两张照片的白色区域——你会发现它们颜色不一样。这就是色温的影响。再打开手机的专业模式,手动调整白平衡到对应色温值,白色就回来了。