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

引言

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

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

从光子到电子的转换

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

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

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

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

图片
▲传感器像素结构

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

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

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

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

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

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

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

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

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

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

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

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

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

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

总结

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

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

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

相关文章

C# 或 .NetCore 如何使用 NPOI 导出图片到 Excel 文件

今天在本文中,我们将尝试使用NPOI库将图像插入到 Excel 文件的特定位置。请将以下逻辑添加到您的写作方法中,在 Excel 文件中添加图像(JPEG、PNG),我已经有一个示例 jpeg 文件 - Read-write-excel-npoi.jpg ,我们将尝试…

OpenCV实现基于拉普拉斯算子的浮雕特效

图像浮雕效果的实现原理主要基于图像处理技术,特别是利用图像中像素之间的灰度差异来模拟立体感。以下是对该原理的详细解释: 一、浮雕效果的基本概念 浮雕是把所要呈现的图像突起于材质表面,根据凹凸的程度不同从而形成三维的立体感。在计…

前端用json-server来Mock后端返回的数据处理

<html><body><div class"login-container"><h2>登录</h2><div class"login-form"><div class"form-group"><input type"text" id"username" placeholder"请输入用户名&q…

【xLua】xLua-master签名、加密Lua文件

GitHub - Tencent/xLua: xLua is a lua programming solution for C# ( Unity, .Net, Mono) , it supports android, ios, windows, linux, osx, etc. 如果你想在项目工程上操作&#xff0c;又发现项目工程并没导入Tools&#xff0c;可以从xLua-master工程拷贝到项目工程Assets…

Unity学习笔记(六)使用状态机重构角色移动、跳跃、冲刺

前言 本文为Udemy课程The Ultimate Guide to Creating an RPG Game in Unity学习笔记 整体状态框架(简化) Player 是操作对象的类&#xff1a; 继承了 MonoBehaviour 用于定义游戏对象的行为&#xff0c;每个挂载在 Unity 游戏对象上的脚本都需要继承自 MonoBehaviour&#x…

AIDD-人工智能药物设计-AlphaFold系列:全面回顾AF1-3的关键研究成果及其对科学界的影响

AlphaFold系列&#xff1a;全面回顾AF1-3的关键研究成果及其对科学界的影响 本文章将围绕 AlphaFold 系列模型在蛋白质结构预测领域的前沿研究展开&#xff0c;重点介绍 AlphaFold1、AlphaFold2 与 AlphaFold3 的关键研究成果&#xff0c;以及它们对科学界和制药工业的深远影响…

Pandas-RFM会员价值度模型

文章目录 一. 会员价值度模型介绍二. RFM计算与显示1. 背景2. 技术点3. 数据4. 代码① 导入模块② 读取数据③ 数据预处理Ⅰ. 数据清洗, 即: 删除缺失值, 去掉异常值.Ⅱ. 查看清洗后的数据Ⅲ. 把前四年的数据, 拼接到一起 ④ 计算RFM的原始值⑤ 确定RFM划分区间⑥ RFM计算过程⑦…

Git 入门指南:如何高效管理你的代码库

文章目录 Git 的介绍安装 Git创建仓库Git 三板斧addcommitpush 冲突问题常用 Git 指令 Git 的介绍 Git 是一个分布式版本控制系统&#xff0c;用于跟踪文件的变化并支持团队协作开发。最初由 Linus Torvalds&#xff08;Linux 操作系统的创始人&#xff09;开发&#xff0c;Gi…

execl条件比较两个sheet每个单元格的值

1.把对比的sheet复制到对比文件中 2.选择首个单元格 3.新建规则 4.选择公式 5.编写公式 A3<>Sheet1!A36.选择差异颜色 7.选择应用范围 $1:$655368.选择应用范围

2025新年源码免费送

2025很开门很开门的源码免费传递。不需要馒头就能获取4套大开门源码。 听泉偷宝&#xff0c;又进来偷我源码啦&#x1f44a;&#x1f44a;&#x1f44a;。欢迎偷源码 &#x1f525;&#x1f525;&#x1f525; 获取免费源码以及更多源码&#xff0c;可以私信联系我 我们常常…

