相机成像原理详解

2023-05-16

ybwu@whu.edu.cn

被摄景物反射出的光线通过照相镜头(摄景物镜)和控制曝光量的快门聚焦后,被摄景物在暗箱内的感光材料上形成潜像,经冲洗处理(即显影、定影)构成永久性的影像(百度百科)。传统胶片相机的感光材料为胶卷,现代数码相机的感光原件一般为CMOS传感器。它的尺寸一定程度上决定了成像质量,所以是很多相机/手机厂商宣传的重点,比如坊间经常听到的“一英寸大底”,“底大一级压死人”等等。

当一束与凸透镜的主轴平行的光穿过凸透镜时,在凸透镜的另一侧会被凸透镜汇聚成一点,这一点叫做焦点,焦点到凸透镜光心的距离就叫这个凸透镜的焦距。一个凸透镜的两侧各有一个焦点。

理论上只有处于镜头焦点距离的景物是成像清晰的,而在焦点前后,光线开始聚焦和扩散,成像变的模糊,成像点形成一个扩大的圆:弥散圆(circle of confusion),而人眼的分辨能力有限,只有当弥散圆直径大到一定程度,我们才感觉到模糊,比如图 1的草地看起来中间一段都是清晰的,通俗的说,这一段“看起来清晰”的距离就是景深(Depth of Field)。

图 1 草地上看起来清晰的一段距离就是“景深”

在焦点前后各有一个容许弥散圆,这两个弥散圆之间的距离称为焦深,对应在被拍摄点处即为景深,换言之,被摄物体前后景深距离内,呈现在成像平面上的影像模糊度都在容许弥散圆的限定范围内。小孔成像模型示意图如图 2所示。

图 2 透镜与小孔成像模型

影响景深的因素有镜头的焦距、光圈值、拍摄距离。光圈是相机镜头中可以改变中间孔大小的机械装置,如图 4所示。其对于相机成像主要有两方面的作用:控制进光量和景深。光圈对景深的影响如图 3所示。

图 3光圈对景深的影响

图 4相机光圈示意图

控制其他条件不变,三者对景深的影响总结如下:

  1. 光圈越大,景深越小,适合做背景虚化效果,如人像;反之光圈越小,景深越大
  2. 焦距对景深也有影响,通常焦距越大,景深越小,如长焦镜头的景深比较小,而广角镜头的景深都比较大。
  3. 拍摄距离越远,景深越大;距离越近,景深越小

两个容易混淆的概念(经评论区提醒,已修改):

对焦:就是改变镜头(光学中心)到成像平面之间的距离,也就是像距。用于调整成像的虚实,达到使影像清晰的目的,变焦时可以看到镜头伸长或缩小。

变焦:改变镜头的焦距,可以让不同远近的物体,聚焦到底片上形成清晰的影像。镜头焦距的改变,是通过镜头内部镜片的变动来实现,其光学中心到底片的距离不变,因此镜头不会伸长或缩短。

在计算机视觉应用中,由于拍摄景深的限制,对空间中不同物距景物清晰采样前需要进行对焦操作,而对焦过程将稍微改变镜头到成像平面的距离,使得相机内参发生变化[1]


之前说光圈可以控制进光量,快门也可以,光圈从空间上限制进光面积来控制进光量,而快门则是从曝光时间上来控制。可以简单地理解为:快门挡在镜头或底片前,平时处于关闭状态,成像时快门打开一段时间再关闭,完成成像,这个快门打开的时间就是快门时间,通常以1/N秒为单位。快门除了可以控制进光量从而影响照片曝光,还可以制造一些特别的拍照效果,快门时间太长会导致图像太亮,即过曝;快门时间太短会导致图像太暗,即欠曝。对SLAM应用来讲,在保证图像质量的前提下,曝光时间尽量短是一件好事,可以减少rolling shutter造成的“果冻效应”和传感器因时间不同步带来的误差。

Reference:

[1]   周佳立, 贾禄帅, and 武敏, "适用于动态对焦的高精度灵活标定方法," 模式识别与人工智能, vol. 29, pp. 481-491, 2016.

相机的那些事儿 - 概念、模型及标定-阿里云开发者社区

焦距、光圈和景深的关系,焦距越长,景深越长?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

