3、白平衡基础理论:色温、光源、灰世界假设、白点定义及白平衡校正的物理意义

在机器视觉与工业图像处理中,白平衡(White Balance, WB)是决定色彩还原准确性的第一道关卡。Halcon 作为工业级视觉库,其白平衡校正算子(如 cwb_white_balance、chromatic_adaptation)在光源波动、多相机一致性校准、颜色分拣等场景中扮演关键角色。本章从物理光学出发,厘清色温、光源光谱、灰世界假设与白点定义之间的逻辑链条,并解释白平衡校正为何不是“调色美化”,而是对成像传感器响应进行物理意义上的归一化。

白平衡物理链路:从光源到像素值归一化 光源(照明) 色温 CCT (K) 光谱功率分布 SPD 显色指数 CRI 物体反射 表面反射率 ρ(λ) 朗伯体/镜面分量 几何遮挡 相机传感器 R/G/B 量子效率 QE 暗电流/噪声 ADC 量化 原始 RGB 灰世界假设 场景平均反射率 = 中性灰 R̄ = Ḡ = B̄ 白点定义 参考白色 (Xw,Yw,Zw) D65 / A / 自定义光源 白平衡校正 增益 G_R, G_G, G_B Von Kries / 通道增益 物理意义:消除光源光谱对传感器响应的影响,使白色物体在任何光源下都呈现为白 R_corr = R_raw × G_R, G_R = 1 / (R_raw / G_raw) 等

上图展示了从光源到像素值的完整物理链路。白平衡校正的本质,是在传感器响应之后、色彩空间转换之前,对 R、G、B 三个通道施加独立增益,以补偿光源光谱功率分布(SPD)与传感器量子效率(QE)共同作用造成的色偏。下面分模块深入展开。

3.1 核心原理:色温、光源与传感器响应的耦合

色温(CCT)并非物体表面温度,而是描述光源颜色的一个等效黑体辐射温度。例如,D65 标准光源色温为 6500K,呈现冷白;A 光源为 2856K,呈现暖黄。但色温只是 SPD 的一维简化——两个色温相同的光源,其光谱曲线可能完全不同(如荧光灯与白炽灯),因此工业视觉中更关注完整的 SPD 数据。

传感器对颜色的响应由以下公式决定:

R_raw = ∫ E(λ) · ρ(λ) · QE_R(λ) dλ
G_raw = ∫ E(λ) · ρ(λ) · QE_G(λ) dλ
B_raw = ∫ E(λ) · ρ(λ) · QE_B(λ) dλ

其中 E(λ) 为光源 SPD,ρ(λ) 为物体反射率,QE_R/G/B(λ) 为传感器各通道量子效率。当光源从 D65 切换为 A 光源时,即使物体不变,R_raw 与 B_raw 的比值也会发生显著变化。白平衡校正的目标,就是通过增益矩阵将这种变化归一化到参考光源下的响应。

关键认知:白平衡不是“让图像看起来舒服”,而是将传感器响应映射到与光源无关的颜色空间(如 sRGB、XYZ)。在 Halcon 中,cwb_white_balance 算子接受参考白点坐标(如 D65 的 X=0.9505, Y=1.0, Z=1.089),并输出 3×3 校正矩阵,其数学本质是色适应变换(Chromatic Adaptation)。

3.2 灰世界假设与白点定义

灰世界假设(Gray World Assumption)是最经典的白平衡估计方法。它假设场景中所有物体反射率的平均值是无色差的灰色,即:

mean(R_raw) ≈ mean(G_raw) ≈ mean(B_raw)

基于此假设,校正增益可计算为:

G_R = mean(G_raw) / mean(R_raw)
G_B = mean(G_raw) / mean(B_raw)
G_G = 1.0

然而,灰世界假设在工业场景中经常失效——例如检测对象是红色塑料件时,场景平均反射率明显偏红,直接应用灰世界会导致蓝色通道被过度放大。因此 Halcon 提供了更稳健的白点定义法:使用标准白板(如 Spectralon 99% 反射率)或已知反射率的标准色卡,在目标光源下采集白点像素值,然后计算增益。

方法 适用场景 优点 局限
灰世界假设 场景颜色丰富、无主导色 无需额外标定物 主导色场景失效
白点标定法 工业产线、固定光源 精度高、可重复 需要白板/色卡
色温查表法 光源可调、多色温切换 快速切换 需要预标定多组数据

3.3 判断方法与操作流程:Halcon 白平衡校正步骤

