当前位置:四肖八码全年资料 > 区域标定 >

图像传感器噪声的数学模型及标定

  这篇文章应该是博客里到目前为止最枯燥的一篇了…… 写这篇文章的原因有二:一是在我的学位论文中有一部分内容需要涉及图像噪声模型,正好这几天读完Radiometric CCD Camera Calibration and Noise Estimation,权当记录备忘;二是因为搜了一圈发现目前网上基本没有对相机传感器噪声的数学模型进行详尽介绍的中文资料,所以也算是做一点微小的工作,填补这一块的空白吧 🙄

  实际上,对于 CV 领域内大部分应用来说,$f=\mu+\epsilon$ 这种经典的模型已经足以对图像的像素值进行表征了。但是对于一些更偏工程、需要与相机硬件直接打交道的应用,往往还需要对成像过程中各阶段引入的噪声进行更加具体的建模和分析,从而将其最大程度抑制。正因如此,我默认阅读这篇文章的读者都具备了辐射度学、相机成像原理、图像处理以及统计学相关的基础知识,文中不再对一些基本概念进行赘述。

  此外,图像噪声这一领域并不是我的研究方向,文中难免存在一些瑕疵或错误,欢迎指正。

  不管是 CMOS 也好 CCD 也好,图像传感器的本质都是将光信号转换为电信号。对于图像传感器上的单个感光单元(collection site/photosensory cell/sensor element,随便什么叫法,总之仅指单个「像素」)来说,其由光电效应释放出的电子个数 $I$ 为

  其中 $x$、$y$ 表示该单元内的二维位置坐标,$\lambda$ 是波长,$T$ 为积分时间(假设各参数在快门帘开启的这段时间内均不随时间变化而变化),$E(x,y,\lambda)$ 为该单元内光敏面处的光谱辐照度(incident spectral irradiance),$S_r(x,y)$ 为感光单元内的空间响应,$q(\lambda)$ 为光电转换函数。

  我们注意到,式 \eqref{eq:electrons_num} 中的 $x$、$y$ 均被限制在了单个感光单元内,在这么小的面积内,可以认为各个参数均不随位置变化而变化,因此位置坐标 $x$、$y$ 可以被省略。式 \eqref{eq:electrons_num} 被简化为

  此外,被摄物体表面的光谱辐亮度(spectral radiance)和感光单元内光谱辐照度之间还满足如下关系:

  其中 $L(\lambda)$ 为物方平面上被摄表面的光谱辐亮度,$t(\lambda)$ 为整个系统的光谱透过率函数(包括镜头、低通、Bayer filters 等等),$U$ 是一个由 vignetting、shading 等因素导致的空间非均匀性调制函数。

  式 \eqref{eq:formation} 就是数字成像系统将光信号变为电信号的理想物理模型。

  其中 $F$ 是光圈数(焦距/光阑直径),$\alpha$ 是某个像素对应的主光线相对于光轴的偏离角。

  然而,对于一个真实存在的光学系统来说,照度的非均匀性绝对不仅仅是 cos 四次方衰减那么简单,还需要考虑各种复杂的原因,比如 vignetting、镜头设计层面的照度补偿等等等等。所以为了不失一般性(也为了表述方便一点),我直接简单粗暴地把这些非均匀性统一放到这个 $U$ 里去了。

  之后,感光单元内产生的电信号将经由放大电路(调 ISO 其实就是在调节放大电路的增益系数)进行放大,并经 ADC 转换为数字信号缓存在 RAM 中,待后续存储或调用:

  其中 $g^\prime$ 是模拟电路的增益倍数,$V_{offset}$ 是人为加入的一个偏置电压,通常可以通过这种方式来避免小于零的输出信号被 ADC 截零从而改变噪声分布的对称性(一些相机的暗电流就是这么来的),$\eta$ 是 ADC 中的量化步长(quantization step),单位为 $volts/DN$(DN 就是数字信号的数值,digital number,理论上是无量纲的,但是为了表述方便一般会人为加上一个量纲),$round(\cdot)$ 表示 ADC 的取整操作。

  感光单元释放出的电荷如何进入 ADC 这一细节有待确定。老一些的相机,尤其是 CCD 相机,似乎会为传感器阵列的每一行配备一个寄存器,每个寄存器接收一整行感光单元传来的电荷后再统一传给放大器,各行间并行处理;但是对于新一些的 CMOS,甚至会为每一个像素单独配置一个寄存器和放大器,所有信号的处理以像素为单位并行,从而大幅缩短两次采集之间的间隔。相机硬件的设计我并不在行,以上内容仅仅是道听途说,不过并不影响接下来将要进行的噪声的分析。

  此外,现在的一些相机还会为传感器配置两组具有不同电容的感光单元电荷输出电路,从而在电信号进入放大电路之前就有两组电压值可供切换,即所谓的Dual Native ISO。

  理论上,根据式 \eqref{eq:electrons_num_simple}、\eqref{eq:amplify},在完全相同的条件下反复按下快门,对于 raw 图像上的同一个像素,在不同帧上应该具有完全相同的原始响应值。但是实际情况中,在以上光信号 $\rightarrow$ 电信号 $\rightarrow$ 数字信号的过程中必然伴随着噪声的引入。

  在对图像传感器的噪声进行建模时需要再次考虑各感光单元的位置信息,因此,将式 \eqref{eq:response_model} 扩展到整个传感器平面上:

  由于制造加工过程中不确定因素的存在,传感器各个感光单元之间在有效感光面积、光电转换效率、非均匀性、滤色片光谱透过率等属性上必然存在一定的差异。这种像素之间差异通常被称为像素响应非均匀性(pixel response non-uniformity, PRNU)。稍微做一些简化,如果不考虑 $q(\lambda)$ 在各个波长上的偏差,仅认为其存在幅值上的误差的话,对于某一个感光单元,可以使用非均匀性分布函数

  来表征各分项误差组合后的整体误差,其中 $g_0$ 表示一个无任何制造误差的感光单元所对

  应的 $g$ 值(综合增益),$S_{r,0}$、$A_0$、$t_0$、$q_0$ 同理。基于现有的半导体制造工艺, $K$ 的数值仅在单位强度附近很小的一段区间内波动,因此有

  光电转换器件的热效应将产生一定数量的服从泊松分布的自由电子,这些自由电子与光电效应所激发的光生电子组合后共同从感光单元中释放出来,从而使信号出现一定程度的波动,因此此类噪声也被称为热噪声(thermal noise)$N_{Th}$ 。热噪声的强度仅仅取决于曝光时间 $T$ 以及环境温度,而与光电效应产生的电子数 $I$ 无关。

  根据量子理论,从感光单元中释放出的电子在数量上存在一个随机的涨落,该涨落即为散粒噪声(photon shot noise)$N_S$。散粒噪声是由大量单个事件的统计不确定性引起的,其中主要包括输入光子散粒噪声、光生电流散粒噪声与热效应散粒噪声。散粒噪声的存在使得感光单元最终释放出的有效电子数服从泊松分布:$(I^\ast+N_S)\sim{}Poisson(I^\ast)$,其中 $I^\ast=KUI_0+N_{Th}$ 表示在不考虑散粒噪声的情况下该感光单元应释放出的电子个数,且

  对于 CMOS 来说,其各个感光单元所对应的模拟电路中有可能存在一定的噪声,此类噪声通常被称为固定模式噪声(fixed pattern noise, FPN)$N_{FP}$。固定模式噪声与像素响应非均匀性类似,均属于系统误差,两者的区别在于,固定模式噪声是由电路的制造误差引起的,与光电效应无关,且通常呈现出一定的空间分布规律。

  信号放大单元把模拟电压信号进行放大的过程中会引入一定的读出噪声(read-out noise)$N_R$。读出噪声的期望为零,其方差与放大单元的增益系数 $g$ 成线性正相关。

  由于模数转换单元输出的数字信号需要以整数的形式存储与寄存器中,因此这一连续信号转化为离散信号的过程中必然会引入一定的量化误差(quantization error)$N_Q$。一些文献中量化误差也被称为取整误差。若进入模数转换单元的模拟电压信号等概率地分布于实数轴上,则量化误差将服从区间 $[-\tfrac{1}{2}, \tfrac{1}{2}]$ 内的均匀分布:$N_Q\sim{}\mathcal{U}(-\tfrac{1}{2}, \tfrac{1}{2})$,因此有

  其中 $I_0$ 的含义同式 \eqref{eq:I0},表示一个完美的感光单元理论上释放出的电子数。

  显然,由于热噪声、散粒噪声、读出噪声、量化误差均为随机变量,因此式 \eqref{eq:noise_model} 中的原始响应值 $D$ 也为一随机变量。

  把上节列出的不同种类噪声整理一下。综合考虑上节中加粗的五种噪声源,对于最终输出的原始响应值信号 $D$,有(电子数理论值 $I_0$ 的下标被省略,下同)

  仅考虑无法预先标定的三种噪声源:散粒噪声、读出噪声、量化误差。三者之间不存在相关性,因此,体现在原始响应值上的最终噪声$\sigma_N^2$ 可以表示为

  因此可以得出那个众所周知的结论:要提高图像的信噪比,只能增加传感器上收集的电子数。调节放大增益(ISO)或者一味地增加位深($b$)都是没有任何帮助的(cf.Noise, Dynamic Range, and Bit Depth)。而要增加电子数,要么延长积分时间 $T$,要么改进光电转换函数 $q$ 使其具有更高的转换效率(Dual Native ISO 技术可以等效视为为每个感光单元都配备了两组 $q$)。

  另外,从式 \eqref{eq:noise} 也可以看出,在其他条件不变的前提下,拉高 ISO(增大 $A$)只会导致噪声的增加,因此对于处理 raw 图像的同学来说,前期拉高 ISO 和后期调节图像亮度是没有本质区别的。

  如果只是要了解图像噪声的来源和大致性质的话,看完上面一节就够了。这一节简单谈一下如何对不同种类的噪声进行标定。因为标定过程需要引入传感器平面的位置坐标,这一节里的各种公式看起来可能不会那么友好 😳

  首先把式 \eqref{eq:D} 扩展到整个传感器二维平面,其位置坐标用 $i$、$j$ 进行表示,则有

  下文中所有与空间位置有关的参数都将显式地用 $(i,j)$ 进行表示。若不带位置记号则表示该参数为一位置无关的常量。

  其中 $\mu(i,j)$ 决定了响应值的强度,$N(i,j)$ 决定了响应值波动的剧烈程度。

  为了方便后续标定过程中的计算,$N(i,j)$ 又可以进一步地被拆解为两部分:第一部分 $N_I(i,j)$与感光单元收集的电子数有关,第二部分 $N_C(i,j)$与其无关:

  其中,读出噪声 $N_R$ 是一个全局噪声,并不依赖于某个感光单元所在的具体位置,因此其方差 $\sigma_R^2$ 的表达式中可以省去位置坐标。

  至此,可以得到式 \eqref{eq:noise} 的改进版本,即,带有位置坐标的最终噪声表达式为

  4.2 传感器整体噪声估计(Estimation of sensor noise)

  的场景,传感器不同区域也会有不同的照度 $E(i,j,\lambda)$,从而对应不同的释放电子数 $I(i,j)$。对于位于传感器中心与边缘的感光单元,两者有可能相差数倍以上。因此从这一小节开始,对于实际噪声的标定,若无特别说明的话,均指对于传感器某一

  进行计算。若要对整个传感器进行标定,可采用分块计算的方法($5\times5$ 一般就够了),最后再对各块的参数进行插值从而得到全局的噪声参数估计。

  对一台相机在原始响应值上的最终噪声进行估计通常有两种方法,一是采集两幅 raw 图像 $D_1(i,j)$ 及 $D_2(i,j)$,并在差值图像 $D_\Delta(i,j) = D_1(i,j) - D_2(i,j)$ 的基础上进行噪声方差估计;二是采集 $S$ 幅图像,然后在均值图像 $D_{avg}(i,j) = \frac{1}{S}\sum\limits_{k=1}^SD_k(i,j)$ 的基础上进行估计。第一种方法所需工作量略小一些,并且当目标区域含有的像素数足够多时,其一致性估计的结果(consistent estimates)可以认为非常接近真值,因此这里仅对第一种方法进行介绍。

  对于两幅在完全一致条件下(相同的拍摄环境、相同的光源、相同的被摄物体)捕获的 raw 图像,根据式 \eqref{eq:decomposition},有

  首先对图像中的响应值强度进行估计。因为 $N(i,j)$ 的期望为零,因此可以利用 $D_1(i,j)$ 与 $D_2(i,j)$ 计算得到传感器某一区域内 $\mu$ 的一致性估计:

  其中 $m$、$n$ 分别为传感器在该区域内的横、纵方向上的感光单元个数。

  假设没有任何光信号进入相机系统(例如在暗室中拍摄,或者直接盖上镜头盖和 EVF),则根据式 \eqref{eq:D2d},有

  由于每次按下快门捕获的 $D_{dark}(i,j)$ 之间并不具备相关性,因此,只要拍摄 $S$ 幅这样的全黑图像并进行平均,就可以得到关于 $N_{DC}(i,j)$ 的一致性估计:

  在理想的情况下,如果能保证传感器各个感光单元都具有严格相等的的 $I(i,j)$,则可以轻松地估计出 $K(i,j)$:

  但是!对于一个实际的成像系统,哪怕视场中的光源和被摄物体表面绝对均匀(比如用这种积分球产生一个面光源),其传感器上不同位置的感光单元硅晶元面上的照度,也会受到一个与位置相关的因子 $\kappa(\rho,\lambda)$ 的调制,其中 $\rho$ 表示该感光单元距离传感器中心的距离(假设镜组和传感器的装配过程中不存在误差),$\lambda$ 表示波长,且有 $\kappa(\rho,\lambda)\le1$。以最简单的单透镜镜组为例,对于轴外的感光单元,其照度与夹角 $\alpha$ 的余弦值的四次方成正比,其中 $\alpha$ 表示该感光单元与被摄点的连线与光轴的夹角(cf. 式 \eqref{eq:rad2irra} 以及Derivation of the Cosine Fourth law for falloff of illuminance across a camera image)。显然,距离 $\rho$ 越大,夹角 $\alpha$ 也越大。同时,由于实际镜组不可能做到无穷大,必然还有渐晕效应的存在,进一步加剧了轴外像素的照度衰减。当然,现在的镜头经过精心的设计,在一定程度上缓解了这种衰减,但是在实际相机捕获的图像中,这种「中心亮四周暗」的情况仍然或多或少存在着,比如下图。

  传感器平面的照度衰减示意图。工业界习惯把这种 falloff 称为 lens shading。由于色差(chromatic aberration 那个色差,不是 color difference 哦)的存在,轴外感光单元的照度衰减 $\kappa(\rho,\lambda)$ 是波长相关的函数,从而导致 raw 图像的响应值不单是幅值下降,还有可能出现偏色,俗称 color lens shading。这种 color lens shading 受到光源光谱功率分布、物体光谱反射比的共同影响,理论上是无法进行标定的(因为你永远无法预测相机将要拍摄的内容)。

  这种光学系统层面产生的非均匀性往往需要在 ISP 中单独进行校正,因此不在本文中讨论范畴之内。我们只要知道,对于实际的成像系统,基本不可能保证传感器各处的 $I(i,j)$ 是均匀的。

  既然 $I(i,j)$ 无法被视作一常数,我们必须寻找其他方法对 $I(i,j)$ 进行估计。

  根据这种方法,对于 $D_{avg,q}$ 中的每一个像素,都可以得到一组 $e_q(i,j)$ 和 $\tilde{e}_q(i,j)$ 数据,对应了 $(e_q, \tilde{e}_q)$ 平面内一个样本点。那么对于 $P$ 个样本点,必然能够拟合出一条经过原点的直线,该直线的斜率便对应了该像素的 $K(i,j)$。利用最小二乘法,有

  在实际标定实验的操作过程中,被摄物体表面有可能存在脏点,因此建议在 $P$ 组图像的采集过程中,每拍完一组都重新移动一次物体,这样即使在 $P$ 个样本中存在一两个异常点,也可以很方便地进行 outlier removal,不会影响到最终 $K(i,j)$ 的拟合精度。

  关于科技论文公式的写法有点疑问,例如博主的公式(1),dxdy中的x,y貌似用了斜体?\lambda用了正体?

  我现在发现 Chrome 也好了。首页的排版也没有问题。有可能是网络环境的问题吧现在不好重现了。 :)

  是不是 Chrome 把 JavaScript 给禁止了?另外我今天发现用 2K 显示器时,博客首页在 Chrome 下排版会出错,你那里有这种情况么?

http://magdakalas.com/quyubiaoding/517.html
点击次数:??更新时间2019-07-07??【打印此页】??【关闭
  • Copyright © 2002-2017 DEDECMS. 织梦科技 版权所有  
  • 点击这里给我发消息
在线交流 
客服咨询
【我们的专业】
【效果的保证】
【百度百科】
【因为有我】
【所以精彩】