深度差与人眼注视物体模糊程度的关系

2023-10-19 03:40

本文主要是介绍深度差与人眼注视物体模糊程度的关系,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

深度差与人眼注视物体模糊程度的关系

    • 人眼成像与相机的区别
    • 人眼成像模糊程度与深度差关系
    • 参考链接

之前我们讨论了图像深度差与模糊度的关系:https://blog.csdn.net/qq_41452267/article/details/104492162
本节我们讨论人眼成像模糊程度与深度差的关系。

人眼成像与相机的区别

    首先我们要明白一个问题:人眼与相机成像原理都是凸透镜成像,但是人眼既不是变焦镜头也不是定焦镜头:人眼的晶状体相当于一个变焦透镜,视网膜相当于底片。同一个人的晶状体中心到视网膜的距离,也就是眼轴长度,大致是固定的。
    人眼对焦是靠睫状肌的拉伸来改变晶状体的形状,也就是改变其焦距(或者说屈光度)来实现。如下图所示(引自wiki):
在这里插入图片描述
具体而言:
看远处物体,睫状肌放松,晶状体扁平,屈光度最小,焦距最大,如左图。
看近处物体,睫状肌收缩,晶状体变凸,屈光度变大,焦距变短,从而在眼轴长度不变的情况下,保证成像在视网膜上,如右图。
    摄影爱好者都知道,镜头焦距长,成像大,视野窄;焦距短,成像小,视野广,于是比较疑惑为什么人眼变焦,我们却没有感受到成像大小和视野的变化?
答案是因为:人眼视野不变,只是因为人眼轴长度不变,而不是焦距不变。(屏上的)像(斑)大小本质上和焦距并没有关系,只和透镜中心到屏幕的距离有关。焦距只负责成像清晰与否,和成像(斑)大小无关。和人眼不同,所有变焦镜头都是焦距变大(小),(有效)透镜中心到屏幕距离也随之变大(小),而不是固定。这是造成变焦镜头「长焦拉近、视野缩小」的原因,也是很多摄影爱好者类比人眼时误解的地方。总之,摄影上「长焦拉近」,本质并不是因为焦距变长了,而只是因为我们把屏幕放远了。只要透镜到屏幕距离固定,不管焦距怎么变,成像(斑)大小都不变。
    人眼轴长度固定,自然成像大小也是固定的,只不过这个像/斑不在对焦面上,模糊了而已。从这个意义上,人眼看东西大小不变,正是人眼轴长度固定的最佳佐证。另一方面,人眼进化出调节晶状体屈光度(变焦)而不是眼轴长度,,否则人眼对焦,两个大眼珠子在那一胀一胀……

人眼成像模糊程度与深度差关系

    知道了人眼成像的原理后,结合1/L+1/u=1/ f ,因为像距v不变,我们可以根据要注视物体的深度L计算出此时眼睛的焦距f:
在这里插入图片描述
将其带入我们之前图像深度差与模糊度的关系中推得的公式及光圈F=f/d有:
前景深:
在这里插入图片描述
后景深:
在这里插入图片描述
其中v为人眼轴长,d为瞳孔张开程度,L为物距。
人眼的参数有:
人眼像素:5亿7600万像素
人眼感光度:ISO 1-800
人眼动态范围:1000000,动态视频连续记录
人眼目标焦距:16.7mm广角双镜头
人眼图像焦距:22.3mm 立体成像
人眼光圈值:f3.2

参考链接

https://www.zhihu.com/question/20689640
https://zhidao.baidu.com/question/71974732.html

这篇关于深度差与人眼注视物体模糊程度的关系的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Java中自旋锁与CAS机制的深层关系与区别

《Java中自旋锁与CAS机制的深层关系与区别》CAS算法即比较并替换,是一种实现并发编程时常用到的算法,Java并发包中的很多类都使用了CAS算法,:本文主要介绍Java中自旋锁与CAS机制深层... 目录1. 引言2. 比较并交换 (Compare-and-Swap, CAS) 核心原理2.1 CAS

