AWB算法-为什么通常以 G 通道为基准,计算 R 和 B 需要放大的倍数?
在自动白平衡(AWB)算法中,通常将绿色(G)通道的增益固定为 1.0(即作为基准),然后计算红色(R)和蓝色(B)通道的放大倍数。这并不是随意的规定,而是由传感器硬件结构、人眼视觉特性以及图像处理的数学逻辑共同决定的。
主要原因有以下四个:
- 传感器物理结构(Bayer阵列)决定了 G 通道最可靠
目前绝大多数 CMOS/CCD 图像传感器采用的都是 Bayer 滤光矩阵(Bayer Pattern)。在典型的 RGGB 阵列中:
绿色(G)像素占 50%
红色(R)像素占 25%
蓝色(B)像素占 25%
因为 G 像素的数量是 R 和 B 的两倍,所以 G 通道捕获的空间细节最多,信噪比(SNR)最高,数据最稳定。在算法中,把最稳定、噪声最小的通道作为“锚点”(基准),去调整相对较弱的 R 和 B 通道,计算出来的结果最不容易受噪点干扰。
- 人眼对绿光最敏感(亮度贡献最大)
在人类的视觉系统中,视网膜对不同波长的光敏感度不同,人眼对光谱中段的绿光(波长约 555 nm)最为敏感。
在图像处理中(例如 RGB 转 YUV/YCbCr 色彩空间),亮度(Y)的计算公式通常是:
$Y = 0.299 \times R + 0.587 \times G + 0.114 \times B$
可以看到,绿色通道对画面亮度的贡献高达近 60%。这意味着 G 通道基本上就代表了图像的“明暗/亮度”信息。
- 解耦 AWB(白平衡)与 AE(自动曝光)
承接上一点,因为 G 通道主导了画面的亮度:
如果我们在做白平衡时去改变 G 通道的增益(比如 $G_{gain} = 1.2$),那么整个画面的亮度就会跟着发生明显变化。
这就导致了 AWB(控制颜色)和 AE(控制亮度)两个模块互相干扰。白平衡一动,画面就忽明忽暗,曝光算法又得重新调整,容易产生震荡。
将 $G_{gain}$ 固定为 1.0,只去调节 R 和 B,可以在改变画面色温的同时,最大程度地保持画面的整体亮度不变。这样 AWB 和 AE 就能各司其职,互不干扰。
- 降低硬件计算复杂度和成本
白平衡的最终目的,是让画面中的白色/灰色物体的 $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)。
本文来自博客园,作者:热带雨霖,转载请注明原文链接:https://www.cnblogs.com/Link97/p/19836804

浙公网安备 33010602011771号