Ansys Lumerical | CMOS - 光学仿真方法

通过使用更小的像素尺寸和更大的填充因子,基于CMOS图像传感器像素的数码相机系统的成本正在降低。但是,只有在不牺牲图像质量的情况下,CMOS像素尺寸减小才是可以接受的。随着CMOS像素尺寸的不断减小,图像信噪比降低,相邻传感器像素之间的串扰也随之增加。这些效应可以通过计算机仿真的仔细设计优化来抵消,在当前像素尺寸下,计算机仿真需要麦克斯韦方程组的全矢量解。

在本主题中,我们将讨论CMOS图像传感器的趋势,对仿真的影响,可以仿真的结果类型,并描述实现这些目标的完整仿真方法。

波动光学和射线光学

当我们接近波长尺度结构时,我们对较大结构提出的许多典型问题不再有意义。例如,如果我们在特定位置在Si中产生电子空穴,我们可能想知道光子在被吸收之前通过哪个微透镜。在波动光学中,这个问题无法回答,因为光子是一种波,穿过所有微透镜,它在特定位置被吸收的概率取决于它与自身产生的干涉图案。如果我们阻挡其中一条路径,例如通过覆盖一个透镜,我们将修改干涉图案。实际上,光子采用所有可能的路径,并且必须包含所有路径才能获得正确的结果。只有在更大的长度尺度上,我们才能忽略这些多路径干扰效应。

我们可能想问光子在被吸收之前走的是哪条路。

在波长尺度上,每个光子都会产生复杂的干涉图案,从而决定Si中吸收的概率。如果不修改干涉图样,就不可能确定一条特定路径。

我们想用模拟计算什么?

我们想计算一些事情:

· 量子效率(QE):这是收集的电子与入射光子的比率。QE受照明条件、物镜、图像传感器光学堆栈的光学效率(OE)和收集电子设备的效率的影响。QE的完整计算涉及光学和电气建模。

· 光学效率(OE):这是硅中产生的电子与入射光子数量的比率,是QE计算的关键组成部分。与QE一样,这取决于照明条件、物镜和图像传感器的光学堆栈。通常,我们在OE中包含QE的某些方面,例如,仅计算在特定体积的硅中产生的光子,其中它们很有可能被收集电子设备收集。但是,我们仍然将其称为OE,并将术语QE保留用于涉及光学和电气建模的计算。

· 光学串扰、点扩散函数(PSF)和调制传递函数(MTF):相机解析空间特征的能力可以通过PSF及其傅里叶变换MTF来测量。这些数量取决于物镜、光学堆栈和收集电子设备。在数码相机中,这些量的定义更为复杂,因为图像传感器的像素会给问题带来数字化的离散性。

· 光谱串扰和颜色矩阵系数:我们可以确定不同像素的响应,例如红光、绿光和蓝光对任何波长的响应,从而确定光谱串扰。此信息可用于确定可用于校正图像颜色的颜色矩阵系数,但是,颜色矩阵中的大、负、非对角线项会导致信噪比 (S/N) 降低,理想情况下希望避免。

· 电串扰:当一个像素下产生的电子被相邻像素捕获时,就会发生电串扰。这种类型的串扰将有助于点扩散函数和频谱串扰。对这种效应进行建模需要结合光学和电气建模。

照明条件

我们想要计算的几乎任何东西都取决于照明条件和物镜。下图显示了距离相机较远的点光源对系统的照明。该点光源将向下聚焦到图像传感器表面的艾里圆盘状光斑。这种类型的照明可用于计算PSF,但是,必须小心,因为我们需要考虑图像传感器上的数字化像素可能发生的各种光斑对齐。

对于许多仿真结果(QE、OE、光谱串扰、颜色矩阵系数、电串扰),我们通常对均匀照明的情况感兴趣。这是物体填满相机整个视野的情况。下图描述了这种情况。大物体由大量点光源组成,每个点光源都发出不连贯的光。这将在图像传感器表面产生不相干的艾里圆盘状斑点的总和。所有结果,所有感兴趣的电场强度量(|E|2)在硅片中,OE可以简单地通过不连贯地对每个单独仿真的结果求和或平均来计算。

在均匀照明下,硅中的电场强度由每次模拟强度的不相干总和给出。OE 由每个模拟的平均 OE 给出。

