如何理解广角镜头和长焦镜头的区别。

2024-06-23 20:36

本文主要是介绍如何理解广角镜头和长焦镜头的区别。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

为什么广角镜头的视野会比长焦镜头的视野大呢?

   我之前用等光程解释了景深,也解释了为什么焦距越远,成像越大,但是从来没有提到过视野范围这个概念。实际上在我之前建立的数学模型中,物曲面S是无限大的,像曲面S1也是无限大的。但是实际的照相机中,照片是被框住了的,也就是像曲面S1的大小是固定的,那么怎样使得在S1固定的情况下,物曲面S尽可能的大呢?

首先,根据费马原理,这是个非常好用的原理,因为可以不用考虑折射,反射,只需要关注问题本身了,譬如这里,从S发出的光在透镜中发生了折射,但是由于折射只是最小光程的结果,光线的路径可以是任意的,那么我随意画,只要等光程即可,反正最后是选择其中光程最小的路径即可,而且这种任意性使得最小光程也符合我从任意的情况下总结出的一般性的规律。

首先有SA+SB=AS1+BS1。

所以就是SA-SB=常数2a,那么S的路径就是个双曲线了,AB的光程2c,(+-c,0)是双曲线的焦点。

注意,这里面,SA和SB是空气的光程,AB是介质中的光程,不一样。A和B是透镜的边界点。

首先假设SA-SB=2a, 可以画出来双曲线如图所示:

所以到达S1曲面的边界的位置的像点分布在双曲线上,如果是W区域和U区域发出的光呢?比如S'A-S'B大于AB了,那么就会需要像曲面S1更大或者更靠前才能使得像边界点到A和B的光程差变大。而如果是在V区域的点,由于光程差S'A-S'B变小,只要把到像边界位置的点向光轴靠近,就可以缩小光程差了。

所以可以总结出来,透镜左边的物区域,只有V区域包含双曲线的位置是可以在固定大小的成像曲面S1上的。

但是有个问题,我右边给出的是成像曲面是2维度的,左边却是空间区域是3维度的,维度不一样啊。所以,左边的双曲线中,S'点被S点遮挡住了?这还真是个问题,因为右边的光程路径是一样的,但是光线并没有被遮挡,如果改变光圈AB大小,比如缩小AB,那么S'和S在像曲面S中的位置都向光轴靠拢,但是S的光程差改变较大,所以S在像S1中的位置更向光轴靠拢。

物S'和S的最小光程在像曲面S中的位置可能不同,这只是某个光线路径的光程相同,并一定是像点。

首先我给出像点的定义:所谓的像点就是到达这个点的所有的光程都相等,如果只是部分光程相等,那就不是像点。

然后我给出最小光程的解释:最小光程说的是折射的意思。如果所有的光程在像曲面S1上的某个点都相等,那所有的光程都是最小光程了。

但是从最坏的情况考虑,假设双曲线上的物点S'和S的所有光程都在像曲面上,并且最小光程的像点在像曲面S的位置是一样的。那么可以认为这个双曲线是不成像的,因为光线重合了。也就是说在成像的边界处是不成像的,只能感受到有光,但是没有信息。

这个最坏的情况就是成像的视野了。我现在解决透镜右边像曲面是2维的,左边物区域是三维的问题。

实际上同胚的只能是二维的,也就是说能清晰看到的是二维流形,其余的三维的是不清晰的。也就是说在V区域只表示能看到的,但是在任何情况下,能够清晰成像的都是二维的流形,比如三维空间中的球面是二维的。在最小光程双曲线上,W和U区域包括双曲线是不可见的,但是W区域是不在成像曲面S上。而双曲线上是在成像曲面S的边界上,但只是能感受到光而没有信息。

所以,广角镜头为什么周围会有扭曲感呢?就是因为这个不可见的双曲线。

当透镜大小,即光程AB=2c不变的时候,而当焦距变小的时候,像曲面S1的距离变小了,即是SA-SB=2a变大了。

