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 检测流程

  1. 暗场采集:关闭镜头盖,设置最短曝光时间与最低增益,采集至少10帧RAW图并取均值,消除随机噪声。
  2. 亮场采集:均匀光照灰卡(18%反射率),曝光至中间灰度(约最大DN的40%~60%),采集单帧RAW图。
  3. 阈值判定:
    • 暗场:像素DN值 > 暗场均值 + K1 × 暗场标准差 → 标记为热像素。
    • 亮场:像素DN值与周围3×3邻域均值之差 > K2 × 邻域标准差 → 标记为响应不一致像素。
  4. 坏点表生成:记录所有坏点的坐标(x, y)与类型,输出为DPC模块可加载的静态坏点表。
RK平台实践:在RKISP驱动中,坏点表可通过 /sys/class/isp/isp0/dpc/defect_table 节点动态加载。建议在产线阶段生成静态表,运行时仅做动态热像素追踪。

4.1.3 坏点检测流程SVG图

RAW图坏点检测流程 坏点检测流程 暗场采集(10帧均值) 亮场采集(灰卡) 暗场阈值检测 亮场邻域一致性检测 合并坏点表 DPC模块加载 阈值经验值 K1 = 5 ~ 8 K2 = 2 ~ 4 邻域窗口:3×3

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 评估步骤

  1. 采集暗场数据:最短曝光、最小增益,采集多帧求平均,计算像素DN值的标准差σ_dark。
  2. 采集饱和数据:逐渐增加曝光时间或光照强度,直至RAW图出现饱和像素(DN值接近ADC最大值),记录饱和时的曝光条件。
  3. 计算噪声本底:噪声本底 = σ_dark(若考虑读出噪声与暗电流散粒噪声的合成)。
  4. 计算动态范围:代入公式,得到DR值。
注意:动态范围评估必须在线性响应区间进行。若传感器已启用非线性响应(如HDR模式或Gamma校正),需先反线性化或使用原始线性RAW数据。

4.2.3 动态范围评估示意SVG图

RAW图动态范围评估示意 动态范围评估示意 曝光量(对数) 输出DN值 噪声本底 饱和电平 DR (dB) 线性区 斜率 = 传感器增益 单位:DN/e⁻

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 计算流程

  1. 选取ROI:在RAW图中选取N个均匀区域(如64×64像素块),避开坏点与边缘。
  2. 计算均值与标准差:对每个ROI计算μ与σ。
  3. 计算SNR:代入公式,得到每个ROI的SNR值(单位dB)。
  4. 汇总分析:绘制SNR vs. 信号强度曲线,评估传感器在不同光照下的噪声表现。
RK平台工具链:可使用RK提供的 rkisp_analysis 工具或自行编写Python脚本(基于NumPy)批量计算RAW图SNR。建议在调试阶段建立SNR基线数据库,用于对比不同ISP参数对噪声的影响。

4.3.4 SNR计算流程SVG图

RAW图SNR计算流程 RAW图SNR计算流程 输入RAW图 选取均匀ROI 计算μ与σ 计算SNR (dB) 绘制SNR曲线 ISP参数调优 ROI选取建议 • 避开坏点 • 避开边缘渐晕区 • 尺寸:64×64 • 数量:≥5个/亮度级

4.4 三项指标的综合分析

在实际调试中,坏点、动态范围与SNR三者相互关联:

  • 坏点影响SNR计算:若ROI内包含未校正的坏点,σ_noise会被高估,导致SNR偏低。因此SNR计算前必须先执行坏点校正或剔除坏点像素。
  • 动态范围与SNR的关系:高动态范围通常意味着低噪声本底,但若传感器增益设置过高,暗部SNR会恶化,动态范围反而受限。
  • 调试优先级:建议先完成坏点检测与校正,再进行动态范围评估,最后基于校正后的RAW图计算SNR,以此指导去噪与色调映射参数。
RK平台调试清单:
  1. 暗场采集 → 生成坏点表 → 加载至DPC模块。
  2. 线性RAW图 → 计算动态范围 → 确认传感器工作在线性区。
  3. 多亮度级ROI → 计算SNR → 建立基线 → 迭代ISP参数。