4、读出噪声(Read Noise):高斯分布建模,相关双采样(CDS)原理,ADC量化噪声
读出噪声,说白了就是传感器在“读”这个动作里自己产生的底噪。它不像光子散粒噪声那样跟信号挂钩,而是电路本身固有的。你信号再弱,它也在那;你盖上镜头盖,它依然存在。我刚开始调图像质量时,最头疼的就是这个噪声——因为它藏得深,改起来又牵一发动全身。
4.1 读出噪声的物理来源
读出噪声主要来自三个环节:像素内源极跟随器的热噪声、列级放大器(如 PGA)的 1/f 噪声,以及 ADC 量化过程引入的误差。这些噪声叠加在一起,最终在输出端表现为一个近似高斯分布的总噪声。
我个人习惯把读出噪声拆成两部分来看:
- 模拟域噪声:包括像素复位噪声(kTC 噪声)、源极跟随器沟道热噪声、列放大器宽带噪声。
- 数字域噪声:主要是 ADC 量化噪声,以及电源/衬底耦合进来的高频干扰。
嗯,这里要注意:kTC 噪声虽然叫“复位噪声”,但它其实是一种热噪声,带宽由复位开关的导通电阻和像素电容决定。公式很简单:Vn² = kT / C。你想想看,像素电容越大,噪声越小,但转换增益也会下降——这就是个典型的 trade-off。
4.2 高斯分布建模
读出噪声的幅度分布,在大多数 CMOS 传感器中都可以用高斯分布来近似。为什么?因为它是多个独立随机过程的总和,中心极限定理说了算。
我曾在项目中遇到过一款传感器,读出噪声在低增益下表现正常,但一切换到高增益(比如 16x 以上),直方图尾部就出现非对称拖尾。查到最后发现是列放大器偏置电流不足,导致大信号摆幅下线性度恶化,噪声分布偏离了高斯模型。所以,高斯建模是基础,但别迷信它。
读出噪声高斯模型关键参数:
- 均值 μ:通常接近 0(无偏置),但实际会有固定偏移,需做黑电平校准。
- 标准差 σ:即读出噪声的 RMS 值,单位常用 e⁻(电子数)或 DN(数字码)。
- 概率密度函数:p(x) = (1 / (σ√(2π))) · exp(-(x-μ)² / (2σ²))
实际测量时,我们通常取暗场(无光照)下多帧数据的像素值,计算其标准差作为读出噪声的估计值。但要注意:暗场里还包含暗电流散粒噪声和固定模式噪声(FPN),需要做帧差法或双采样来分离。
4.3 相关双采样(CDS)原理
相关双采样,英文叫 Correlated Double Sampling,简称 CDS。它是 CMOS 图像传感器里最经典的降噪技术之一,专门对付复位噪声和 1/f 噪声。
原理其实很简单:对同一个像素做两次采样——一次在复位后(采样复位电平),一次在电荷转移后(采样信号电平)。然后做差,把两次采样中共模的噪声分量抵消掉。
为什么会有效?因为复位噪声和 1/f 噪声在时间上是低频相关的。两次采样间隔足够短(通常几微秒),噪声幅度变化不大,相减后大部分被消除。我刚开始做 ISP 时,总觉得 CDS 是硬件的事,后来调暗光噪声才发现,如果 CDS 时序没配好,残留噪声会直接吃掉低照度下的动态范围。
CDS 实现方式对比:
| 方式 | 采样点 | 优点 | 缺点 |
|---|---|---|---|
| 模拟 CDS | 像素内或列级 | 带宽高,噪声抑制好 | 需要额外电容/开关,面积大 |
| 数字 CDS | ADC 之后 | 实现灵活,面积小 | 受 ADC 噪声影响,延迟大 |
| 差分 CDS | 列级差分路径 | 共模抑制比高 | 功耗较高 |
我曾经调过一款全局快门传感器,它的 CDS 时序跟卷帘快门完全不同——因为全局快门需要同时复位所有像素,再同时读出。如果 CDS 的两次采样间隔没对准像素的电荷转移窗口,残留噪声能高出 3~5 倍。嗯,那段时间我几乎天天盯着示波器看时序波形。
4.4 ADC 量化噪声
ADC 量化噪声,是模拟信号转数字时必然产生的误差。理想情况下,量化噪声的 RMS 值为 LSB / √12,其中 LSB 是 ADC 的最低有效位对应的电压。
举个例子:一个 10-bit ADC,满量程 1V,LSB ≈ 0.977 mV。那么量化噪声 RMS ≈ 0.977 / √12 ≈ 0.282 mV。如果传感器转换增益是 100 μV/e⁻,这个量化噪声等效为 2.82 e⁻。你想想看,如果读出噪声本身只有 3 e⁻,那 ADC 量化噪声就占了将近一半——这时候提升 ADC 位数或降低 LSB 电压就很有必要了。
避坑指南:我曾经遇到过一个项目,ADC 量化噪声在常温下没问题,但高温时 ADC 的 INL(积分非线性)恶化,量化噪声分布从均匀分布变成了带谐波的复杂分布。结果暗场图像上出现规律的条纹噪声,怎么调 CDS 都去不掉。最后发现是 ADC 参考电压的温度系数没补偿好。
量化噪声的分布,理想情况下是均匀分布(幅度在 ±0.5 LSB 之间)。但实际 ADC 存在 DNL(微分非线性)和 INL 误差,量化台阶不均匀,噪声分布会偏离均匀模型。我建议在评估 ADC 对读出噪声的贡献时,不要只看理论值,一定要测实际 DNL 曲线。
4.5 读出噪声的链路预算
整个读出链路的噪声,可以近似为各环节噪声的方和根(RSS)。我习惯用下面这个表格来做预算:
| 噪声源 | 典型值(e⁻ RMS) | 备注 |
|---|---|---|
| 像素复位噪声(kTC) | 2~5 | CDS 后可降至 0.5~1 |
| 源极跟随器热噪声 | 1~3 | 与带宽和偏置电流相关 |
| 列放大器噪声 | 1~4 | 高增益下更明显 |
| ADC 量化噪声 | 0.5~3 | 取决于位数和 LSB |
| 总读出噪声(典型) | 2~8 | 高端传感器可做到 <2 |
做链路预算时,我通常会留 20% 的余量。因为实际 PCB 布局、电源纹波、温度漂移都会让噪声比理论值高一点。你想想看,如果预算刚好卡在指标边缘,量产时良率一定会给你颜色看。
4.6 本章知识结构图
下面这张图把读出噪声的组成、建模方法、CDS 原理和 ADC 量化噪声的关系串起来了:
4.7 小结与个人经验
读出噪声的调优,我总结了三句话:
- 先测准,再调优——不要上来就改寄存器。先做暗场帧差,把读出噪声的 RMS 值和分布形态摸清楚。
- CDS 是基础,但不是万能——它对付复位噪声和 1/f 噪声很有效,但对 ADC 量化噪声和电源耦合噪声无能为力。
- 链路预算要留余量——我见过太多项目因为噪声预算卡太紧,量产时温度一高就超标。留 20% 的余量,睡得更安稳。
嗯,这一章的内容就到这里。读出噪声是图像质量的基础指标之一,理解它的来源和建模方法,后面调暗光噪声、动态范围、信噪比的时候会顺手很多。