从光子到图像——相机如何捕获世界?

embedded/2025/1/11 21:43:30/

引言

你是否想过为何我们按一下相机快门就可以将眼前广袤多彩的世界显示于一个小小的相机屏幕上?本期推文中将带着大家重现从光子转换为电子、电子转换为图像中数字驱动值的整个流程。

图片
▲人们通过相机捕获眼前的场景

从光子到电子的转换

光线首先通过光学镜头进入相机并到达传感器,再通过传感器上的微透镜聚焦。为了得到彩色图像,相机需要获得不同波段的光线,因此传感器前需加上颜色滤波器阵列。

图片
▲传感器像素前部分示意图

透过特定波段的滤波器后的光子会进入一个叫做“像素”的小型势阱。最简单的像素结构采用一个PN结作为感光机制,以及一个与之相连的Reset晶体管(RS)作为开关。在曝光时间内,PN结内的硅吸收光线。当光子的能量足够大时,硅原子中的电子便从价带被激发到导带,从而产生电子-空穴对。随后,由于PN结内电场的影响,电子-空穴对会分成两个电荷载体,而电子会流向PN结的n+端。

在该过程中,光电转换效率通常用量子效率来表征,其数值等于捕获电子数除以入射光子数。对于同一个传感器,其量子效率可认为是固定不变的。

图片
▲传感器像素结构

在光子转换为电子的整个过程中,难免会引入一些噪声。首先在曝光期间,撞击光电二极管的光子数存在数量上的涨落,通常被认为是均值为总光子数的泊松分布,并被称作为光子散粒噪声。由于泊松分布的性质,该噪声均值等于方差,即入射的光子数越多,噪声方差越大。同时,在光电转换期间,有一些聚集在光电二极管上的电子是由于热效应产生,这些电子同样服从均值为总电子数的泊松分布,通常被称为暗电流噪声。

由于传感器制造时难以保证每个像素的物理特性完全一致,所以对于不同的像素,其量子效率与热效应的影响不同,对应的光子散粒噪声与暗电流噪声的方差也不同。通常,这种噪声的空间分布被称为非均匀性。

图片
▲传感器转换总电子数公式

从电子到数字驱动值的转换

从光子转换成电子后,会进入浮动扩散节点(floating diffusion)。在浮动扩散节点中,电子被转移到浮动扩散电容并转换为电压值。电容等于电荷除以电压,所以对于同样的电子数,浮动扩散电容越小,转换后的电压值就越大。通常,由于浮动扩散电容引发的电压变化也被称为转换增益。

图片
▲浮动扩散节点在传感器中的位置

浮动扩散电容将电荷数转换成了电压值,并通过源极跟随器(source follower,SF)输出电压信号。在入射光子数极少的情况下,由于噪声的存在,最终通过浮动扩散节点转换成的电压值可能是负数。为了防止电压为负的情况,制造商通常会加上一个偏置电压。

然后,电压信号将通过一个可编程增益放大器(PGA)进一步放大,即所谓的模拟增益。

这里我们来讨论一下改变最终图像的关键参数——ISO感光度。如前所述,电荷在变为最终的电压信号过程中经过了两次增益,一次是电荷转换成电压的转换增益,另一次是PGA带来的模拟增益。同时,目前许多制造商也给相机加上了通过直接放大数字信号改变图像像素值的数字增益。我们可以在相机中调节ISO感光度来切换转换增益或者调节模拟增益和数字增益,从而改变最终图像的亮度。

图片
▲不同ISO感光度设置下拍摄的图像

经PGA放大后的电压模拟信号最终会通过一个模数转换器(ADC)转换为数字信号,即为Raw图像的数字驱动值。然后,Raw图像将进一步通过ISP流程,从而最终输出在用户眼前的图像。

图片
▲电压信号转换为数字信号流程示意图

在电荷到电压的转换过程中,通常会引入复位噪声,即前端读出噪声。在PGA放大电压信号时,也会引入一些白噪声与闪烁噪声,即所谓的后端读出噪声。同时,在模拟信号转换为数字信号的过程中,还会不可避免地引入量化噪声。其中,读出噪声通常可以建模为均值为0的高斯噪声,而量化噪声可以认为是均匀分布的噪声。

图片
▲电子转换为数字驱动值公式

总结

在本期推文中,带大家走进了相机成像流程中的微观世界,了解了光子如何转换成电子、电子又如何转换为输出图像的数字驱动值。相机捕获到的信息,不只包含真实的场景信号,还有我们不希望看到的各式各样的噪声。无论是相机里的世界还是眼前的世界,都要去伪存真、忠实还原。


http://www.ppmy.cn/embedded/153133.html

相关文章

详细介绍 React 中 i18n 的完整使用流程:

接下来按照步骤,让我们来完成! // 1. 首先安装必要的依赖 // npm install i18next react-i18next i18next-http-backend i18next-browser-languagedetector// 2. 创建 i18n 配置文件 (src/i18n/index.js) import i18n from i18next import { initReactI…

机器学习之基本概念 - 学习算法、学习(训练)过程

机器学习是对能通过经验自动改进的计算机算法的研究. ——汤姆米切尔(Tom Mitchell)[Mitchell, 1997] 思考一个问题: 如何让计算机能自动识别手写的数字? ————------------------———————分割线—————————————————-------…

SpringBoot项目分离与分层方式之容器化部署

SpringBoot项目分离与分层方式之容器化部署 文章目录 1.前言2.deom项目工程结构3.分离容器部署3.1父工程pom3.2子模块3的Dockerfile3.3子模块3的target3.4构建启动docker命令 4.分层容器部署4.1父工程pom4.2子模块3的Dockerfile4.3子模块3的target4.4构建启动docker命令 5.jeki…

2025年新出炉的MySQL面试题

🎥 作者简介: CSDN\阿里云\腾讯云\华为云开发社区优质创作者,专注分享大数据、Python、数据库、人工智能等领域的优质内容 🌸个人主页: 长风清留杨的博客 🍃形式准则: 无论成就大小,…

scrapy爬取图片

scrapy 爬取图片 环境准备 python3.10scrapy pillowpycharm 简要介绍scrapy Scrapy 是一个开源的 Python 爬虫框架,专为爬取网页数据和进行 Web 抓取而设计。它的主要特点包括: 高效的抓取性能:Scrapy 采用了异步机制,能够高效…

使用 `rsync + inotify` 实现实时文件同步:简单又高效

使用 rsync inotify 实现实时文件同步:简单又高效 在日常的运维工作中,文件的实时同步是一个非常常见的需求,比如: 网站更新:同步静态资源到多台服务器。备份数据:将生产数据实时备份到异地存储。日志传…

Vue3初学之插槽(slot)使用

在 Vue 3 中,插槽(Slots)是一种强大的内容分发机制,允许你在组件中定义可替换的内容区域,从而使组件更加通用和灵活。以下是 Vue 3 中插槽的几种常见用法: 默认插槽 默认插槽是最基本的插槽类型&#xff0…

IEC61850遥控-增强安全选控是什么?

摘要:遥控服务是IEC61850协议中非常重要的一项服务,其通常会被应用在电源开关、指示灯、档位调节等器件的操作。 遥控是一类比较特殊的操作,其通过远程方式操作指定的设备器件,在一些重要的场景中需要有严谨的机制来进行约束&…