3. 传感器与噪声:CMOS传感器原理、暗电流与热噪声、读出噪声与光子散粒噪声

做安防ISP这些年,我接触过各种各样的传感器。说实话,CMOS传感器就像相机的“视网膜”,它好不好直接决定了图像质量的底线。很多朋友问我:“为什么同样的场景,有的摄像头晚上噪点少,有的就糊成一片?”答案就在传感器本身和它产生的噪声里。

今天咱们就聊聊CMOS传感器的工作原理,以及那些让人头疼的噪声——暗电流、热噪声、读出噪声、光子散粒噪声。搞懂了这些,你才算真正入了低照度增强的门。

3.1 CMOS传感器工作原理

CMOS传感器,全称是互补金属氧化物半导体图像传感器。它的核心结构是一个像素阵列,每个像素包含一个光电二极管和一个读出电路。

工作原理其实不复杂:

  • 光电转换:光子打到光电二极管上,产生电子-空穴对。光越强,电子越多。
  • 电荷积累:电子在像素的势阱里积累,形成电荷包。
  • 电荷读出:通过行选、列选电路,逐行逐列把电荷转换成电压信号。
  • 模数转换:电压信号经过ADC变成数字值,就是我们看到的像素灰度。

我个人习惯把CMOS传感器想象成一个“电子水桶阵列”。每个像素就是一个水桶,光子就是雨滴。雨下得大,水桶接的水就多。但问题来了——水桶本身也会漏水、会蒸发,这就是噪声的来源。

关键点:CMOS传感器的核心指标包括量子效率(QE)、满阱容量(FWC)、暗电流、读出噪声等。低照度场景下,这些指标直接决定了图像的信噪比。

3.2 暗电流与热噪声

暗电流,说白了就是没有光照时像素产生的“假信号”。为什么会这样?因为半导体材料中的电子在热激发下会跃迁到导带,形成电流。

我在项目中遇到过一款传感器,暗电流在60°C环境下比25°C时大了将近10倍。夏天户外监控,机壳温度轻松到50-60°C,暗电流就成了大问题。

暗电流的主要来源:

  • 耗尽区热产生:硅材料中缺陷能级辅助的热激发
  • 表面态产生:硅-二氧化硅界面处的缺陷
  • 扩散电流:中性区少数载流子扩散到耗尽区

热噪声和暗电流是“孪生兄弟”。热噪声是电阻元件中载流子随机热运动产生的,它的功率谱密度是平坦的——也就是白噪声。温度每升高10°C,暗电流大约翻一倍。这个规律我验证过很多次,基本靠谱。

实战技巧:做低照度ISP时,我建议先做暗电流校正。方法很简单——盖上镜头盖拍一张全黑图,然后把这个“暗场”从正常图像中减掉。但注意,暗电流随温度变化,最好实时更新校正参数。

3.3 读出噪声

读出噪声,是传感器把电荷转换成电压、再经过模拟前端处理时引入的噪声。它和信号大小无关,是固定噪声基底。

读出噪声的主要成分:

  • 复位噪声(KTC噪声):像素复位时,复位管沟道电阻的热噪声被采样到像素电容上。公式是 √(kT/C),k是玻尔兹曼常数,T是温度,C是像素电容。
  • 源跟随器噪声:像素内的源跟随器晶体管贡献的1/f噪声和热噪声。
  • 列放大器噪声:列并行ADC或放大器引入的噪声。
  • 量化噪声:ADC量化过程中产生的噪声,理想情况下是LSB/√12。

我曾经调试过一款传感器,读出噪声高达12个电子。在低照度下,信号可能只有几十个电子,信噪比惨不忍睹。后来换了低噪声设计,读出噪声降到了3个电子,效果立竿见影。

避坑指南:我曾经以为读出噪声是固定的,做降噪时直接减一个固定值。结果发现不同增益下读出噪声不一样——高增益时读出噪声会被放大。正确的做法是测量不同增益下的读出噪声曲线,做分段校正。

3.4 光子散粒噪声

光子散粒噪声,这是“天注定”的噪声。光子的到达是随机的,服从泊松分布。也就是说,即使光照完全均匀,每个像素接收到的光子数也会有波动。

散粒噪声的特性:

  • 噪声大小等于信号电子数的平方根:σ_shot = √(N_e)
  • 信噪比 SNR = N_e / √(N_e) = √(N_e)
  • 信号越强,散粒噪声越大,但信噪比也越高

举个例子:如果信号是100个电子,散粒噪声就是10个电子,信噪比10。如果信号是10000个电子,散粒噪声是100个电子,信噪比100。所以低照度下散粒噪声是主要限制因素。

你想想看,散粒噪声能不能通过算法消除?答案是——不能。因为它是物理本质决定的。我们能做的只有:

  1. 增加进光量(更大光圈、更慢快门)
  2. 提高量子效率(更好的传感器)
  3. 多帧叠加(时间换信噪比)

核心认知:散粒噪声是“好噪声”——它和信号同源,无法消除。读出噪声和暗电流是“坏噪声”——可以通过电路设计和算法校正来抑制。做ISP时,优先干掉“坏噪声”,再想办法应对“好噪声”。

3.5 噪声模型与知识体系

下面这张图是我自己总结的CMOS传感器噪声模型,涵盖了从光子入射到数字输出的完整链路:

CMOS传感器噪声模型与知识体系 入射光子 光电二极管(光电转换) 量子效率 QE · 满阱容量 FWC 光子散粒噪声 σ_shot = √(N_e) 电荷积累与存储 势阱 · 曝光时间 · 电荷转移 暗电流 + 热噪声 温度每10°C翻倍 读出电路(模拟前端) 复位 · 源跟随器 · 列放大器 · ADC 读出噪声 KTC · 1/f · 量化噪声 数字图像数据 总噪声 = √(σ_shot² + σ_dark² + σ_read²) | 信噪比 SNR = 信号 / 总噪声

从这张图可以清楚看到,噪声是在每个环节叠加的。总噪声是各噪声分量的均方根和。低照度下,散粒噪声和读出噪声是主要矛盾;高温环境下,暗电流会变成主导。

3.6 实战中的噪声处理策略

做安防ISP这么多年,我总结了一套噪声处理的优先级:

优先级 噪声类型 处理方法 效果
1 暗电流 暗场校正、温度补偿 消除固定模式噪声
2 读出噪声 低噪声电路设计、相关双采样(CDS) 降低噪声基底
3 光子散粒噪声 多帧叠加、双边滤波、BM3D 提升信噪比
4 热噪声 散热设计、帧率控制 抑制高温噪声

我的经验:做低照度增强时,先做暗电流校正,再做去噪。去噪算法要区分平坦区域和纹理区域——平坦区域用强去噪,纹理区域用弱去噪。我常用的方法是先做边缘检测,然后自适应调整去噪强度。

嗯,传感器噪声这部分内容就到这里。搞懂了这些底层原理,你再看ISP的降噪模块、3DNR算法,就会明白它们到底在解决什么问题。下一节咱们聊聊模拟增益和数字增益的区别,以及怎么在低照度下合理分配增益。


公众号:蓝海资料掘金营,微信deep3321