噪声来源分析:传感器噪声、光子噪声、量化噪声、HDR合成引入的噪声
做HDR图像处理,说白了就是在跟噪声打仗。我做了这么多年图像处理,最深的体会就是——不懂噪声,就别谈HDR。你想想看,HDR要把多张不同曝光的照片合成一张,这个过程本身就会放大噪声。如果连噪声从哪来的都搞不清楚,那降噪就无从下手。
这一节,咱们就把HDR图像里的噪声来源掰开揉碎了讲清楚。我把它分成四大类:传感器噪声、光子噪声、量化噪声,以及HDR合成引入的噪声。每一类我都用实际项目里的例子来说明。
4.1 传感器噪声:硬件天生的“底噪”
传感器噪声,说白了就是CMOS或者CCD传感器本身带来的。它跟光信号没关系,就算你把镜头盖盖上,拍一张全黑的照片,里面照样有噪声。这就是传感器的“底噪”。
我个人习惯把传感器噪声分成两类:
- 固定模式噪声(FPN):每个像素点有固定的偏移和增益偏差,拍出来的暗场图像不是均匀的黑色,而是有固定的条纹或斑点。
- 暗电流噪声:温度越高,电子越活跃,即使没有光照,传感器也会产生电子。曝光时间越长,暗电流积累越多。
传感器噪声的特点是与信号无关,在暗部区域尤其明显。HDR合成时,暗帧会被大幅度提亮,传感器噪声也会被同步放大,这就是为什么HDR照片的暗部经常看起来“脏脏的”。
4.2 光子噪声:物理定律躲不开
光子噪声,也叫散粒噪声。它来自光的量子本质——光子到达传感器的过程是随机的,服从泊松分布。
为什么会这样?你想想看,光是由一个个光子组成的。在单位时间内,到达某个像素的光子数量不是固定的,而是在一个平均值附近波动。这个波动就是光子噪声。
光子噪声有个重要特性:它的标准差等于信号强度的平方根。
| 信号强度(光子数) | 光子噪声标准差 | 信噪比(SNR) |
|---|---|---|
| 100 | 10 | 10:1 |
| 1,000 | 31.6 | 31.6:1 |
| 10,000 | 100 | 100:1 |
| 100,000 | 316.2 | 316.2:1 |
从表格里能看出来:信号越强,信噪比越高。这就是为什么过暗的帧噪声特别大——光子数太少,信噪比太低。
我记得有一次做夜景HDR,短曝光帧的亮部很干净,但长曝光帧的暗部全是颗粒。当时团队里有人怀疑是传感器坏了。我让他算了一下光子噪声的理论值,发现跟实测完全吻合——不是硬件问题,是物理极限。
4.3 量化噪声:模数转换的“舍入误差”
量化噪声,是ADC(模数转换器)把模拟信号转成数字信号时产生的。说白了就是舍入误差。
假设你的ADC是10位的,那它能表示的灰度范围是0-1023。如果某个像素的真实电压对应的是1023.7,那ADC只能记成1023,这0.7的误差就是量化噪声。
量化噪声的幅度取决于ADC的位数:
- 8位ADC:量化步长 = 1/256,量化噪声较大
- 10位ADC:量化步长 = 1/1024,量化噪声中等
- 12位ADC:量化步长 = 1/4096,量化噪声较小
- 14位及以上:量化噪声基本可以忽略
量化噪声在平滑区域最明显。比如拍一面白墙,如果量化噪声大,你会看到不该有的色阶断层。HDR处理中,这种断层在暗部提亮后尤其刺眼。
4.4 HDR合成引入的噪声:算法带来的“副产品”
这部分是我最想强调的。很多人以为HDR合成只是把几张图叠在一起,噪声会互相抵消。其实恰恰相反——HDR合成本身会引入新的噪声。
主要有三个来源:
- 权重分配噪声:合成时不同曝光帧的权重不同,权重计算本身有误差,导致合成结果出现局部噪声。
- 运动对齐误差:手持拍摄时帧间有位移,对齐算法如果不够精确,会在边缘产生鬼影和噪声。
- 响应曲线标定误差:相机响应曲线(CRF)的标定不准确,导致合成时亮度映射出错,引入非线性噪声。
我曾经在一个项目中,用三帧曝光(-2EV、0EV、+2EV)做HDR合成。结果发现合成后的图像在中间调区域出现了一种奇怪的“纹理噪声”,既不像传感器噪声,也不像光子噪声。排查了两天,最后发现是响应曲线标定用的灰阶卡有轻微的反光不均匀,导致CRF标定偏差了0.3%。就是这0.3%,在合成时被放大了好几倍。
4.5 四种噪声的对比与总结
为了让你一目了然,我把四种噪声的关键特性整理成了一张表:
| 噪声类型 | 来源 | 与信号关系 | 在HDR中的影响 | 主要应对策略 |
|---|---|---|---|---|
| 传感器噪声 | 硬件电路、温度 | 与信号无关 | 暗部提亮后明显 | 暗帧校正、温度补偿 |
| 光子噪声 | 光的量子特性 | 标准差 = √信号 | 低照度帧信噪比低 | 多帧平均、增加曝光 |
| 量化噪声 | ADC模数转换 | 与信号无关 | 平滑区域出现色阶断层 | 高位深源素材、抖动 |
| HDR合成噪声 | 权重、对齐、标定误差 | 与算法相关 | 合成后出现新噪声模式 | 精确标定、鲁棒对齐 |
下面这张图,是我自己总结的HDR噪声来源全景图。它把四种噪声的关系和影响路径画清楚了:
嗯,这张图把四种噪声的关系理清楚了。你注意看最下面的说明框——HDR合成噪声是前三类噪声的“放大器”和“混合器”。这意味着,如果你只处理其中一种噪声,效果会很有限。必须从源头和算法两端同时下手。
我个人在做HDR降噪时,会先做噪声分析:拍一张暗帧估算传感器噪声,拍一张灰卡估算光子噪声,再检查ADC的位深。把这些底数摸清了,再设计合成算法里的降噪策略。这样才不会盲目调参数。
最后说一句:噪声分析不是一次性的工作。换了传感器、换了镜头、甚至换了拍摄环境温度,噪声特性都会变。我建议你在每个项目开始前,都重新做一遍噪声标定。别偷懒,这个习惯能帮你省下后面大量的调试时间。