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

GAMES101:现代计算机图形学-笔记-10

今天来聊一些基本的概念:相机,棱镜与光场。

众所周知,成像的方法有两种:合成与捕获。

像我们之前所学的内容如光栅化,如光线追踪,本质上都是合成图像的方法,他们只是在计算机中模拟来成像。

那我们当然也可以通过捕获现实生活中的图像来成像,比如拍照。

相机的基本原理:小孔成像,大多数相机由一块棱镜配上传感器组成。

(有专门的小孔成像的相机名为针孔相机)

可不可以只使用一个感光元件来收集光线呢形成图像呢?

目前来说不太行,因为感光元件会收集到来自现实物体的所有光。

视场的概念。

平时的拍照所谓的广角就是指视场足够大,可以拍到足够大的物体场景。有关视场的计算,我们把胶片的长度认作h,胶片到棱镜的距离认作f(平时所谓的焦距),可以得到视场的计算公式。

由于历史原因,我们平时聊焦距都是默认胶片是35mm长度的前提,这也就是为什么手机这么薄的东西依然可以有1000mm焦距级别的视场,因为他的1000mm对应的是胶片的35mm大小,实际在手机中的传感器大小要远小于这个范畴。

对于摄影设备,可谓大就是好,长就是强,口径即正义。

曝光。

决定曝光的有两个因素:一个是时间,一个是光照的强度,曝光时间由我们的快门来决定,而能收集到的Irradiance取决于我们的棱镜的效益。

在摄影中,可以人为控制曝光的因素有三个部分:光圈大小,快门速度以及感光度。

光圈的设计是一种仿生学的思想,用光圈来模仿人类的瞳孔,他既可以吸收光,也可以在光照过强时及时闭合减少光照的进入。

快门速度很好理解,我们只需要在一定的时间内禁止光的进入即可。

感光度则是可以简单理解为在感光元件接收到光之后进行一个后处理(乘)的一个数,也可以理解为感光元件对光的敏感程度。

从这幅图可以清晰地看出光圈、快门速度与感光度的区别:光圈越大能够接收的光线越多,但景深越小(大光圈小景深),快门速度越快成像越清晰,感光度越大照片噪点越多(对光线更敏感的同时对噪声更敏感)。

F数:用来描述光圈的数,一般写作FN或者F/N,N就是F数。可以粗略地理解为F数就是光圈直径的大小。

运动模糊:有关快门的一个问题。当拍摄的物体处于高速运动状态下(或者自己手抖),快门速度不够快时,就会出现运动模糊的情况。

运动模糊一定是坏事吗?也不一定。因为人类长时间对世界的感知方式,我们会粗略地认为有运动模糊就是快的,我们可以利用这个特性来模拟高速的状态。

很多时候我们需要去改动光圈和快门时间来平衡曝光度,但是大光圈容易引起小景深问题,而过长的快门时间又会引起运动模糊。

一些实际的摄影技巧运用:

高速摄影:很短的快门时间与大光圈或者高ISO。

延时摄影:俗称拉丝,刻意拉长快门时间。

接下来讲讲有关棱镜的性质。

在真正的应用中,基本摄影产品都不会用一个单独的棱镜来成像,一般都是一个棱镜组。

不过我们在学习的过程中,普遍认为棱镜就是标准的理想化模型:所有通过棱镜的光会聚集在一个点上称为焦点,焦点到棱镜的距离称之为焦距。在这里我们再多添加一个假设:棱镜的焦距可以被任意地改变。

听说这是初中学习的内容,可惜我早就忘光光了。

薄棱镜成像涉及到三个参数:焦距,物距以及像距,而这个等式就表示了这三者的关系:焦距不变的前提下,物距大则像距小,反之亦然。

了解了薄棱镜成像的原理,很多有关模糊的现象就可以得到解释了。

所谓的COC,说白了就是指一定距离的物体在不改变焦距的前提下,可能焦点会在成像平面(感光元件)之前,这样在感光元件处得到的就是一个模糊的圆,我们把这个圆称之为COC,通过一系列数学的推导证明我们可以得知:COC的大小与光圈的大小成正比。

虽然知道了COC这个概念,但是实际上总会有那么一个恰好的距离,这个距离的物体在感光元件上的COC足够小,可以清晰地成像,我们称这个距离为景深。


http://www.kler.cn/a/430501.html

相关文章:

  • WebRTC Simulcast 大小流介绍与优化实践
  • 如何在网页端使用 IDE 高效地阅读 GitHub 源码?
  • Web Bluetooth API 开发记录
  • Grok 2.0:马斯克的大模型挑战ChatGPT,AI竞争再升级
  • 最新的序列数据预测模型SOFTS详解
  • 计算机网络 (12)物理层下面的传输媒体
  • MySQL触发器的使用详解
  • 【漫话机器学习系列】003.Agglomerative聚类
  • 分布式 Paxos算法 总结
  • 信息化时代的安全挑战与密评的重要性
  • 【Linux】软硬连接 | 静动态库
  • onnx文件转pytorch pt模型文件
  • 【Spark】Spark Join类型及Join实现方式
  • 使用 electron 把 vue 项目打包成客户端
  • liunx docker 部署 nacos seata sentinel
  • TCP/IP协议配置与网络实用命令
  • uniapp 弹出软键盘后打开二级页面,解决其UI布局变动
  • 同城到家预约上门服务解决方案:家政预约同城服务小程序
  • React Native 速度提升 550%
  • 流网络等价性证明:边分解后的最大流保持不变
  • vue3 setup有什么用?
  • 【优选算法篇】剥洋葱式探索:用二分查找精准定位答案(下篇)
  • 一些硬件知识【2024/12/6】
  • 【PX4飞控】二次开发1—加速度转期望姿态算法修改
  • 前端实现复制功能,Uncaught TypeError: Cannot read property ‘writeText‘ of undefined
  • CUDA编程 | 5.5 常量内存