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

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

相关文章

深入理解C++ 空类大小

《深入理解C++空类大小》本文主要介绍了C++空类大小,规定空类大小为1字节,主要是为了保证对象的唯一性和可区分性,满足数组元素地址连续的要求,下面就来了解一下... 目录1. 保证对象的唯一性和可区分性2. 满足数组元素地址连续的要求3. 与C++的对象模型和内存管理机制相适配查看类对象内存在C++中,规

结构体和联合体的区别及说明

《结构体和联合体的区别及说明》文章主要介绍了C语言中的结构体和联合体,结构体是一种自定义的复合数据类型,可以包含多个成员,每个成员可以是不同的数据类型,联合体是一种特殊的数据结构,可以在内存中共享同一... 目录结构体和联合体的区别1. 结构体(Struct)2. 联合体(Union)3. 联合体与结构体的

什么是 Ubuntu LTS?Ubuntu LTS和普通版本区别对比

《什么是UbuntuLTS?UbuntuLTS和普通版本区别对比》UbuntuLTS是Ubuntu操作系统的一个特殊版本,旨在提供更长时间的支持和稳定性,与常规的Ubuntu版本相比,LTS版... 如果你正打算安装 Ubuntu 系统,可能会被「LTS 版本」和「普通版本」给搞得一头雾水吧?尤其是对于刚入

python中json.dumps和json.dump区别

《python中json.dumps和json.dump区别》json.dumps将Python对象序列化为JSON字符串,json.dump直接将Python对象序列化写入文件,本文就来介绍一下两个... 目录1、json.dumps和json.dump的区别2、使用 json.dumps() 然后写入文

认识、理解、分类——acm之搜索

普通搜索方法有两种:1、广度优先搜索;2、深度优先搜索; 更多搜索方法: 3、双向广度优先搜索; 4、启发式搜索(包括A*算法等); 搜索通常会用到的知识点:状态压缩(位压缩,利用hash思想压缩)。

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

【C++高阶】C++类型转换全攻略:深入理解并高效应用

📝个人主页🌹:Eternity._ ⏩收录专栏⏪:C++ “ 登神长阶 ” 🤡往期回顾🤡:C++ 智能指针 🌹🌹期待您的关注 🌹🌹 ❀C++的类型转换 📒1. C语言中的类型转换📚2. C++强制类型转换⛰️static_cast🌞reinterpret_cast⭐const_cast🍁dynamic_cast 📜3. C++强制类型转换的原因📝

native和static native区别

本文基于Hello JNI  如有疑惑,请看之前几篇文章。 native 与 static native java中 public native String helloJni();public native static String helloJniStatic();1212 JNI中 JNIEXPORT jstring JNICALL Java_com_test_g

深入理解RxJava:响应式编程的现代方式

在当今的软件开发世界中,异步编程和事件驱动的架构变得越来越重要。RxJava,作为响应式编程(Reactive Programming)的一个流行库,为Java和Android开发者提供了一种强大的方式来处理异步任务和事件流。本文将深入探讨RxJava的核心概念、优势以及如何在实际项目中应用它。 文章目录 💯 什么是RxJava?💯 响应式编程的优势💯 RxJava的核心概念

如何通俗理解注意力机制?

1、注意力机制(Attention Mechanism)是机器学习和深度学习中一种模拟人类注意力的方法,用于提高模型在处理大量信息时的效率和效果。通俗地理解,它就像是在一堆信息中找到最重要的部分,把注意力集中在这些关键点上,从而更好地完成任务。以下是几个简单的比喻来帮助理解注意力机制: 2、寻找重点:想象一下,你在阅读一篇文章的时候,有些段落特别重要,你会特别注意这些段落,反复阅读,而对其他部分