在 Halcon 中实施白平衡校正,推荐以下标准流程:

  1. 采集原始图像:关闭相机自动白平衡(AWB),保存 RAW 格式或线性 RGB 图像。
  2. 计算白点:在目标光源下拍摄标准白板,提取 ROI 内 R、G、B 均值。
  3. 计算增益矩阵:使用 cwb_white_balance 或手动计算对角增益。
  4. 应用校正:对每个像素执行矩阵乘法。
  5. 验证:使用色卡(如 X-Rite ColorChecker)检查 ΔE 色差。
* Halcon 示例:基于白板标定的白平衡
read_image (Image, 'raw_image.tiff')
* 提取白板区域
reduce_domain (Image, WhitePlateROI, ImageWhite)
intensity (ImageWhite, ImageWhite, MeanR, DeviationR)
* 假设 G 通道为基准
GainR := MeanG / MeanR
GainB := MeanG / MeanB
* 应用增益
cwb_white_balance (Image, ImageWB, GainR, 1.0, GainB)

经验提醒:工业现场光源老化会导致 SPD 漂移,建议每 500 小时或每次更换光源后重新标定白点。同时,避免使用过曝的白板图像——白板 ROI 内灰度值应控制在 200-240(8bit)之间,否则会引入传感器非线性响应误差。

3.4 案例拆解:锂电池隔膜颜色检测中的白平衡校正

背景与约束:某锂电池产线需要检测隔膜表面涂布均匀性,通过颜色差异判断涂布厚度。产线使用 LED 环形光源(色温 5500K),相机为 Basler acA2500-14gm(单色)与 acA2500-14uc(彩色)双相机系统。初始阶段,彩色相机直接使用自动白平衡,导致隔膜颜色读数波动 ±8%,无法满足 ±2% 的工艺控制要求。

初始现象:隔膜基材为白色半透明,涂布区域呈淡黄色。自动白平衡下,同一卷隔膜在不同时间段的 RGB 比值漂移明显,且与光源温度变化相关。

分析过程:

  • 测量光源 SPD:使用光谱仪发现 LED 光源在点亮 30 分钟后色温从 5500K 漂移至 5200K,红光分量衰减约 3%。
  • 检查传感器响应:彩色相机 QE 曲线在 450nm 和 600nm 处有峰值,对光源漂移敏感。
  • 灰世界假设验证:隔膜表面 70% 面积为白色,但涂布区域黄色占比 30%,场景平均色偏黄,灰世界假设误差达 5%。

解决方案:

  1. 关闭相机 AWB,改用 Halcon 离线标定:在产线启动前,用标准白板(Lab 值 L=96.5, a=0.1, b=0.2)在目标光源下采集 20 帧图像,计算平均白点。
  2. 建立光源漂移补偿模型:每 10 分钟采集一次白板图像,动态更新增益系数。
  3. 应用 cwb_white_balance 并输出校正后图像,再计算涂布区域 a* 值(CIELAB 色彩空间)。

结果对比:校正后,隔膜颜色读数波动从 ±8% 降至 ±1.2%,满足工艺要求。同时,由于关闭了 AWB,图像噪声略有增加(约 2%),但通过增加 1ms 曝光时间补偿,信噪比保持稳定。

风险与代价:动态白点标定增加了 5% 的节拍时间(每 10 分钟一次,每次 2 秒),但换来了颜色测量的长期稳定性。此外,白板需要定期清洁,避免灰尘积累导致标定偏差。

常见误区:不要将白平衡与色彩矩阵(Color Correction Matrix, CCM)混淆。白平衡仅补偿光源变化,而 CCM 用于将传感器原生色彩空间转换到目标色彩空间(如 sRGB)。在 Halcon 中,cwb_white_balance 只做对角增益,而 color_correction_3x3 处理通道串扰。工业应用中,两者应串联使用:先白平衡,再色彩校正。

3.5 总结复盘:白平衡校正的物理意义与工程要点

白平衡校正的物理意义在于:将传感器响应从“光源相关”映射到“光源无关”。这一过程不是简单的图像增强,而是为后续的颜色测量、缺陷检测、多相机一致性校准提供统一的色彩基准。在 Halcon 工程实践中,应遵循以下原则:

  • 光源优先:选择高显色指数(CRI > 90)的稳定光源,减少白平衡校正压力。
  • 标定优先:在产线调试阶段完成白点标定,而非依赖相机内置 AWB。
  • 验证闭环:每次校正后使用标准色卡验证 ΔE 色差,确保校正精度。
  • 动态补偿:对于光源漂移明显的场景,建立周期性白点更新机制。