前几期真相文章得到了读者积极的反馈,其中提问最多的就是这个公式:

首先,大家觉得这个公式太有用了。以前只能定性地评价图像质量,现在一下子就能直接算出信噪比,瞬间高大上了许多有木有。然而,杯具的现实是,95%的人都找不到相机的出厂报告,也就是说并不知道自己相机的 Gain 是多少。不知道 Gain, 那这个公式岂不就成了浮云啊!

别急,本期我们就来披露分钟测算相机增益的秘笈,大家准备好打赏哈!

01公式推导

哈哈,公式是烦人的,但也是必须的。

我们知道,当相机工作在光子散粒噪声(Shot Noise)限制区时:

相机拍到的图像,亮度是以灰度值(ADU)为单位的, 我们可以用图像分析软件(如我们用过的 Image J)计算出感兴趣区 (ROI) 的平均灰度值 Mean-ADU 和标准差 SD-ADU (即以 ADU 为单位的噪声)。

以上公式①变为:

这样,我们就可以计算出:

以上计算中,图像的标准差即代表噪声的前提是,图像区域内没有任何样品结构造成的亮度变化,否则标准差还包含这个结构信息。为此,我们可以连续拍摄两张同样场景的图像,然后把两张图像相减。相减后的图像就只包含光子散粒噪声了。如果以 SD-subtract 代表差值图像的标准差SD-image1和SD-image2代表单张图像的标准差,则以下公式成立:

因为两张图像设置完全相同,SD-image1 = SD-image2,所以:

那么,以上公式最后变为:

这样算出的 Gain 单位为 e–/ADU。

02拍摄图像

太好了,公式终于结束了。现在就来拍摄图像,通过公式⑤,我们知道只需要拍摄3张图像,就可以计算出 Gain 了。

好的,两分钟计时开始哦~

01

拍摄一张短曝光时间的黑图像 (bias 图像) 以计算offset:我们知道,对同一台相机,偏置(offset)是一个常数。方法很简单,在相机完全无信号的情况下,(如显微镜设为全部光都到目镜,或者盖上镜头盖),将曝光时间设为0, 拍摄一帧图像。

02

拍摄两张平均亮度大概在相机动态范围中间区域的图像。如果您的相机是12bit的,有4096 灰度级,那么图像的平均亮度最好在 2000 左右。这个可以通过调整曝光时间,或照明光强度来实现。当然,其实要求并不那么严格,基本要求是图像上不能有接近饱和(>4000 ADU, 此时相机失去了线性度),或太暗( <200ADU, 此时相机没有工作在光子信号限制区, 我们计算的条件不满足)的区域。如果您的相机是 14bit 的,那么灰度级是16384, 上面的值需要按比例进行调整。

03计 算

1. 首先在 Image J 中打开 bias 图像,用 Analyze>measure, 得到图像的 mean 值即为 Offset。

2. 接下来,打开另外两张图片,选择 Analyze > Measure 得到两张图片的平均灰度值;然后再用 Analyze > Summarize 就可以得到平均值 Mean-Image1, Image2

3. 计算差异图像的标准差:选择 Analyze > Image Calculator,将两张图片进行 subtract,并勾选 32-bit (float) result,得到两张图片的差值图像。

选择 Analyze > Measure 即可看到差值图像的标准差 SD-substarct:

4. 然后代入前面的公式⑤,我们就可以算出系统增益啦!(表忘了减去偏置值哦~)

以上就是两分钟快速计算相机增益的方法啦!希望对大家有所帮助。另外我们总结了一些关于 Gain 的事实。

计时结束,完美!第一次可能慢一些,第二次做应该两分钟都不用吧!

  • CCD/CMOS 相机的 Gain 是出厂设置好的,不会改变;

  • EMCCD 的 EM Gain 会随着使用老化衰减,正常使用 7~10 年左右;我们推荐每隔一段时间校准一次;

  • 根据厂家不同,Gain 有多种表示方式:有些相机只有一个 Gain ,有些有三个 Gain ,有些连续可调(如 0.5x-20x), 或 ISO100 – ISO1200 等等。以上测试,只对应当时设定的那个 Gain 有效;如果实际使用时,因为样品或成像方式变化,需要改变 Gain 的设置,对每个 Gain 都需要测量。建议在保存图像时,在文件名上反映出 Gain 的设置;

  • 同一台相机,Gain 的倍数越大,相机的满阱容量越小(更早饱和);

  • 同一台相机,在软件中调节 Gain 的设置,图像亮度会变化,但实际探测到的电子数不变,因此信噪比变化不大;

  • Binning 不影响 Gain;

  • 行行好,把测算出的 Gain 值记在小纸片上贴起来供大家使用吧!