本地LLM部署--Open WebUI(多媒体工具FFMPEG作用)

OpenWebUI 和 FFmpeg 的关系主要体现在 多媒体处理需求 上。OpenWebUI 是一个基于 Web 的接口项目&#xff0c;提供与各种 AI 模型交互的功能&#xff0c;而 FFmpeg 则是一种多媒体处理工具&#xff0c;用于处理音视频数据。二者的关系主要体现为 依赖和功能互补&#xff0c;具…

使用双向链表优化数组操作的性能

&#x1f3ac; 江城开朗的豌豆&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 &#x1f4dd; 个人网站 :《 江城开朗的豌豆&#x1fadb; 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! 目录 背景 双向链表的优势 实现方案 性能优化 …

Inno Setup制作安装包,安装给win加环境变量

加 ; 加环境变量&#xff0c;开启&#xff0c;下面一行 ChangesEnvironmentyes 和 ; 加环境变量wbrj变量名&#xff0c;{app}\project\bin变量值&#xff0c;{app}\后接文件名&#xff0c;{app}表示安装路径。下面一行,{olddata};原来的值上拼接 Root: HKLM; Subkey: “SYSTEM\…

积分与签到设计

积分 在交互系统中&#xff0c;可以通过看视频、发评论、点赞、签到等操作获取积分&#xff0c;获取的积分又可以参与排行榜、兑换优惠券等&#xff0c;提高用户使用系统的积极性&#xff0c;实现引流。这些功能在很多项目中都很常见&#xff0c;关于功能的实现我的思路如下。 …

Taro+Vue实现图片裁剪组件

cropper-image-taro-vue3 组件库 介绍 cropper-image-taro-vue3 是一个基于 Vue 3 和 Taro 开发的裁剪工具组件&#xff0c;支持图片裁剪、裁剪框拖动、缩放和输出裁剪后的图片。该组件适用于 Vue 3 和 Taro 环境&#xff0c;可以在网页、小程序等平台中使用。 源码 https:…

AI赋能服装零售:商品计划智能化,化危机为转机

在服装零售这片竞争激烈的战场上&#xff0c;每一个细微的决策都可能成为品牌兴衰的关键。当市场波动、消费者口味变化、供应链挑战接踵而至时&#xff0c;许多品牌往往将危机归咎于外部环境。然而&#xff0c;真相往往更为深刻——“危机不是外部的&#xff0c;而是你的商品计…

Flutter:吸顶效果

在分页中&#xff0c;实现tab吸顶。 TDNavBar的screenAdaptation: true, 开启屏幕适配。 该属性已自动对不同手机状态栏高度进行适配。我们只需关注如何实现吸顶。 view import package:ducafe_ui_core/ducafe_ui_core.dart; import package:flutter/material.dart; import p…

企业级PHP异步RabbitMQ协程版客户端 2.0 正式发布

概述 workerman/rabbitmq 是一个异步RabbitMQ客户端&#xff0c;使用AMQP协议。 RabbitMQ是一个基于AMQP&#xff08;高级消息队列协议&#xff09;实现的开源消息组件&#xff0c;它主要用于在分布式系统中存储和转发消息。RabbitMQ由高性能、高可用以及高扩展性出名的Erlan…

信号弱开启手机Wifi通话,MIUI显示/隐藏5G开关的方法

1.开启手机Wi-Fi通话&#xff0c;提升无信号或弱信号时的通话质量 Wi-Fi 通话(Wi-Fi calling)&#xff0c;又称VoWiFi&#xff0c;是一项名为“ Voice over Wi-Fi ”的服务&#xff0c;它允许手机用户使用他们的智能手机使用 Wi-Fi网络拨打电话&#xff0c;即在Wi-Fi环境下就能…

Echarts的认识和基本用法

Echarts介绍和使用 Echarts介绍 官网地址&#xff1a;Apache ECharts Echarts是一个基于JavaScript的开源可视化图表库&#xff0c;由百度前端开发团队研发和维护。它提供了丰富的图表类型、数据统计分析、动态数据更新、多维数据展示等功能&#xff0c;可以帮助开发人员在 W…