计算机视觉基础(7)——相机基础

前言

从这一节开始,我们来学习几何视觉。中层视觉包括相机模型、单目几何视觉、对极几何视觉和多目立体视觉等。在学习几何视觉最开始,我们先来学习一下相机模型,了解相机的基本原理,了解相机如何记录影像。

一、数字相机

1.1  基本工作原理

相机用于生成二维的图像,图像最小的单元被称为像素 (Pixel)

图像中的每个像素对应三维世界中的某个特定方向

相机度量某一时刻,每个像素的光照强度和颜色,并保存在图像中对应像素位置处。

换言之,像素值衡量了某一时刻,来自某一方向上的光照强度

1.2  基本组成元素

二、图像传感器

2.1  图像传感器简介

图像传感器是一种将光学影像转换成电子信号的设备。

感光元件由光敏单元阵列构成

常见的图像传感器有感光耦合器件(CCD)和互补式金属氧化物半导体有源像素传感器(CMOS )两种

彩色图像的生成采用RGB颜色模型:将红绿蓝三原色的色光以不同比例相加,以产生各种色彩光

彩色图像传感器按照对色彩的分辨方式可分为:

• 3CCD 传感器:通过双色棱镜分光,并采用3块独立的CCD传感器

拜尔(Bayer)传感器:一个像素点只对三原色光中的一种感光

Foveon X3 传感器:每一像素点都有三重传感器

2.2  3CCD传感器

2.3  拜尔传感器

三、快门

3.1  快门简介

通过调整快门速度 (Shutter Speed),控制光线照射感光元件的时间,即曝光时间 (Exposure Time)

更长的曝光时间更多的入射光图像亮度更亮

更长的曝光时间容易引起运动模糊 (长曝光摄影)

3.2  卷帘宽门

  •  采用逐行扫描的方式曝光
  • 同一行像素被同时记录,不同行像素曝光时间点不同
  • 当相机或物体发生快速移动时会引起畸变(Distortion) 

3.3  全局快门

所有像素在同一时间曝光

不会造成卷帘快门式的畸变,因而更适用于3D重构任务 (SLAM)

造价更昂贵

【参考链接】

详细图解,一眼就能看懂!卷帘快门(Rolling Shutter)与全局快门(Global Shutter)的区别-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/lz0499/article/details/102616773

四、图像的形成

4.1  成像原理

问:直接在物体前放置幕布,幕布上能否投射出物体的图像?

答:不会,幕布上每一点都会接收到来自不同方向光线的投射,因而投影的结果是十分模糊的。

那么如何解决呢?

  • 增加遮光板屏蔽掉多余的光线 (小孔成像)
  • 遮光板上通光的小孔就是光圈 (Aperture)
  • 最朴素的针孔相机模型

这就是我们日常生活中的小孔成像原理。

4.2  针孔相机

针孔相机假设通过对小孔是一个点,从物体的每个点发出的光线只有一条能通过小孔

针孔相机模型用于近似图像的形成过程

利用相似三角形原理分析

针孔相机模型:图像较锐化,由于光线较少,需要更多的曝光时间

扩大孔径:可以减少所需曝光时间,但图像变模糊

解决方法:用镜头(透镜)替换针孔

4.3  薄透镜相机

薄透镜相机模型是对针孔相机的近似。

理想情况下物点、像点、光心三点共线

光线与光心距离越远,误差越大

采用光圈,屏蔽距离光心较远的光心,控制误差

4.4  光圈与景深

【光圈】

光圈限制了光线与光心的最大距离,光圈就是小孔的孔径。

【景深】

景深指相机聚焦平面前后相对清晰的成像范围,描述在空间中,可以清楚成像的距离范围

【光圈和景深】

【参考网站】Depth of Field in Photography Explained: The Ultimate DOF Guide! (capturetheatlas.com)

4.5  针孔/薄透镜相机的假设

从同一物点发出的光线被聚焦于同一像点

所有的像点位于同一平面上

物点、光心与像点三点共线

因为以上假设条件在实际中并非总是满足的,这导致了不完美的成像结果。

五、像差

真实成像过程中3D场景到2D图像的投影关系与理想薄透镜相机模型中的投影关系的偏差,称

为像差。像差表现为图像的形变与失真,有多中具体的形式。主要形式如下:

