相机成像基础

news2024/11/27 2:16:34

一、引言

在这个内卷的时代,手机厂商也在内卷"影像",每次新品发布,都将影像效果带到一个新的高度。你是否好奇过,手机或者相机是如何记录下我们的幸福时刻的,本篇文章从相机成像基本流程、相机成像原理以及相机构造三部分部分为大家揭秘。

二、相机成像基本流程

光线经过镜头照射在感光元件上,感光元件将接收到的光信号转换为电信号,电信号经过数字化可得到RAW图,RAW图再经过ISP(Image Signal Processor)处理得到YUV图,我们平时使用的多为YUV图,这就是相机成像的基本流程。关于RAW图、YUV图以及ISP的详细内容请参考后续文章,本篇不做过多介绍。

三、相机成像原理

相机成像原理大家中学都学过,简单来说就是凸透镜成像,光线经过透镜形成虚像,如下图所示。外部的光线经过镜头照在感光元件上,通过控制镜头的伸缩,可以改变光路,实现更清楚或者更广阔视角的图像。

四、相机构造

整个相机模组可以理解为由镜头和传感器两部分组成。镜头负责接收外部的光线,传感器负责将光线转换为电信号,进而转换为CPU可以处理的数字信号。

下图是简易的镜头模组构造,从上到下依次是镜头lens、音圈马达VCM、滤光片IR/蓝玻璃BG、支架Bracket、感光芯片Sensor、印刷电路板PCB、连接器以及SMT搭载元器件。下面介绍镜头lens、音圈马达VCM、滤光片IR/蓝玻璃BG和感光芯片Sensor四部分。

4.1 镜头lens

镜头Lens是一个能够接收光信号并汇聚光信号于感光器件上的装置,可以说主要作用就是就是汇聚光线。

4.1.1 Lens的组成

现代镜头为了成本和效果的考虑,不止是一个简单的玻璃透镜,而是由玻璃材质和塑料材质共同完成。玻璃材质比塑料材质成本高,但玻璃材质的透光效果更好。

4.1.2 Lens的主要参数

  • 焦距 镜头焦距的长短决定着拍摄的成像大小,视场角大小,景深大小和画面的透视强弱。一般来说对于单片镜头就是镜头中心到焦点的距离,而相机镜头是由多片透镜组合,就要复杂许多。这里焦距就指的是从镜头的中心点到感光元器件(CCD)上所形成的清晰影像之间的距离。

  • 视场角(FOV) 我们常用水平视场角来反映画面的拍摄范围。焦距f越大,视场角越小,在感光元件上形成的画面范围越小;反之,焦距f越小,视场角越大,在感光元件上形成的画面范围越大。

  • F值(口径比) F值即指镜头之明亮度(即镜头的透光量)。F=镜头焦距/光圈直径。F值相同,长焦距镜头的口径要比短焦距镜头口径大。

  • 光圈 光圈是位于镜头内部的、可以调节的光学机械性阑孔,可用来控制通过镜头的光线的多少。

  • 景深 当某一物体聚焦清晰时,从该物体前面的某一段距离到其后面的某一段距离内的所有景物也都相当于是清晰的。焦点相当清晰的这段从前到后的距离就叫做景深。

4.2 音圈马达VCM

VCM(Voice Coil Motor)音圈马达应用在对焦上,也就是AF模组,通过音圈马达可以移动镜头至最佳清晰点。 VCM的原理就是在永久磁场中,利用马达的线圈电流来改变弹簧片的位置,导致lens变焦,使得成像最清晰。

4.3 滤光片

滤光片IR/蓝玻璃BG都是Bayer滤光片的一种,主要作用是获取彩色图片,详细内容请参考上一篇文章"Bayer Pattern(拜耳阵列) "。

4.4 Sensor

感光芯片sensor,可以称为图像传感器,是整个摄像头组中的核心部件。它主要的作用就是将光信号转换为电信号,sensor元器件的优劣直接影响成像效果。现在,各个手机大厂都在sensor传感器上做文章,从最开始的几百万像素到现在主流几千万像素,手机厂在相机上非常"内卷"。

一个专注于“嵌入式知识分享”、“DIY嵌入式产品”的技术开发人员,关注我,一起共创嵌入式联盟。微信公众号:“嵌入式产品侠”

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

百度 Comate 终于支持 IntelliJ IDEA 了

大家好,我是伍六七。 对于一直关注 AI 编程的阿七来说,编程助手绝对是必不可少的,除了 GitHub Copilot 之外,国内百度的 Comate 一直是我关注的重点。 但是之前,Comate 还支持 VS code,并不支持 IntelliJ…

集线器-交换机-路由器

1.集线器(Hub) 集线器就是将网线集中到一起的机器,也就是多台主机和设备的连接器。集线器的主要功能是对接收到的信号进行同步整形放大,以扩大网络的传输距离,是中继器的一种形式,区别在于集线器能够提供多端口服务,也…

机器学习基础Matplotlib绘图

一、运行环境 学习工具:jupyter-notebookpython版本:311系统:Win11 二、什么是matplotlib? matplotlib是基于python生态开发的一个可视化绘图库,它的出现让python在数据分析及机器学习方面占了重要的一部分&#…

【二叉树】oj题

