4. 自动白平衡偏色闭环校正

自动白平衡偏色闭环校正 学习卡片

任务拆解:从色卡采样到偏色闭环

自动白平衡(AWB)偏色闭环校正的核心,是在不同色温光源下采集标准色卡图像,用中性灰块估算当前白平衡增益与理想增益之间的偏差,再通过反馈策略调整增益,使校正后的色差收敛到目标阈值内。本案例以 24 色标准色卡为对象,在 2700K、4000K、6500K 三种光源下各采集一帧,完成偏差计算、增益校正与色差验证。

关键对象与参数约定:
· 色卡:24 色标准色卡,第 4 行第 1 块为中性灰(约 18% 反射率),作为白平衡参考块。
· 光源色温:2700K(暖白)、4000K(中性)、6500K(冷白)。
· 图像格式:线性 RAW 或已去马赛克的线性 RGB,避免 gamma 压缩影响增益计算。
· 目标阈值:校正后中性灰块在 CIE Lab 下的色差 ΔE00 ≤ 2.0,且 R/G、B/G 比值偏差 ≤ 3%。
· 增益定义:R_gain、G_gain、B_gain 为施加在原始 RGB 上的乘性系数,G_gain 固定为 1.0 作为基准。

白平衡偏差计算

对每帧图像,先定位色卡中性灰块区域,取该区域线性 RGB 均值。理想白平衡下,中性灰应满足 R=G=B。实际采集时,暖光下 R 偏高、B 偏低;冷光下 B 偏高、R 偏低。偏差用比值表示:

R_ratio = R_mean / G_mean
B_ratio = B_mean / G_mean

理想值:R_ratio = 1.0,B_ratio = 1.0

校正增益:
R_gain = 1.0 / R_ratio
G_gain = 1.0
B_gain = 1.0 / B_ratio

将增益施加到整帧图像后,重新计算中性灰块的 R_ratio 与 B_ratio,若仍偏离 1.0,则进入下一轮反馈。反馈策略采用比例修正:

R_gain_new = R_gain_old * (1.0 / R_ratio_after)
B_gain_new = B_gain_old * (1.0 / B_ratio_after)

每轮迭代后记录 ΔE00,当 ΔE00 ≤ 2.0 或迭代达到 5 次时停止。

闭环校正流程与数据流

下图展示从三色温采集、中性灰块提取、偏差计算、增益反馈到色差验证的完整闭环。图中同时标出每轮迭代的输入输出关系与收敛判断点。

三色温光源采集 2700K 4000K 6500K 24色标准色卡 · 线性RGB 中性灰块(第4行第1块) 白平衡偏差计算 R_ratio = R_mean / G_mean B_ratio = B_mean / G_mean 理想:R_ratio=1.0, B_ratio=1.0 偏差 = |R_ratio-1| + |B_ratio-1| 反馈增益校正 R_gain = 1.0 / R_ratio B_gain = 1.0 / B_ratio G_gain = 1.0(基准) 比例修正:gain_new = gain_old × (1/ratio) 应用增益到整帧 R' = R × R_gain B' = B × B_gain 色差验证 计算中性灰块 ΔE00 检查 R_ratio, B_ratio 偏差 ΔE00 ≤ 2.0 且比值偏差≤3%? 输出校正后图像 记录最终增益与ΔE00 否:更新增益,进入下一轮 最多迭代5次 迭代控制 迭代次数 n = 1,2,3,4,5 n=5 或 ΔE00≤2.0 停止 数据流说明: ① 三色温光源下采集色卡 → ② 提取中性灰块线性RGB均值 → ③ 计算R_ratio、B_ratio偏差 ④ 生成R_gain、B_gain并施加到整帧 → ⑤ 重新计算ΔE00与比值偏差 → ⑥ 判断是否收敛,未收敛则更新增益迭代

示例数据与校正过程

以下为教学示例数据,模拟 2700K 暖光下中性灰块的线性 RGB 均值。假设原始采集值为 R=210、G=180、B=120(8bit 线性值),目标是将三者校正到接近相等。

迭代轮次 R_mean G_mean B_mean R_ratio B_ratio R_gain B_gain ΔE00
初始 210 180 120 1.167 0.667 — — 8.5
第1轮 180 180 180 1.000 1.000 0.857 1.500 0.8

第1轮校正后,R_ratio 与 B_ratio 均回到 1.000,ΔE00 从 8.5 降至 0.8,已满足 ≤2.0 的阈值要求,闭环收敛。若实际采集存在噪声或色卡定位误差,可能出现 R_ratio=1.02、B_ratio=0.98 的情况,此时 ΔE00 约 1.5,仍在阈值内;若 ΔE00 超过 2.0,则按比例修正公式更新增益,进入第2轮。

验证要点:校正后不仅中性灰块要满足 ΔE00 ≤ 2.0,还需检查色卡其余色块的色差是否因增益调整而恶化。建议同时记录校正前后 24 色块的平均 ΔE00 与最大 ΔE00,确保整体色彩还原质量不下降。

收敛判断与异常处理

闭环校正的停止条件为:ΔE00 ≤ 2.0 且 R_ratio、B_ratio 偏差均 ≤ 3%,或迭代次数达到 5 次。若 5 次迭代后仍未收敛,需排查以下异常:

  • 中性灰块定位错误:色卡区域被遮挡或边界框偏移,导致均值采样到非灰块像素。
  • 光源色温超出预期范围:如 2700K 以下极暖光,R/B 比值过大,单轮增益无法完全校正。
  • 图像存在非线性处理:若采集链路已施加 gamma 或色调曲线,线性增益模型失效,需先线性化。
  • 噪声干扰:低照度下灰块区域噪声大,均值不稳定,可增大采样区域或先做轻微降噪。
注意:本案例的增益计算基于线性 RGB 空间。若图像已经过 sRGB gamma 编码,直接乘增益会导致校正偏差。正确做法是先将像素值反 gamma 到线性空间,计算并施加增益后,再重新编码回显示空间。