亲眼“看到”图像传感器的Shot Noise

文摘   科学   2023-09-18 07:30   上海  

all in camera QQ 2 833282006 ww.dahuachengxiang.com   微信群请先加 zxzombie

线

python cmos sensor42

https://shop322456667.taobao.com/


在图像传感器的成像理论中,有一种无论多么精巧的设计都不可避免的信号相关的噪声来源叫Shot Noise,即,由“光子是一个个来的”(或者说,光子成功激发出了电子是一个个的)产生的。

它应当服从Poisson分布,即如果平均值是 x 个,那么得到 k 个的概论正比于  . 举个例子,如果平均值是1.5,那么会以 22% 的概率得到 0 个,33% 的概率得到 1 个,25% 的概率得到 2 个,12% 的概率得到 3 个,依此类推,总之,绝不会去刚刚好得到 1.5 个。

那么,我们有办法亲眼看到真的是“一个个来”的光子(实际上是激发出的电子)的现象吗?

如果我们有一个能读光子的图像传感器(读出噪声小于0.27e-)的话,这件事情就简单了.不过利用现在身边一些比较好相机通过一些实验是否能做到呢?本文就来带大家使用手头的微单进行一次这样的实验.

首先如果真的能看到一个一个光子,那么我们从图像传感器得到的RAW值的分布应该是一根根的柱子:

柱子的间隔就是单个电子对应的读出值,一般记作1e-(或者DN/e-,也就是每个电子对应的digital number是多少). 但是,实际得到的值里面除了Shot Noise之外,还有很强烈的其他噪声,这样会使“柱子”变粗:

然而,当我们真的去拿一个(正常的)相机拍图之后,会发现其他噪声的大小已经使得柱子“粗”到相互重叠了,所以我们一般得到的histogram都是十分连续且平坦的。

那我们是否还能通过这种方法进行验证呢?

好消息是,正常能买到的相机里真有几款的读出噪声已经小于1e-的水平了,其中我手头刚好有一台 A7S3.

从histogram上,并不能直接看到一个个的尖峰,但是看分布的曲线,总感觉是有一些周期性起伏的。

如果真的有“一个个来”的现象,那么如果单个电子对应的读出值是 k,就应该每隔 k 个值出现一次局部的隆起。我们可以用观察 Fourier 谱的方法来验证是不是真的有这样一个周期性的信号存在。

于是乎,我们通过两种方法来进行交叉验证:

  • 通过 Poisson Distribution的均值与方差关系,利用纯黑图与拍有亮度的图(白图)的噪声方差的差异反推单个e-对应的读出值是多少:1e- = (白图噪声方差 - 黑图噪声方差) / (白图均值 - 黑图均值).

  • 对白图的 histogram 做 Fourier Transform,如果真的有离散化的效应,那么应该会在1e-对应的频率上出现一个峰。

下面就是见证奇迹的时刻了。分别拍摄了 ISO 25600 和 ISO 51200 的黑图和白图各一张,对 histogram做长度4096的Fourier Transform(这是一个14bit sensor,最大值可以到16384,不过白图拍的比较暗,只用4096就够了)之后的结果如下图所示:

我们放大局部,发现 ISO 51200 的白图对应的曲线真的在周期数 = 81 的位置出现了尖峰!

依据我们的理论,这个表明了,“离散化”的单位就是 4096 / 81 = 50.6

而利用 Poisson Distrubition 计算出来的值,刚好是 50.66,可以说吻合的相当精确了


黑图均值黑图方差白图均值白图方差比值
ISO 25600511.9610.6847.79975.827.90
ISO 51200511.71801.01197.536542.450.66

上面两种现象的相互印证,让我们有信心的认为,目前对 Shot Noise 的主流模拟方式:

value_out = np.random.poisson(value / var ) * var

的确是很有可能和大自然的规律相符的。

量子面前,人人平等,再厉害的工艺也挡不住物理理论所设定出来的下限。有些“噪声”,是从本质上就无法规避的了。

当然,也不得不说,现在的微单相机真的是很强大的了……

大话成像
希望通过这个公众号传播我们所掌握的有关成像技术软件、硬件、算法等方面的知识,分享我们在成像领域,尤其是手机成像领域所拥有的一些知识和开发经验。以期集合众智互有裨补,让在这个领域工作的朋友能够彼此交流共同提高。
 最新文章