图像传感器在做信号采集的时候往往会引入噪声,在采集到的raw图像中能够拿到没有经过任何处理的传感器信号,因此对于传感器噪声进行分析与建模有助于我们认识传感器噪声,从而帮助我们设计raw图像的降噪算法。本文从传感器模型层面分析单像素点的噪声模型,不考虑通道之间的串扰问题。

相机中图像采集和处理的基本流程如下图所示:

从上图可知,光信号经过镜头之后通过传感器转换成电信号记录下来,记录下来的电信号即为原始的raw图像,将raw图像送给图像信号处理器(image signal processor, ISP)进行一系列的处理之后便得到我们日常看到的各种格式的RGB图像,那么在信号采集的过程中,图像噪声从何而来呢?

上图中的绿色方框内的部分构成整个传感器系统,其结构包括感光元件、模拟放大器以及模数转换器,其构成的逻辑结构如下图所示:

对于单个像素点而言,在其积累电荷的部分,其电子来自于两个方面,其一是光子打在感光部分,发生光电效应,产生电子,产生的电荷数量与时间和光强度成正比,另外一个方面是则是电路的热效应激发电子迁移,从数学模型上来看两种积累电荷的过程都可以看作对电子的计数过程(counting process),而计数过程可以用泊松过程(poisson process)来进行建模;在单次拍照过程中,电荷完成积累之后,放大器从电容器读出电压,进行模拟放大,在读取电压的过程中由于电压的波动和读出电路,这个过程引入了读取噪声,该噪声服从高斯分布;模拟的电压信号通过模数转换器(analog digital converter,ADC)转换成数字信号,于是便得到了我们通常看到的raw图像,ADC转换的过程引入模数转换噪声,这个噪声服从高斯分布;纵观图像信号处理器数据采集的过程可以知道,在数学模型上来将,raw图像的噪声包含泊松噪声和高斯噪声两类。上述噪声形成过程直观表示如下图所示:

这里我们将上述建模过程用数学公式描述出来:

1) 光电转换噪声:假设光照强度为 Φ\PhiΦ,单位时间转化效率为α\alphaα,经过t时间的光电转换之后,传感器由光电转换得到的电信号为:
Nphoton=Poisson(t⋅α⋅Φ)N_{photon} = Poisson(t\cdot\alpha\cdot\Phi) Nphoton​=Poisson(t⋅α⋅Φ)
2)暗电流噪声(热噪声):该噪声由于传感器散热等原因激发电子,积累到电容,它与温度和时间有关系:
Ndark=Poisson(t⋅D)N_{dark} = Poisson(t\cdot D) Ndark​=Poisson(t⋅D)
3)读取噪声:在模拟放大器读取电压之前或者读取电压之后,电压都存在一个随机的震动,这个过程我们采用一个加性高斯噪声来建模:
Nread=Normal(0,σread2)N_{read} = Normal(0, \sigma_{read}^2) Nread​=Normal(0,σread2​)

4)量化噪声:在ADC做模数转化的过程中引入量化噪声
NADC=Normal(0,σADC2)N_{ADC} = Normal(0, \sigma_{ADC}^2) NADC​=Normal(0,σADC2​)
综合上述过程,传感器最终采集数据引入噪声的过程如下图所示:

结合上面的建模过程,我们逐步推导最终观察到的raw图像的噪声模型:

感光元件积累到的电荷形成的电压为L:
L=Poisson(t⋅α⋅Φ)+Poisson(t⋅D)=Poisson(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))​
读取电压的过程引入读取噪声NreadN_{read}Nread​ ,并经过增益为g的模拟放大器放大:
G=g⋅(L+Nread)=L⋅g+Nread⋅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+NADCI = G + N_{ADC} I=G+NADC​
故,raw图像在理论上是一个包含泊松过程和高斯随机变量的随机信号,其最终表达形式为:
I=L⋅g+Nread⋅g+NADCI = L \cdot g + N_{read} \cdot g + N_{ADC} I=L⋅g+Nread​⋅g+NADC​
对这个随机变量的均值和方差做一个简单的分析:

  1. 均值
    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\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​

  2. 方差
    Var(I)=Var(L⋅g+Nread⋅g+NADC)=Var(L⋅g)+Var(Nread⋅g)+Var(NADC)=t⋅(α⋅Φ+D)⋅g2+σread2⋅g2+σADC2\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​​
    上述建模过程如下图所示:

