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 暖光下中性灰块的线性 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 且 R_ratio、B_ratio 偏差均 ≤ 3%,或迭代次数达到 5 次。若 5 次迭代后仍未收敛,需排查以下异常:
- 中性灰块定位错误:色卡区域被遮挡或边界框偏移,导致均值采样到非灰块像素。
- 光源色温超出预期范围:如 2700K 以下极暖光,R/B 比值过大,单轮增益无法完全校正。
- 图像存在非线性处理:若采集链路已施加 gamma 或色调曲线,线性增益模型失效,需先线性化。
- 噪声干扰:低照度下灰块区域噪声大,均值不稳定,可增大采样区域或先做轻微降噪。