实际上,这意味着对每个光束位置运行新的仿真,并以不连贯的方式对所有结果求和或平均。由于图像传感器阵列是局部周期性的,我们只需要在一个单元(通常涉及 2×2 子像素)上执行此操作。事实上,一旦我们获得了单个单元的结果,我们就可以使用这些结果不仅计算对均匀照明的响应,还计算对其他类型的照明的响应,例如理想情况下应该照亮一个完整像素的物体的照明。这是用于计算点扩散函数中的 PSF 的方法。

实现均匀照明的最有效方法

可以证明,上述均匀照明条件在数学上等价于物镜支持的所有平面波的加权非相干和(详见Jérôme Vaillant等人)。下图以图形方式描绘了这一点,我们可以看到物镜支持的不同可能入射角。

系统在均匀照明下的响应等于物镜支持的所有入射角平面波的不相干加权积分。

重量因子W是物镜和像素位置的属性。在低数值孔径系统中,中心像素的W的良好近似值是

其中 k||是面内波矢量,NA是物镜的数值孔径。换句话说,对于物镜支持的所有角度,W为1,对于所有其他角度,W为0。

下图显示了图像传感器边缘附近像素的情况。在这种情况下,入射角的范围变得不对称。我们将主射线角(CRA)定义为从物镜中心到所考虑像素的光线。

用于计算均匀照明下的场强和OE的权重因子随像素的位置而变化。低数值孔径系统中边缘像素的W的良好近似值为

其中 k||是面内波矢量,k||CRA是CRA的面内波矢量,NA是物镜的数值孔径。换句话说,W只是通过面内CRA波矢量在k空间中移动。

因此,QE和OE的计算与角响应曲线的积分计算相同。请注意,虽然

· 这个积分实际上是在面内 k 而不是角度上,尽管低 NA 系统几乎没有区别,因为 k||/k0 = sin(q) ~q 当 q << 1 时。

· 这实际上是 kx 和 ky 上的二维积分

典型的角响应曲线如下所示,作为kx/k0的函数。在第一个图中,我们看到积分窗口以kx=0为中心,这对应于在均匀照明下计算中心像素的OE。第二条曲线显示了边缘像素的积分窗口,该像素覆盖相同的2NA大小,但被CRA的kx偏移。

现在我们了解了均匀照明下角响应曲线与OE、QE或电场强度之间的重要关系,我们可以看到可以采取一些简单的步骤来优化图像传感器的OE:

· 我们只能模拟与CRA对应的一个平面波,即积分窗口中心的角度。如果我们尝试在这个角度优化OE,我们可能会改进整个积分。这通常是通过移动微透镜和其他层来实现的,其效果是将角响应曲线的峰值移动到积分窗口的中心,从而最大化积分。这是一种非常有效的方法,可以在均匀照明下优化系统的OE,而无需进行大量仿真。在计算微透镜位移时各种CRA的最佳微透镜位移时,采用这种方法。在这种方法中,我们实际上是通过仅对积分窗口中心的一个点进行采样来估计积分。

· 我们可以模拟对应于CRA的平面波和积分窗口边缘附近的几个角度,并将这些结果与一定的权重相结合。在这种方法中,我们试图通过最大化积分窗口中心和积分窗口边缘的函数来优化积分 – 基本上我们仅通过采样几个点来估计积分。由于角响应曲线在积分窗口上通常是一个相当平滑的函数,因此这种方法应该最大化我们的真正积分。在优化微透镜 ROC 中优化透镜曲率半径时,将采用此方法。

· 我们可以运行足够的模拟来正确计算角度响应曲线并正确计算积分。这显然是最准确的方法,但可能涉及大量模拟,特别是对于我们需要对kx和ky进行采样的3D模拟。每个点仅采样 10 个点会导致 10×10=100 个不同的入射角。尽管如此,这种方法可以与均匀照明下的OE实验结果非常吻合。

获得非极化结果

非偏振结果可以通过不相干地平均 2 个正交极化(通常为 S 和 P)从偏振结果中获得。有关证明和更多详细信息,请参阅非偏振光束。不幸的是,这意味着我们必须对每个光束或平面波运行 2 次仿真才能获得非极化结果。最初,可能需要仅使用一个偏振并忽略偏振效应以节省时间,但在这些长度尺度上,S和P极化的结果存在差异,最终结果不应忽略这些效应。

参考文献