SQL 注入攻击(SQL Injection)原理、利用方式与防御策略深度解析

《SQL注入攻击(SQLInjection)原理、利用方式与防御策略深度解析》本文将从SQL注入的基本原理、攻击方式、常见利用手法,到企业级防御方案进行全面讲解,以帮助开发者和安全人员更系统地理解... 目录一、前言二、SQL 注入攻击的基本概念三、SQL 注入常见类型分析1. 基于错误回显的注入(Erro

Java枚举类型深度详解

《Java枚举类型深度详解》Java的枚举类型(enum)是一种强大的工具,它不仅可以让你的代码更简洁、可读,而且通过类型安全、常量集合、方法重写和接口实现等特性,使得枚举在很多场景下都非常有用,本文... 目录前言1. enum关键字的使用:定义枚举类型什么是枚举类型?如何定义枚举类型?使用枚举类型:2.

Java中Redisson 的原理深度解析

《Java中Redisson的原理深度解析》Redisson是一个高性能的Redis客户端,它通过将Redis数据结构映射为Java对象和分布式对象,实现了在Java应用中方便地使用Redis,本文... 目录前言一、核心设计理念二、核心架构与通信层1. 基于 Netty 的异步非阻塞通信2. 编解码器三、

Java HashMap的底层实现原理深度解析

《JavaHashMap的底层实现原理深度解析》HashMap基于数组+链表+红黑树结构,通过哈希算法和扩容机制优化性能,负载因子与树化阈值平衡效率,是Java开发必备的高效数据结构,本文给大家介绍... 目录一、概述:HashMap的宏观结构二、核心数据结构解析1. 数组(桶数组)2. 链表节点(Node

Java 虚拟线程的创建与使用深度解析

《Java虚拟线程的创建与使用深度解析》虚拟线程是Java19中以预览特性形式引入,Java21起正式发布的轻量级线程,本文给大家介绍Java虚拟线程的创建与使用,感兴趣的朋友一起看看吧... 目录一、虚拟线程简介1.1 什么是虚拟线程?1.2 为什么需要虚拟线程?二、虚拟线程与平台线程对比代码对比示例:三

Python函数作用域与闭包举例深度解析

《Python函数作用域与闭包举例深度解析》Python函数的作用域规则和闭包是编程中的关键概念,它们决定了变量的访问和生命周期,:本文主要介绍Python函数作用域与闭包的相关资料,文中通过代码... 目录1. 基础作用域访问示例1:访问全局变量示例2:访问外层函数变量2. 闭包基础示例3:简单闭包示例4

Java 中的 equals 和 hashCode 方法关系与正确重写实践案例

《Java中的equals和hashCode方法关系与正确重写实践案例》在Java中,equals和hashCode方法是Object类的核心方法,广泛用于对象比较和哈希集合(如HashMa... 目录一、背景与需求分析1.1 equals 和 hashCode 的背景1.2 需求分析1.3 技术挑战1.4

深度解析Python中递归下降解析器的原理与实现

《深度解析Python中递归下降解析器的原理与实现》在编译器设计、配置文件处理和数据转换领域,递归下降解析器是最常用且最直观的解析技术,本文将详细介绍递归下降解析器的原理与实现,感兴趣的小伙伴可以跟随... 目录引言:解析器的核心价值一、递归下降解析器基础1.1 核心概念解析1.2 基本架构二、简单算术表达

深度解析Java @Serial 注解及常见错误案例

《深度解析Java@Serial注解及常见错误案例》Java14引入@Serial注解,用于编译时校验序列化成员,替代传统方式解决运行时错误,适用于Serializable类的方法/字段,需注意签... 目录Java @Serial 注解深度解析1. 注解本质2. 核心作用(1) 主要用途(2) 适用位置3