理解广角镜头的视野和畸变

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

   我之前用等光程解释了景深,也解释了为什么焦距越远,成像越大,但是从来没有提到过视野范围这个概念。实际上在我之前建立的数学模型中,物曲面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的位置是一样的。那么可以认为这个双曲线是不成像的,因为光线重合了。也就是说在成像的边界处是不成像的,只能感受到有光,但是没有信息。

这个最坏的情况是成像的视野? 为什么是这样的呢?因为成像的视野总有边界存在,那么这个边界是什么呢?先不回答这个问题。先考虑这种双曲线的存在性的问题:存在在边界上的点y0,在透镜坐标的物区中,存在一条双曲线,使得在这条曲线上的每一个点到达y的任意光程都相同。

假设不存在这样的点呢?也就意味着不存在这样的双曲线,这就是说物区域的任意点到透镜的左边成像的像点是一一对应的,注意这是3维空间对应3维空间,之前是2维对应的。

本来从数学上说确实应该是3维流形之间同胚,但是物理上,有辨识度的问题,其实分不清的时候,就会造成是并没有一一对应,而是多对一对应,意味着这样的双曲线确实存在,但不是无限延伸,而是较短的长度。在V区中,存在重重叠叠地这样的双曲线,每条双曲线代表的是透镜的分辨率,双曲线长度非常短,使得无法看清楚视野范围中的几毫米,甚至微毫米的物体的结构。

既然短的存在,那么边界位置确实是也存在极短双曲线的。但是我想要的是长的双曲线,有没有?

这就要看透镜有没有做到3维空间之间的同胚了,我认为并没有做到,因为我之前考虑过了,在二维曲面同胚的时候,我认为只需要这个映射是覆盖映射即可,只需要像空间是单连通的。

我个人提出的数学模型,其实应该建立在代数拓扑的基础上更合理,这样就是更推广了应用的范围了。但是我并不知道照相机的镜头是什么曲面,所以到底有没有做到3维空间的同胚是未知的。

从另一个方面考虑,假设这样的长的双曲线确实存在,那么一定会是在边界上吗?从现实看,也只能出现在边界上,因为在像中间的斑点现实并没有看到。

结论就是: 长的双曲线不知道,但是极小的双曲线确实存在, 并且这种存在是重叠的,因为分辨率了的问题。

=========================================================================

现在从重叠的极短双曲线讨论视野的问题。

假设长双曲线不存在,把成像曲面S1的边界点y0的原像f-1(y0)视为极短双曲线,由这些重重叠叠的极短双曲线,就组成了包围物曲面S的3维空心但是有一定厚度的球。

尽管极短双曲线并没有连成无限长双曲线,而是有一定的错开,但是可以近似认为是一条无限长双曲线,因为这在解释视野上差别不大。

我现在解决透镜右边像曲面是2维的,左边物区域是三维的问题。

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

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

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

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

从上面的分析可以知道,要想视野范围变大,需要AB变小,即透镜的直径更小,或者焦距变小,这会使得视野更广。

========================================================================

现在讨论一下广角镜头,甚至是鱼眼镜头的畸变。

所以,广角镜头为什么会有从中心向周围膨胀的视野呢?

当镜头对焦到物体上的时候,物体S周围的极短双曲线效果就会明显产生,这是分辨率的问题造成的。具体解释是: 物体对焦的部分要清晰成像,其他的地方是模糊的,而清晰成像由于分辨率不能清晰到毫米甚至是微毫的尺度,所以在这个尺度下,会发生双曲线效应。这种效应是重重叠叠的,而模糊成像的地方不会有明显的双曲线效应,因为本来就是物理上光重叠了,观察装置能够分清楚这是模糊的。清晰成像部分是物理上光几乎没有重叠,但是观察装置的分不清认为成像曲面S1前后移动一定的距离dx无影响,这种物理上的光稍微重叠,造成了景深的概念和双曲线效应。

既然极短双曲线是稍微错位,我直接从长双曲线讨论畸变简化过程了。

所以就是,如果要把带有一定景深的空间物体D映射到成像曲面S1上,可以知道的是D区域的远处在视野中呈现的空间更多,近处在视野中呈现的空间更少。但是如果成像曲面换成是矩形,宽度一样的矩形会怎么样?只能是远处的物体被压缩了,所以会有膨胀的效果,至少在景深的区域中会是这样的。超过景深区域,就没有这种效果了。所以更远处或者更近处虽然模糊,但是不会有明显变形。所以双曲线效应只在景深中发生了。