1.F. Hirigoyen, A. Crocherie, J. M. Vaillant, and Y. Cazaux, “基于FDTD的CMOS图像传感器像素架构和工艺优化光学仿真方法” Proc. SPIE 6816, 681609 (2008)

2.Jérôme Vaillant,Axel Crocherie,Flavien Hirigoyen,Adam Cadien和James Pond,“应用于CMOS图像传感器的均匀照明和严格的电磁仿真”,Opt. Express 15,5494-5503(2007)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.kler.cn/a/18519.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

一场面试下来,狂飙 Framework底层原理

近期有位Android 开发的朋友在吐槽说&#xff1a;现在的招聘信息网站是假的吧&#xff0c;我都怀疑一些公司的人事在冲他们的KPI&#xff0c;三个月了&#xff0c;简历投了上百份&#xff0c;结果收到回应的才个位数&#xff0c;去面试还一套Framework底层原理面试题狂炸…… 面…

单链表OJ题:LeetCode--206.反转链表

朋友们、伙计们&#xff0c;我们又见面了&#xff0c;今天给大家带来的是LeetCode中206题&#xff1a;反转链表 数 据 结 构&#xff1a;数据结构专栏 作 者&#xff1a;stackY、 C 语 言 &#xff1a;C语言专栏 LeetCode &#xff1a;LeetCode刷题训练营 LeetCod…

Java之多线程初阶2

目录 一.上节内容复习 1.进程和线程的区别 2.创建线程的四种方式 二.多线程的优点的代码展示 1.多线程的优点 2.代码实现 三.Thread类常用的方法 1.Thread类中的构造方法 2.Thread类中的属性 1.为线程命名并获取线程的名字 2.演示isDaemon() 3.演示isAlive() 4.演示…

【操作系统OS】学习笔记第三章 内存管理【哈工大李治军老师】

基于本人观看学习 哈工大李治军老师主讲的操作系统课程 所做的笔记&#xff0c;仅进行交流分享。 特此鸣谢李治军老师&#xff0c;操作系统的神作&#xff01; 如果本篇笔记帮助到了你&#xff0c;还请点赞 关注 支持一下 ♡>&#x16966;<)!! 主页专栏有更多&#xff0…

数字化战略,如何解读企业财务报表

01 财务数字化管理 第一&#xff0c;财务基本信息化建设。比如财务系统、财务共享中心等通过数字化的手段提升财务会计核算、财务流程管理效率&#xff0c;解决流程性管理的问题。 第二&#xff0c;利用各类商业智能 BI 分析、数据分析的手段把企业的所有行为都进行量化对比&…

vue 水印组件

效果图展示 Watermark 参数说明类型默认值版本width水印的宽度&#xff0c;content 的默认值为自身的宽度number120height水印的高度&#xff0c;content 的默认值为自身的高度number64rotate水印绘制时&#xff0c;旋转的角度&#xff0c;单位 number-22zIndex追加的水印元素…

【计算机图形学基础教程】MFC基本绘图函数2

MFC基本绘图函数 绘图工具类 CGdiObject类&#xff1a;GDI绘图工具的基类CBitmap类&#xff1a;封装了GDI画刷&#xff0c;可以选作设备上下文的当前画刷&#xff0c;用于填充图形的内部CFont类&#xff1a;封装了GDI字体&#xff0c;可以选作设备上下文的当前字体CPalette类…

selenium——unittest框架

目录 一、unittest框架基本介绍二、unittest框架解析三、unittest框架使用方法1.测试固件2.测试套件3.用例的执行顺序4.忽略测试用例中的方法5.unittest断言6.HTML报告生成 一、unittest框架基本介绍 在进行selenium IDE脚本录制导出的脚本中&#xff0c;我们发现其中多了很多…

基于 EKS Fargate 搭建微服务性能分析系统

背景 近期 Amazon Fargate 在中国区正式落地&#xff0c;因 Fargate 使用 Serverless 架构&#xff0c;更加适合对性能要求不敏感的服务使用&#xff0c;Pyroscope 是一款基于 Golang 开发的应用程序性能分析工具&#xff0c;Pyroscope 的服务端为无状态服务且性能要求不敏感&…

mysql数据迁移与同步常用解决方案总结

目录 一、前言 二、数据迁移场景 2.1 整库迁移 2.2 表数据迁移 2.3 mysql版本变更 2.4 mysql数据迁移至其他存储介质 2.5 自建数据到上云环境 2.6 mysql数据到其他国产数据库 三、数据库物理迁移实施方案 3.1 数据库物理迁移概述 3.1.1 物理迁移适用场景 3.1.2 物理…