上述分析与建模过程帮助我们弄懂了传感器噪声的构成,接下来我们将对上述模型进行逻辑上整理重构和数学上的分析:读取噪声NreadN_{read}Nread​和量化噪声NADCN_{ADC}NADC​均为高斯加性噪声,我们将其合并成一个等价的高斯噪声,记为NaddN_{add}Nadd​,

Nadd=Nread⋅g+NADCN_{add} = N_{read}\cdot g + N_{ADC} Nadd​=Nread​⋅g+NADC​

NaddN_{add}Nadd​服从Normal(0,σread2⋅g2+σADC2)Normal(0,\sqrt{\sigma_{read}^{2}\cdot g^2+\sigma_{ADC}^{2}})Normal(0,σread2​⋅g2+σADC2​​),从而传感器噪声模型改写为:
I=L⋅g+NaddI = L \cdot g + N_{add} I=L⋅g+Nadd​

从噪声模型可以知道,我们无法直接得到亮度场景的一个无偏估计,通过采集多次进行平均叠加只能得到没有加性噪声的信号估计,但是这个估计仍然是有偏估计,里面仍然包含有由于热噪声引起的Poisson噪声;在光照很好的条件下,光子噪声占主要的,在很暗的场景加性噪声NaddN_{add}Nadd​占主导;下图总结了在各个状态下噪声的基本情况:

在分析好噪声模型之后,接下来就是如何设计实验,标定出噪声模型中的参数:
热噪声: 将传感器完全遮住,不然任何光线进入传感器,那么传感器上的电子全部来自于热激发,采集到的图像除了热激发的信号之外,只有NaddN_{add}Nadd​,由于其均值为零,多帧叠加即可忽略不记,得到的几位热噪声的实际值;
加性噪声与增益:在估计好热噪声之后,在原始信号中减去热噪声,剩下的即为加性噪声与光子激发的光电转换的电子,如下图所示:

由公式可知:
σ(I)2=E(I)⋅g+σadd2\sigma(I)^2=E(I)\cdot g + \sigma_{add}^{2} σ(I)2=E(I)⋅g+σadd2​

均值与方差成线性关系,通过拍摄灰阶卡,统计出均值核对应的方差,拟合处斜率与截距,斜率即为增益g,截距即为加性噪声NaddN_{add}Nadd​的方差,其具体过程如下图所示:

至此,本文的建模与分析部分已经结束,但是这里标出增益g核加性噪声的参数,与场景有关的的光电转换的Poisson噪声没有给出,在ISP处理中,暗电流的标定单独设计实验,此外还有更为精巧的算法用来标定处加性噪声核Poisson噪声的参数,后续笔者会将更为细致的raw噪声标定过程披露给读者。

参考文献:

  1. http://graphics.cs.cmu.edu/courses/15-463/2020_fall/lectures/lecture7.pdf

