图像传感器在做信号采集的时候往往会引入噪声,在采集到的raw图像中能够拿到没有经过任何处理的传感器信号,因此对于传感器噪声进行分析与建模有助于我们认识传感器噪声,从而帮助我们设计raw图像的降噪算法。本文从传感器模型层面分析单像素点的噪声模型,不考虑通道之间的串扰问题。
相机中图像采集和处理的基本流程如下图所示:
从上图可知,光信号经过镜头之后通过传感器转换成电信号记录下来,记录下来的电信号即为原始的raw图像,将raw图像送给图像信号处理器(image signal processor, ISP)进行一系列的处理之后便得到我们日常看到的各种格式的RGB图像,那么在信号采集的过程中,图像噪声从何而来呢?
上图中的绿色方框内的部分构成整个传感器系统,其结构包括感光元件、模拟放大器以及模数转换器,其构成的逻辑结构如下图所示:
对于单个像素点而言,在其积累电荷的部分,其电子来自于两个方面,其一是光子打在感光部分,发生光电效应,产生电子,产生的电荷数量与时间和光强度成正比,另外一个方面是则是电路的热效应激发电子迁移,从数学模型上来看两种积累电荷的过程都可以看作对电子的计数过程(counting process),而计数过程可以用泊松过程(poisson process)来进行建模;在单次拍照过程中,电荷完成积累之后,放大器从电容器读出电压,进行模拟放大,在读取电压的过程中由于电压的波动和读出电路,这个过程引入了读取噪声,该噪声服从高斯分布;模拟的电压信号通过模数转换器(analog digital converter,ADC)转换成数字信号,于是便得到了我们通常看到的raw图像,ADC转换的过程引入模数转换噪声,这个噪声服从高斯分布;纵观图像信号处理器数据采集的过程可以知道,在数学模型上来将,raw图像的噪声包含泊松噪声和高斯噪声两类。上述噪声形成过程直观表示如下图所示:
这里我们将上述建模过程用数学公式描述出来:
1) 光电转换噪声:假设光照强度为
Φ
\Phi
Φ,单位时间转化效率为
α
\alpha
α,经过t时间的光电转换之后,传感器由光电转换得到的电信号为:
N
p
h
o
t
o
n
=
P
o
i
s
s
o
n
(
t
⋅
α
⋅
Φ
)
N_{photon} = Poisson(t\cdot\alpha\cdot\Phi)
Nphoton=Poisson(t⋅α⋅Φ)
2)暗电流噪声(热噪声):该噪声由于传感器散热等原因激发电子,积累到电容,它与温度和时间有关系:
N
d
a
r
k
=
P
o
i
s
s
o
n
(
t
⋅
D
)
N_{dark} = Poisson(t\cdot D)
Ndark=Poisson(t⋅D)
3)读取噪声:在模拟放大器读取电压之前或者读取电压之后,电压都存在一个随机的震动,这个过程我们采用一个加性高斯噪声来建模:
N
r
e
a
d
=
N
o
r
m
a
l
(
0
,
σ
r
e
a
d
2
)
N_{read} = Normal(0, \sigma_{read}^2)
Nread=Normal(0,σread2)
4)量化噪声:在ADC做模数转化的过程中引入量化噪声
N
A
D
C
=
N
o
r
m
a
l
(
0
,
σ
A
D
C
2
)
N_{ADC} = Normal(0, \sigma_{ADC}^2)
NADC=Normal(0,σADC2)
综合上述过程,传感器最终采集数据引入噪声的过程如下图所示:
结合上面的建模过程,我们逐步推导最终观察到的raw图像的噪声模型:
感光元件积累到的电荷形成的电压为L:
L
=
P
o
i
s
s
o
n
(
t
⋅
α
⋅
Φ
)
+
P
o
i
s
s
o
n
(
t
⋅
D
)
=
P
o
i
s
s
o
n
(
t
(
α
⋅
Φ
+
D
)
)
\begin{aligned} L&=Poisson(t\cdot \alpha \cdot \Phi) + Poisson(t \cdot D) \\ &= Poisson(t(\alpha\cdot\Phi + D)) \end{aligned}
L=Poisson(t⋅α⋅Φ)+Poisson(t⋅D)=Poisson(t(α⋅Φ+D))
读取电压的过程引入读取噪声
N
r
e
a
d
N_{read}
Nread ,并经过增益为g的模拟放大器放大:
G
=
g
⋅
(
L
+
N
r
e
a
d
)
=
L
⋅
g
+
N
r
e
a
d
⋅
g
\begin{aligned} G &= g \cdot (L + N_{read}) \\ &= L\cdot g+ N_{read}\cdot g \end{aligned}
G=g⋅(L+Nread)=L⋅g+Nread⋅g
经过模拟放大器放大后的电压信号仍然为模拟信号,需要进行AD转换变成数字信号,然后才可以交给ISP进行数字图像信号处理,这个过程引入服从高斯分布的ADC噪声
I
=
G
+
N
A
D
C
I = G + N_{ADC}
I=G+NADC
故,raw图像在理论上是一个包含泊松过程和高斯随机变量的随机信号,其最终表达形式为:
I
=
L
⋅
g
+
N
r
e
a
d
⋅
g
+
N
A
D
C
I = L \cdot g + N_{read} \cdot g + N_{ADC}
I=L⋅g+Nread⋅g+NADC
对这个随机变量的均值和方差做一个简单的分析:
-
均值
E ( I ) = E ( L ⋅ g + N r e a d ⋅ g + N A D C ) = E ( L ⋅ g ) + E ( N r e a d ⋅ g ) + E ( N A D C ) = E ( L ⋅ g ) = g ⋅ E ( L ) = t ⋅ ( α Φ + D ) ⋅ g \begin{aligned} E(I) &= E(L\cdot g + N_{read}\cdot g + N_{ADC}) \\ &= E(L\cdot g) + E(N_{read}\cdot g) + E(N_{ADC})\\ &= E(L\cdot g) \\ &= g \cdot E(L) \\ &= t\cdot(\alpha\Phi + D)\cdot g \end{aligned} E(I)=E(L⋅g+Nread⋅g+NADC)=E(L⋅g)+E(Nread⋅g)+E(NADC)=E(L⋅g)=g⋅E(L)=t⋅(αΦ+D)⋅g -
方差
V a r ( I ) = V a r ( L ⋅ g + N r e a d ⋅ g + N A D C ) = V a r ( L ⋅ g ) + V a r ( N r e a d ⋅ g ) + V a r ( N A D C ) = t ⋅ ( α ⋅ Φ + D ) ⋅ g 2 + σ r e a d 2 ⋅ g 2 + σ A D C 2 \begin{aligned} Var(I) &= Var(L\cdot g + N_{read}\cdot g + N_{ADC}) \\ &= Var(L\cdot g) + Var(N_{read}\cdot g) + Var(N_{ADC}) \\ &= t\cdot(\alpha\cdot\Phi+D)\cdot g^2 +\sigma_{read}^{2}\cdot g^2 + \sigma_{ADC}^{2} \end{aligned} Var(I)=Var(L⋅g+Nread⋅g+NADC)=Var(L⋅g)+Var(Nread⋅g)+Var(NADC)=t⋅(α⋅Φ+D)⋅g2+σread2⋅g2+σADC2
上述建模过程如下图所示:
上述分析与建模过程帮助我们弄懂了传感器噪声的构成,接下来我们将对上述模型进行逻辑上整理重构和数学上的分析:读取噪声 N r e a d N_{read} Nread和量化噪声 N A D C N_{ADC} NADC均为高斯加性噪声,我们将其合并成一个等价的高斯噪声,记为 N a d d N_{add} Nadd,
N a d d = N r e a d ⋅ g + N A D C N_{add} = N_{read}\cdot g + N_{ADC} Nadd=Nread⋅g+NADC
N
a
d
d
N_{add}
Nadd服从
N
o
r
m
a
l
(
0
,
σ
r
e
a
d
2
⋅
g
2
+
σ
A
D
C
2
)
Normal(0,\sqrt{\sigma_{read}^{2}\cdot g^2+\sigma_{ADC}^{2}})
Normal(0,σread2⋅g2+σADC2),从而传感器噪声模型改写为:
I
=
L
⋅
g
+
N
a
d
d
I = L \cdot g + N_{add}
I=L⋅g+Nadd
从噪声模型可以知道,我们无法直接得到亮度场景的一个无偏估计,通过采集多次进行平均叠加只能得到没有加性噪声的信号估计,但是这个估计仍然是有偏估计,里面仍然包含有由于热噪声引起的Poisson噪声;在光照很好的条件下,光子噪声占主要的,在很暗的场景加性噪声
N
a
d
d
N_{add}
Nadd占主导;下图总结了在各个状态下噪声的基本情况:
在分析好噪声模型之后,接下来就是如何设计实验,标定出噪声模型中的参数:
热噪声: 将传感器完全遮住,不然任何光线进入传感器,那么传感器上的电子全部来自于热激发,采集到的图像除了热激发的信号之外,只有
N
a
d
d
N_{add}
Nadd,由于其均值为零,多帧叠加即可忽略不记,得到的几位热噪声的实际值;
加性噪声与增益:在估计好热噪声之后,在原始信号中减去热噪声,剩下的即为加性噪声与光子激发的光电转换的电子,如下图所示:
由公式可知:
σ
(
I
)
2
=
E
(
I
)
⋅
g
+
σ
a
d
d
2
\sigma(I)^2=E(I)\cdot g + \sigma_{add}^{2}
σ(I)2=E(I)⋅g+σadd2
均值与方差成线性关系,通过拍摄灰阶卡,统计出均值核对应的方差,拟合处斜率与截距,斜率即为增益g,截距即为加性噪声
N
a
d
d
N_{add}
Nadd的方差,其具体过程如下图所示:
至此,本文的建模与分析部分已经结束,但是这里标出增益g核加性噪声的参数,与场景有关的的光电转换的Poisson噪声没有给出,在ISP处理中,暗电流的标定单独设计实验,此外还有更为精巧的算法用来标定处加性噪声核Poisson噪声的参数,后续笔者会将更为细致的raw噪声标定过程披露给读者。
参考文献:
- http://graphics.cs.cmu.edu/courses/15-463/2020_fall/lectures/lecture7.pdf