相机成像原理详解 的相关文章

  • Oracle_单表更新

    span class token keyword update span span class token keyword table span t1 span class token keyword set span t1 span cl
  • vue使用高德地图api自定义label的点击事件

    span class token selector marker setLabel span span class token punctuation span span class token selector offset new AM
  • C++类名demangle

    RTTI与type info C 43 43 在编译时开启RTTI xff08 Run Time Type Identification xff0c 通过运行时类型识别 xff09 特性时 xff0c 可以在代码中使用typeid操作符 x
  • shell 通过sed命令上下两行合并成一行

    一 shell上下两行 1 file cat file txt host1 span class token number 192 168 span span class token number 0 span span class tok
  • 教你如何查看识别hadoop是32位还是64位

    1 从哪些地方可以识别hadoop是32位还是64位 xff1f 2 hadoop本地库在什么位置 xff1f 来源 xff1a about云 本文链接 xff1a http www aboutyun com thread 12796 1
  • OneinStack如何配置MySQL远程连接并授权

    为了安全考虑 xff0c OneinStack仅允许云主机本机 xff08 localhost xff09 连接数据库 xff0c 如果需要远程连接数据库 xff0c 需要如下操作 xff08 缺一不可 xff09 xff1a 1 云主机安
  • vmplayer7安装OSX10.10

    1 安装vmplayer7 0 2 下载下面网盘的osx镜像与vm用来安装osx的补丁 http pan baidu com s 1eQq0VuU 1 将unlock解压 xff0c 管理员权限运行目录tools下的win install
  • CodeBlocks找不到编译器GNU GCC compiler

    CodeBlocks xff1a http www codeblocks org downloads 26 今天安装CodeBlocks xff0c 在上面的网站中找了一个名字最短的安装 安装好后找不到编译器 xff0c 搜索发现结果需要下
  • writable writeable的差别,是真有别,还是误输入?vsftpd.conf中allow_writeable_chroot才正确

    解决vsftpd的refusing to run with writable root inside chroot错误过程中 xff0c 在writable writeable一字差别上耽误了点时间 vsftpd conf中allow wr
  • ZZN的退役感言

    发个退役感言 从上海回来两天了 xff0c 整个集训队的事情也基本上交付出去了 xff0c 明天就要去自习教室开始高数线代和概率 的第二轮复习了 xff0c 英语好像也要开始做真题了吧 xff0c 这两天总在poj上灌水了 xff0c 其实
  • 含泪发个博客

    怨种一 xff1a 购买了正点原子F103精英开发板 xff0c 按照教程安装了mdk514 xff0c 并且配置了文件 xff0c 编译例程此时0错误0警告 xff01 xff08 开心 xff09 连接好stlink xff0c 发现无
  • Debian9安装与启用sudo命令

    刚安装好的Debian9默认还没有sudo功能 1 先进入root用户 xff0c 调用下面的命令后 xff0c 输入密码 su 2 安装sudo apt get install sudo 3 不需要修改 etc sudoers 文件 xf
  • debian中默认不存在sudo命令解决方法

    1 使用su安装sudo su apt get install sudo 1 2 2 给账户设置管理员权限 vim etc sudoers 1 3 添加一行 其中 username 替换为登陆账户的名称 输入时不加引号 34 usernam
  • hadoop (1.0.4) IntWritable 详解

    span style font size 14px package org apache hadoop io import java io A WritableComparable for ints public class IntWrit
  • 树莓派4B安装Ubuntu18.04 ROS Melodic及初始化rosdep报错解决

    一 安装Ubuntu18 04 安装Raspberry Pi Imager 链接 xff1a https www raspberrypi com software 下载镜像 下载ubuntu 18 04 5 preinstalled ser
  • teamviewer常用操作命令

    1 启动或停止 daemon sudo teamviewer daemon stop sudo teamviewer daemon start 2 打印 id sudo teamviewer info print id 3 设置密码 sud
  • Node.js版本管理

    最近运行一个前端项目时 xff0c 出现了Node js版本与依赖版本不符的问题 xff0c 如下 xff1a error 64 typescript eslint eslint plugin 64 5 21 0 The engine 34
  • (java)继承和多态 (详解)

    目录 1 继承 1 1为什么需要继承 1 2 继承概念 1 3 继承的语法 1 4 父类成员访问 1 4 1 子类中访问父类的成员变量 1 4 2 子类中访问父类的成员方法 1 5 super关键字 1 6 子类构造方法 1 7 super
  • Debug Tutorial Part 6: Navigating The Kernel Debugger

    Introduction In this tutorial we will be covering a few of the basic features of the kernel debugger and get used to usi
  • 加速matlab运行

    一 遵守Performance Acceleration的规则 二 遵守三条规则 一 遵守Performance Acceleration的规则 关于什么是 Performance Acceleration 请参阅matlab的帮助文件 我

