AWB算法-为什么通常以 G 通道为基准,计算 R 和 B 需要放大的倍数?

在自动白平衡(AWB)算法中,通常将绿色(G)通道的增益固定为 1.0(即作为基准),然后计算红色(R)和蓝色(B)通道的放大倍数。这并不是随意的规定,而是由传感器硬件结构、人眼视觉特性以及图像处理的数学逻辑共同决定的。

主要原因有以下四个:

  1. 传感器物理结构(Bayer阵列)决定了 G 通道最可靠
    目前绝大多数 CMOS/CCD 图像传感器采用的都是 Bayer 滤光矩阵(Bayer Pattern)。在典型的 RGGB 阵列中:

绿色(G)像素占 50%
红色(R)像素占 25%
蓝色(B)像素占 25%
因为 G 像素的数量是 R 和 B 的两倍,所以 G 通道捕获的空间细节最多,信噪比(SNR)最高,数据最稳定。在算法中,把最稳定、噪声最小的通道作为“锚点”(基准),去调整相对较弱的 R 和 B 通道,计算出来的结果最不容易受噪点干扰。

  1. 人眼对绿光最敏感(亮度贡献最大)
    在人类的视觉系统中,视网膜对不同波长的光敏感度不同,人眼对光谱中段的绿光(波长约 555 nm)最为敏感。
    在图像处理中(例如 RGB 转 YUV/YCbCr 色彩空间),亮度(Y)的计算公式通常是:

$Y = 0.299 \times R + 0.587 \times G + 0.114 \times B$

可以看到,绿色通道对画面亮度的贡献高达近 60%。这意味着 G 通道基本上就代表了图像的“明暗/亮度”信息。

  1. 解耦 AWB(白平衡)与 AE(自动曝光)
    承接上一点,因为 G 通道主导了画面的亮度:

如果我们在做白平衡时去改变 G 通道的增益(比如 $G_{gain} = 1.2$),那么整个画面的亮度就会跟着发生明显变化。
这就导致了 AWB(控制颜色)和 AE(控制亮度)两个模块互相干扰。白平衡一动,画面就忽明忽暗,曝光算法又得重新调整,容易产生震荡。
将 $G_{gain}$ 固定为 1.0,只去调节 R 和 B,可以在改变画面色温的同时,最大程度地保持画面的整体亮度不变。这样 AWB 和 AE 就能各司其职,互不干扰。

  1. 降低硬件计算复杂度和成本
    白平衡的最终目的,是让画面中的白色/灰色物体的 $R = G = B$。
    理论上,我们可以把 R、G、B 都乘上一个系数,但这会增加硬件的乘法器数量。
    数学上,只要相对比例对了就可以:

$R_{gain} = G_{avg} \div R_{avg}$
$B_{gain} = G_{avg} \div B_{avg}$
$G_{gain} = 1.0$
这样只需要计算两个增益系数,ISP(图像信号处理器)硬件在应用增益时也只需要对 R 和 B 通道做乘法。这在底层芯片设计上节省了逻辑门电路,降低了功耗和发热。

总结:
以 G 通道为基准,是因为 G 像素数量最多(信噪比高)、代表了画面的主要亮度(符合人眼视觉),且固定 G 通道可以避免白平衡调节引起画面亮度的剧烈波动(解耦 AE)。

posted @ 2026-04-08 18:09  热带雨霖  阅读(15)  评论(0)    收藏  举报