当前位置: 首页 > news >正文

ISP Pipeline(5): Auto White Balance Gain Control (AWB) 自动白平衡

G_gain = 1.0  # 常作为参考通道
R_gain = G_avg / R_avg
B_gain = G_avg / B_avg

Auto White Balance Gain Control(AWB)自动调整图像中红色、绿色、蓝色通道的增益,使图像中灰白区域的颜色看起来为“中性白”或“灰白”,从而矫正因光源色温导致的色偏。

为什么需要 AWB?

  • 不同光源(如阳光、白炽灯、荧光灯)具有不同色温,直接影响图像颜色;

  • 例如,白炽灯下画面偏黄,荧光灯下偏绿;

  • AWB 自动估算当前场景的光照类型,并给每个颜色通道加上合适的增益,使图像白平衡自然

AWB 基本流程

  1. 统计图像中各通道平均值(或灰度区域);

  2. 估计场景色温或光源偏色

  3. 计算 RGB 增益因子,使图像偏色区域趋于灰白;

  4. 应用增益到图像每个通道

 

常见算法原理

1. Grey World 假设(经典基础)

假设图像中所有颜色平均后应为灰色(R ≈ G ≈ B)

计算通道均值:

R_avg = np.mean(R)
G_avg = np.mean(G)
B_avg = np.mean(B)

 计算增益:

G_gain = 1.0  # 常作为参考通道
R_gain = G_avg / R_avg
B_gain = G_avg / B_avg

代码实现: 

def AWB(aaf_img):"""inputs:aaf_img = bayer domain image after anti-aliasing noise filteroutputs:awb_img = bayer domain image after auto white balance"""awb_img = np.copy(aaf_img) # create a copy of the bayer image to apply auto white balancer = awb_img[::2, ::2] # use array splicing to extract r, gr, gb, and b pixels from the full bayer imagegr = awb_img[::2, 1::2]gb = awb_img[1::2, ::2]b = awb_img[1::2, 1::2]r_ave = np.mean(r) # compute averages of r, g, and b channelsg_ave = (np.mean(gr) + np.mean(gb)) / 2b_ave = np.mean(b)r_gain = g_ave / r_ave # compute gains for r, g, and b channelsg_gain = g_ave / g_aveb_gain = g_ave / b_aveawb_img[::2, ::2] = r * r_gain # apply gains to r, g, and b channelsawb_img[::2, 1::2] = gr * g_gainawb_img[1::2, ::2] = gb * g_gainawb_img[1::2, 1::2] = b * b_gainreturn awb_img.astype(np.uint16)

G 通道作为参考通道(基准白),用 G 通道的平均值去除以 R 和 B 通道的平均值,是为了计算出让 R、B 看起来和 G 一样“灰” 需要乘上的校正系数(增益)

为什么选 G 通道当基准?

  • G 通道在 Bayer 中占比最大(Gr + Gb 一共占 50%);

  • G 通道通常噪声更低、更稳定;

  •  人眼对绿色更敏感,图像质量也更依赖于绿色;

  •  所以大多数 ISP 里都选 G 通道为基准。

相关文章:

  • wap免费建站程序it教育培训机构排名
  • 兼职做ppt是哪个网站好小红书软文案例
  • 网站经营性备案条件亚马逊查关键词排名工具
  • 政法网 网站建设山东济南seo整站优化公司
  • 江苏省内网站建设外贸网站建站
  • 织梦网站修改教程视频教程杭州seo营销公司
  • 城市综合管廊监测,智能化安全监测,多源感知,三维可视化监控
  • ASIO 避坑指南:高效、安全与稳健的异步网络编程
  • 基于SpringBoot的智慧旅游系统
  • 六个安全Agent设计模式:有效防止Prompt注入攻击
  • Serverless新宠:阿里云SAE,解锁应用部署新姿势
  • 【攻防篇】解决:阿里云docker 容器中自动启动xmrig挖矿
  • dockercompose快速安装ELK
  • Elasticsearch索引字段的类型
  • 伏羲微官网企业建站授权证书/防伪查询/三合一应用【前端开源】
  • Java项目:基于SSM框架实现的健康管理系统【ssm+B/S架构+源码+数据库】
  • 什么是Redis?
  • ISP Pipeline(4): Anti Aliasing Noise Filter 抗锯齿与降噪滤波器
  • 第12章:冰箱里的CT扫描仪——计算机视觉如何洞穿食材的“生命密码“
  • OpenCV插值方法详解:原理、应用与代码实践
  • 服务器排查与加固服务详细介绍
  • 《HarmonyOSNext应用崩溃自救指南:零数据丢失的故障恢复黑科技》
  • 【机器学习深度学习】数据预处理
  • kanzi 视频插件
  • FFmpeg音视频同步思路
  • 计算机网络 网络层:控制平面(二)