图像传感器噪声建模与分析相关推荐

  1. CMOS图像传感器——图像传感器噪声

    图像传感器噪声取决于图像传感器的制作工艺.内部结构及内部补偿技术等原因,噪声反应了图像传感器的内部特性.CMOS图像传感器基本原理见: CMOS图像传感--概述_沧海一升的博客-CSDN博客_cmos ...

  2. 【去噪】A Physics-Based Noise Formation Model for Extreme Low-Light Raw Denoising噪声建模详解

    文章目录 0. 前言 1. 主要贡献 1.1 建立了一个全面的噪声模型,可以准确地描述低光环境下的真实噪声结构 1.2 提出了一种噪声参数标定方法 1.2.1 估计系统总体增益 KKK 1.2.2 估 ...

  3. 《需求工程-软件建模与分析之读书笔记之三》

    <需求工程-软件建模与分析之读书笔记之三> 第14章<面向对象建模>采用了面向对象方法学的世界观,将系统看作是一系列对象的集合,每个对象具有独立的职责,完成独立的任务,对象之间 ...

  4. 《需求工程——软件建模与分析》读后感之三

    在需求获取中,需求工程师可以得到关于问题域的描述信息,可以得知相关者对软件系统的期望.可是,上述这些被记录在获取笔录上的内容都还是属于现实世界的信息,它们是用户和其他相关者对现实世界的理解与描述,使用 ...

  5. Algorithm:数学建模大赛之数学建模基础(经验/技巧)、流程(模型准备/模型假设/建模/求解/分析/优化/预测/评价)、论文写作(意义/摘要/关键词/问题重述和模型假设/建模/文献)之详细攻略

    Algorithm:数学建模大赛之数学建模基础(经验/技巧).流程(模型准备/模型假设/建模/求解/分析/优化/预测/评价).论文写作(意义/摘要/关键词/问题重述和模型假设/建模/求解/结论/参考文 ...

  6. 数学建模——层次分析法Python代码

    数学建模--层次分析法Python代码 import numpy as np class AHP: """ 相关信息的传入和准备 """ d ...

  7. 图像传感器与信号处理——详解图像传感器噪声

    图像传感器与信号处理--详解图像传感器噪声 图像传感器与信号处理--详解图像传感器噪声 1 图像传感器噪声分类 2 图像传感器噪声描述 3 图像传感器噪声原理 3.1 热噪声(Thermal Nois ...

  8. 大数据建模、分析、挖掘技术应用研修班的通知

    --- 关于举办 2021年数字信息化培训项目系列 --- 大数据建模.分析.挖掘技术应用研修班的通知 各企事业单位: 随着2015年9月国务院发布了<关于印发促进大数据发展行动纲要的通知> ...

  9. 《需求工程——软件建模与分析》阅读笔记之一

    在老师推荐的几本书里面,我选择了阅读<需求工程--软件建模与分析>一书,感觉受益颇多,刚开始接触软件觉得最难得是代码,关键是代码,其他都没必要,随着学习的渐渐深入,越来越理解老师说的,在一 ...

最新文章

  1. android图片素材參考
  2. php import_resource,@ImportResource
  3. win和linux创建共享文件夹,在Windows和Linux下(Debian、Ubuntu)创建共享文件夹
  4. 关于int main(int argc,char *argv[])
  5. c++十进制转二进制_二进制与十进制如何互相转换?
  6. JeecgBoot与MongoDB集成实战文档
  7. RedHat Linux下Samba配置(简单配置)-转
  8. CVTE 2017 秋季校招一面(C++ 后台)
  9. 基于物联网的工业分析将席卷制造业
  10. 核爆rpg学院站计算机,《核爆RPG》控制台代码及使用方法
  11. navicat 10免费下载及破解
  12. spark python编程 林子雨_林子雨-Spark编程基础Python版-厦门大学数据库室.ppt
  13. 小米6自动重启android,小米6总是自动重启怎么办?小米6自动重启的解决方法
  14. Python实战:利用正则表达式(requests模块)获取电影排行榜
  15. Matlab论文插图绘制模板第81期—极坐标折线图(Polarplot)
  16. 2020-08-31
  17. Python——计算器
  18. 一个“精神病”人的世界观
  19. 统计结合python_python 练习(一)代码统计工具的实现
  20. Android 阿里云 视频直播安全下载踩坑实录

热门文章

  1. python输出整数部分和小数_Python 正则表达式:只要整数和小数
  2. matlab bootstrap,非参数bootstrap方法和其MATLAB实现_吴庆平.pdf
  3. 神经网络算法基本原理及其实现
  4. 魔方APP项目-09-用户中心,退出登录、更新头像、本地更新头像信息
  5. 小马哥----高仿米2主板型号m8219刷机拆机主板图与开机界面图 多图展示 刷机谨慎
  6. [心得]麦肯锡7步法解决问题实际应用
  7. xpraid安装_如何把SATA/RAID驱动集成到win xp 安装盘里
  8. 怎么样用ssh远程登录阿里云ecs服务器不成功解决方案
  9. 运动类APP开发的产品分析
  10. java程序转换excel中科学记数法的数据为date类型