在处理oj题之前我们需要先处理一下之前遗留的问题 在二叉树中寻找为x的节点 BTNode* BinaryTreeFind(BTNode* root, int x) {if (root NULL)return NULL;if (root->data x)return root;BTNode* ret1 BinaryTreeFind(root->left, x);BTNode* ret2 BinaryTreeFind(ro…

uiautomator2 无法连接 ATX-Agent

最近需要写个安卓自动项目,本身不想用appium 。主要是appium需要安装的依赖太多,一单换个环境又要配置新的环境。但是ATX-Agent装好之后怎么都连接不是。 报错信息如下: .........省略............ uiautomator2.exceptions.GatewayError: (…

OD机考真题搜集:叠积木1

题目 有一堆长方体积木,它们的高度和宽度都相同,但长度不一。 小橙想把这堆积木叠成一面墙,墙的每层可以放一个积木,或将两个积木拼接起来,要求每层的长度相同。若必须用完这些积木,叠成的墙最多为多少层?如下是叠成的一面墙的图示,积木仅按宽和高所在的面进行拼接。 …

[Spring] 字节一面~Spring 如何解决循环依赖问题 以及 @resource 与 @autowire 同时存在时谁生效

文章目录 Spring 如何解决循环依赖问题resource 与 autowire 同时存在时谁生效 Spring 如何解决循环依赖问题 Spring在实例化一个bean的时候,是首先递归实例化其所依赖的所有bean,直到某个bean没有依赖其他bean,此时就会将该实例返回&#x…

python基础练习题库实验4

文章目录 题目1代码实验结果 题目2代码实验结果 题目3代码实验结果 题目4代码实验结果 题目5代码实验结果 题目6代码实验结果 题目总结 题目1 编写一个程序,使用for循环语句和字符串格式显示以下精确输出。 例如: 代码 for i in range(1, 11):result…

如何在Node.js和Express中设置TypeScript(2023年)

如何在Node.js和Express中设置TypeScript(2023年) 在这篇文章中,我们将介绍在Express应用程序中设置TypeScript的最佳方法,了解与之相关的基本限制。 文章目录 如何在Node.js和Express中设置TypeScript(2023年&#x…

智能优化算法应用:基于鲸鱼算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于鲸鱼算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于鲸鱼算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.鲸鱼算法4.实验参数设定5.算法结果6.参考文献7.MATLAB…

[建议收藏] 一个网站集合所有最新最全的AI工具

今天给大家推荐一个宝藏的AI工具合集网站,有了这个网站,你们再也不用去其他地方找AI工具了。 名称:AI-BOT工具集 这个网站精选1000AI工具,并持续每天更新添加,包括AI写作、AI绘画、AI音视频处理、AI平面设计、AI自动编…

redis笔记 -- 基础数据结构

redis笔记 基础的数据结构:string、list、hash、set、zset 容器型数据结构(list、hash、set、zset)通用规则 如果容器不存在,就创建一个,再进行操作如果容器里没有数据了,就立即删除,回收内存…

人力资源管理后台 === 左树右表

1.角色管理-编辑角色-进入行内编辑 获取数据之后针对每个数据定义标识-使用$set-代码位置(src/views/role/index.vue) // 针对每一行数据添加一个编辑标记this.list.forEach(item > {// item.isEdit false // 添加一个属性 初始值为false// 数据响应式的问题 数据变化 视图…

Android 相机库CameraView源码解析 (一) : 预览

1. 前言 这段时间,在使用 natario1/CameraView 来实现带滤镜的预览、拍照、录像功能。 由于CameraView封装的比较到位,在项目前期,的确为我们节省了不少时间。 但随着项目持续深入,对于CameraView的使用进入深水区,逐…

Mybaits-plus的使用

MybatisPlus特性 润物无声: 只做增强不做改变,引入它不会对现有工程产生改变,如丝般顺滑。 效率至上 只需简单配置,即可快速进行单表CRUD操作,从而节省大量时间。 使用MybatisPlus依赖基本步骤 引入MybatisPlus依…

歌曲《难不难》由歌手荆涛演唱:面对挑战,勇敢前行

在人生的旅途中,我们都会遭遇种种困难和挑战。有时,一个看似简单的创意或想法,想要实现它却需要经历无数次的实践和辛酸。歌曲《难不难》由歌手荆涛演唱,以平实的语言和流畅的旋律,表达了面对困难和挑战时,…

使用360浏览器插件刷新网页

使用360浏览器插件刷新网页 1.打开360浏览器->扩展程序->更多扩展。 2.扩展中心->搜索”网页自动刷新”,然后安装。 3.在要学习的网页上,扩展程序中使用页面自动刷新插件。 4.如果页面打开慢就把10改大,比如改成15&#xff0…

新版idea如何开启多台JVM虚拟机

1.看看自己的项目 2.可能开始的时候啥也没有,就点Run Configuration Type 3.再点击Edit Configurations... 4.点击号添加SpringBoot 5.主类选择一下,一般就一个,点他选了就行。 6.然后点击Modify Options 选择添加add VM Options 7.点击appl…

Huggingface 超详细介绍

Hugging face 起初是一家总部位于纽约的聊天机器人初创服务商,他们本来打算创业做聊天机器人,然后在github上开源了一个Transformers库,虽然聊天机器人业务没搞起来,但是他们的这个库在机器学习社区迅速大火起来。目前已经共享了超…

windows的bat文件(学习笔记)

简介 通过windows的cmd执行的批处理,扩展名可以是.bat或.cmd(类似linux的shell脚本) 所有语句符号不区分大小写 帮助提示信息:命令 /? 1 基本语法 (1) 注释:rem 注释文本不执行 (2) 关闭盘符输出:e…