1. AWB 概述:什么是自动白平衡

大家好,欢迎来到《AWB算法:色温估计与场景适配实战》的第一章。

自动白平衡,英文叫 Auto White Balance,简称 AWB。说白了,就是让相机在不同光线下,都能把白色拍成白色。你想想看,一张白纸在日光灯下偏蓝,在白炽灯下偏黄,但人眼看它还是白的。相机要做的,就是模拟这个能力。

我刚开始做 ISP 时,觉得白平衡不就是调个 RGB 增益嘛,有什么难的?后来在项目里被各种奇葩光源折磨过,才明白这里面的坑有多深。嗯,咱们慢慢聊。

1.1 人眼视觉系统的色彩恒常性

为什么人眼能自动纠正色偏?这得归功于我们大脑的“色彩恒常性”。

简单说,就是大脑会根据场景中的参考信息,自动推断出光源颜色,然后“减去”这个色偏。比如你走进一间暖色调的咖啡馆,一开始觉得灯光很黄,过几分钟就适应了,白墙看起来还是白的。

这个机制,本质上是一种高级的“场景理解”。

核心要点: 人眼的色彩恒常性 = 光源估计 + 色适应 + 记忆色修正。相机 AWB 只做到了前两步,第三步还在研究中。

我在一个手机项目里遇到过极端案例:用户在地下停车场拍白色车身,结果拍出来是蓝灰色的。用户投诉说“你们相机色偏严重”。其实是因为停车场用的是荧光灯,色温偏高。人眼在现场已经适应了,但相机没适应。这就是色彩恒常性缺失的典型表现。

1.2 AWB 在 ISP Pipeline 中的位置

一张 RAW 图从 Sensor 出来,到最终显示在屏幕上,要经过一整套 ISP 流水线。AWB 在哪个环节?

我习惯把 ISP Pipeline 分成几个关键阶段:

  1. 黑电平校正(BLC) — 去掉 Sensor 暗电流噪声
  2. 去噪(Denoise) — 降低噪声,为后续处理打基础
  3. 去马赛克(Demosaic) — 把 Bayer 格式转成 RGB
  4. 白平衡(AWB) — 就是我们今天的主角
  5. 颜色校正(CCM) — 把相机 RGB 转到标准色域
  6. Gamma 校正 / 色调映射 — 调整亮度和对比度

AWB 通常放在 Demosaic 之后、CCM 之前。为什么?因为白平衡需要在 RGB 空间里做,而且它会影响后续所有颜色处理。顺序错了,颜色就全乱了。

避坑指南: 我曾经在一个项目里把 AWB 放到了 CCM 之后,结果颜色怎么调都调不对。后来发现是顺序搞反了。记住:先做白平衡,再做颜色校正。顺序不能乱。

下面这张图,是我自己画的 ISP Pipeline 中 AWB 的位置。你看一眼就明白了。

ISP Pipeline 中 AWB 的位置 RAW 输入 BLC 去噪 Demosaic AWB CCM AWB 在 Demosaic 之后、CCM 之前 先做白平衡,再做颜色校正。顺序错了,颜色就全乱了。 Gamma 色调映射 输出

1.3 AWB 的核心任务

AWB 要干三件事:

任务 说明 我的经验
色温估计 判断当前光源的色温值(K) 纯色温估计不准,要结合场景
增益计算 算出 R/G/B 通道的增益系数 增益不能太大,否则噪声爆炸
场景适配 根据场景类型调整策略 室内外、顺逆光,策略完全不同

这三步环环相扣。色温估计错了,后面全白搭。我见过不少算法,色温估计做得挺好,但场景适配没跟上,结果在复杂光源下还是翻车。

小技巧: 做 AWB 时,别只盯着色温值。多关注场景中的“白色参考点”——比如白墙、白纸、云朵。这些区域才是判断色偏的关键。

1.4 为什么 AWB 这么难?

你可能会问:不就是调三个通道的增益吗?为什么还有这么多算法?

原因有三:

  • 光源复杂: 混合光源(日光+灯光)、低色温(烛光)、高色温(阴天),每种情况都不一样。
  • 场景多样: 室内、室外、夜景、逆光、人像、风景……同一个色温,不同场景的处理方式完全不同。
  • 用户期望: 用户要的不是“准确”,而是“看着舒服”。有时候偏暖一点反而更讨喜。

我记得有一次做户外婚礼拍摄的算法优化。现场有自然光、舞台灯光、还有 LED 装饰灯,三种光源混在一起。AWB 怎么调都调不好。后来我加了一个“多光源估计”模块,才勉强搞定。嗯,这个后面会专门讲。

1.5 本章小结

这一章我们聊了:

  • 什么是自动白平衡——让白色在各种光下都是白色
  • 人眼的色彩恒常性——大脑自动纠正色偏的能力
  • AWB 在 ISP Pipeline 中的位置——Demosaic 之后、CCM 之前
  • AWB 的三个核心任务:色温估计、增益计算、场景适配