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

【计算机视觉】相机

文章目录

  • 一、原始的相机:针孔相机(Pinhole Camera)
  • 二、针孔相机的数学模型
  • 三、真实相机
  • 四、透镜的缺陷

我的《计算机视觉》系列参考UC Berkeley的CS180课程,PPT可以在课程主页看到。

成像原理

一、原始的相机:针孔相机(Pinhole Camera)


想要拍一张相片,直接拿胶片对着景物肯定是不行的,因为物体的每一点发出的光线都会到达胶片上的每一点,从而导致胶片上的影像非常模糊,甚至什么都看不出来。因此,我们想建立景物和胶片一一对应的关系,就必须让景物的每一点只有一束光线到达胶片上的一点(其实是很小的区域)。为了达到这个目的,我们就必须用一个隔板把其他多余的光挡住(图中的barrier),只允许其中一束光通过,也就是隔板上的孔(aperture)。这就是针孔相机的原理了。这里的孔在现代的相机上就是光圈,英文名同样是aperture。

针孔相机无处不在,树叶之间的缝隙也可以构成针孔相机,树荫下地面上圆形的亮斑其实就是太阳的像。当发生日食的时候,亮斑的形状就不是圆形的了,而是月牙形(如上图所示)。

有时候,连窗子都可以是照相机。如图所示,酒店的窗户构成针孔相机使得窗外的塔尖倒映在了墙上。

二、针孔相机的数学模型

下面,我们对针孔相机建立数学模型。


针孔相机捕捉的是光束,所有的光束通过一个投影中心(Center of Projection, COP)。像是在像平面上形成的。有效焦距 d d d是从投影中心到像平面的距离。


我们把投影中心放在空间直角坐标系的原点。这里与实际不同的是,我们把像平面放在投影中心的前面(介于物和投影中心之间的 z = − d z=-d z=d处,以后处理其他相机也是如此),这样的话就可以避免景物倒过来的问题了。这样做是可行的,因为把像平面放在 z = d z=d z=d z = − d z=-d z=d处的唯一区别就是景物是正着的还是倒着的。然后,用一些相似三角形,就可以知道物点 ( x , y , z ) (x,y,z) (x,y,z)对应的像点是 ( − d x z , − d y z , − d ) \left(-d\cfrac xz,-d\cfrac yz,-d\right) (dzx,dzy,d)。忽略 z z z坐标 − d -d d,我们就知道胶片上的坐标是 ( − d x z , − d y z ) \left(-d\cfrac xz,-d\cfrac yz\right) (dzx,dzy)

三、真实相机

当然了,针孔相机是旧时代的产物,现在没有人在用针孔相机。现在的相机大都是基于透镜的。接下来我们会建立现代相机的模型。

首先我们讨论一下光圈半径。既然允许通过的光太多会使影像变模糊,为什么不让光圈越小越好呢?答案是:还有光的衍射现象。这里又要涉及一些瑞利判据之类的东西了,啊啊啊啊大物我的噩梦……


所以说光圈半径应该在一个合理的范围内。此外,现代相机使用透镜有很多好处。小孔成像利用的是光的直线传播,景物发出的大部分光被挡在外面了,只有一小部分进入了小孔,这就导致单位时间进入的光强很低,需要很长的曝光时间来弥补。而透镜允许我们不必浪费挡在外面的光,而是把光折进光圈,从而使得更多的光进入光圈,达到缩短曝光时间、降低衍射效应、提升图像品质的目的。透镜可以让光聚焦在一个特定的平面(焦平面)上,我们可以通过调节透镜的形状(曲率半径)、折射率来调节焦距,比针孔相机更方便。

