理解 Pix Binning
在CMOS 摄像头的Skipping 和 Binning 模式博文中,我们提到过Pix Binning可以提高sensor的信噪比。但是这种技术究竟是如何提高sensor的信噪比的,我们可以通过这篇博文的定性分析详细的了解到提高sensor信噪比的原因。
在谈及binning如何工作之前,我们必须首先了解sensor中的噪声。
我们在此谈及的噪声是一个在帧与帧之间,像素与像素之间的随机的像素亮度值。下图我们可以更加直观的了解到噪声对图像的影响。
![](https://i-blog.csdnimg.cn/blog_migrate/e400304e6284b856628d344ef4587d2c.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/4c0f06f0512848c0f2b0d16105daf46c.jpeg)
度量图像噪声情况如何并不仅仅是看噪声的大小,更重要的是噪声相对于图像亮度的大小。这就是我们经常说的信噪比----SNR。举例来说,假如图像大部分亮度分布在200,而噪声散布与195到205之间,我们就可以说图像的信噪比大小为40(200/5=40).
那么,图像中的噪声从哪来的呢?我们主要从三个源头加以考虑。
- 散粒噪声。这种典型的噪声是由于每个像素检测到的光子的数量在每一帧每一个像素之间都很随机。想象一下,当下雨时,你有方法可以计算每一秒雨点进入到容器的数量。当降雨稳定的时候,如果你每一秒钟计算掉入到容器中雨滴的数量,每一秒钟所获的到的雨滴大小并不是一样的。在某一时刻你可能计算的到20,另一个时刻可能是21,19,22,18,17,23等等。这些自然的变量即为散粒噪声。有意思的是,散粒噪声的大小等于被检测到光子数量的平方根。
- 读出噪声。读出噪声除妖是由于sensor的模拟数据转换为数字数据时所带入的噪声。读出噪声是图像传感器本身的特性。一些sensor的读出噪声高于另一些sensor的读出噪声。在 当前所使用的CMOS sensor中,其读出噪声一般都比CCD sensor读出噪声小。
- 热噪。sensor本身的热量所散发出电子。sensor检测到自身所散发的电子当做光的一部分。曝光时间越长热噪越多,曝光时间较短是热噪可以忽略不计。降温可以在一定程度上减少热噪。
让我们例举一个具体的例子。以IMX178为例,我们设置一个比较小的增益。设置好之后,我们可能得到以下具体的数值:
Gain(e/ADU):0.25
读出噪声(e-RMS):1.7
Exposure:0.1s
如果我们有一个灰度值为200(ADU)的像素,即表示sensor检测到50个光子(Gain乘以ADU)。
检测到的50个光子告诉我们其散粒噪声大小为50的开方根,即大概为七个电子。由于曝光时间比较短,其热噪可以忽略不计,此外,读出噪声为1.7个电子。
因此,总的噪声为7e+0e+1.7e
实际上,噪声总和并不是直接相加为8.7e。当我们计算噪声的总和时,不仅仅是直接把其各个噪声相加,而是把每一个噪声平方相加之后再开方。除非噪声之间互相相关,否则一般噪声的总和是把每一个噪声平方相加之后再开方。
因此,根据以上噪声信息,我们得到7.2e
根据噪声信息和增益大小,我们可以得到噪声大概为29ADU。
Ok,到此为止,我们了解到每一个像素都有一定噪声,其主要有三个来源。现在我们会到之前的例子,200像素大小时计算出噪声为29ADU。会到我们之前定义的信噪比定义中,我们得到SNR=200/29=6.89。那么,让我们看看Binning之后将会发生什么!
假设我们以2*2 binning,我们选取四个像素为一个宏像素,每一个像素有200ADU和29ADU的噪声。我们将其相加作为一个像素之后:
Binned Value= 200+200+200+200=800
那么,对于Binned像素而言其噪声应该怎么计算了?回到之前我们谈及到的,当噪声之间不相相关的时候,我们使用加法求积的形式计算其噪声的大小。即平方每个噪声相加之后再开方:
Binned noise =
我们发现,binnned之后像素的大小增大了四倍,但是其噪声的大小只是增大了两倍。计算biinned 像素之后的值为:
SNR=800/58 =13.8左右
Binning之后,SNR大概是原来的2倍。这即是binning百分之九十的秘密:像素值相加,但是噪声通过加性相乘提高了SNR
如上所述,binnning通过四个像素灰度值相加binned得到800。这是一种常用的binning技术,这种方式得到的Binned像素将是原来的四倍亮度,对展现细节非常有用。这种技术有个问题是,如果像素值大小最大为255,binned之后我们将得不到800,而是截取之后得到255。实际上binned之前的相邻像素大小为64或者64以上,我们都将得到255.
另外一种Binnning方式是把四个像素值相加之后求其平均值。那么,这种方式下有时如何影响到SNR的呢?
我们分两步计算其SNR。首先相加。把binned之前四个像素值相加:
Sum= 200+200+200+200=800
Noise on Sum =58
然后我们除以binned size大小。
Average= 800/4 = 200
Noise on Sum = 58/4=14.5
SNR = 200/14.5=13.8
因此,不管是相加的binning形式还是平均的Binning形式,都能增加sensor的信噪比提高sensor获取图像的性能。
因此,我们总结如下:
- Binning 增加了图形的信噪比
- CMOS N*N binning增加信噪比是原来的N倍。即如果以2*2 binning,信噪比将提高2倍,以3*3 binning,信噪比将提高3倍。
- 相加形式的binnning和平均形式的binning有相同的信噪比大小。