1. 夜景成像的物理基础

做夜景算法,第一件事不是调参数,而是理解光是怎么变成数字信号的。说白了,你得知道噪声从哪来,才能在RAW域把它按住。我刚开始接触这个方向时,也踩过不少坑,今天把这些经验拆开来讲。

1.1 光子噪声模型

光是一种粒子流。每个光子打到传感器上,就是一个随机事件。这个随机性,就是光子噪声的根源。

光子噪声服从泊松分布。什么意思?

  • 信号越强,光子数越多,噪声值越大
  • 但信噪比(SNR)会随信号增强而提高
  • 夜景下信号弱,光子噪声就成了主要限制因素

核心公式:光子噪声的标准差 = √(信号电子数)

信噪比 SNR = 信号电子数 / √(信号电子数) = √(信号电子数)

举个例子。一个像素收到100个电子,噪声就是10个电子,SNR=10。如果收到10000个电子,噪声是100个电子,但SNR=100。夜景下像素可能只收到几个电子,SNR低得可怜。

我在项目中遇到过一个问题:用长曝光拍夜景,暗部出现奇怪的颗粒感。一开始以为是传感器坏了,后来一算,就是光子噪声在作怪。曝光时间翻倍,信号翻倍,噪声只增加√2倍,SNR提升了√2倍。这就是为什么夜景需要长曝光或大光圈。

1.2 暗电流与热噪声

即使完全没光,传感器也会产生电子。这就是暗电流。温度越高,暗电流越大。

噪声类型 来源 与温度关系 与曝光时间关系
光子噪声 光子随机到达 无关 √(曝光时间)
暗电流噪声 热激发电子 每7°C翻倍 线性增长
读出噪声 电路读取过程 弱相关 固定值

暗电流噪声也服从泊松分布,但它的均值随温度和时间变化。我建议你在做夜景算法时,一定要考虑温度补偿。我曾经在夏天户外测试,手机摄像头烫得厉害,暗部全是热噪点。后来加了温度查表校正,效果立竿见影。

避坑指南:我曾经以为暗电流是固定模式噪声,用减暗帧就能搞定。结果发现温度一变,暗电流分布全变了。后来改用动态暗电流估计,才真正解决问题。

1.3 RAW域信号特性分析

RAW域是算法的起点。理解它的特性,比在YUV域瞎调重要得多。

1.3.1 RAW数据的线性特性

RAW数据是线性的。像素值正比于接收到的光子数。这一点很关键。

  • 线性意味着噪声模型可以直接用
  • 线性意味着增益调整就是简单的乘法
  • 线性意味着暗电流校正就是减法

你想想看,如果在YUV域做降噪,噪声已经被Gamma曲线扭曲了,不再是简单的泊松分布。这就是为什么我坚持在RAW域做降噪——模型更准,效果更好。

1.3.2 RAW域的噪声分布

RAW域的噪声不是均匀的。暗区噪声大,亮区噪声小(相对信号而言)。

经验之谈:我习惯把RAW域的噪声分成三段:

  1. 暗区(0-10%):读出噪声主导,固定模式噪声明显
  2. 中间区(10-80%):光子噪声主导,泊松分布
  3. 亮区(80-100%):光子噪声+量化噪声,信噪比高

1.3.3 黑电平与暗电流校正

RAW数据有一个黑电平偏移。这个偏移必须准确扣除,否则暗部颜色会偏。

// 黑电平校正示例
uint16_t black_level = 64;  // 10-bit RAW常见值
uint16_t corrected_pixel = raw_pixel - black_level;

// 暗电流校正(需要温度补偿)
float temp_coeff = lookup_temp_coeff(sensor_temp);
uint16_t dark_current = estimate_dark_current(exposure_time, temp_coeff);
uint16_t final_pixel = corrected_pixel - dark_current;

嗯,这里要注意:黑电平不是固定值。不同增益、不同温度下,黑电平会漂移。我建议你用传感器厂商提供的校准表,或者自己做一个动态黑电平估计。

1.4 知识体系总览

下面这张图把本章的核心逻辑串起来了。你可以把它当作夜景算法的起点地图。

夜景成像物理基础框架 夜景成像物理基础框架 光子噪声模型 暗电流与热噪声 RAW域信号特性 泊松分布 SNR = √(信号) 温度每7°C翻倍 与曝光时间线性相关 线性响应 黑电平偏移 核心思路 理解噪声来源 → 建立数学模型 → 在RAW域精准校正 这是所有夜景算法的物理基础,绕不过去

1.5 实战要点总结

做夜景算法,我建议你记住这几条:

  1. 噪声模型要选对。光子噪声用泊松,读出噪声用高斯,别混为一谈。
  2. 温度是暗电流的命门。不做温度补偿,夜景算法就是空中楼阁。
  3. RAW域是降噪的最佳战场。线性数据让模型更简单、更准确。
  4. 黑电平校正要动态。固定值校正会留下系统性偏差。

个人习惯:我每次拿到新传感器,第一件事就是拍一组暗帧(盖住镜头),分析暗电流分布和温度关系。这个数据能帮你省下后面80%的调参时间。