本文系微信公众号《大话成像》,知乎专栏《all in camera》原创文章,转载请注明出处。 大话成像读者QQ 交流群2 :833282006 大话成像技术论坛:ww.dahuachengxiang.com 微信群请先加 zxzombie
本站新教学视频《图像传感器技术与应用》上线淘宝教育
《成像系统图像质量调试》《成像算法基础(python版)》 《成像系统镜头光学》《新版图像质量测试测量与国际标准》《新版cmos sensor测试测量与国际标准》《新版数字成像系统42讲》课程大话成像淘宝官方网店有售:
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 25600 | 511.9 | 610.6 | 847.7 | 9975.8 | 27.90 |
ISO 51200 | 511.7 | 1801.0 | 1197.5 | 36542.4 | 50.66 |
上面两种现象的相互印证,让我们有信心的认为,目前对 Shot Noise 的主流模拟方式:
value_out = np.random.poisson(value / var ) * var
的确是很有可能和大自然的规律相符的。
量子面前,人人平等,再厉害的工艺也挡不住物理理论所设定出来的下限。有些“噪声”,是从本质上就无法规避的了。
当然,也不得不说,现在的微单相机真的是很强大的了……