4. RAW图质量分析:坏点检测、动态范围评估与信噪比计算
RAW图是ISP处理流程的起点,其质量直接决定最终YUV图像的上限。在RK平台ISP调试中,对RAW图进行系统化的质量分析是参数校准的前提。本章聚焦三项核心指标:坏点、动态范围与信噪比(SNR),分别阐述检测原理、评估方法与计算流程。
核心原则:RAW图分析应在“暗场”(镜头盖遮挡)与“亮场”(均匀光照灰卡)两种条件下分别采集,以分离传感器固有噪声与光学系统引入的缺陷。
4.1 RAW图坏点检测
坏点(Defect Pixel)是指传感器阵列中响应异常的光电二极管,表现为固定高亮(白点)、固定暗点(黑点)或响应不一致。坏点检测是ISP坏点校正(DPC)模块的输入依据。
4.1.1 坏点分类与特征
| 类型 | 暗场表现 | 亮场表现 | 成因 |
|---|---|---|---|
| 热像素(Hot Pixel) | 高亮(DN值远高于暗场均值) | 饱和或偏亮 | 暗电流过大,温度敏感 |
| 死像素(Dead Pixel) | 极低(DN值接近0) | 始终暗点 | 光电二极管损坏 |
| 响应不一致像素 | 正常 | 偏离局部均值超过阈值 | 制造工艺偏差 |
4.1.2 检测流程
- 暗场采集:关闭镜头盖,设置最短曝光时间与最低增益,采集至少10帧RAW图并取均值,消除随机噪声。
- 亮场采集:均匀光照灰卡(18%反射率),曝光至中间灰度(约最大DN的40%~60%),采集单帧RAW图。
- 阈值判定:
- 暗场:像素DN值 > 暗场均值 + K1 × 暗场标准差 → 标记为热像素。
- 亮场:像素DN值与周围3×3邻域均值之差 > K2 × 邻域标准差 → 标记为响应不一致像素。
- 坏点表生成:记录所有坏点的坐标(x, y)与类型,输出为DPC模块可加载的静态坏点表。
RK平台实践:在RKISP驱动中,坏点表可通过
/sys/class/isp/isp0/dpc/defect_table 节点动态加载。建议在产线阶段生成静态表,运行时仅做动态热像素追踪。
4.1.3 坏点检测流程SVG图
4.2 RAW图动态范围评估
动态范围(Dynamic Range, DR)定义为传感器最大不饱和信号与噪声本底之比,以dB为单位。它表征RAW图能同时记录亮部与暗部细节的能力。
4.2.1 动态范围定义
对于RAW图,动态范围的计算公式为:
DR = 20 × log10( I_max / I_noise_floor )
其中:
- I_max:传感器最大不饱和输出(通常为ADC满量程DN值,如4095 for 12-bit RAW)。
- I_noise_floor:噪声本底,即暗场RAW图的均方根噪声(RMS Noise),单位为DN。
4.2.2 评估步骤
- 采集暗场数据:最短曝光、最小增益,采集多帧求平均,计算像素DN值的标准差σ_dark。
- 采集饱和数据:逐渐增加曝光时间或光照强度,直至RAW图出现饱和像素(DN值接近ADC最大值),记录饱和时的曝光条件。
- 计算噪声本底:噪声本底 = σ_dark(若考虑读出噪声与暗电流散粒噪声的合成)。
- 计算动态范围:代入公式,得到DR值。
注意:动态范围评估必须在线性响应区间进行。若传感器已启用非线性响应(如HDR模式或Gamma校正),需先反线性化或使用原始线性RAW数据。
4.2.3 动态范围评估示意SVG图
4.3 RAW图信噪比(SNR)计算
信噪比(Signal-to-Noise Ratio, SNR)是衡量RAW图质量的核心量化指标,直接影响后续ISP模块(如去噪、锐化)的参数设定。
4.3.1 SNR定义与公式
对于RAW图,SNR通常定义为信号均值与噪声均方根之比:
SNR = 20 × log10( μ_signal / σ_noise )
其中:
- μ_signal:均匀亮场区域像素DN值的均值。
- σ_noise:同一区域像素DN值的标准差(包含散粒噪声、读出噪声、固定模式噪声等)。
4.3.2 分区域SNR计算
为全面评估RAW图质量,建议在以下典型亮度区域分别计算SNR:
| 区域类型 | 目标DN值(12-bit) | 评估意义 |
|---|---|---|
| 暗区 | 50 ~ 200 | 评估暗部噪声水平,影响去噪强度 |
| 中间调 | 800 ~ 1200 | 评估典型场景SNR,反映整体画质 |
| 亮区 | 3000 ~ 3800 | 评估高光区域噪声,防止过曝区域噪声放大 |
4.3.3 计算流程
- 选取ROI:在RAW图中选取N个均匀区域(如64×64像素块),避开坏点与边缘。
- 计算均值与标准差:对每个ROI计算μ与σ。
- 计算SNR:代入公式,得到每个ROI的SNR值(单位dB)。
- 汇总分析:绘制SNR vs. 信号强度曲线,评估传感器在不同光照下的噪声表现。
RK平台工具链:可使用RK提供的
rkisp_analysis 工具或自行编写Python脚本(基于NumPy)批量计算RAW图SNR。建议在调试阶段建立SNR基线数据库,用于对比不同ISP参数对噪声的影响。
4.3.4 SNR计算流程SVG图
4.4 三项指标的综合分析
在实际调试中,坏点、动态范围与SNR三者相互关联:
- 坏点影响SNR计算:若ROI内包含未校正的坏点,σ_noise会被高估,导致SNR偏低。因此SNR计算前必须先执行坏点校正或剔除坏点像素。
- 动态范围与SNR的关系:高动态范围通常意味着低噪声本底,但若传感器增益设置过高,暗部SNR会恶化,动态范围反而受限。
- 调试优先级:建议先完成坏点检测与校正,再进行动态范围评估,最后基于校正后的RAW图计算SNR,以此指导去噪与色调映射参数。
RK平台调试清单:
- 暗场采集 → 生成坏点表 → 加载至DPC模块。
- 线性RAW图 → 计算动态范围 → 确认传感器工作在线性区。
- 多亮度级ROI → 计算SNR → 建立基线 → 迭代ISP参数。