做成像的你不能不了解的真相7-两分钟测算相机增益(Gain)的更多相关文章

  1. 做成像的你不得不了解的真相2-灵敏度和QE

    科研级相机的灵敏度由三个主要参数决定: 探测器的QE, 像元尺寸和相机噪声. 后两项我们以后再做专题讨论.这期先讲讲小编认为顶顶重要,看起来最容易理解,但是其实还有些奥妙的QE. QE-量子效率 QE ...

  2. 【ABAP系列】SAP ABAP 模拟做成像windows一样的计算器

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP ABAP 模拟做成像wind ...

  3. Qt 学习之路 2(19):事件的接受与忽略(当重写事件回调函数时,时刻注意是否需要通过调用父类的同名函数来确保原有实现仍能进行!有好几个例子。为什么要这么做?而不是自己去手动调用这两个函数呢?因为我们无法确认父类中的这个处理函数有没有额外的操作)

    版本: 2012-09-29 2013-04-23 更新有关accept()和ignore()函数的相关内容. 2013-12-02 增加有关accept()和ignore()函数的示例. 上一章我们 ...

  4. 半天做完的数据报表,YonBuilder只要十几分钟,0代码开发

    进入数字化时代,拍脑袋的决策方式显然不靠谱,一切要靠数据说话.与信息化时代相比,数字化时代的企业对数据的应用更广泛.更深入.为了应对激烈的市场竞争,企业经营决策者们对数据的依赖度越来越高,企业各个业务 ...

  5. 做了一个js的拉动遮罩层,两个图片分别显示的效果

    想做成车修好了和没修好的对比,所以需要两个图片.需要用到的知识点, 1.定位 2.mouse 的事件(代码中体现) 3.鼠标指针的移动距离算法 4.css中,cursor的应用 好了,废话不多说 ,直 ...

  6. VWAP算法(成交量加权平均价)

    算法交易其实主要是用在基金公司.券商量化比较多.例如我已经选好股,要大量买入,但是单凭交易员的操作海量单而且要完成买入100万股这些的操作是有点的困难的.那么这时候怎样解决拆单,防止冲击成本的问题呢? ...

  7. time wait 整理

    目录 状态转换图 1.谁会进入time wait状态: 主动发起断开连接的一方调用close()函数发送FIN并进入FIN WAIT 1状态,当收到对面反馈的ack之后会进入FIN WAIT2状态.之 ...

  8. OpenGL中glRotatef()函数究竟对矩阵做了什么

    OpenGL中glRotatef()函数究竟对矩阵做了什么 我们知道OpenGL中维持着两套矩阵,一个是模型视图矩阵(model view matrix),另一个是投影矩阵(projection ma ...

  9. wpf做的3d滑动gallery

    原文:wpf做的3d滑动gallery wpf做的3d滑动gallery 随着iphone\ipad的流行及热捧,现在做移动产品不管是什么平台的,领导总想做成像ios系统的样子.自从微软发布了wind ...

随机推荐

  1. axios请求接口的时候带一个参数

    getHomeInfo () { this.axios.get('/api/index.json?city=' + this.city) .then(this.getHomeInfoSucc) } 尽 ...

  2. 实盘交易哪些代码BUG产生严重亏损

    1.少写一个return,疯狂开平2900次,以爆仓结束 2.在上生产环境前,不小心误删除了一个“!”(我至今也不清楚为什么会误删了,晕),导致平仓逻辑一直不满足,不止损,让我损失惨重! 3.卖单变买 ...

  3. Python笔记_第五篇_Python数据分析基础教程_NumPy基础

    1. NumPy的基础使用涵盖如下内容: 数据类型 数组类型 类型转换 创建数组 数组索引 数组切片 改变维度 2. NumPy数组对象: NumPy中的ndarray是一个多维数组对象,该兑现共有两 ...

  4. DevOps专题 |监控,可观测性与数据存储

    对于DevOps而言,监控是其中重要的一环,上一次的专题内容中,我们与大家分享了大型企业级监控系统的设计.今天我们将和大家从另一个角度进一步探讨互联网工程技术领域的监控设计(monitoring):系 ...

  5. .net APP接口

    编写APP接口首先要搭建测试环境,在实际开发中APP对于大多数公司来说都是选择外包,并不是公司内部人员负责,遇到事情不可能时时进行沟通和交流,也不能写每一个接口都要双方及时确认.个人经历是双方确认AP ...

  6. Ubuntu18.04 有线无法正常上网(请读完全文再进行操作)

    电脑Windows10+Ubuntu18.04双系统,一直都没问题,前段时间突然在Ubuntu系统下有线连接失败,但是在Windows下可以正常上网. 今天尝试进行了修复. 在终端通过ifconfig ...

  7. 关于python请求库Selenium安装所遇到的问题

    今天,初次接触python,在网上买了一本关于爬虫的书,因为之前电脑上存在python,所以就对着书直接进行的请求库的安装,安装的时候,主要遇到了下边一个问题,在安装Selenium的时候,出现以下提 ...

  8. python编程:从入门到实践----第五章>if 语句

    一.一个简单示例 假设有一个汽车列表,并想将其每辆汽车的名称打印出来.遇到汽车名‘bmw’,以全大写打印:其他汽车名,首字母大写 cars=['audi','bmw','subaru','toyota ...

  9. SpringBoot2.0整合Quartz实现动态设置定时任务时间

    一.    引入依赖 <!-- 引入quartz依赖 --> <dependency> <groupId>org.springframework.boot</ ...

  10. \_\_doc\_\_

    __doc__ 注释信息 一.doc 返回类的注释信息 class Foo: '我是描述信息' pass print(Foo.__doc__) 我是描述信息 该属性无法被继承 class Foo: ' ...