渐近线公式:y=±(a/b)x (焦点在y轴上)

aa+bb=cc, 所以b变小了,所以渐近线的斜率变大了,所以我上面的W区域和U区域更小了。所以短焦的视野更大,就是这个道理。

          

这篇关于如何理解广角镜头和长焦镜头的区别。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1088210

相关文章

Java中ArrayList和LinkedList有什么区别举例详解

《Java中ArrayList和LinkedList有什么区别举例详解》:本文主要介绍Java中ArrayList和LinkedList区别的相关资料,包括数据结构特性、核心操作性能、内存与GC影... 目录一、底层数据结构二、核心操作性能对比三、内存与 GC 影响四、扩容机制五、线程安全与并发方案六、工程

java中不同版本JSONObject区别小结

《java中不同版本JSONObject区别小结》本文主要介绍了java中不同版本JSONObject区别小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录1. FastjsON2. Jackson3. Gson4. org.json6. 总结在Jav

数据库使用之union、union all、各种join的用法区别解析

《数据库使用之union、unionall、各种join的用法区别解析》:本文主要介绍SQL中的Union和UnionAll的区别,包括去重与否以及使用时的注意事项,还详细解释了Join关键字,... 目录一、Union 和Union All1、区别:2、注意点:3、具体举例二、Join关键字的区别&php

深入理解Apache Airflow 调度器(最新推荐)

《深入理解ApacheAirflow调度器(最新推荐)》ApacheAirflow调度器是数据管道管理系统的关键组件,负责编排dag中任务的执行,通过理解调度器的角色和工作方式,正确配置调度器,并... 目录什么是Airflow 调度器?Airflow 调度器工作机制配置Airflow调度器调优及优化建议最

java中的HashSet与 == 和 equals的区别示例解析

《java中的HashSet与==和equals的区别示例解析》HashSet是Java中基于哈希表实现的集合类,特点包括:元素唯一、无序和可包含null,本文给大家介绍java中的HashSe... 目录什么是HashSetHashSet 的主要特点是HashSet 的常用方法hasSet存储为啥是无序的

2.1/5.1和7.1声道系统有什么区别? 音频声道的专业知识科普

《2.1/5.1和7.1声道系统有什么区别?音频声道的专业知识科普》当设置环绕声系统时,会遇到2.1、5.1、7.1、7.1.2、9.1等数字,当一遍又一遍地看到它们时,可能想知道它们是什... 想要把智能电视自带的音响升级成专业级的家庭影院系统吗?那么你将面临一个重要的选择——使用 2.1、5.1 还是

Python中@classmethod和@staticmethod的区别

《Python中@classmethod和@staticmethod的区别》本文主要介绍了Python中@classmethod和@staticmethod的区别,文中通过示例代码介绍的非常详细,对大... 目录1.@classmethod2.@staticmethod3.例子1.@classmethod

一文带你理解Python中import机制与importlib的妙用

《一文带你理解Python中import机制与importlib的妙用》在Python编程的世界里,import语句是开发者最常用的工具之一,它就像一把钥匙,打开了通往各种功能和库的大门,下面就跟随小... 目录一、python import机制概述1.1 import语句的基本用法1.2 模块缓存机制1.

深入理解C语言的void*

《深入理解C语言的void*》本文主要介绍了C语言的void*,包括它的任意性、编译器对void*的类型检查以及需要显式类型转换的规则,具有一定的参考价值,感兴趣的可以了解一下... 目录一、void* 的类型任意性二、编译器对 void* 的类型检查三、需要显式类型转换占用的字节四、总结一、void* 的

深入理解Redis大key的危害及解决方案

《深入理解Redis大key的危害及解决方案》本文主要介绍了深入理解Redis大key的危害及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录一、背景二、什么是大key三、大key评价标准四、大key 产生的原因与场景五、大key影响与危