4. 增益与曝光控制:模拟增益、数字增益与自动曝光

增益和曝光,说白了就是决定图像亮度的两个核心旋钮。但很多人只把它们当成“调亮”的工具,忽略了背后的噪声博弈。我在工业现场见过太多案例——为了看清暗部细节,把增益拉满,结果图像全是雪花点,检测算法直接崩溃。

这一节,我们就把增益和曝光彻底讲透。从模拟增益和数字增益的区别,到自动曝光(AE)的算法原理,再到增益对信噪比的影响。嗯,这些都是ISP pipeline里最基础也最容易踩坑的地方。

4.1 模拟增益 vs 数字增益:本质区别

先问一个问题:同样是把信号放大2倍,在传感器端做和在数字域做,效果一样吗?

答案是完全不一样。我习惯用一个比喻来解释:

  • 模拟增益:在ADC转换之前,对电荷信号进行放大。相当于在录音时把麦克风音量调大。
  • 数字增益:在ADC转换之后,对数字码值进行乘法运算。相当于在播放时把音量调大。

关键区别在于噪声的位置。模拟增益放大的是“信号+传感器噪声”,而数字增益放大的是“信号+传感器噪声+ADC量化噪声”。

核心结论:模拟增益对信噪比的影响远小于数字增益。在同等亮度需求下,优先使用模拟增益,尽量少用数字增益。

我在一个半导体晶圆检测项目里遇到过这种情况:客户坚持只用数字增益,因为觉得“数字的更精确”。结果图像暗部噪声大到无法做边缘检测。后来我建议把数字增益降下来,用模拟增益补足亮度,信噪比直接提升了6dB。从那以后,我每次做ISP tuning都会先检查增益分配策略。

4.2 自动曝光(AE)算法原理

自动曝光,就是让相机自己决定曝光时间和增益的组合,使图像亮度达到目标值。工业场景下,AE不仅要考虑亮度,还要考虑帧率和运动模糊。

AE算法的核心逻辑其实很简单,就三步:

  1. 统计当前亮度:计算图像的平均亮度或加权亮度。
  2. 计算误差:目标亮度 - 当前亮度。
  3. 调整参数:根据误差调整曝光时间、模拟增益、数字增益。

但实际实现时,难点在于如何分配这三个参数。我常用的策略是:

亮度区间 优先调整 限制条件
过暗(低于目标20%以上) 先增加曝光时间,再增加模拟增益 曝光时间不能超过帧周期的80%
微暗(低于目标5-20%) 增加模拟增益 模拟增益不超过传感器最大值的80%
接近目标(±5%以内) 微调数字增益 数字增益不超过1.5x
过亮(高于目标) 先降低模拟增益,再降低曝光时间 避免曝光时间过短导致闪烁

你想想看,如果场景里有运动物体,曝光时间太长就会产生运动模糊。这时候即使亮度达标,图像也是废的。所以工业AE里,我通常会加一个运动检测模块——如果检测到运动,就限制最大曝光时间,用增益来补足亮度。

实战技巧:在AE收敛速度上,我习惯用“分段PID”控制。低误差时用小增益,防止震荡;高误差时用大增益,快速收敛。收敛时间控制在5-10帧以内比较理想。

4.3 增益对信噪比的影响分析

这是本章最核心的部分。很多工程师知道“增益越大噪声越大”,但不知道具体大多少,也不知道怎么量化。

我们先看一个简化的噪声模型:

总噪声 = sqrt(读出噪声² + 散粒噪声² + 量化噪声²)

信号 = 光子数 × 量子效率 × 模拟增益 × 数字增益

SNR = 20 × log10(信号 / 总噪声)

关键点在于:模拟增益同时放大信号和读出噪声,所以SNR基本不变。但数字增益只放大信号,不放大量化噪声之前的噪声,所以SNR会下降。

举个例子,假设传感器读出噪声为10e⁻,信号为100e⁻,ADC量化噪声为5e⁻:

  • 模拟增益2x:信号变200e⁻,读出噪声变20e⁻,量化噪声不变(5e⁻)。SNR = 20×log10(200/√(20²+5²)) ≈ 19.8dB
  • 数字增益2x:信号变200e⁻,读出噪声不变(10e⁻),量化噪声变10e⁻。SNR = 20×log10(200/√(10²+10²)) ≈ 19.0dB

差了将近1dB。在低光照条件下,这个差距会更大。

避坑指南:我曾经在一个PCB AOI项目里,为了省成本用了低端传感器,读出噪声本身就大。结果数字增益一拉,图像暗部全是条纹噪声。后来我强制把数字增益上限设为1.2x,不足的亮度用曝光时间补,问题才解决。记住:数字增益是最后的补救手段,不是常规调节工具。

4.4 增益与曝光的知识体系

下面这张图总结了本章的核心逻辑。你可以把它当作ISP tuning时的检查清单。

增益与曝光控制知识体系 图像亮度控制 模拟增益 曝光时间 数字增益 放大电荷信号(ADC前) SNR基本不变 优先使用 控制光积分时间 影响帧率和运动模糊 受帧周期限制 放大数字码值(ADC后) SNR下降 最后手段 AE算法:动态分配三者

4.5 实战中的增益策略

最后,我分享几个在实际项目中验证过的增益策略:

  • 静态场景(如PCB检测):优先用曝光时间,模拟增益控制在2x以内,数字增益尽量不用。
  • 动态场景(如流水线抓拍):限制曝光时间在1ms以内,用模拟增益补足亮度,数字增益上限1.2x。
  • 低光照场景(如夜间监控):模拟增益可以到4x,但要做好降噪处理。数字增益超过2x基本不可用。
  • 高动态场景(如焊接检测):考虑多帧合成或HDR模式,不要依赖单一增益。

我的习惯:每次做ISP tuning,我都会先固定曝光时间,只调模拟增益,找到传感器的“甜点区”。然后再放开曝光时间,用AE算法自动分配。这样调出来的图像,噪声和亮度都更均衡。

嗯,增益和曝光这部分就讲到这里。记住一句话:能用曝光时间解决的问题,不要用增益;能用模拟增益解决的问题,不要用数字增益。这是工业相机ISP tuning的黄金法则。