2. 图像噪声基础:噪声类型与来源

图像噪声是摄像头输出信号中非期望的随机或伪随机波动,是影响图像质量的首要因素。在嵌入式 Linux 摄像头驱动调试中,准确识别噪声类型并追溯其来源,是后续进行降噪与色彩校正的前提。本节从噪声的数学模型、典型类型及物理来源三个维度展开。

2.1 噪声的数学模型与统计特性

图像噪声通常建模为加性噪声或乘性噪声。设理想图像信号为 \( f(x,y) \),观测到的含噪图像为 \( g(x,y) \),则:

  • 加性噪声:\( g(x,y) = f(x,y) + n(x,y) \),噪声与信号强度无关,典型代表为高斯噪声。
  • 乘性噪声:\( g(x,y) = f(x,y) \cdot n(x,y) \),噪声与信号强度成正比,典型代表为散粒噪声(泊松噪声)。
  • 脉冲噪声:随机替换部分像素值为极值(0 或 255),典型代表为椒盐噪声。
驱动调试提示: 在 V4L2 驱动中,通过 VIDIOC_ENUM_FMT 获取原始 Bayer 格式后,建议先抓取一帧纯黑帧(遮挡镜头)和纯白帧(均匀光照),利用统计直方图快速判断噪声类型与强度。

2.2 三种核心噪声类型

噪声类型 概率分布 空间特性 典型场景 驱动关注点
高斯噪声 正态分布 \( N(0, \sigma^2) \) 每个像素独立叠加,幅度连续 传感器读出电路、模拟增益放大 ADC 参考电压纹波、PCB 布局串扰
椒盐噪声 二值分布(0 或 255) 随机孤立像素被替换 传输误码、存储单元位翻转 MIPI CSI-2 信号完整性、DMA 内存越界
泊松噪声 泊松分布 \( P(\lambda) \),\( \lambda \) 为光子计数均值 噪声方差 = 信号均值,低照度下显著 暗光环境、长曝光、高增益 曝光时间与增益的权衡、HDR 合成
关键区分: 高斯噪声在亮区和暗区幅度相同;泊松噪声在亮区幅度更大(光子散粒噪声);椒盐噪声则表现为黑白点随机分布,与信号强度无关。

2.3 噪声来源分析

摄像头图像噪声的物理来源可归纳为三大类:传感器噪声、电路噪声与环境噪声。下图展示了从光子入射到数字图像输出的完整噪声注入链路。

摄像头图像噪声来源链路 光子入射 光电转换 读出电路 ADC 量化 泊松噪声(散粒) 暗电流噪声 1/f 噪声 + 复位噪声 量化噪声 环境噪声 电路噪声 传感器噪声 光照波动 温度热噪声 电源纹波 时钟抖动 固定模式噪声 像素响应非均匀性

2.4 噪声来源详细分类

2.4.1 传感器噪声

  • 光子散粒噪声(泊松噪声):光子到达的随机性导致,服从泊松分布。低照度下信噪比急剧下降,是传感器噪声的物理下限。
  • 暗电流噪声:热激发产生的电子空穴对,即使无光照也存在。温度每升高 6-8°C,暗电流翻倍。
  • 固定模式噪声(FPN):像素间因制造工艺差异导致的固定偏移,表现为列/行条纹或网格图案。
  • 像素响应非均匀性(PRNU):各像素对相同光照的响应灵敏度不一致,属于乘性噪声。

2.4.2 电路噪声

  • 读出噪声:包括复位噪声(KTC 噪声)和 1/f 噪声,主要来自模拟读出链路的晶体管和电容。
  • 量化噪声:ADC 将模拟信号离散化时产生的误差,分辨率每增加 1 bit,量化信噪比提升约 6 dB。
  • 电源纹波与串扰:PCB 上数字信号切换耦合到模拟电源,导致 ADC 参考电压波动。
  • 时钟抖动:MIPI CSI-2 时钟的相位噪声导致数据采样偏移,产生行噪声。

2.4.3 环境噪声

  • 光照波动:50 Hz/60 Hz 工频闪烁导致帧间亮度周期性变化。
  • 温度热噪声:高温环境加剧暗电流和读出噪声,需通过驱动调节传感器温度补偿参数。
  • 电磁干扰(EMI):电机、射频模块等产生的辐射耦合到摄像头柔性排线(FPC)上。
驱动调试实战: 在 Linux 下使用 media-ctl 和 v4l2-ctl 抓取 RAW 帧后,通过计算相邻帧的差值图像可以分离固定模式噪声与随机噪声。若差值图像存在固定条纹,则 FPN 占主导;若差值图像为均匀随机场,则读出噪声或散粒噪声占主导。

2.5 噪声对图像质量的影响对比

噪声类型 视觉表现 信噪比影响 典型降噪方法
高斯噪声 颗粒感、磨砂感 全局均匀降低 高斯滤波、双边滤波
椒盐噪声 随机黑白点 局部像素完全丢失 中值滤波、形态学滤波
泊松噪声 暗区颗粒明显,亮区较轻 低照度区域严重 方差稳定变换、BM3D
固定模式噪声 固定条纹或网格 低频固定干扰 暗帧减除、列/行校正

2.6 噪声诊断流程

  1. 采集暗帧:遮挡镜头,设置最短曝光时间,获取纯黑图像。分析直方图宽度和均值,判断读出噪声与暗电流水平。
  2. 采集亮帧:均匀光照下拍摄灰卡,计算局部标准差。若标准差随亮度增加而增加,提示泊松噪声主导;若恒定,提示高斯噪声主导。
  3. 帧差分析:连续拍摄两帧静态场景,计算差值图像。差值图像中的固定结构为 FPN,随机部分为时间噪声。
  4. 频谱分析:对图像做 FFT,观察是否存在特定频率的峰值(如 50 Hz 工频干扰、MIPI 时钟谐波)。
驱动层工具链: 使用 v4l2-ctl --set-fmt-video=width=1920,height=1080,pixelformat=RG10 --stream-mmap --stream-to=raw.raw 抓取原始 Bayer 数据,然后通过 raw2dng 或自定义 Python 脚本进行噪声分析。在驱动中可通过 VIDIOC_S_EXT_CTRLS 调节传感器增益、曝光时间和黑电平校准参数,实时观察噪声变化。