人眼是如何看到物体的

2024-06-02 02:12
文章标签 物体 看到 人眼

本文主要是介绍人眼是如何看到物体的,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

我在试图理解人眼如何观察到物体的,发现没有解释。本来我想这应该跟照相机照相的结果一样,但是发现,照相机也不对劲,没有理由能成像啊。

因为物体在散射光的时候,假设散射的光在局部是平行光,那么物体散射的平行光有无数组,这无数组中到达眼睛的光也是无数组,那么眼睛应该选择哪一组光呢?我只是为了引出问题,而说出是那一组,实际情况应该这样建立数学关系,假设用亮度L表示物体反射出来的光,物体的位置为x,表示一个点,物体是一个曲面S。F(x):S->LxD, D表示光的方向,在空间中的方向是三个参数的。空间曲面S是两个参数的。 L是亮度,包含于R+中。

而人的眼睛当成是个大洞O,只有通过这个O的光线会被眼睛捕捉,然后给感受器。

能通过O的光线F受到物体的点x和O中心位置o,和半径,和洞所在平面与x轴的夹角。O是平面上的洞。可以假设这是个约束条件g(O, S)<=0,至于是不等式的原因简单,因为在边界是等于0,但是在圆内也满足需要,所以约束为这个。

问题就是在约束条件下,如何选择眼睛感受器得到的光线H(S1), S1表示感受器的定义域。

再定义函数H:SxD->O,表示从S位置和D方向的光线射到了O内的某个位置。

实际上,对于圆O内的任意一个位置y,对于曲面S内的任意一个位置x,散射光中存在某个方向d,使得H(x,d)=y。这意味着这个洞的每个位置,都接收到了曲面S的每个位置x的光,但是要看到图像,只能在这个洞的每个位置o上选择曲面S的x位置的光,即是x(o)是函数。

这就是等价类的思想了。对于S中的任意位置x,如何做到让满射到O上的发散光再次汇聚到空间上一点z呢?如果能够做到还需要进一步考虑: 随着x连续移动,汇聚到一点的位置z也是连续不重复的移动的,这就是同胚,当光路是可逆的时候。同胚得到的是曲面S1,就是感受器的感光曲面。

这个感光曲面S1的每一个点z, 和S的x是一一对应的。那么O就变成了散射光的裁剪窗口,而之后的光线汇聚了,那么这个聚点的光线的亮度是极强的。

在物理中,是如何做到汇聚光线的呢?就是费马原理。

如果想要光线汇聚于一点z,也就是x上射入裁剪窗口O的所有光线汇聚于z点,那么需要任意路径的光程是恒等的。而xz之间的光程,就是费马原理确定的。

变分法是求极值的方法,所以假设充满xz之间空间的所有介质的折射率都确定了,那么可以利用费马原理求出来xz的极小的光程,或者极大的光程,这是由介质决定的,一般如果只空气介质那就是极短光程。已知光程,也无法直接得到光的路径,因为光程是实数。

但是变分法,不是求光程的,而是求光的路径的。已知折射率了,很容易求出来光的路径。

一个简单的事实是透镜可以做到,如何证明物点Q和像点Q'之间,任意从Q发散的光通过透镜O,都能达到Q'才合理。此时O不是平面中的裁剪窗口了,而是空间上的凸集,这并没有多大的影响。

如何证明透镜能够做到呢? 这需要对透镜的几何形状用函数表示出来,还需要空气和透镜的折射率均给出,然后对于透镜另一侧的位置y利用费马原理求出光路径这个不重要,然后是移动y到某个点z,使得光程r(a)常数,那么这个z就是所说的像点,能够汇聚到达透镜O的所有光线。

关键是不知道如何得到凸透镜的曲面公式,之后的计算就无法建立了。

但是我说一下可能性,原本到达z的穿过平面O的所有光线a的光程r1(a)是连续的,要使得通过在xz之间的裁剪圆位置添加透镜,使得r1(a)为常数,这相当于对曲线r1(a)进行横向拉直操作,至少透镜是个连续函数,可以认为是从原本插入的是0函数逐渐过渡成为透镜函数,这个过程是连续变化的,无法计算就不多说这部分的内容了。

总结就是透镜使得成像成为了可能。因为它把裁剪窗口的光线全部汇聚到了一点。

附加说明一点: 小孔成像的原理。

小孔成像是因为裁剪窗口非常小,使得物体S的某个位置x的发散光,近乎平行光映射到O上,在后面成像的时候,会有一点模糊,毕竟是点放大了一些。所有的点成像都有放大一些,但是只要小孔足够小,光线越接近平行,成像位置接近小孔,这种模糊范围越小。

