色温与光源:常见光源色温表(D65、A光源、TL84等)
做AWB调试这么多年,我越来越觉得——理解光源,比理解算法更重要。算法是死的,光源是活的。你想想看,同一个白纸,在钨丝灯下发黄,在阴天下发蓝,传感器看到的完全是两码事。如果不懂光源特性,调出来的白平衡就是瞎蒙。
这一节,咱们把光源这件事彻底讲透。
一、常见光源色温表
先上干货。这是我整理的一份常用光源色温表,做AWB调试时几乎天天用。我建议你把它打印出来贴在工位上。
| 光源类型 | 色温(K) | 典型场景 | CIE标准代号 |
|---|---|---|---|
| 烛光 | 1800-2000 | 烛光晚餐、寺庙 | - |
| 白炽灯(A光源) | 2856 | 家用钨丝灯 | CIE标准光源A |
| 卤素灯 | 3000-3200 | 射灯、车灯 | - |
| 暖白荧光灯 | 3000-3500 | 酒店走廊、卧室 | WWF |
| 冷白荧光灯(TL84) | 4000 | 办公室、商场 | TL84 / F11 |
| 三基色荧光灯 | 4100 | 超市、医院 | F2 / CWF |
| 日光(D50) | 5000 | 印刷、摄影 | CIE标准光源D50 |
| 日光(D65) | 6500 | 户外晴天、屏幕标准 | CIE标准光源D65 |
| 阴天 | 6500-7500 | 阴天、阴影下 | - |
| 蓝天 | 10000-15000 | 高原、雪地阴影 | - |
重点记忆:D65(6500K)、A光源(2856K)、TL84(4000K)是AWB调试的三大基石。我见过的所有ISP平台,至少都会把这三种光源作为标定基准。
二、色温与色度坐标的转换
色温是个一维值,但人眼感知的颜色是二维的。这就引出了一个问题:怎么把色温映射到色度图上?
说白了,就是找一条「黑体轨迹线」(Planckian Locus)。
给定色温T,我们可以用以下公式计算CIE 1931色度坐标(x, y):
// 色温转色度坐标(T in K)
// 适用于 1667K ~ 25000K
if (T <= 4000) {
// 使用低色温公式
x = -0.2661239 * (10^9/T^3)
- 0.2343580 * (10^6/T^2)
+ 0.8776956 * (10^3/T)
+ 0.179910;
} else {
// 使用高色温公式
x = -3.0258469 * (10^9/T^3)
+ 2.1070379 * (10^6/T^2)
+ 0.2226347 * (10^3/T)
+ 0.240390;
}
// 计算y
y = -3.000 * x^2 + 2.870 * x - 0.275;
我的经验:实际项目中,我很少手动算这个。但理解这个映射关系很重要——它告诉你为什么同一个色温下,不同光源的色度坐标会有偏差。比如TL84和D65虽然色温接近,但坐标差了一截,这就是AWB需要区分对待的原因。
三、光源的光谱分布对AWB的影响
这是最容易被忽视的一点。很多新手以为「色温一样,颜色就一样」。大错特错。
举个例子:
- A光源(白炽灯):光谱连续,从红光到蓝光都有,只是红光多蓝光少。传感器拍出来的白纸偏暖黄,但颜色还原相对自然。
- TL84(冷白荧光灯):光谱不连续,在几个窄波段有尖峰。你想想看,如果传感器的RGB响应刚好落在荧光灯的尖峰之间,那拍出来的颜色就会偏绿或偏紫。
为什么会这样?因为CMOS传感器的RGB滤光片是宽带的,它会把整个可见光范围分成红绿蓝三个通道。当光源的光谱分布不均匀时,三个通道的响应比例就会「失真」。
避坑指南:我曾经在调试一款手机摄像头时,发现TL84下白平衡总是偏绿。折腾了三天,最后发现是传感器的B通道响应峰值(450nm)刚好避开了TL84的蓝光尖峰(435nm和545nm)。解决方案是调整AWB的色温查找表,给TL84场景单独加了一个补偿系数。
四、实战中的光源识别技巧
做AWB调试,第一步就是识别当前是什么光源。我总结了一套「三步法」:
- 看色温估计值:算法算出来的色温是2800K左右,大概率是白炽灯或卤素灯。
- 看R/G和B/G比值:如果R/G和B/G都偏高,可能是混合光源(比如日光灯+窗户光)。
- 看色度坐标偏离黑体轨迹的距离:如果偏离太远,说明光源光谱不连续(荧光灯、LED灯常见)。
核心结论:AWB不是简单地「把色温算对」,而是「把光源认出来」。认对了光源,白平衡就成功了一半。认错了,后面再怎么调都是白搭。
嗯,这一节的内容就到这里。下一节我会讲AWB的经典算法框架——灰度世界法和白点法,到时候咱们再细聊。