3、彩噪的成因:传感器热噪声、ISO增益放大、暗电流、量化误差的物理机制

好,咱们来聊聊彩噪。说实话,彩噪比亮度噪点更让人头疼。亮度噪点顶多是画面变粗糙,彩噪一出来,画面里全是红红绿绿的斑点,看着特别脏。我最早接触这个坑,是在做一款手机摄像头模组调试的时候。当时夜景模式拍出来,暗部全是彩色雪花,被客户直接打回。从那以后,我就把彩噪的物理机制摸了个透。

彩噪不是凭空冒出来的。它背后有四个核心推手:传感器热噪声、ISO增益放大、暗电流、量化误差。咱们一个一个拆开看。

3.1 传感器热噪声:底层的随机扰动

先说说热噪声。你想想看,CMOS传感器本质上是一堆光电二极管。温度一高,里面的电子就会乱跑。这种随机运动产生的电流,就叫热噪声。

热噪声有个特点:它是宽频带的,而且跟温度直接挂钩。温度每升高10度,热噪声功率大约翻一倍。我在实验室测过,夏天和冬天同一块传感器,暗电流噪声能差出30%以上。

关键点:热噪声在RGB三个通道上的分布是随机的。但拜耳阵列的排列方式,会让这种随机噪声在插值后变成有规律的彩色斑点。说白了,热噪声是彩噪的种子。

嗯,这里要注意。热噪声本身是白噪声,但经过色彩插值算法一处理,原本相邻像素的随机差异,就会被放大成红蓝交替的色块。这就是为什么你看到的彩噪往往是红绿蓝相间的。

3.2 ISO增益放大:噪声的放大器

ISO增益,说白了就是把信号放大。但问题是,它分不清信号和噪声。

传感器输出的原始信号很微弱,必须经过模拟增益放大器。这个放大器在放大光电信号的同时,也把热噪声、读出噪声一股脑全放大了。我习惯把ISO增益比作一个扩音器——你对着它说话,它把声音放大,但背景里的电流声也跟着震耳欲聋。

为什么ISO越高彩噪越明显?因为增益放大器对不同通道的放大倍数不是完全一致的。我遇到过一款传感器,ISO 3200时,红色通道的增益比蓝色通道高了0.3dB。就这么一点差异,在暗部就变成了明显的红色彩噪。

我的经验:做ISP调试时,我建议先固定ISO 100测一遍底噪,再逐级推高ISO。这样能清楚看到增益放大对彩噪的贡献量。如果ISO 400以下彩噪就很明显,那问题大概率出在传感器本身,而不是算法。

3.3 暗电流:无光也有电

暗电流,这个名字很形象。就是传感器在完全没有光照的情况下,依然会产生的电流。

为什么会这样?因为半导体材料里总有杂质和缺陷。这些缺陷会形成陷阱能级,电子在热激发下会从价带跃迁到导带,形成漏电流。暗电流的大小跟曝光时间温度成正比。

我做过一个实验:把镜头完全遮住,曝光30秒,拍出来的暗帧里全是彩噪。这就是暗电流的杰作。而且暗电流在RGB通道上分布不均匀——通常绿色通道的暗电流最小,红色和蓝色通道更大。这种通道间的不平衡,直接导致了彩噪。

通道 典型暗电流 (e-/s) 对彩噪的贡献
R 0.5 - 2.0 高(红光波长穿透深,缺陷多)
G 0.2 - 1.0 低(绿光波长居中,工艺优化好)
B 0.3 - 1.5 中(蓝光波长短,表面吸收强)

你看这个表就明白了。红色通道的暗电流最大,所以彩噪里红色成分往往最扎眼。我曾经调试过一款长曝光相机,30秒曝光下红色通道的暗电流是绿色通道的4倍。最后不得不在ISP里单独对红色通道做暗电流补偿。

3.4 量化误差:数字世界的精度损失

量化误差,说白了就是模数转换时的精度损失。传感器输出的模拟电压,经过ADC转换成数字信号。这个转换过程是有步长的——比如10位ADC,步长就是1/1024。

你想想看,如果信号本身很微弱,比如只有0.5个步长,那ADC要么输出0,要么输出1。这种四舍五入的误差,在暗部区域会非常明显。而且量化误差在RGB三个通道上是独立的,这就导致了通道间的随机偏差,最终表现为彩噪。

避坑指南:我曾经遇到过一个案例,某款传感器在低光下彩噪异常严重。排查了热噪声、暗电流都没问题,最后发现是ADC的参考电压不稳定。量化误差从0.5 LSB跳到了1.2 LSB。所以,如果你发现彩噪有规律性条纹,先查ADC供电。

量化误差还有一个隐藏问题:非线性。理想的ADC是线性的,但实际器件在低信号区往往有非线性响应。这种非线性会放大低光区域的噪声,让彩噪更加明显。

3.5 四个因素的叠加效应

好了,四个因素都讲完了。但实际场景里,它们不是单独工作的。它们是叠加的。

我画个简单的逻辑链给你看:

热噪声 → 暗电流 → 读出噪声 → ISO增益放大 → 量化误差 → 彩噪
   ↑          ↑           ↑            ↑            ↑
 温度      曝光时间    传感器工艺      ISO值       ADC精度

你看,每个环节都在给彩噪添砖加瓦。热噪声和暗电流是源头,ISO增益是放大器,量化误差是最后的精度损失。这四个因素叠加在一起,就形成了我们看到的彩色噪点。

我个人习惯把彩噪的成因总结成一句话:物理层面的随机性,经过电路放大和数字量化后,在色彩空间里表现为通道间的随机偏差

嗯,最后说个实战技巧。如果你在做ISP降噪算法,建议先区分彩噪的类型:

  • 低频彩噪(大块色斑):多半是暗电流和热噪声引起的,用暗帧减法可以去除
  • 高频彩噪(细小彩色点):多半是ISO增益放大和量化误差引起的,需要用双边滤波或BM3D

我曾经在项目里犯过一个错:对所有彩噪都用同一种降噪参数。结果低频的去了,高频的还在;高频的压下去了,低频的又糊了。后来才明白,必须分频段处理。

好了,这一节就到这里。彩噪的物理机制搞清楚了,下一节咱们聊聊怎么在ISP pipeline里精准定位彩噪的源头。