当然,我们知道凸透镜成像满足高斯公式( 1 u + 1 v = 1 f \cfrac 1u+\cfrac 1v=\cfrac 1f u1+v1=f1死去的几何光学突然开始攻击我,这也就意味着对于不同的物距 u u u,相距 v v v是不同的,因此只有物距在一个范围内才能映射到给定的像平面上。物距偏离合理范围,聚焦的平面就不在像平面上了,就像近视眼和远视眼一样。

使图像清晰的最远和最近物距之差称为景深(depth of field):

光圈半径可以控制景深。我们知道,光圈越大,景物的一个点发出的光线映射到像平面上的光斑半径就越大,使得图像不清晰。我们又知道,凸透镜成实像时满足“物近像远像变大,物远像近像变小”,所以景物太远或太近都会导致聚焦不到像平面上,从而使光斑变大。当光圈变小时,可以约数光发散的角度,使像上的光斑变小,从而能允许更远和更近的物距,使得景深变大。焦比(F-number)是焦距与光圈直径之比,焦比越大,意味着光圈半径越小,使得曝光时间增长(因为进入光圈的光变少了,需要更长的曝光时间来弥补),但景深也变大。

焦距可以决定视野(field of view, FOV)。焦距越小,说明透镜遮光能力越强,很边缘的光都可以折进光圈里面,使得视野越大;同时,同一个物体的像也会变小。


焦距太小会导致拍摄变形(比如上图左边的左右脸不一样大)。这是因为小焦距对应大视角,从而使近、远景物占视角的比例之比加大,近景物在图片中的比例被夸张地放大,从而使图像呈现出诡异的形状。

四、透镜的缺陷

  1. 色差(chromatic aberration)。透镜对不同波长的光的折射率不同,使得不同颜色的像位置发生偏移。

  1. 径向畸变(radial distortion)。这是由不完美的透镜导致的;光线通过透镜边缘时会产生偏移。

相关文章:

【计算机视觉】相机

文章目录 一、原始的相机:针孔相机(Pinhole Camera)二、针孔相机的数学模型三、真实相机四、透镜的缺陷 我的《计算机视觉》系列参考UC Berkeley的CS180课程,PPT可以在课程主页看到。 成像原理 一、原始的相机:针孔相机…...

Spring的条件注解,一篇文章盘得清清楚楚明明白白

前言 在Spring中,条件注解可根据特定的条件来决定是否创建或配置Bean,这些条件可以基于类、属性、环境等因素。通过使用条件注解,我们可以在Spring容器中更加灵活地管理和控制组件的创建和注入,帮助我们更加灵活地管理和控制Bean…...

Oracle (7)Online Redo Log Files

目录 一、Oracle Online Redo Log Files及其相关内容介绍 1、Online Redo Log Files简介 2、Online Redo Log Files特点 3、Online Redo Log Files文件组 4、多路复用文件 5、联机重做日志文件工作方式 6、LGWR什么时候写重做 7、LS和LSN 8、删除Redo文件成员 9、删除…...

物联网AI MicroPython传感器学习 之 PAJ7620手势识别传感器

学物联网,来万物简单IoT物联网!! 一、产品简介 手势识别传感器PAJ7620u2是一款集成3D手势识别和运动跟踪为一体的交互式传感器,传感器可以在有效范围内识别手指的顺时针/逆时针转动方向和手指的运动方向等。它可以识别13种手势&a…...

Affinity Photo 2.2.1 高端专业Mac PS修图软件

Affinity Photo Mac中文版是一款面向专业摄影师和其他视觉艺术家的专业图像处理软件,拥有众多专业高端功能,如Raw处理、PSD导入和导出、16位通道的编辑和ICC色彩管理以及兼容大量图片格式。是现在最快、最顺、最精准的专业修图软件。Affinity Photo Mac是…...

微服务-统一网关Gateway

网关的作用 对用户请求做身份认证、权限校验将用户请求路由到微服务,并实现负载均衡对用户请求做限流 搭建网关服务 创建新module,命名为Gateway,引入依赖(1.SpringCloudGateway依赖;2.Eureka客户端依赖或者nacos的服…...

【音视频|wav】wav音频文件格式详解

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 🤣本文内容🤣&a…...

网络工程综合试题(二)

1. SR技术有哪些缺点? SR(Segment Routing)技术是一种新兴的网络编程技术,它具有很多优点,但也存在一些缺点,包括: 部署复杂性:SR技术需要对网络进行改造和升级,包括更新…...

Android JNI/NDK 入门从一到二

1. 前言 最基础的创建JNI接口的操作,可以直接看这篇文章 : 第一个Android JNI工程, 本文会基于掌握创建JNI接口的操作的基础之上,来入门JNI/NDK。 2. 在JNI中打印日志 2.1 添加log模块 记得CMake中有log模块,不然编译不过 ta…...

吃瓜教程3|决策树

ID3算法 假定当前样本集合D中第k类样本所占比例为pk,则样本集合D的信息熵定义为 信息增益 C4.5算法 ID3算法存在一个问题,就是偏向于取值数目较多的属性,因此C4.5算法使用了“增益率”(gain ratio)来选择划分属性 CA…...

springboot动态数据源【非伪数据源】

说明&#xff1a;本文章的数据源不是在配置文件中配置两个或多个数据源&#xff0c;在业务方面对这些数据源来回切换&#xff0c;本文章中的数据源是可以动态添加&#xff0c;修改&#xff0c;切换的&#xff0c;废话不多说。 先看工程图&#xff1a; 1.pom.xml文件 <?x…...

如何改善设备综合效率(OEE)并提高工厂的生产力

在现代制造业中&#xff0c;提高设备综合效率&#xff08;Overall Equipment Efficiency&#xff0c;OEE&#xff09;是企业追求高效生产和优化生产能力的重要目标之一。OEE是一个关键的绩效指标&#xff0c;可以帮助企业评估设备的利用效率、生产效率和质量水平。本文将从三个…...

一文接入Android阿里Sophix热更新

最近公司项目渐趋成熟&#xff0c;已经不需要经常更新版本&#xff0c;并且更新版本对客户的影响特别大&#xff0c;但是日常维护难免需要更新代码&#xff0c;因此热修复的技术&#xff0c;就比较迫切了。 经过一段时间的对比&#xff0c;我们最终决定使用阿里的Sophix方案&am…...

【高阶数据结构】并查集和图

目录 1.数据结构--并查集 2.数据结构--图 1.图的基础概念 2.图的简单实现 2.1.邻接矩阵的图实现 2.2.邻接表的图实现 2.3.图的DFS和BFS 2.4.最小生成树 2.4.1.Kruskal(克鲁斯卡尔算法) 2.4.2.Prim&#xff08;普里姆算法&#xff09; 2.5.最短路径 2.5.1.Dijkstra(…...

Git 提交时提示 GPG 签名错误

本来应该一切都是正常的&#xff0c;但今天提交的时候提示 GPG 签名错误。 错误的信息就是 GPG 签名失败。 gpg: skipped "942395299055675C": No secret key gpg: signing failed: No secret key error: gpg failed to sign the data fatal: failed to write commi…...

vite+vue3实现 tomcat 的本地部署

背景&#xff1a; 很多开发小伙伴在本地开发完前端项目后&#xff0c;碍于服务端环境配置麻烦&#xff0c;想先试试在本地部署&#xff0c;已开发好的前端项目&#xff0c;由于很多文章都是文字性描述&#xff0c;不太直观&#xff0c;为了给大多数新手提供一个教程&#xff0c…...

docker+playwright

windows10 docker playwright 难点在于windows下docker的安装&#xff0c;以及官方hub被墙的困难。 wsl2 wsl2 ubuntu docker git clone https://gitee.com/lineuman/lcs_playwright.git npm install npx playwright test docker端口怎么映射到主机上面&#xff1f; 设置重…...

php框架路由实现

在PHP中也有很多框架&#xff08;如Laravel、CodeIgniter&#xff09;提供了路由功能。下面是一个简单的PHP路由实现原理和示例代码&#xff1a; 路由实现原理&#xff1a; 客户端发起请求&#xff0c;请求的URL会被传递给Web服务器。Web服务器将请求传递给PHP解释器&#xff…...

在CentOS 7中手工打造和运行xml文件配置的Servlet,然后使用curl、浏览器、telnet等三种工具各自测试

下载Openjdk并配置环境变量 https://jdk.java.net/java-se-ri/11-MR2是官网下载Openjdk 11的地方。 sudo wget https://download.java.net/openjdk/jdk11.0.0.1/ri/openjdk-11.0.0.1_linux-x64_bin.tar.gz下载openjdk 11。 sudo mkdir -p /usr/openjdk11创建目录&#xff…...

单例模式.

目录 ♫什么是单例模式 ♫饿汉式单例模式 ♫懒汉式单例模式 ♫单例模式的线程安全问题 ♪原子性 ♪内存可见性与指令重排序 ♫什么是单例模式 单例模式是一种设计模式&#xff0c;通过巧用Java的现有语法&#xff0c;实现一个只能被创建一个实例的类&#xff0c;并提供一个全…...

效率提升秘籍:用快马AI一键生成nt动漫角色管理模块代码

最近在开发一个nt动漫相关的项目&#xff0c;其中角色管理模块是必不可少的部分。这个模块需要实现角色列表展示、详情查看、新增、编辑和删除等功能。传统开发方式下&#xff0c;光是搭建这些基础功能就要花费不少时间。不过我发现用InsCode(快马)平台可以快速生成这些重复性高…...

AVR机器人固件基座:负熵架构与确定性调度

1. 项目概述“Negentropic Base”是一个面向AVR微控制器平台的嵌入式固件基础框架&#xff0c;专为移动机器人&#xff08;尤其是轮式探测车、自主巡线小车、轻量级自主导航平台&#xff09;设计。其名称中的“Negentropic”&#xff08;负熵&#xff09;并非玄学术语&#xff…...

Multisim仿真避坑指南:振幅调制器设计时,如何搞定静态工作点和输出幅度?

Multisim仿真实战&#xff1a;振幅调制器设计的5个关键调试技巧 在电子工程课程设计中&#xff0c;振幅调制器是一个经典但充满挑战的项目。许多学生在Multisim仿真阶段就会遇到各种问题——静态工作点不稳定、输出波形失真、峰峰值不达标...这些问题往往让初学者感到挫败。本文…...

核心产品强势放量,扭亏为盈的康希诺未来怎么看?

3月30日晚间&#xff0c;康希诺发布2025年年度报告。报告期内&#xff0c;公司实现营业收入10.68亿元&#xff0c;同比增长26.18%&#xff1b;实现归母净利润2787.27万元&#xff0c;成功实现扭亏为盈&#xff0c;较2024年实现重大逆转。2025年&#xff0c;康希诺凭借核心产品放…...

Hadoop 3.3.5 分布式集群部署

环境准备与规划硬件要求&#xff1a;3台节点&#xff08;1主2从&#xff09;软件依赖&#xff1a;JDK 8、SSH免密登录目录规范&#xff1a;统一安装路径&#xff08;如/opt/module&#xff09;&#xff0c;用户权限管理Hadoop安装与核心配置一定要检查一下&#xff0c;ssh 能不…...

Rust实战:通过DLL注入与IAT Hook技术拦截Windows API调用

1. 为什么需要Hook Windows API&#xff1f; 在Windows系统开发中&#xff0c;Hook技术就像给系统功能安装了一个"监听器"。想象一下&#xff0c;当你点击某个按钮时&#xff0c;原本应该弹出标准对话框&#xff0c;但通过Hook技术&#xff0c;我们可以在这个动作发生…...

老生常谈:聊聊mysql幻读问题?

之前有位小伙伴美团三面&#xff0c;一直被追求「幻读是否被 MySQL 可重复度隔离级别彻底解决了&#xff1f;」之前我也提到过&#xff0c;MySQL InnoDB 引擎的默认隔离级别虽然是「可重复读」&#xff0c;但是它很大程度上避免幻读现象&#xff08;并不是完全解决了&#xff0…...

Streamlit像素UI深度优化教程:解决Ostrakon-VL终端文字遮挡问题

Streamlit像素UI深度优化教程&#xff1a;解决Ostrakon-VL终端文字遮挡问题 1. 项目背景与问题分析 在开发Ostrakon-VL零售扫描终端时&#xff0c;我们选择了一种独特的像素艺术风格UI设计。这种高饱和度的8-bit复古游戏美学虽然提升了用户体验的趣味性&#xff0c;但也带来了…...

不止于配置:用Horizon UAG 21.11打造安全外网访问,别忘了这些加固设置

超越基础配置&#xff1a;Horizon UAG 21.11安全加固全指南 在虚拟桌面架构中&#xff0c;统一接入网关&#xff08;UAG&#xff09;作为内外网流量的安全屏障&#xff0c;其配置合理性直接影响整体架构的安全性。许多管理员在完成UAG基础部署后&#xff0c;往往忽略了更深层次…...

FLAC3D蠕变三轴压缩试验:博格斯摩尔本构应变时间曲线

FLAC3D蠕变三轴压缩试验&#xff1a;博格斯摩尔本构&#xff0c;应变时间曲线在岩土工程数值模拟里&#xff0c;蠕变试验就像给材料做"慢动作回放"。今天咱们拿FLAC3D折腾个博格斯摩尔&#xff08;Burgers-Malvern&#xff09;模型的蠕变三轴压缩试验&#xff0c;重点…...