尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

034、读出噪声的地板在哪里——源跟随器噪声/列放大器噪声/ADC量化噪声的贡献分解——用光子转移曲线测量读出噪声的实战步骤

034、读出噪声的地板在哪里——源跟随器噪声/列放大器噪声/ADC量化噪声的贡献分解——用光子转移曲线测量读出噪声的实战步骤 034、读出噪声的地板在哪里——源跟随器噪声/列放大器噪声/ADC量化噪声的贡献分解——用光子转移曲线测量读出噪声的实战步骤去年秋天我在调试一款车规级前视摄像头模组传感器是某厂家的1/1.8英寸背照式CMOS标称读出噪声2.1e-。实验室暗场测试数据出来全画幅均值3.8e-角落区域飙到5.2e-。客户那边算法团队直接炸了说夜间低照度下AEB误触发率翻倍。我拿着示波器探头在PCB上戳了半天电源纹波、时钟抖动、PCB地弹全查了一遍最后发现根本不是系统级问题——是读出链路上三个噪声源叠加方式被我算错了。那晚我在实验室白板上画了张噪声贡献分解图突然意识到一个很尴尬的事实我们天天喊读出噪声但很少有人真正把源跟随器、列放大器、ADC这三段噪声拆开测过。今天这篇笔记就把我那次踩坑后整理的光子转移曲线Photon Transfer Curve, PTC实战方法完整写出来包括怎么从一条PTC曲线里把三段噪声分别抠出来。先交代背景。CMOS图像传感器的读出链路从光电二极管复位开始电荷经过源跟随器Source Follower, SF缓冲再通过列放大器Column Amplifier, CA增益最后进ADC量化。每一级都往信号里注入噪声而且这三段噪声的统计特性不一样。SF噪声主要是1/f噪声和随机电报信号RTS跟像素尺寸和工艺直接相关CA噪声是宽带白噪声加列固定模式噪声FPN跟列电路布局和增益档位强相关ADC噪声是量化噪声加比较器失调跟转换位数和参考电压稳定度强相关。这三者叠加不是简单平方和开根号——因为SF噪声和CA噪声在时间上相关CA的采样保持电路会把SF的1/f噪声部分相关化而ADC量化噪声跟前面两级是统计独立的。所以如果你只测一个总读出噪声值然后拿它去跟传感器datasheet对标大概率会像我一样被坑。那次调试的转折点是我决定用PTC方法把噪声拆开。PTC的原理不复杂对传感器施加均匀光照从暗场到接近饱和逐点记录信号均值和方差。在光子散粒噪声主导区方差与信号呈线性关系斜率就是增益K单位DN/e-。把总噪声方差减去散粒噪声方差剩下的就是读出噪声方差。但这里有个关键细节——PTC曲线的纵轴必须是总噪声方差不是标准差。我见过不少工程师直接拿标准差去拟合结果斜率算出来是理论值的一半还以为是传感器增益标错了。正确做法是每个光照点采集至少100帧逐像素计算时间域均值μ和方差σ²然后对全画幅所有像素的σ²取平均得到该光照下的总噪声方差。注意这里一定要用时间域方差不能用空间域方差——空间域方差会把固定模式噪声FPN混进来而FPN是可以通过暗场减除去掉的不属于随机读出噪声。拿到一组信号均值总噪声方差数据点后画图。横轴是信号均值DN纵轴是总噪声方差DN²。你会看到一条先平后升的曲线暗场区信号≈0的方差就是读出噪声方差σ_read²单位DN²线性区斜率就是增益K。但这里有个陷阱——很多传感器的PTC曲线在低信号区不是平的而是略微上翘这是因为暗电流散粒噪声和复位噪声残留。所以取暗场方差时别直接拿信号为0那个点要取信号在0到50DN之间的几个点做线性外推截距才是纯读出噪声方差。我那次调试就是栽在这——直接取了信号0的点结果把暗电流噪声也算进去了读出噪声多估了0.7e-。现在关键来了怎么把σ_read²分解成SF、CA、ADC三段方法是用不同增益档位做多组PTC。假设传感器有模拟增益G列放大器增益数字增益DADC后数字放大。总读出噪声方差以输入参考电子数为单位可以写成σ_read²(e-) σ_SF² (σ_CA² / G²) (σ_ADC² / (G² × D²))注意这里σ_SF是像素源跟随器噪声不随增益变化σ_CA是列放大器输入参考噪声除以G²是因为增益放大后噪声以DN为单位时被放大但折算回电子数时要除以增益σ_ADC是ADC量化噪声除以G²D²同理。实际操作时你至少需要三组增益组合G1, D1G4, D1G1, D4或者G4, D4。每组做一条PTC提取σ_read²(e-)。然后解三元一次方程组就能把σ_SF、σ_CA、σ_ADC分别解出来。这里踩过坑——解方程组时别用最小二乘拟合三个未知数因为三组数据点刚好三个方程直接解就行但要注意数值稳定性。我那次用G1,2,4三档结果σ_CA解出来是负值物理上不可能。后来发现是G2那组PTC的线性区没取对斜率K算小了导致σ_read²(e-)偏大。正确做法是每组PTC的线性区要取信号在饱和值的20%~70%之间太靠近饱和区光响应非线性会让斜率失真太靠近暗场区散粒噪声占比太低拟合误差大。另外每组PTC的暗场方差要单独测别用同一组暗场数据去校正所有增益档位——因为列放大器增益不同其自身暗场噪声贡献也不同。解出三段噪声后你会看到一些有意思的规律。以我调试的那颗传感器为例σ_SF≈1.8e-σ_CA≈1.2e-G1时σ_ADC≈0.9e-12bit ADC满量程约60ke-。总读出噪声平方和开根号≈2.4e-但datasheet标称2.1e-差异主要来自σ_CA——因为datasheet测试条件用的是G4而我在G1下测列放大器噪声被放大了4倍后折算回电子数自然偏大。这解释了为什么客户那边在低增益下噪声超标——他们为了高动态范围用了G1但没意识到列放大器噪声在低增益下是主导项。再往下挖一层SF噪声的1/f成分和RTS成分怎么分开这需要做时域频谱分析。对单个像素采集长序列比如10000帧暗场做FFT看低频段1kHz的功率谱密度斜率。1/f噪声的PSD是1/f^αα≈1RTS噪声表现为特定频率上的洛伦兹峰。但这个方法对设备要求高需要低噪声时钟和稳定的温度控制。我一般只在传感器选型阶段做这个分析量产调试阶段直接用PTC分解就够了。实战步骤总结成清单方便你直接抄作业第一步准备均匀光源。用积分球或者LED平板灯加两层硫酸纸扩散确保画面上任意两点照度差小于1%。别用单颗LED直射那会产生明显的中心亮斑PTC线性区斜率会偏大。光源色温选5000K左右因为传感器量子效率在绿光波段最平坦减少光谱响应差异带来的误差。第二步设置传感器为手动曝光、手动增益关闭自动黑电平校正和镜头阴影校正。这两个功能会改变信号和噪声的关系PTC测出来是处理后的噪声不是传感器本征噪声。我见过有人开着DPC坏点校正测PTC结果坏点被替换后方差被低估了20%。第三步从全黑开始逐步增加光照。每个光照点采集100帧帧间隔要大于传感器读出时间的2倍避免帧间残留电荷影响。每帧数据存成16bit原始格式别用8bit——量化噪声会淹没在8bit的量化台阶里。第四步逐像素计算时间域均值和方差。这里有个性能优化技巧——用numpy的向量化操作别写for循环遍历像素100帧1080P图像for循环要跑几分钟向量化几秒钟就完事。代码注释里我写清楚别这样写# 别这样写——逐像素for循环慢到怀疑人生foriinrange(height):forjinrange(width):mean_val[i,j]np.mean(frames[:,i,j])var_val[i,j]np.var(frames[:,i,j])要这样写# 这样写——numpy向量化快三个数量级mean_valnp.mean(frames,axis0)# frames形状是(100, H, W)var_valnp.var(frames,axis0)第五步对全画幅所有像素的var_val取平均得到该光照下的总噪声方差。注意这里要剔除坏点和热点像素——用3σ准则把var_val超过中位数3倍以上的像素mask掉。否则一个热像素的方差可能是正常像素的100倍直接把平均值拉高。第六步重复步骤二到五至少做5个光照点暗场、10%饱和、30%饱和、50%饱和、70%饱和。每个点记录信号均值和总噪声方差。然后画图拟合线性区斜率K外推暗场截距σ_read²。第七步换增益档位重复全部步骤。至少做三组增益组合。解方程组得到σ_SF、σ_CA、σ_ADC。第八步验证分解结果。把解出的三段噪声代入总噪声公式计算理论总噪声跟实测总噪声对比误差应该在5%以内。如果偏差大检查是不是有额外的噪声源比如电源纹波耦合进SF偏置或者ADC参考电压不稳。最后说点个人经验。第一PTC测量对温度极其敏感。SF噪声的1/f成分随温度升高而增大RTS的切换频率也随温度变化。所以测量时传感器温度要控制在±1°C以内最好用TEC制冷。我那次调试就是没控温上午测和下午测结果差了15%后来发现是实验室空调温度波动导致传感器结温变了3°C。第二别迷信datasheet的读出噪声值。那是在特定增益、特定温度、特定测试条件下的结果你实际应用场景不同噪声分解结果可能完全不同。第三如果三段噪声里σ_ADC占比超过30%说明ADC性能是瓶颈换更高位数的ADC或者优化参考电压电路比优化像素更有效。如果σ_SF占比超过50%那是像素工艺问题只能换传感器或者改像素设计。如果σ_CA占比高看看能不能通过提高模拟增益来压制——但要注意高增益会压缩动态范围这是权衡。那次调试最后怎么收场的我通过PTC分解发现客户用的G1档位下σ_CA是主导项占了总噪声的45%。解决方案不是换传感器而是调整ISP的增益分配策略——把模拟增益从1提到2数字增益相应降低总噪声降低了22%AEB误触发率降到了可接受范围。客户那边很满意但我心里清楚这只是把噪声从一段挪到另一段真正的物理极限还是在那。读出噪声的地板从来不是datasheet上那个数字而是你实际工作条件下三段噪声的叠加结果。测清楚它你才知道你的系统离物理极限还有多远。
返回列表