这篇关于人眼是如何看到物体的的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

005:VTK世界坐标系中的相机和物体

VTK医学图像处理---世界坐标系中的相机和物体 左侧是成像结果                                                    右侧是世界坐标系中的相机与被观察物体 目录 VTK医学图像处理---世界坐标系中的相机和物体 简介 1 在三维空间中添加坐标系 2 世界坐标系中的相机 3 世界坐标系中vtkImageData的参数 总结:

Unity3D在2D游戏中获取触屏物体的方法

我们的需求是: 假如屏幕中一个棋盘,每个棋子是button构成的,我们希望手指或者鼠标在哪里,就显示那个位置的button信息。 网上有很多获取触屏物体信息的信息的方法如下面代码所示: Camera cam = Camera.main; // pre-defined...if (touch.phase == TouchPhase.Bagan)){ // 如果触控点状态为按下Ray

Unity --- 各种关节(Joints)来模拟物体之间的连接

目录 一:2D关节 一:1 固定关节 (Fixed Joint 2D) 功能: 适用场景: 1. 平台游戏中的固定平台: 2. 拼图游戏中的固定部件: 3. 建筑游戏中的固定结构:  一:2 铰链关节 (Hinge Joint 2D) 功能: 适用场景:  一:3 弹簧关节 (Spring Joint 2D) 功能: 适用场景: 1. 弹性绳索或弹簧: 2. 弹性

行空板上YOLO和Mediapipe视频物体检测的测试

Introduction 经过前面三篇教程帖子(yolov8n在行空板上的运行(中文),yolov10n在行空板上的运行(中文),Mediapipe在行空板上的运行(中文))的介绍,我们对如何使用官方代码在行空板上运行物体检测的AI模型有了基本的概念,并对常见的模型进行了简单的测试和对比。 在行空板上YOLO和Mediapipe图片物体检测的测试(中文)中我们对于行空板上使用YOLO和Medi

物体重识别

物体重识别(Object Re-identification,简称Re-ID)是一种计算机视觉任务,旨在通过识别和匹配不同视角或不同时间拍摄的同一物体,从而实现对该物体的再识别。这个任务通常涉及对物体特征进行提取和匹配,以在复杂的环境中准确地识别和跟踪目标。 在物体重识别中,视觉Transformer(ViT)是一种新兴的技术,其通过自注意力机制来处理图像数据。然而,ViT存在一个问题,即它容易

unity游戏开发——标记物体 一目了然

Unity游戏开发:标记物体,让开发变得一目了然 “好读书,不求甚解;每有会意,便欣然忘食。” 本文目录: Unity游戏开发 Unity游戏开发:标记物体,让开发变得一目了然前言1. 什么是Tag?2. Unity中如何添加和管理Tag步骤1:打开Tag管理器步骤2:添加自定义Tag步骤3:将Tag应用到物体 3. 如何使用Tag进行对象识别和控制场景1:碰撞检测场景2:查

unity游戏开放:标记物体 一目了然

Unity游戏开发:标记物体,让开发变得一目了然 “好读书,不求甚解;每有会意,便欣然忘食。” 本文目录: Unity游戏开发 Unity游戏开发:标记物体,让开发变得一目了然前言1. 什么是Tag?2. Unity中如何添加和管理Tag步骤1:打开Tag管理器步骤2:添加自定义Tag步骤3:将Tag应用到物体 3. 如何使用Tag进行对象识别和控制场景1:碰撞检测场景2:查

Emgu-WPF 激光雷达研究-移动物体跟踪

接前两篇博客: 激光雷达数据解析并绘制雷达图 https://blog.csdn.net/u013224722/article/details/80738619 激光雷达-移动物体检测 https://blog.csdn.net/u013224722/article/details/80738995 以及仅用WPF处理:绘制2D激光实时图 https://blog.csdn.net/u01

Emgu-WPF 激光雷达研究-移动物体检测

接上篇: https://blog.csdn.net/u013224722/article/details/80738619 先pose出效果图,下次撰写思路。 WPF录屏经典源码分享: https://github.com/NickeManarin/ScreenToGif https://github.com/NickeManarin/ScreenToGif/releases 运动物

Linux移动物体监控程序Motion的移植

所谓移动图像监测,简单来说就是利用摄像头定点监测某个区域,当有移动物体经过时,摄像头便自动抓拍(要监测多大物体、按拍照速率都是可调的),并把拍到的图像存储在指定目录,实现无人监控功能。 在Linux中有一套免费开源的移动物体监控的程序-Motion,它可以抓拍移动物体的图片和视频,并存放在指定目录或者数据库中,下面介绍Motion的移植和安装。 1、源代码下载 http://downl