畸变 (Distortion)

球面像差 (Spherical aberrations)

色相差 (Chromatic aberrations)

像散 (Astigmatism )

光晕 (Vignetting)

5.1  畸变

  • 直线投影 (rectilinear projection): 3D场景中的直线在2D投影中仍未直线
  • 畸变:与直线投影的偏差

5.2  球面像差

  • 由于透镜球面折射率变化不均造成平行于光轴的光线无法聚焦
  • 造成成像模糊

5.3  色相差

透镜折射率随光的波长而变化,同一物点发出的不同颜色光线无法聚焦于同一像点

5.4  像散

水平和竖直方向的焦点不同

5.5  光晕/暗角

  • 图像的外围部分的亮度或饱和度比中心区域低
  • 一个或多个透镜的实际尺寸造成的,后方的元件遮蔽了前方的
  • 然而,有时却因为需要创意风格而被刻意加入

六、常见的镜头种类

6.1  长焦镜头

  • 视野较窄
  • 透视变形最小
  • 3D空间中平行线在2D图像中保持平行

6.2  广角镜头

  • 视野较宽广 (70-120)
  • 有透视变形
  • 3D空间中的直线在2D图像大致是直线

6.3  鱼眼镜头

  • 视野极宽 (>130)
  • 3D空间中的直线在2D图像中几本不再是直线

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

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

相关文章

nodejs+vue黄河风景线旅游网站的设计与实现-微信小程序-安卓-python-PHP-计算机毕业设计

本文首先对该系统进行了详细地描述,然后对该系统进行了详细的描述。管理人员增加了系统首页、个人中心、用户管理、景点分类管理、景点简介管理、旅游路线管理、文章分类管理、公告文章管理、系统管理理等功能。这套黄河风景线旅游网站是根据当前的现实需要&#xf…

js如何阻塞固定时间