随机推荐

  • 上海~还是伤心了啊

    还有西安
  • Zabbix 数据库表结构说明

    该文档提供了zabbix中mysql数据库中各个表及其中字段的详细解释 acknowledges表 xff08 空 xff09 当trigger发生状态变化后 xff0c 即产生某个事件 xff08 event xff09 后 xff0c
  • 2020CVPR对抗样本相关论文整理(有开源代码)

    目录 攻击防御 攻击 1 Towards Large yet Imperceptible Adversarial Image Perturbations withPerceptual Color Distance code链接 朝向具有感知
  • GAN & 对抗样本

    目录 关于对抗样本的解释GAN原理简介GAN生成对抗样本的发展 关于对抗样本的解释 对于对抗样本为何能够攻击成功 xff0c 目前有以下三种解释 xff1a 高维空间的线性模型解释 xff1a 当输入为图像时 xff0c 沿着梯度方向很小的
  • 块元素与内联元素的区别

    在css盒子模型中 xff0c 我们提到了html元素中的块元素 xff08 block element xff09 和内联元素 xff08 inline element xff09 那么它们究竟是什么呢 xff1f 其实 xff0c 这两
  • Ubuntu实用安装

    1 用DVD xff0f 服务器版 ubuntu 来安装命令行系统 2 编辑更新软件源 sudo cp etc apt source list etc apt source list bak 3 安装 X 窗口系统 xff1a sudo a
  • 关于Haar名称一点想说的:Haar而非Harr

    见到一些中文文献 博客 师兄们的简历都出现以一个叫 Harr 的特征 xff0c 有些疑惑 刨根问底一下 xff0c 最后得出结论Harr应该是对Haar的误写 Haar特征因为使用的是Haar小波变换而得名 xff0c 哈尔小波转换 是于
  • 安装远程连接Ubuntu Server 的图形界面——x2go远程连接桌面

    想要远程连接你的Ubuntu服务器的图形界面么 xff1f 这里有个简单的指导告诉你如何使用X2Go来实现 xff0c 这是一个NX远程桌面协议的衍生版本 你所需要做的就是 1 在服务器上面安装X2Go服务端和桌面环境 xff0c 2 在客
  • PHP正则表达式之\A、\Z、 \z、^、$

    文章目录 A Z z 断言与 之间的区别单行模式和多行模式的差异换行符匹配的差异 示例代码及解读文中提到的模式修饰符D PCRE DOLLAR ENDONLY m PCRE MULTILINE A Z z 断言与 之间的区别 A xff0c
  • #发布npm包遇到错误,因为用了淘宝镜像地址的原因的解决方法-403 403 Forbidden - PUT https://registry.npmmirror.com/-/user/org.cou

    使用npm login 也可以使用npm adduser 登录准备发布npm依赖包到npm时 xff0c 遇到问题 xff1a span class token function npm span ERR span class token
  • 面向对象设计和结构化分析设计(软件设计师备考笔记)

    目录 第十章 面向对象设计和结构化分析设计 第一节 结构化设计 第二节 UML 第三节 面向对象设计 设计原则 第四节 面向对象设计 设计模式 第五节 结构化分析 数据流图 DFD 必考 下午第一道题 第六节 面向对象设计方法 多态与绑定
  • 大厂Mysql高频面试题!java操作excelpoi

    微服务的发展 微服务倡导将复杂的单体应用拆分为若干个功能简单 松耦合的服务 xff0c 这样可以降低开发难度 增强扩展性 便于敏捷开发 当前被越来越多的开发者推崇 xff0c 很多互联网行业巨头 开源社区等都开始了微服务的讨论和实践 微服务
  • 知已知彼 ^.^

    如何做一个让男人尊敬的精致女人 转贴 作者 LUKECYK 浏览 160 1 如果一个男人开始怠慢你 xff0c 请你离开他 不懂得疼惜你的男人不要为之不舍 xff0c 更不必继续付出你的柔情和爱情 2 任何时候 xff0c 不要为一个负心
  • 单片机 -定时器计数器工作原理及工作方式

    时钟周期 时钟周期 T 是时序中最小的时间单位 xff0c 具体计算的方法就是 1 时钟源频率 xff0c 假如单片的晶振是 11 0592M xff0c 那么对于我们这个单片机系统来说 xff0c 时钟周期 61 1 11059200 秒
  • 单片机 LCD1602

    LCD1602为工业字符型液晶 xff0c LCD表示LiquidCrystal Display 能够同时显示16 x 2 xff08 16列2行 xff09 即32个字符 1602液晶也叫1602字符型液晶 xff0c 它是一种专门用来显
  • javascript进制及进制之间的转换

    计算机中常用的进制数有二进制 八进制 十进制 十六进制 一 十进制 转 其他 span class token keyword var span x span class token operator 61 span span class
  • 解决进入Ubuntu系统花屏的问题

    安装ubuntu后进入系统花屏 详细步骤 详细步骤 开机选择进入Ubuntu的高级系统模式 gt 恢复模式 xff0c 选择root xff0c 进入命令行界面 输入 xff1a sudo vim etc default grub 打开gr
  • 李沐:用随机梯度下降来优化人生

    用SGD来优化人生 要有目标目标要大坚持走痛苦的卷可以躺平四处看看快也是慢赢在起点很远也能到达独一无二简单最好 转载 xff0c 用随机梯度下降来优化人生1 xff1a https zhuanlan zhihu com p 41400931
  • Ubuntu18.04 + kinova joca2机械臂 + RealSense D435i深度相机进行eye to hand手眼标定

    文章目录 前言一 前期准备1 RealSense D435i安装2 Kinova ROS安装 二 手眼标定环境配置1 visip2 aruco ros3 easy handeye 三 标定前准备1 终端python版本设置2 opencv4
  • 相机成像原理详解

    ybwu 64 whu edu cn 被摄景物反射出的光线通过照相镜头 xff08 摄景物镜 xff09 和控制曝光量的快门聚焦后 xff0c 被摄景物在暗箱内的感光材料上形成潜像 xff0c 经冲洗处理 xff08 即显影 定影 xff0