========================================================================

但是为什么是广角镜头才有,长焦镜头看不出来呢?

这跟压缩的程度有关,短焦镜头压缩程度大,根据我上面的渐近线的说法,但是景深小,我之前讨论过景深和焦距的关系。景深越小,越说明观察装置的这个时候的分辨能力是较高的,双曲线较短。(实际上分辨能力从弥散圆看都是固定的,因为弥散圆的半径是固定的,只是具体观察的时候,相同的弥散圆看到的细节尺度不同,我是从实际观察到的尺度判定的分辨能力。)

同时,压缩范围跟景深的深度有关。景深小,意味着在画面中清晰区域占比小,所以畸变的区域不多。

长焦镜头的压缩程度小,因为双曲线的渐近线,景深比较深。景深越深,越说明观察装置的这个时候的分辨能力是较差的,双曲线较长。双曲线长只会影响观察的尺度,也就是说如果短焦镜头能观察到毫米的结构,那么长焦镜头只能观察到厘米的结构了,所以长焦不可能比短焦更清晰。

所以景深决定了清晰区域的大小和分辨率。景深深,清晰区域大,但是分辨率下降了。景深小,清晰区域小,分辨率上升。

========================================================================

总结: 

那么我再改一下,畸变只跟双曲线的渐近线的斜率有关,而跟双曲线的长短无关。改变斜率可以改变光圈和焦距。光圈越小,焦距越短,斜率越大,畸变越明显。但是光圈越小,景深越深,意味着在矩形画面中,畸变的所占据的范围更大,因为矩形的长宽是固定的,清晰的区域变多了。

          

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/858442.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Chromium 调试指南2024 - 远程开发(下)

1. 引言 在《Chromium 调试指南2024 - 远程开发(上)》中,我们探讨了远程开发的基本概念、优势以及如何选择合适的远程开发模式。掌握了这些基础知识后,接下来我们将深入了解如何在远程环境中高效地进行Chromium项目的调试工作。 …

鹅算法(GOOSE Algorithm,GOOSE)求解复杂城市地形下无人机避障三维航迹规划,可以修改障碍物及起始点(Matlab代码)

一、鹅算法 鹅优化算法(GOOSE Algorithm,GOOSE)从鹅的休息和觅食行为获得灵感,当鹅听到任何奇怪的声音或动作时,它们会发出响亮的声音来唤醒群中的个体,并保证它们的安全。 参考文献 [1]Hamad R K, Rashid T A. GOO…

数据结构和算法(1) ---- Queue 的原理和实现

Queue 的定义和结构 队列(Queue) 是只允许在一端进行插入,在另一端进行删除的线性表 队列是一种先进先出(First In First Out)的线性表,简称 FIFO(First IN First OUT), 允许插入的一端称为队尾, 允许删除的一端称为队列头 队列的基本结构如下图所示&a…

FreeCAD中智能指针分析

实现原理 FreeCAD中有两套智能指针,一个是OCC的智能指针handle,另一个是自己定义的智能指针Reference,两种智能指针都是通过引用计数方式管理指针。 1.1 OCC智能指针handle OCC在基础类包中定义了一个模板类handle,该类包含一个私…

大学物理(下)笔记

摘录来自笔记网站的笔记。笔记网站详见https://onford.github.io/Notes/。 大学物理(下)笔记 部分常用物理常量的计算值 C h a p t e r 9 Chapter9 Chapter9 恒定磁场 毕奥-萨伐尔定律 磁场和电场在很多性质上是有共性的,很多时候可以拿它…

【pytorch05】索引与切片

索引 a[0,0]第0张图片的第0个通道 a[0,0,2,4]第0张图片,第0个通道,第2行,第4列的像素点,dimension为0的标量 选择前/后N张图片 a[:2,:1,:,:].shape前两张图片,第1个通道上的所有图片的数据 a[:2,1:,:,:].shape前两张…

ADD属性驱动架构设计(一)

目录 一、架构设计过程 1.1、架构设计过程 1.1.1、设计目的 1.1.2、质量属性(非功能需求) 1.1.3、核心功能(功能需求) 1.1.4、架构关注 1.1.5、约束条件 1.2、基于设计过程 二、什么是ADD? 三、为什么选择ADD? 四、作…

