3. onsemi传感器噪声测试环境搭建
噪声测试与坏点治理的第一步不是写算法,而是把"可控的光、可控的温度、可控的采集链路"搭起来。onsemi 的图像传感器(如 AR/ARX 系列、PYTHON 系列、Hyperlux 系列)在数据手册中给出的暗电流、读出噪声、DSNU、PRNU 等指标,都建立在明确的测试条件之上:光照均匀度、色温、积分时间、结温、增益、模拟前端带宽。如果环境不可控,测出来的"噪声"里混着光源纹波、温漂和采集链路噪声,后续坏点判定就失去意义。本节围绕暗室、积分球、光源、温控平台、采集卡与评估板选型,以及 onsemi 评估套件的连接与配置展开。
一、测试环境各环节的作用与选型要点
暗室用于暗电流、暗噪声、暗坏点测试,核心指标是杂散光抑制能力。工程上通常要求暗室内部在传感器工作波段(可见光 400–700 nm,近红外可到 850–940 nm)的漏光低于传感器暗信号等效照度的 1/10。实操中可用黑绒布 + 遮光罩 + 传感器镜头盖三重遮蔽,并在盖镜头盖后采集 100 帧,观察平均 DN 是否随积分时间线性增长——若线性增长,说明是真实暗电流;若出现与积分时间无关的固定偏置,多为读出链路失调。
积分球用于平场(PRNU、DSNU、坏点)与线性度测试,关键参数是出光口均匀度(一般要求中心 80% 区域优于 98%)、开口直径与传感器视场匹配。球内光源经多次漫反射后到达出光口,因此积分球同时起到"匀光"和"去偏振"作用。测试时传感器应贴近出光口,避免环境光从侧面进入。
光源需覆盖两类需求:可调亮度的宽谱白光(如卤素灯 + 中性密度滤光片,或高显色 LED)用于平场与响应测试;单色/窄带光源(LED + 窄带滤光片或单色仪)用于量子效率与光谱响应。光源稳定性直接影响 PRNU 测量重复性,建议光源驱动采用恒流源,并在积分球内加监测光电二极管做闭环反馈。
温控平台是噪声测试中最容易被忽视的一环。onsemi 传感器的暗电流大约每升高 6–8 ℃ 翻一倍,因此暗电流测试必须锁定结温。常用方案是 TEC 半导体制冷片 + 热敏电阻/PT1000 反馈 + PID 控制器,把传感器封装背面或评估板铜箔区控制在设定温度(如 25 ℃、60 ℃、85 ℃)。测试前需等待热平衡(通常 5–10 分钟),并记录实际结温而非平台温度。
采集卡与评估板决定数据链路的噪声底。onsemi 评估套件通常由传感器子板(如 AR0234CS 子板)+ 接口/处理底板(如 APTINA 或 DevWare 兼容底板)+ USB 3.0/千兆以太网采集通道组成。选型时要关注:MIPI/LVDS 通道数与传感器输出匹配、位深(10/12 bit)、帧率是否满足多帧平均需求、是否支持 RAW 输出而非 ISP 处理后的 YUV。若采集卡自带压缩或自动增益,会掩盖真实噪声,必须关闭。
二、onsemi 评估套件的连接与配置
以典型的 onsemi DevWare 评估链路为例,连接顺序为:传感器子板通过板对板连接器插到底板 → 底板通过 USB 3.0 或千兆以太网连到 PC → 安装 DevWare 与对应传感器 XML 寄存器配置 → 上电后识别设备。上电前务必确认子板供电电压(常见 1.8 V/2.8 V/3.3 V 多域)与底板跳线一致,反接或电压错配会直接损坏传感器。
配置阶段的核心是寄存器初始化。DevWare 通过 XML 文件描述传感器的寄存器序列,包括 PLL 配置、MIPI 时序、曝光/增益、测试图案等。噪声测试时建议:
- 关闭所有自动算法(自动曝光、自动白平衡、自动增益、镜头阴影校正、坏点校正),否则测到的是"处理后的噪声"。
- 输出格式设为 RAW10 或 RAW12,位深与后续统计脚本一致。
- 固定模拟增益与数字增益(如模拟增益 1×、数字增益 1×),避免增益切换引入额外噪声。
- 固定积分时间,暗场测试时先盖镜头盖,再设置曝光。
采集端建议使用 onsemi 提供的 SDK 或直接调用 DevWare 的抓帧接口,把连续 N 帧(如 100 帧)保存为无压缩 RAW 文件。上位机统计脚本按以下方式计算:
# 示例:暗场 100 帧统计(伪代码,参数为教学示例)
frames = load_raw("dark_100f.raw", width=1920, height=1200, bit=12)
mean_frame = mean(frames, axis=0) # 每像素时间平均
temporal_noise = std(frames, axis=0) # 时间噪声(读出噪声+暗噪声)
dsnu = std(mean_frame) # 空间噪声(暗信号非均匀性)
hot_pixels = count(mean_frame > mean(mean_frame) + 5*std(mean_frame))
print("temporal_noise(DN) =", mean(temporal_noise))
print("DSNU(DN) =", dsnu)
print("hot_pixels =", hot_pixels)
平场测试则把积分球亮度调到传感器满阱的 50% 左右,采集 100 帧,用同样方式计算 PRNU:先对每帧做去暗场,再求时间平均,最后计算空间标准差与均值的比值。若 PRNU 明显高于数据手册典型值,应检查积分球均匀度、光源纹波和镜头阴影。
三、环境搭建的检查清单
| 环节 | 关键检查项 | 示例判据 |
|---|---|---|
| 暗室 | 盖镜头盖后暗信号随积分时间线性 | R² > 0.99 |
| 积分球 | 出光口中心 80% 区域均匀度 | ≥ 98% |
| 光源 | 恒流驱动 + 监测 PD 闭环 | 波动 < 0.5% |
| 温控 | 热平衡后结温波动 | ±0.5 ℃ |
| 评估板 | RAW 直出、自动算法关闭 | 寄存器确认 |
| 采集卡 | 无压缩、无丢帧 | 帧计数一致 |
完成上述搭建后,才能进入下一步的噪声分解与坏点判定。环境本身的可重复性,决定了后续所有算法结论是否可信。