当前位置: 首页 > 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)。这是由不完美的透镜导致的;光线通过透镜边缘时会产生偏移。

相关文章:

  • HarmonyOS(二)—— 初识ArkTS开发语言(上)之TypeScript入门
  • Mac-Java开发环境安装(JDK和Maven)
  • 基于MIMO通信系统的球形译码算法matlab性能仿真,对比PSK检测,SDR检测
  • python django获取某个角色的某个数据和——例如:获取所有订单的应付金额总和
  • 以太网【FPGA】
  • idea插件(三)-- Translation(最好用的翻译插件)
  • 数据结构(超详细讲解!!)第十八节 串(堆串)
  • python连接clickhouse (CK)
  • MySQL笔记--Ubuntu安装MySQL并基于C++测试API
  • web3 在React dapp中全局管理web3当前登录用户/智能合约等信息
  • conda配置虚拟环境相关记录
  • 利用wasm实现读写本地项目的在线编辑器
  • IDEA 使用技巧
  • javaEE -15( 13000字 JavaScript入门 - 2)
  • 【Linux】服务器间免登陆访问
  • 【译】JS基础算法脚本:字符串结尾
  • 77. Combinations
  • dva中组件的懒加载
  • Markdown 语法简单说明
  • mongo索引构建
  • React 快速上手 - 06 容器组件、展示组件、操作组件
  • REST架构的思考
  • Three.js 再探 - 写一个跳一跳极简版游戏
  • 阿里云Kubernetes容器服务上体验Knative
  • 笨办法学C 练习34:动态数组
  • 编写符合Python风格的对象
  • 给初学者:JavaScript 中数组操作注意点
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 手机端车牌号码键盘的vue组件
  • 算法之不定期更新(一)(2018-04-12)
  • 我从编程教室毕业
  • 最简单的无缝轮播
  • CMake 入门1/5:基于阿里云 ECS搭建体验环境
  • 阿里云移动端播放器高级功能介绍
  • ​iOS实时查看App运行日志
  • #Linux(make工具和makefile文件以及makefile语法)
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (八)c52学习之旅-中断实验
  • (多级缓存)多级缓存
  • (二)c52学习之旅-简单了解单片机
  • (附源码)php新闻发布平台 毕业设计 141646
  • (排序详解之 堆排序)
  • (一)Neo4j下载安装以及初次使用
  • (译) 理解 Elixir 中的宏 Macro, 第四部分:深入化
  • (转)jdk与jre的区别
  • (转)ObjectiveC 深浅拷贝学习
  • ... fatal error LINK1120:1个无法解析的外部命令 的解决办法
  • .gitignore文件_Git:.gitignore
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福
  • .NET 将混合了多个不同平台(Windows Mac Linux)的文件 目录的路径格式化成同一个平台下的路径
  • .net操作Excel出错解决
  • .Net的DataSet直接与SQL2005交互
  • .Net下使用 Geb.Video.FFMPEG 操作视频文件
  • ::before和::after 常见的用法
  • ??javascript里的变量问题