本地离线模型搭建指南-中文大语言模型底座选择依据

搭建一个本地中文大语言模型(LLM)涉及多个关键步骤,从选择模型底座,到运行机器和框架,再到具体的架构实现和训练方式。以下是一个详细的指南,帮助你从零开始构建和运行一个中文大语言模型。 本地离线模型搭…

鸿蒙开发系统基础能力:【@ohos.hiAppEvent (应用打点)】

应用打点 本模块提供了应用事件打点能力,包括对打点数据的落盘,以及对打点功能的管理配置。 说明: 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 导入模块 import hiAppEve…

今日分享:中国石油年金系统交互、视觉设计和vue开发

金融系统交互及UI设计时,需注意简洁明了、色彩合理、字体统一、交互易用、安全感和用户控制。确保用户快速理解、安全操作并提升体验。

数据结构~~时间、空间复杂度

目录 一、什么是数据结构 什么是算法 算法的复杂度 二、时间复杂度 三、空间复杂度 四、总结 一、什么是数据结构 数据结构(Data Structure)是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的 数据元素的集合。 数据结构关注的是数据的逻辑结…

快速搭建Jenkins自动化集成cicd工具

一、简介 jenkins是一款优秀的自动化持续集成运维工具,可以极大的简化运维部署的步骤。 传统的项目部署需要手动更换最新的项目代码,然后打包并运行到服务器上。 使用Jenkins可以自动化实现,当代码编写完成并提交到git后,Jenki…

通过 cloudflare 白嫖个人 docker 镜像加速服务

不知为何,现在大多数的 docker hub 镜像加速站都停止服务,而官方站点又因某些原因访问不到或延迟很高。所以,今天来记录一种通过 CloudFlare 搭建一个自己的镜像加速服务。 0、必看!!! 注意: 此…

pywebview打包本地的html

51.安装 pip install pywebview 2.新建start.py import webview import timeclass API:def say_hello(self, name):time.sleep(2) # 模拟一个耗时操作return fHello, {name}!def main():api API()webview.create_window(pywebview Example, index.html, js_apiapi)webview.…

抛弃Mybatis,拥抱新的ORM 框架!【送源码】

背景 转java后的几年时间里面一直在寻找一个类似.net的orm,不需要很特别的功能,仅希望90%的场景都可以通过强类型语法来编写符合直觉的sql,来操作数据库编写业务。 但是一直没有找到,Mybatis-Plus的单表让我在最初的时间段内看到…

利用golang_Consul代码实现Prometheus监控目标的注册以及动态发现与配置

文章目录 前言一、prometheus发现方式二、监控指标注册架构图三、部分代码展示1.核心思想2.代码目录3、程序入口函数剖析4、settings配置文件5、初始化配置文件及consul6、全局变量7、配置config8、公共方法目录common9、工具目录tools10、service层展示11、命令行参数12、Make…

Android笔记-安装Termux开启ssh,安装vim、android-tool、python等

背景 家里面有个老手机,想将此手机做成一个家庭服务器。控制各种家电。目前准备先控制电视机 流程 用电脑usb连接手机,下载好Termux,在安卓手机上安装好。这里就不记录笔记了,各个手机不一样。 安装好进入手机后: …

mfc140.dll是什么文件?mfc140.dll文件下载安装办法

一、mfc140.dll文件功能与作用 mfc140.dll作为Microsoft Foundation Classes库的一部分,提供了一系列的基础功能,这些功能对于开发Windows桌面应用程序至关重要。 2.1 应用程序框架 mfc140.dll封装了应用程序的生命周期管理,包括初始化、运…

赶论文不用愁:如何利用ChatGPT在3小时内完成论文

在这份指南里,我将详细介绍如何运用ChatGPT 4.0的高级功能来辅助学术研究与文章写作。从挖掘研究课题的初步想法开始,到撰写一篇内容深刻、结构完整的学术论文,我将逐步演示如何在研究的各个阶段中充分利用ChatGPT。值得一提的是,…

编程精粹—— Microsoft 编写优质无错 C 程序秘诀 07:编码中的假象

这是一本老书,作者 Steve Maguire 在微软工作期间写了这本书,英文版于 1993 年发布。2013 年推出了 20 周年纪念第二版。我们看到的标题是中译版名字,英文版的名字是《Writing Clean Code ─── Microsoft’s Techniques for Developing》&a…