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

【GAMES101】Lecture 19 透镜

目录

理想的薄透镜

模糊

利用透镜模型做光线追踪

景深(Depth of Field)


理想的薄透镜

在实际的相机中都是用的一组透镜来作为这个镜头

这个因为真实的棱镜无法将光线真正聚焦到一个点上,它只能聚在一堆上

所以方便研究提出了一种理想化的棱镜,这个棱镜没有厚度,非常薄,它可以成功的将平行光线聚焦到一个点上,并且我们认为这个薄棱镜的焦距可以改变,实际上可以通过现实中的一组棱镜来达到这个效果

平行光线经过棱镜会聚焦到焦点,同样根据光路可逆,过焦点的光线经过棱镜会变成平行光线,从物体到棱镜的距离叫做物距Zo,棱镜成的像到棱镜的距离叫做相距Zi

物距和相距和焦距有这么个关系

这个关系是根据相似三角形对应边成比例推出来的

然后用数学变换得到

模糊

随便拍一张照片,它肯定有的地方模糊有的地方清晰,那模糊的地方是怎么来的呢?对于一个物体平面Focal Plane,那么它对于会有一个成像的平面,那这个成像的平面会在传感器上,那如果这个物体远离这个Focal Plane,比如说场景里的某个点远离这个平面,那么经过透镜它就会成像在传感器平面之前,那光线继续传播照射到传感器上的时候,那这个点就会照射成一个圆,那不就模糊了吗,这个圆就叫Circle of Confusion(CoC),根据相似三角形可以计算出来这个CoC的大小和光圈的大小成正比

那这个光圈越大,这个模糊的圆就会越大,那就会越模糊

我们之前说这个光圈的F数不准确的描述是光圈直径的倒数,这里给出准确的定义,对于这个描述光圈大小的F数,记作F/N,或者FN,这个N=f/D,即N等于焦距除以光圈直径

那这个模糊的圆CoC就可以写成这样,这里的A就是光圈的直径

利用透镜模型做光线追踪

我们之前做光线追踪都是用的针孔模型的,现在已经有了这个透镜模型了,那我们把这个透镜放到场景中,自然成像平面就是传感器的平面,然后对于成像的每一个像素x',我可以在这个透镜上采样点x'',然后根据物距、相距和焦距自然知道这个光线会打到这个物体平面的哪个点上,那这样光路就找到了,在计算所有点的光贡献到像素x'上就行了

景深(Depth of Field)

我们刚刚说照片里模糊的部分是因为不在focal平面上的点经过透镜之后会变成一个圆CoC,而这个光圈越大越模糊,我们知道屏幕上的照片是由像素组成的,这一个个像素它就是一个最小的单元,之所以看上去模糊是因为模糊部分的点形成的CoC比这个像素还要大

那也就是说我们看到的清晰的部分不是说没有发生这个CoC,而是因为这部分所形成的CoC和像素比起来尺寸差不多,或者比像素的尺寸小,也就是说存在这么一个范围,这个范围内的点经过透镜后形成的CoC小于等于像素的尺寸,这个范围就叫景深,这个景深是可以计算出来的,也是用这个相似三角形可以算出来


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

相关文章:

  • SQL面试题——蚂蚁SQL面试题 连续3天减少碳排放量不低于100的用户
  • 群控系统服务端开发模式-应用开发-前端登录接口开发
  • HarmonyOS本地存储-Preferences(用户首选项)的使用
  • Flink1.19编译并Standalone模式本地运行
  • Django基础用法+Demo演示
  • 数据挖掘(九)
  • Vue3编写简单的App组件(二)
  • Linux系统安全之iptables防火墙
  • MATLAB实现LSTM时间序列预测
  • 7机器人位姿的数学描述与坐标变
  • windowsserver 2016 PostgreSQL9.6.3-2升级解决其安全漏洞问题
  • 后端的技术设计文档
  • 实例分割论文阅读之:FCN:《Fully Convolutional Networks for Semantica Segmentation》
  • impala与kudu进行集成
  • 【linux温故】linux调度机制
  • Ubuntu22.04 gnome-builder gnome C 应用程序习练笔记(二)
  • ArcGISPro中Python相关命令总结
  • 【RPA】智能自动化的未来:AI + RPA
  • 转融通业务是什么?好处和弊端是什么?
  • 全栈笔记_插件篇(用Volar替换Vuter)
  • Redis之基础篇
  • 【算法练习】leetcode算法题合集之其他篇
  • QT基础教程(全系列教程目录)
  • Java学习笔记------API
  • Flink Checkpoint过程
  • 一周学会Django5 Python Web开发-Django5创建项目(用命令方式)