当前位置: 首页 > news >正文

计算机视觉基础(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图像中几本不再是直线

相关文章:

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

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

解决Github上的README无法显示图片

首先感谢博主的思路:思路 最近写了点东西提交到git 发现本地能查看md里的图片用的相对路径,提交到github就看不见,并且发现不只是我自己的仓库看不见,其他人的我也看不见。那就有问题了 解决:正常使用相对路径&…...

qnx 工程目录创建工具 addvariant

文章目录 前言一、addvariant 是什么二、addvariant 使用实例1. variant names 参数说明2. 创建一个可执行文件工程3. 创建一个动态库工程 总结参考资料 前言 本文主要介绍如何在qnx 开发环境中创建工程目录及其相关的配置文件(common.mk, Makefile 文件等) 软件版本&#xff…...

计算机视觉+深度学习+机器学习+opencv+目标检测跟踪+一站式学习(代码+视频+PPT)

第1章:视觉项目资料介绍与学习指南 相关知识: 介绍计算机视觉、OpenCV库,以及课程的整体结构。学习概要: 了解课程的目标和学习路径,为后续章节做好准备。重要性: 提供学生对整个课程的整体认识&#xff0…...

【AI视野·今日CV 计算机视觉论文速览 第278期】Mon, 30 Oct 2023

AI视野今日CS.CV 计算机视觉论文速览 Mon, 30 Oct 2023 Totally 50 papers 👉上期速览✈更多精彩请移步主页 Daily Computer Vision Papers Image Clustering Conditioned on Text Criteria Authors Sehyun Kwon, Jaeseung Park, Minkyu Kim, Jaewoong Cho, Ernest…...

深度学习:多模态与跨模态

1 定义 1.1 多模态学习 多模态学习(Multimodal Learning)是一种利用来自多种不同感官或交互方式的数据进行学习的方法。在这个语境中,“模态”指的是不同类型的数据输入,如文本、图像、声音、视频等。多模态学习的关键在于整合和…...

大数据Hadoop之——部署hadoop+hive+Mysql环境(Linux)

目录 一、JDK的安装 1、安装jdk 2、配置Java环境变量 3、加载环境变量 4、进行校验 二、hadoop的集群搭建 1、hadoop的下载安装 2、配置文件设置 2.1. 配置 hadoop-env.sh 2.2. 配置 core-site.xml 2.3. 配置hdfs-site.xml 2.4. 配置 yarn-site.xml 2.5. 配置 ma…...

Python与ArcGIS系列(四)在地图文档中加入图层

目录 0 简述1 将图层添加到地图文档中2 将图层插入到地图文档0 简述 本篇介绍如何利用arcpy实现将图层添加到地图文档中,以及将图层插入到地图文档指定的位置。 1 将图层添加到地图文档中 arcpy的mapping模块提供的AddLayer()函数可以实现将图层添加到地图文档中。功能本质上…...

QT 程序异常崩溃

出现以下问题,大概率是你在修改代码时,在pro或者pri中增加了一些不存在的头文件或者cpp,使用BeyondCmp仔细对比,分享,希望帮助到你...

Ubuntu20.04 通过nmcli命令查看网卡状态为unmanaged

问题描述: 通过下述指令查看网卡状态为 "unmanaged" nmcli dev status 解决方法: cd /usr/lib/NetworkManager/conf.d/ sudo mv 10-globally-managed-devices.conf 10-globally-managed-devices.conf.bak sudo cp 10-globally-managed-devic…...

【R Error系列】r - fatal error : RcppEigen. h:没有这样的文件或目录

在头文件那要有 // [[Rcpp::depends(RcppEigen)]] 即&#xff1a; #include <Rcpp.h> #include <RcppEigen.h> using namespace Rcpp; using namespace Eigen;// [[Rcpp::depends(RcppEigen)]] // [[Rcpp::export]] 参考&#xff1a; r - fatal error: RcppEi…...

如何在聊天记录中实时查找大量的微信群二维码

10-5 如果你有需要从微信里收到的大量信息中实时找到别人发到群里的二维码&#xff0c;那本文非常适合你阅读&#xff0c;因为本文的教程&#xff0c;可以让你在海量的微信消息中&#xff0c;实时地把二维码自动挑出来&#xff0c;并且帮你分类保存。 如果你是做网推的&#…...

03-CSS基础选择器

3.1 CSS基础认知&#x1f34e; 3.1.1 &#x1f441;️‍&#x1f5e8;️CSS概念 CSS&#xff1a;层叠样式表&#xff08;Cascading style sheets)&#xff0c;为网页标签增加样式表现的 语法格式&#xff1a; 选择器{<!-- 属性设置 -->属性名:属性值; <!--每一个…...

【ROS】RViz2源码分析(二):main函数及编译配置详解

【ROS】郭老二博文之:ROS目录 1、main函数 #include <memory> #include <string> #include <vector>#include <QApplication>...

Vue.js的生命周期钩子

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…...

第3章:搜索与图论【AcWing】

文章目录 图的概念图的概念图的分类有向图和无向图 连通性连通块重边和自环稠密图和稀疏图参考资料 图的存储方式邻接表代码 邻接矩阵 DFS全排列问题题目描述思路回溯标记剪枝代码时间复杂度 [N 皇后问题](https://www.luogu.com.cn/problem/P1219)题目描述全排列思路 O ( n ! …...

C++ Qt 学习(七):Qt 线程与并发

1. Qt 创建线程的三种方法 1.1 方式一&#xff1a;派生于 QThread 派生于 QThread&#xff0c;这是 Qt 创建线程最常用的方法&#xff0c;重写虚函数 void QThread::run()&#xff0c;在 run() 写具体的内容&#xff0c;外部通过 start 调用&#xff0c;即可执行线程体 run() …...

Django框架之模板层

【一】Django模板系统 官方文档&#xff1a;官方文档 【二】常用语法 只需要记两种特殊符号&#xff1a; {{ }}和 {% %} 变量相关的用{逻辑相关的用{%%}。 【三】变量 在Django的模板语言中按此语法使用&#xff1a; {{ 变量名 }}。 当模版引擎遇到一个变量&#xff0c;它…...

【AI视野·今日Robot 机器人论文速览 第六十五期】Mon, 30 Oct 2023

AI视野今日CS.Robotics 机器人学论文速览 Mon, 30 Oct 2023 Totally 18 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Robotics Papers Gen2Sim: Scaling up Robot Learning in Simulation with Generative Models Authors Pushkal Katara, Zhou Xian, Katerina F…...

LuatOS-SOC接口文档(air780E)--otp - OTP操作库

otp.read(zone, offset, len)# 读取指定OTP区域读取数据 参数 传入值类型 解释 int 区域, 通常为0/1/2/3, 与具体硬件相关 int 偏移量 int 读取长度, 单位字节, 必须是4的倍数, 不能超过4096字节 返回值 返回值类型 解释 string 成功返回字符串, 否则返回nil 例…...

Qwen2.5-Coder-1.5B应用案例:自动生成Bash脚本处理日志文件

Qwen2.5-Coder-1.5B应用案例&#xff1a;自动生成Bash脚本处理日志文件 1. 日志处理场景与痛点分析 1.1 运维工程师的日常挑战 在服务器运维工作中&#xff0c;日志分析是最常见也最耗时的任务之一。想象一下这样的场景&#xff1a; 你需要检查10台服务器上50个不同的服务日…...

Jmeter接口测试项目实战

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 1、什么是jmeter&#xff1f;JMeter是100%完全由Java语言编写的&#xff0c;免费的开源软件&#xff0c;是非常优秀的性能测试和接口测试工具&#xff0c;支持主流…...

开源 ESP32 网络收音机:OLED 界面与编码器交互全解析

1. ESP32网络收音机项目概述 第一次接触ESP32网络收音机项目时&#xff0c;我被这个小小的开发板展现出的强大功能震撼到了。想象一下&#xff0c;一个火柴盒大小的设备&#xff0c;不仅能连接WiFi播放全球各地的网络电台&#xff0c;还能通过OLED屏幕和编码器实现媲美商业产品…...

效率倍增:用快马云端jupyter notebook打造可复现、易协作的数据分析流水线

效率倍增&#xff1a;用快马云端jupyter notebook打造可复现、易协作的数据分析流水线 最近在团队里做数据分析时&#xff0c;经常遇到这样的困扰&#xff1a;每次新同事加入项目&#xff0c;都要花半天时间配置本地jupyter环境&#xff1b;好不容易跑通的代码&#xff0c;换台…...

Wireshark抓包实战:用一道CTF题彻底搞懂IP分片与UDP重组

Wireshark抓包实战&#xff1a;用一道CTF题彻底搞懂IP分片与UDP重组 在网络安全竞赛中&#xff0c;一个看似简单的UDP传输任务可能隐藏着协议层面的精妙设计。去年CyBRICS赛事中的lx100题目就完美诠释了这一点——参赛者需要从相机传输的UDP流量中提取图片&#xff0c;而真正的…...

Boomer:轻量高效的Linux屏幕放大镜工具

Boomer&#xff1a;轻量高效的Linux屏幕放大镜工具 【免费下载链接】boomer Zoomer application for Linux 项目地址: https://gitcode.com/gh_mirrors/boo/boomer 当你需要精准查看屏幕细节时是否常感到操作繁琐&#xff1f;无论是设计工作中的像素级调整、编程时的代码…...

从Flatten到Hierarchy:数字IC后端工程师必须掌握的时序收敛技巧

从Flatten到Hierarchy&#xff1a;数字IC后端工程师必须掌握的时序收敛技巧 在22nm以下工艺节点&#xff0c;单芯片晶体管数量已突破10亿大关。面对如此庞大的设计规模&#xff0c;传统扁平化&#xff08;Flatten&#xff09;流程如同试图用绣花针建造摩天大楼——理论上可行&a…...

Video2X:用AI魔法将低分辨率视频变成4K超清大片的终极指南

Video2X&#xff1a;用AI魔法将低分辨率视频变成4K超清大片的终极指南 【免费下载链接】video2x A machine learning-based video super resolution and frame interpolation framework. Est. Hack the Valley II, 2018. 项目地址: https://gitcode.com/GitHub_Trending/vi/v…...

AssetStudio终极指南:快速免费提取Unity游戏模型、纹理与音频资源

AssetStudio终极指南&#xff1a;快速免费提取Unity游戏模型、纹理与音频资源 【免费下载链接】AssetStudio 项目地址: https://gitcode.com/gh_mirrors/asse/AssetStudio AssetStudio是一款功能强大的开源工具&#xff0c;专为Unity游戏资源提取设计&#xff0c;能够轻…...

手把手教你用MounRiver Studio开发沁恒CH32V003(附完整项目实战)

从零开始用MounRiver Studio开发沁恒CH32V003&#xff1a;温度控制器实战指南 当RISC-V遇上国产MCU&#xff0c;会碰撞出怎样的火花&#xff1f;沁恒CH32V003作为一款性价比极高的RISC-V内核微控制器&#xff0c;配合MounRiver Studio这一专为RISC-V优化的开发环境&#xff0c;…...