TCP三次握手

TCP三次握手 文章目录 TCP三次握手1. TCP三次握手过程和状态变迁1. 准备工作2. 进行连接 2. 能把三次握手改为两次握手吗&#xff1f;3. 改为两次握手会出现什么后果&#xff1f;4. 改为四次握手行不行&#xff1f;5. TCP第三次握手失败了怎么办&#xff1f;6. 三次握手是否可以…

TCP四次挥手

TCP四次挥手详解 文章目录 TCP四次挥手详解1. TCP四次挥手过程和状态变迁2. 为什么挥手需要四次&#xff1f;3. 为什么中间的ACK和FIN不可以像三次握手那样合为一个报文段呢&#xff1f;4. 为什么TIME_WAIT等待的时间是2MSL&#xff1f;5. 等待2MSL的意义5.1 保证客户端最后发送…

Linux网络——Shell编程之数组

Linux网络——Shell编程之数组 一、概念二、数组的定义三、Shell数组操作1. 获取数组的所有元素的列表2. 获取数组的所有元素下标3.取数组的元素个数4. 获取数组的某个元素的值5.删除数组某个元素6.删除数组7.数组切片8.数组字符替换9.数组追加元素 四、数组在函数的传参 一、概…

天猫数据分析:2023年Q1天猫净水器品牌销售TOP10排行榜

水质的好坏更是与人们的身体健康密切相关。随着社会经济的发展&#xff0c;居民生活水平提升&#xff0c;人们对饮用水质量、安全性的要求也不断提高&#xff0c;净水器也因此逐渐成为现代生活的必需品。 根据鲸参谋电商数据显示&#xff0c;2023年Q1在天猫平台上&#xff0c;净…

3. SQL底层执行原理详解

一条SQL在MySQL中是如何执行的 1. MySQL的内部组件结构1.1 Server层1.2 Store层 2. 连接器3. 分析器4. 优化器5. 执行器6. bin-log归档 本文是按照自己的理解进行笔记总结&#xff0c;如有不正确的地方&#xff0c;还望大佬多多指点纠正&#xff0c;勿喷。 1. MySQL的内部组件结…

MVC分部视图的使用:Html.Partial/RenderPartial,Html.Action/RenderAction,RenderPage

ASP.NET MVC 里的部分视图&#xff0c;相当于 Web Form 里的 User Control。我们的页面往往会有许多重用的地方&#xff0c;可以进行封装重用。 使用部分视图有以下优点&#xff1a; 1. 可以简写代码。 2. 页面代码更加清晰、更好维护。 在视图里有多种方法可以 加载部分视图&a…

硬盘数据突然消失怎么回事?硬盘数据突然消失怎么找回

硬盘上的数据对每个人都至关重要&#xff0c;它可能是我们的珍贵回忆&#xff0c;多年学习的总结&#xff0c;或者一些不可告人的秘密。而硬盘中的数据可能会在不知情的情况下消失或被删除&#xff0c;这种情况对我们来说十分痛苦和困扰。然而&#xff0c;我们不必担心&#xf…

如何用100天彻底学会Python?

Python 是一门功能强大、易于学习且历史悠久的编程语言。如果你希望在短时间内彻底学会 Python&#xff0c;需要制定一个全面的学习计划&#xff0c;并进行刻意的练习和实践。 以下是一份建议的学习计划&#xff0c;帮助你在 100 天内掌握 Python 技能。 第 1-10 天&#xff…

JavaScript class和继承的原理

&#xff08;对于不屈不挠的人来说&#xff0c;没有失败这回事。——俾斯麦&#xff09; class 相关链接 MDN链接 有关类的详细描述 关于构造函数&#xff0c;原型和原型链的说明 类的概述 类是用于创建对象的模板。他们用代码封装数据以处理该数据。JS 中的类建立在原型上…

【Queue新技法】用双数组实现一个队列 C++

目录 1 常规的队列构建2 加入一些限制2-1形式化说明2-2 优化&#xff1a;平衡队列 附录0 双数组或双链表实现队列1 单链表与循环缓冲区实现队列3 参考资料 1 常规的队列构建 到火车站办理退票&#xff0c;排队的人构成队列。注意到有两个关键动作&#xff1a; 入队&#xff0c…
最新文章