第一章:暗光场景的噪声模型

各位同学好,我是你们的老朋友。今天咱们来聊聊暗光场景下的噪声模型。说实话,我刚开始做ISP调试那会儿,最头疼的就是暗光。白天光线好的时候,随便调调参数画面都挺干净。一到晚上,各种噪点就冒出来了,像满天星似的。

为什么会这样?说白了,暗光下信号弱,噪声就特别明显。你想想看,信号和噪声是混在一起的,信号弱了,噪声自然就凸显出来了。今天我就把暗光场景下最常见的几种噪声,掰开揉碎了讲给你们听。

核心观点:暗光调试,本质上就是跟噪声做斗争。你搞懂了噪声的脾气,调试就成功了一半。

1.1 光子散粒噪声

先说说光子散粒噪声。这个噪声很有意思,它跟光本身有关。光是由一个个光子组成的,光子到达传感器的过程是随机的。就像下雨天,你拿个桶接雨水,每个雨滴落下来的时间是不确定的。

我在项目中遇到过这样一个情况:用同一台相机,在完全相同的暗光条件下拍两张照片,结果两张图的噪点分布完全不一样。这就是散粒噪声在作怪。它跟信号强度有关,信号越强,散粒噪声也越大。但好消息是,散粒噪声的信噪比会随着信号增强而提高。

散粒噪声的数学模型很简单:

散粒噪声标准差 = √(信号电子数)

举个例子,如果信号是100个电子,散粒噪声就是10个电子,信噪比是10。如果信号是10000个电子,散粒噪声是100个电子,信噪比就变成了100。所以光线越强,画面越干净。

实战技巧:暗光下想降低散粒噪声的影响,最直接的办法就是增加曝光时间或者提高增益。但要注意,曝光时间长了会手抖,增益高了会放大其他噪声。这是个平衡的艺术。

1.2 读出噪声

接下来是读出噪声。这个噪声跟传感器本身有关,是传感器把电荷转换成电压、再转换成数字信号的过程中引入的。我习惯把它叫做「电路噪声」。

读出噪声的特点是:它跟信号强度无关。不管你是暗光还是亮光,读出噪声基本是固定的。这就很要命了——暗光下信号本来就弱,读出噪声还不变,那信噪比就会急剧下降。

我记得有一次调试一个手机摄像头,暗光下画面全是横条纹。查了半天,发现是读出电路的电源纹波太大。换了颗电源芯片,问题就解决了。嗯,这里要注意,读出噪声有时候会跟电源质量、PCB布局有很大关系。

读出噪声的典型值:

传感器类型 典型读出噪声 适用场景
CCD 2-5 e- 工业相机、科研
CMOS(高端) 1-3 e- 单反、微单
CMOS(手机) 3-8 e- 手机摄像头

1.3 固定模式噪声(FPN)

固定模式噪声,简称FPN。这个噪声有个特点:它是固定的。什么意思呢?就是每次拍出来的噪声位置都一样。你拍一张暗场照片,放大看,某些像素总是偏亮,某些总是偏暗。

为什么会这样?因为每个像素的感光面积、暗电流、转换增益都有细微差异。这些差异是制造过程中产生的,一旦芯片做出来,这些差异就固定了。

我曾经遇到一个项目,客户投诉说暗光下画面有「网格」。我一看就知道是FPN。怎么解决?做暗场校正。先拍一张暗场照片,记录下每个像素的偏移量,然后在正常拍摄时减去这个偏移量。效果立竿见影。

避坑指南:我曾经犯过一个错误——暗场校正时用的温度跟实际拍摄温度不一样。结果校正完反而更差了。记住,暗场校正一定要在相同温度下做,因为暗电流跟温度密切相关。

1.4 噪声的时域与空域特性

搞清楚了噪声类型,咱们还得看看噪声的「脾气」。噪声有两种维度:时域和空域。

时域噪声:同一像素在不同时间点的噪声变化。散粒噪声和读出噪声都属于时域噪声。它们每帧都在变,所以你看视频的时候,噪点会「闪烁」。

空域噪声:同一帧图像中,不同像素之间的噪声差异。FPN就是典型的空域噪声。它不随时间变化,所以你看照片的时候,某些位置总是「脏脏的」。

我个人的调试习惯是:先处理空域噪声(FPN),再处理时域噪声。因为FPN是固定的,好处理。时域噪声比较麻烦,需要用多帧降噪或者双边滤波之类的算法。

下面这张图展示了暗光场景下噪声的完整模型:

暗光场景噪声模型 图像传感器 噪声叠加 光子散粒噪声 读出噪声 固定模式噪声 时域 时域 空域 含噪图像 ISP降噪处理

从这张图可以看得很清楚:光进入传感器后,三种噪声同时叠加到信号上。ISP要做的事情,就是把这些噪声尽可能去掉,同时保留图像细节。

个人经验:我调试暗光参数时,会先拍一张暗场照片(盖上镜头盖),分析FPN的分布。然后再拍一张灰阶卡,分析散粒噪声和读出噪声。这样就能把三种噪声分开,针对性地调参数。

好了,关于暗光场景的噪声模型,今天就讲到这里。记住一句话:噪声不可怕,可怕的是你不了解它。搞懂了每种噪声的脾气,调试起来就有方向了。


公众号:蓝海资料掘金营,微信deep3321