4. 暗电流测量方法:全黑环境采集、多帧平均法、温度控制法

暗电流这东西,说白了就是传感器在没光的时候自己产生的噪声。你想想看,一个号称“感光”的器件,盖上镜头盖居然还能读出信号,这本身就是个麻烦事。我刚开始调传感器时,总觉得暗电流是小问题,直到有一次在长曝光场景下,整张图偏紫红色,怎么调白平衡都救不回来——后来一查,暗电流已经飙到信号量的15%了。

所以,测量暗电流是补偿的第一步。测不准,后面所有补偿都是瞎忙活。这一章我带你过三种最实用的测量方法。

4.1 全黑环境采集法

这是最基础的方法,也是所有暗电流测量的“金标准”。

操作要点:

  • 用镜头盖完全遮住镜头,最好再贴一层黑色遮光布
  • 在无光实验室进行,关闭所有显示器和指示灯
  • 设置与正常拍摄相同的增益和曝光时间
  • 连续采集多帧,取中间帧分析
⚠️ 常见坑点: 我遇到过有人用手机屏幕当光源调参数,结果屏幕的微弱光线透过镜头盖缝隙漏进去,暗电流测量值偏高了30%。全黑环境不是“差不多黑”,而是“黑”。建议用万用表测一下传感器表面的光照度,低于0.01 lux才算合格。

全黑采集得到的数据,就是每个像素的暗电流原始值。但这里有个问题:单帧数据受读出噪声影响很大,直接拿来用会不准。

4.2 多帧平均法

为什么要做多帧平均?因为暗电流是固定模式噪声(FPN)和随机噪声的混合体。随机噪声服从高斯分布,多帧平均能把它压下去。

具体做法:

  1. 在全黑环境下采集N帧图像(我一般取16帧或32帧)
  2. 对每一帧做黑电平校正(减去光学黑电平)
  3. 逐像素计算N帧的平均值
  4. 得到的就是该像素的暗电流基准值
📊 帧数与噪声抑制效果:
帧数 N 随机噪声抑制比 适用场景
4 50%(√4=2倍) 快速标定,产线抽检
16 75%(√16=4倍) 实验室常规测量
64 87.5%(√64=8倍) 高精度标定,科研用途
256 93.75%(√256=16倍) 极限精度,但耗时太长

我个人习惯用32帧。16帧有时还不够干净,64帧又太慢。32帧是个不错的平衡点,能把随机噪声压到1/5左右,暗电流曲线就很平滑了。

💡 小技巧: 采集时不要用“连拍模式”,帧间隔太短会导致传感器温度累积。我一般每帧间隔1秒以上,让传感器有散热时间。否则测出来的暗电流会越往后越大——那不是真实暗电流,是温漂。

4.3 温度控制法

暗电流对温度极其敏感。我记得有次在客户现场,夏天车间温度35°C,暗电流比实验室25°C时大了将近3倍。所以,只测一个温度点的暗电流是不够的。

为什么要控温测量?

  • 暗电流与温度呈指数关系(Arrhenius公式)
  • 温度每升高6-8°C,暗电流大约翻一倍
  • 不同像素的温敏系数不同,需要逐像素建模

标准测量流程:

  1. 将传感器放入温控箱,设置目标温度(如0°C、25°C、50°C、70°C)
  2. 在每个温度点恒温30分钟,让传感器热平衡
  3. 用全黑环境+多帧平均法采集暗电流数据
  4. 记录每个温度点的暗电流值,拟合温度曲线
📋 典型暗电流-温度关系表(某CMOS传感器实测数据):
温度 (°C) 暗电流 (e⁻/s) 相对25°C倍数
0 0.8 0.27x
25 3.0 1.0x(基准)
50 11.2 3.73x
70 32.5 10.83x

你看,从25°C到70°C,暗电流涨了10倍多。如果不做温度补偿,夏天拍长曝光照片,暗电流能把暗部细节全吃掉。

⚠️ 温度控制注意事项:
  • 温控箱的精度至少±0.5°C,否则拟合曲线会抖动
  • 传感器要完全密封,防止温控箱内结露
  • 我曾经遇到过温控箱风扇振动导致图像模糊——后来在传感器下方加了减震垫才解决
  • 每个温度点至少采集3组数据,取中值,排除异常帧

4.4 三种方法的组合策略

在实际项目中,我不会只用一种方法。我的习惯是:

  • 产线快速标定: 全黑环境 + 4帧平均,只测室温
  • 实验室精度标定: 全黑环境 + 32帧平均,测3个温度点
  • 科研级建模: 全黑环境 + 64帧平均,测5-7个温度点,拟合Arrhenius曲线

下面这张图展示了三种方法的关系和组合逻辑:

暗电流测量方法体系 全黑环境采集法 基础数据来源 多帧平均法 抑制随机噪声 温度控制法 建立温度模型 提供原始帧 提供基准值 暗电流补偿参数 FPN校正 + 温度补偿系数 实际项目中的组合策略 🔹 产线快速标定:全黑 + 4帧平均 + 室温单点 🔹 实验室精度标定:全黑 + 32帧平均 + 3个温度点 🔹 科研级建模:全黑 + 64帧平均 + 5~7个温度点 + Arrhenius拟合 💡 我建议:至少做25°C和50°C两个温度点,覆盖日常使用范围

4.5 测量中的常见陷阱

做了这么多年传感器调试,我踩过的坑不少。这里列几个最常见的:

🚫 陷阱1:忽略光学黑电平(OB)
全黑采集时,传感器周边的光学黑像素(OB)和有效像素区的暗电流不一样。OB区有金属遮光层,暗电流通常比有效像素小。直接用OB值去减有效像素,会欠补偿。我建议:有效像素的暗电流单独测,不要偷懒用OB代替。
🚫 陷阱2:帧率太快导致温升
多帧采集时如果帧率设得太高(比如30fps),传感器会持续发热。我测过,连续采集100帧30fps的图像,传感器温度能上升8-10°C。暗电流随温度指数增长,测出来的值会越来越大。解决办法:帧间隔至少1秒,或者用硬件触发模式单帧采集。
✅ 正确做法: 每次采集前先让传感器在目标温度稳定5分钟。采集过程中用热电偶贴在传感器背面监测温度,确保温度波动不超过±0.3°C。这样测出来的暗电流数据才有重复性。