js本身没有提供睡眠方法,因为js阻塞了会导致页面渲染等工作也阻塞,所以一般没有这个需求,但是有时候为了测试,需要一个阻塞方法,下面是方法: 方法一: 使用while循环 let sleep function(ms){…

css中的hover用法示例(可以在vue中制作鼠标悬停显示摸个按钮的效果)

css中的hover 1、hover的定义 hover选择器用于选择鼠标指针浮动在上面的元素,它适用于所有元素,可以用来实现类似于js的一些功能。 2.hover的作用 css中hover属性,鼠标移到上面的时候可以激活,它可以实现悬浮元素上改变样式&a…

如何在 Nginx Proxy Manager(NPM)上部署静态网站

前言 众所周知,我们在之前介绍过 Nginx Proxy Manager(以下简称 NPM) 这个反向代理的神器,对于一些 Docker 搭建的 Web 项目,NPM 能够很轻松地给他们做反向代理。 然而对于一些静态网站,小伙伴们可能不知道怎么用 NP…

Unity反编译:IL2CPP 打包输出的cpp文件和dll(程序集)位置、Mono打包输出的dll(程序集)位置

目录 如题:IL2CPP 打包输出的cpp文件和dll位置(并不会出现在APK里) 如题:Mono打包输出的dll位置 校验平台:Android 如题:IL2CPP 打包输出的cpp文件和dll位置(并不会出现在APK里) Unity Assets同级目录下 Temp/StagingArea/Il2…

Vue CLI脚手架安装、搭建、配置 和 CLI项目分析

目录 一、CLI快速入门 1. 官方介绍 : 2.安装Vue CLI : 3.搭建Vue CLI : 4.IDEA配置Vue CLI : 二、Vue CLI项目分析 1.结构分析 : 1.1 config 1.2 node_modules 1.3 src 1.4 static 2.流程分析 : 2.1 main.js 2.2 router/index.js 2.3 components/HelloWorld.vue 2.4 A…

《QT从基础到进阶·二十七》进度条QProgressBar

ui.ProgressBar.setValue(45); //45% ui.ProgressBar.setMin(0); ui.ProgressBar.setMax(255);0到100分为255份,值为215时,进度条为100/255*215 84% 点击主界面弹出进度条QProgressDialog 常用功能: setWindowFlags(Qt::Dialog | Qt::Cu…

为何电脑要设置网络掩码?

问题描述 既然子网掩码是为了让路由器能够决定一个数据包在局域网内发送还是发到公网,那么按道理只有路由器需要知道子网掩码,为什么在固定IP时每台计算机都需要单独设置子网掩码?有没有什么情况同一局域网内各计算机所设置的子网掩码有不同…

【C++】泛型编程 ② ( 函数模板与普通函数区别 )

文章目录 一、函数模板与普通函数区别1、函数模板与普通函数区别2、代码示例 - 函数模板与普通函数区别 一、函数模板与普通函数区别 1、函数模板与普通函数区别 函数模板与普通函数区别 : 主要区别在于它们能够处理的 数据类型数量 和 灵活性 ; 自动类型转换 : 函数模板 不允许…

嵌入式Linux开发,NFS文件系统挂载

在嵌入式linix的开发中,经常会需要在pc端和板端互相传输文件,优先可选择ftp传输,但是有些嵌入式板端不支持,只能使用nfs这种方式,即pc端作为服务端,板端作为客户端,将pc端的某个文件夹挂载到板端…

SQL Server进阶知识

🙈作者简介:练习时长两年半的Java up主 🙉个人主页:程序员老茶 🙊 ps:点赞👍是免费的,却可以让写博客的作者开心好久好久😎 📚系列专栏:Java全栈,…

Redis 连接不上 WRONGPASS invalid username-password pair

1.我的RedisDesktopManager 可以连接 但是 Springboot远程使用Redis就是连不上 2.我的密码是 abc123.. 多了英文的 ..符号 在Springboot过不了,所以Redis密码尽量字母数字,不要其他符号

炒现货黄金怎么做?挖掘黄金的投资机会

黄金一直以来都是备受投资者追捧的避险资产,其价值和潜力是无法忽视的。而炒现货黄金作为一种快速获取收益的投资方式,备受关注。那么,如何在炒现货黄金中找到投资机会呢?为您详细解析,简单易懂,帮助您开启…

Java-贪吃蛇游戏

前言 此实现较为简陋,如有错误请指正。 其次代码中的图片需要自行添加地址并修改。 主类 public class Main {public static void main(String[] args) {new myGame();} }游戏类 import javax.swing.*; import java.awt.event.KeyEvent; import java.awt.event.…

032-从零搭建微服务-定时服务(一)

写在最前 如果这个项目让你有所收获,记得 Star 关注哦,这对我是非常不错的鼓励与支持。 源码地址(后端):mingyue: 🎉 基于 Spring Boot、Spring Cloud & Alibaba 的分布式微服务架构基础服务中心 源…

自然语言处理(NLP)-spacy简介以及安装指南(语言库zh_core_web_sm)

spacy 简介 spacy 是 Python 自然语言处理软件包,可以对自然语言文本做词性分析、命名实体识别、依赖关系刻画,以及词嵌入向量的计算和可视化等。 1.安装 spacy 使用 “pip install spacy" 报错, 或者安装完 spacy,无法正…

解决Chrome无法自动同步书签

前提:(要求能正常访问google) 准备一个谷歌账号 安装Chrome浏览器 开启集装箱插件(或者其他能访问谷歌的工具) 步骤:(使用集装箱插件/能正常访问谷歌的其他工具) 下载安装使用“集…

activiti7审批驳回,控制变量无法覆盖,导致无限循环驳回,流程无法结束

项目开发过程中使用工作流,因此考虑使用activiti7做完工作流引擎。项目开发过程中,发现流程驳回时,再次执行流程,控制变量无法覆盖,导致无限循环驳回,流程无法结束。流程图如下图所示: 驳回控制…

node 文件上传操作(前端 form表单上传 formData上传 后端 node 使用express+multer)

目录 前端form表单上传formData上传 后端 node 使用expressmulter 前端 form表单上传 <h1>个人信息</h1><form action"http://localhost:3000/api/sendFile" method"post" enctype"multipart/form-data"><label for"…

Android 如何根据区域高度动态计算最匹配的字体大小

Android 提供了一个 autoSizeTextType 属性来自动调整字体大小&#xff0c;但是它仅适用于 API Level 26 及以上的版本。对于 API Level 25 及以下的版本&#xff0c;可以通过代码计算最佳字体大小来实现动态调整。以下是使用 Kotlin 代码实现的示例&#xff1a; fun getBestFo…