blog_meteoroid_fit/docs/meteor/photon_to_digit.md
2022-10-04 06:30:59 +08:00

8.4 KiB
Raw Blame History

光子到电子到数字

光从各种光源发出来,经过遥远的距离,再经过镜头或者人眼的折射,落在传感器或者视网膜上。人眼和摄像头目的都是一样的:测量来自这束光的亮度。尤其是摄像头,它会把光的亮度转化成数字,而显示器再把数字再转化回亮度,这我们就能在屏幕上见到摄像头拍到的画面了。

有一个基本的物理事实一束光并不是“连续”的。我们知道光子的概念光的能量是一份一份传播的而相机也是对落在上面的光子进行计数。对于老式的胶片相机光子会导致银盐颗粒发生分解然后通过各种化学反应变成颜色的深度。现在大家常用的CCD、CMOS相机传感器是由半导体组成的光子落在上面会激发出电子从而将光子数变成了更容易测量的电子数。然后经过放大、模数转换就变成了可以传输和储存的数字。

在这个过程中,总会产生一部分噪声。所谓噪声,就是测量结果相对原始值的偏离,而尽可能降低噪声,才可以得到高质量的画面。有个概念就是信噪比,顾名思义,信噪比就是信号/噪声。只要尽力降低噪声,信噪比就越高,测量结果就越好。

接下来我们就详细分析光子-电子-数字的转换,了解各种噪声的源头,从而可以找到流星相机的关键参数,和优化设计的方向。简便起见,我采用的是非常简化的模型。真实的图像传感器的原理和性质非常复杂,基本是一门单独的学科。

油管上有一个很不错的系列解释图像传感器中的噪声,推荐大家观看。

数光子

刚才我们说了相机传感器可以对落在上面的光子进行计数。而光子的数量本身就带有随机性而随机性就会带来噪声。平时我们不会注意到这种随机性因为白天或者灯光下光子数量很多随机性被抹掉了而在拍摄星空时光子的数量很少这种效应就很明显。我们进行一点计算就会发现对于我们用肉眼观察6等的恒星每秒钟进入我们眼中的光子数量只有10个左右对于跟人眼尺寸差不多的摄像头这个数字也差不多。可见人眼还是一台很不错的相机。

关于“光子”为什么会带有这种天然的噪声我们用一个日常生活中的场景来类比。我们在公交站等公交车对于10分钟一班的车有时候两辆车的间隔会是15分钟有时候又是10分钟。而如果一班车我们不知道发车频率我们可以在公交站边等边算时间用这个时间间隔来估算。

如果我们在公交站等了10分钟这10分钟一共来了1辆车那这辆车的发车间隔可能是多少当然最佳估计就是10分钟一辆每小时6班但完全有可能是15分钟1辆每小时4班也很有可能是5分钟一辆每小时12班。这种时候你就非常拿不准这个发车频率。

而如果你在站台上等了两个小时等到了12辆车那你说这趟车是每小时6辆的把握就大得多了。每小时8班、每小时5班的概率都大大降低。如果你等的时间更久等了整整一天你对发车频率的测量就更有把握了。

这个例子就表明“一个一个”随机出现的事件对出现概率的测量是随着出现次数增加逐渐变精确的。在数学上这就是所谓的“泊松噪声”。它的大小等于光子的平方根比如100个光子泊松噪声的水平是10个光子此时信噪比是10而10000个光子泊松噪声是100个光子信噪比是100。

这基本就是为什么越暗的星就越难拍到。并且3s/ISO5000曝光拍出来的照片明显不如30s/ISO500也是这个原因。在这个问题上是没法作弊的比如我问我把每个光子都转变成100个计数100个光子跟以前10000个光子一样亮了噪声会减小吗并不会因为这时候噪声是被等比例放大了。就像是数公交车的时候每过一辆车就在本子上记100最后没有什么区别。

暗电流和背景天光

这里我们要注意,虽然放在一起讨论,暗电流和背景天光的来源完全不同。

背景天光很好理解,那就是大气发射和反射的光。随着曝光时间,整个画面都变亮了,一部分原因就是背景天光。在城市中背景天光很亮,这就造成我们在城市中看不见银河,看不见很亮的星。

暗电流是另一方面。理论上,只要温度不是绝对零度,都会有一些电子自发地跳出来。于是即使没有光子照射,拍出来画面也是有计数的,并且正比于曝光时间。

之所以把它们合在一起写是因为他们观测上产生的效果是差不多的就是随曝光时间均匀增加的计数。问题来了这些计数也有泊松噪声。深空摄影中经常会使用“暗场”来去掉图像中的暗电流而拍摄星野也可以用ps减掉背景天光虽然本身减掉了但他们的噪声依然存在这样总和的噪声就变大了。

我们修改一下数公交车的场景除了你要数的那趟公交车之外还有每小时60班其他公交车经过这个站你数了10分钟总共确实数到11辆。按理说应该扣掉10辆其他的公交车但问题是真的正好经过了10辆其他公交车吗也有可能是9+2辆或者11+0辆那你对目标的计数就差了非常非常多没有精度可言了。

光子数量也是一样的。本来100个来自目标的光子可以带来10的信噪比但如果又有了800个光子的背景天光一共900个光子那么噪声就是30光子信噪比就只剩3.33了。这就是为什么天文观测一定要寻找光污染最小的地方还有CCD需要制冷来降低暗电流就是因为它们带来的噪声是无法去除的。

唯一能去除的方法就是不要让这些额外的光子到达传感器。比如有“光害滤镜”这种产品,把一部分天光滤掉,这样就可以出现在城市里拍银河的神片了。

读出噪声

图像传感器是如何将光子转换成电子的可以从一个PN结开始理解。我们给PN结通上反向偏压此时几乎没有电流是因为PN结上形成了一个势垒电子能量不够不能通过。但这时如果有一个光子撞到一个电子电子受到了激发就会越过势垒跑到另一边于是就形成了光电流。光子和电子的相互作用是一对一的也就是说电子的数量就代表着光子的数量它们的比值就是大名鼎鼎的量子效率。通常量子效率小于100%但厂商都在朝这个方向努力最好的CMOS芯片已经达到90%以上。

而产生的光电子十分珍贵不能让它白白溜走。于是紧接着PN节是一个电容电容里的电场可以将这些电子吸在上面。在曝光的时候被吸在上面的电子逐渐增多这就是为什么图像亮度正比于曝光时间。而在曝光结束之后一个特殊的“开关”打开这些电子可以通过另一条通路流走这就是所谓的读出。

在这个电路上,有几个环节会造成噪声。光电子在沿着导线读出来的时候,最终出来的电子有可能会多几个少几个,这是因为导线中自带的电子也会热运动,所以有一些随机性。这种噪声遵循高斯分布,是一种“白噪声”。另一个是电子在经过各种门电路的时候,因为半导体的缺陷,有时候会“卡住”,过一段时间才释放出来,这对应一种低频噪声。这两种噪声可以认为与曝光时间无关,每次读出产生的噪声水平是差不多的。

这些转移出来的光电子会经过放大电路进行扩增然后流过ADC。这时电子的数量就会被记录下来成为一个个代表亮度的数字叫做ADU值

我们回头考虑刚才那个电容。电容是靠电压来吸住电荷的而如果电荷非常多电容两边的电压就会变高进而降低了PN结两边的偏压。所以因为PN结是单向导电的一旦偏压消失这些电子就会重新通过PN结溜走。所以每个像素能储存的电子数是有限的这就是所谓的“满阱”。对于CCD来说这些多余的电子会外溢到相邻的像素中这就是CCD特有的smering漏光现象。