Practical Poissonian-Gaussian noise modeling and fitting for single-image raw-data
文章目录
Sensor的噪声特性是确定一款特定Sensor是否满足最终产品规格需求的重要指标,这篇文章是Alessandro Foi于2007年发表的论文《 Noise Measurement for Raw-Data of Digital Imaging Sensors by Automatic Segmentation of Nonuniform Targets》的基础上所提出的用于Sensor噪声分析的框架,其噪声模型也是目前市场上常见的芯片噪声分析(Noise Proflie)模块的基础模型,Alessandro Foi是芬兰Tampere大学研究图像去噪和噪声建模的教授,他的文章谈到的方法很多都已经在手机camera中得到了应用。不同于Imatest所使用到的基于傅里叶变换的方法 ISO 15739 — Noise measurements,本文所提的方法基于简单的图像分割,简单易行。
随着Sensor制成工艺的日益进步,Sensor的像素尺寸越来越小,其所能够积累的光子数量越来越少,最终造成Sensor采集下来信号(Raw)信噪比的下降,同时Sensor的噪声也并不是一般图像处理过程中所假设的高斯白噪声,因此对Sensor所采集图像信号的噪声的正确建模对于后续的图像处理过程是十分重要的。
Poissonian-Gaussian Modeling
参考《CMOS图像传感器中的噪声来源分析》一文中对CMOS Sensor的噪声来源的分析,我们知道Sensor采集下来的Raw数据当中最主要的噪声是泊松噪声和高斯噪声,且这两部分噪声都是白噪声,将这两部分噪声的观测模型做如下表示:
z ( x ) = y ( x ) + σ ( y ( x ) ) ξ ( x ) (1) z(x)=y(x)+\sigma(y(x)) \xi(x)\tag{1} z(x)=y(x)+σ(y(x))ξ(x)(1)
其中 x ∈ X x\in X x∈X表示像素坐标, z z z为当前点被噪声影响后的观测像素值, y y y为当前点不被噪声影响的实际像素值, ξ ( x ) \xi(x) ξ(x)表示均值为0,标准差为1的随机变量, σ \sigma σ为 y y y的函数,表示噪声的标准差随实际像素值变化, σ ( y ( x ) ) ξ ( x ) \sigma(y(x)) \xi(x) σ(y(x))ξ(x)表示Raw数据的噪声是均值为0、方差随实际像素值变化的而变化随机变量,即可以将Sensor的噪声模型看做是一个异方差的高斯噪声( Heteroskedastic Normal)。在接下来的描述当中将使用 E { ⋅ } \operatorname{E}\{\cdot\} E{
⋅}表示随机变量的数学期望, var { ⋅ } 、 std { ⋅ } \operatorname{var}\{\cdot\}、\operatorname{std}\{\cdot\} var{
⋅}、std{
⋅}分别表示随机变量的方差与标准差。由于 E { ξ ( x ) } = 0 E\{\xi(x)\}=0 E{
ξ(x)}=0,就有 E { z ( x ) } = y ( x ) E\{z(x)\}=y(x) E{
z(x)}=y(x),原始信号可以被看做是噪声信号的期望,而噪声信号的方差与观察信号、原始信号间的关系如下:
s t d { z ( x ) } = σ { y ( x ) } = σ ( E { z ( x ) } ) (2) std\{z(x)\}=\sigma\{y(x)\}=\sigma(E\{z(x)\})\tag{2} std{
z(x)}=σ{
y(x)}=σ(E{
z(x)})(2)
Sensor当中的泊松噪声来源于其散粒噪声及暗电流,高斯噪声来源于热噪声、复位噪声、量化噪声,可以将这两类噪声看做是相互独立的两部分,分别用 η p 、 η g \eta_{p}、\eta_{g} ηp、ηg表示如下:
σ ( y ( x ) ) ξ ( x ) = η p ( y ( x ) ) + η g ( x ) (3) \sigma(y(x)) \xi(x)=\eta_{\mathrm{p}}(y(x))+\eta_{\mathrm{g}}(x)\tag{3} σ(y(x))ξ(x)=ηp(y(x))+ηg(x)(3)
χ ( y ( x ) + η p ( y ( x ) ) ) ∼ P ( χ y ( x ) ) , η g ( x ) ∼ N ( 0 , b ) (4) \chi\left(y(x)+\eta_{\mathrm{p}}(y(x))\right) \sim \mathcal{P}(\chi y(x)), \quad \eta_{\mathrm{g}}(x) \sim \mathcal{N}(0, b)\tag{4} χ(y(x)+ηp(y(x)))∼P(χy(x)),ηg(x)∼N(0,b)(4)
其中 P \mathcal{P} P表示泊松分布, N \mathcal{N} N表示高斯分布, χ > 0 、 b ≥ 0 \chi>0、b≥0 χ>0、b≥0分别为尺度参数。由于泊松分布的方差与均值相等,即有:
E { χ ( y ( x ) + η p ( y ( x ) ) ) } = var { χ ( y ( x ) + η p ( y ( x ) ) ) } = χ y ( x ) (5) E\left\{\chi\left(y(x)+\eta_{\mathrm{p}}(y(x))\right)\right\}=\operatorname{var}\left\{\chi\left(y(x)+\eta_{\mathrm{p}}(y(x))\right)\right\}=\chi y(x)\tag{5} E{
χ(y(x)+ηp(y(x)))}=var{
χ(y(x)+ηp(y(x)))}=χy(x)(5)
又由于 var { χ ( y ( x ) + η p ( y ( x ) ) ) } = χ 2 v a r { η p ( y ( x ) ) } = χ y ( x ) \operatorname{var}\left\{\chi\left(y(x)+\eta_{\mathrm{p}}(y(x))\right)\right\}=\chi ^{2}var\{\eta_{p}(y(x))\}=\chi y(x) var{
χ(y(x)+ηp(y(x)))}=χ2var{
ηp(y(x))}=χy(x),即有 var { η p ( y ( x ) ) } = y ( x ) / χ \operatorname{var}\left\{\eta_{\mathrm{p}}(y(x))\right\}=y(x) / \chi var{
ηp(y(x))}=y(x)/χ且 E { η p ( y ( x ) ) } = 0 E\left\{\eta_{\mathrm{p}}(y(x))\right\}=0 E{
ηp(y(x))}=0,因此泊松噪声的方差随 y ( x ) y(x) y(x)而变化,记为:
var { η p ( y ( x ) ) } = a y ( x ) ; a = χ − 1 (6) \operatorname{var}\left\{\eta_{\mathrm{p}}(y(x))\right\}=a y(x);a=\chi^{-1}\tag{6} var{
ηp(y(x))}=ay(x);a=χ−1(6)
因此式(1)中的噪声部分可以做如下表示:
σ 2 ( y ( x ) ) = a y ( x ) + b (7) \sigma^{2}(y(x))=a y(x)+b\tag{7} σ2(y(x))=ay(x)+b(7)
上图为向原图 y y y中所添加噪声的噪声参数 α 、 b \alpha、b α、b取不同值时,最后通过本文方法标定出来的信号期望与噪声方差间的关系示意图,其中实线为添加噪声时所假设的噪声模型,对应的虚线是本文方法对该噪声的标定结果,在首尾两端出现的不一致是由于收尾两端的像素值受噪声干扰后很容易出现小于0或者大于255的情况,最后分别被Clip至0或255造成的(在图像处理中一般需要做Clip的原因是,希望被处理图像数据的灰度值范围固定在8bit、10bit、12bit的范围内,以节省计算、存储等资源)。
为了更进一步的简化噪声模型,用高斯分布来进一步近似泊松分布,即:
P ( λ ) ≈ N ( λ , λ ) \mathcal{P}(\lambda) \approx \mathcal{N}(\lambda, \lambda) P(λ)≈N(λ,λ)
当 λ \lambda λ足够大时,可以将泊松分布看做是异方差的高斯分布,此时泊松-高斯分布的噪声模型可以进一步简化为:
σ ( y ( x ) ) ξ ( x ) = a y ( x ) + b ξ ( x ) ≃ η h ( y ( x ) ) (8) \sigma(y(x)) \xi(x)=\sqrt{a y(x)+b} \xi(x) \simeq \eta_{\mathrm{h}}(y(x))\tag{8} σ(y(x))ξ(x)=ay(x)+bξ(x)≃ηh(y(x))(8)
其中 η h ( x ) ∼ N ( 0 , a y ( x ) + b ) \eta_{\mathrm{h}}(x) \sim \mathcal{N}(0, a y(x)+b) ηh(x)∼N(0,ay(x)+b)。
The Noise Profile Algorithm
Wavelet domain analysis
通常情况下,我们并不能直接获取 ( σ , y ) (\sigma,y) (σ,y)的数据对来拟合式(8)所示噪声模型的参数 α , b \alpha,b α,b,用小波分解的方式将图像分解为低频部分 z w a p p z^{wapp} zwapp、高频部分 z w d e t z^{wdet} zwdet,其中低频部分包含了大部分的原始信号,高频部分包含了大部分的噪声信号,文章中选择局部特性较好的DB3小波作为小波基函数,分解过程如下:
z wdet = ↓ 2 ( z ⊛ ψ ) z wapp = ↓ 2 ( z ⊛ φ ) z^{\text {wdet }}=\downarrow_{2}(z \circledast \psi)\\ z^{\text {wapp }}=\downarrow_{2}(z \circledast \varphi) zwdet =↓2(z⊛ψ)zwapp =↓2(z⊛φ)
其中:
ψ = ψ 1 ⊛ ψ 1 T φ = φ 1 ⊛ φ 1 T \psi=\psi_{1} \circledast\psi_{1}^{T}\\ \varphi=\varphi_{1} \circledast \varphi_{1}^{T} ψ=ψ1⊛ψ1Tφ=φ1⊛φ