通过交互式网页学习相机成像原理

news2024/12/25 1:14:00


入门摄影这门艺术,你是否有以下这些问题?

焦距、光圈、CMOS是什么?为什么光圈越大,背景虚化效果越好?什么是过曝?…

今天我将分享一个简单的、可交互的相机成像模型,可供大家以可视化的方式深入学习和理解这些术语。

1. Ray Optics Simulation 光学模拟平台

使用者可以交互式的方式,利用该平台提供的光源、镜子、透光物、遮光物等工具创建和模拟 2D 几何光学场景,并与其互动。此外,该平台还提供画廊,使用者可将自己创建的光学场景上传,供其他用户使用与学习。

以下是几个比较有意思的画廊作品,分别构建了日食、变焦镜头、菲涅尔透镜的光学模型。有兴趣的小伙伴也可以自己做一些有意思的模型。

图片1 图片2 图片3

2. 相机成像原理模型的使用

在这里,我通过简单修改该画廊 Camera obscura - Ray Optics Simulation 作品,实现相机成像原理模型的创建。大家可通过如下方式使用:

2.1 创建一个 json文件

这里我创建一个名为 The principle of camera imaging.json 的文件,内容如下:

{
  "version": 5,
  "name": "The principle of camera imaging",
  "objs": [
    {
      "type": "Blocker",
      "p1": {
        "x": 1060,
        "y": 680
      },
      "p2": {
        "x": 760,
        "y": 680
      }
    },
    {
      "type": "Blocker",
      "p1": {
        "x": 1060,
        "y": 400
      },
      "p2": {
        "x": 760,
        "y": 400
      }
    },
    {
      "type": "Ruler",
      "p1": {
        "x": 1063.0130526315788,
        "y": 698.7886315789475
      },
      "p2": {
        "x": -141.88572433595814,
        "y": 694.8105495423805
      }
    },
    {
      "type": "Aperture",
      "p1": {
        "x": 760,
        "y": 400
      },
      "p2": {
        "x": 760,
        "y": 680
      },
      "p3": {
        "x": 760,
        "y": 504.62570743711734
      },
      "p4": {
        "x": 760,
        "y": 575.3742925628826
      }
    },
    {
      "type": "TextLabel",
      "x": 199.55899596667035,
      "y": 367.9691032858637,
      "text": "Objects outside",
      "alignment": "right"
    },
    {
      "type": "TextLabel",
      "x": 913.5043956043952,
      "y": 392.9062845651083,
      "text": "Camera",
      "alignment": "center"
    },
    {
      "type": "CropBox",
      "p1": {
        "x": -139.83866396761127,
        "y": 326.32154443423786
      },
      "p4": {
        "x": 1133.424493927126,
        "y": 779.921544434238
      }
    },
    {
      "type": "CropBox",
      "p1": {
        "x": 704.0034412955467,
        "y": 362.3215444342379
      },
      "p4": {
        "x": 1086.74028340081,
        "y": 745.058386434238
      }
    },
    {
      "type": "IdealLens",
      "p1": {
        "x": 786.0224861903579,
        "y": 405.29349691080154
      },
      "p2": {
        "x": 786.3857418161693,
        "y": 675.2470299262627
      },
      "focalLength": 155
    },
    {
      "type": "PointSource",
      "x": 432.30290724298936,
      "y": 470.70739164764365,
      "brightness": 0.43,
      "wavelength": 434
    },
    {
      "type": "PointSource",
      "x": -191.5518295991161,
      "y": 572.4623390160647,
      "brightness": 0.68,
      "wavelength": 669
    },
    {
      "type": "Detector",
      "p1": {
        "x": 1059.5017824181016,
        "y": 397.5102132692092
      },
      "p2": {
        "x": 1059.5017824181016,
        "y": 679.7590553744725
      },
      "irradMap": true
    },
    {
      "type": "TextLabel",
      "x": 1066.2885915124061,
      "y": 423.45358025984,
      "text": "CMOS"
    }
  ],
  "width": 1500,
  "height": 800,
  "rayModeDensity": 1.224337645235499,
  "origin": {
    "x": 286.1284655189088,
    "y": -55.57492358816593
  },
  "scale": 0.8255126868265552,
  "simulateColors": true
}

2.2 打开平台导入并使用

打开网站 https://phydemo.app/ray-optics/simulator/ , 左上角文件 – 打开 – 选择刚刚创建的json文件,就可以使用啦!

在这里插入图片描述

3 交互式相机模拟器网站

交互式相机模拟器,允许用户调整光圈、快门速度、ISO 等设置,模拟不同场景下的拍摄效果。这个网站直观地展示了不同设置如何影响曝光和照片质量,非常适合理解相机的基本原理。

https://www.camerasim.com/

在这里插入图片描述
摄影曝光三要素,光圈、快门、ISO 如何平衡

在这里插入图片描述

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

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

相关文章

web——sqliabs靶场——第一关

今天开始搞这个靶场,从小白开始一点点学习,加油!!!! 1.搭建靶场 注意点:1.php的版本问题,要用老版本 2.小p要先改数据库的密码,否则一直显示链接不上数据库 2.第一道题&#xff0…

自监督学习:机器学习的未来新方向

引言 自监督学习(Self-Supervised Learning, SSL)是近年来机器学习领域的一个重要发展方向,迅速成为许多研究和应用的热点。与传统的监督学习不同,自监督学习利用未标注数据,通过设计自我生成标签的任务,帮…

探索 HTML 和 CSS 实现的 3D 开关按钮

效果演示 这段代码是一个HTML和CSS的组合&#xff0c;用于创建一个3D风格的开关按钮&#xff08;通常用于控制某些设置的开启或关闭&#xff09; HTML <label class"switch"><input type"checkbox" checked"checked"><div cl…

车载诊断架构---NRC 78和NRC 21那些你不知道的事情!

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节…

【计算机基础——数据结构——红黑树】

1. 红黑树&#xff08;RBTree&#xff09; 为什么HashMap不直接使用AVL树&#xff0c;而是选择了红黑树呢&#xff1f; 由于AVL树必须保证左右子树平衡&#xff0c;Max(最大树高-最小树高) < 1&#xff0c;所以在插入的时候很容易出现不平衡的情况&#xff0c;一旦这样&…

linux物理内存管理:node,zone,page

一、总览 对于物理内存内存&#xff0c;linux对内存的组织逻辑从上到下依次是&#xff1a;node&#xff0c;zone&#xff0c;page&#xff0c;这些page是根据buddy分配算法组织的&#xff0c;看下面两张图&#xff1a; 上面的概念做下简单的介绍&#xff1a; Node&#xff1a…

CKA认证 | 使用kubeadm部署K8s集群(v1.26)

一、前置知识点 1.1 生产环境可部署Kubernetes集群的两种方式 目前生产部署Kubernetes集群主要有两种方式&#xff1a; ① kubeadm Kubeadm是一个K8s部署工具&#xff0c;提供kubeadm init和kubeadm join&#xff0c;用于快速部署Kubernetes集群。 ② 二进制包 从github下…

如何安装和配置JDK17

教程目录 零、引言1、新特性概览2、性能优化3、安全性增强4、其他改进5、总结 一、下载安装二、环境配置三、测试验证 零、引言 JDK 17&#xff08;Java Development Kit 17&#xff09;是Java平台的一个重要版本&#xff0c;它带来了许多新特性和改进&#xff0c;进一步提升了…

第2章2.3立项【硬件产品立项的核心内容】

硬件产品立项的核心内容 2.3 硬件产品立项的核心内容2.3.1 第一步&#xff1a;市场趋势判断2.3.2 第二步&#xff1a;竞争对手分析1.竞争对手识别2.根据竞争对手分析制定策略 2.3.3 第三步&#xff1a;客户分析2.3.4 第四步&#xff1a;产品定义2.3.5 第五步&#xff1a;开发执…

一款革命性的视频剪辑工具,AI剪辑新纪元:Clapper

如果说AI视频剪辑工具哪家强&#xff1f;还真想不出有什么让人眼前一亮的AI视频剪辑应用。 毕竟随着AI技术的发展越来越快&#xff0c;各种AI应用如雨后春笋般涌现&#xff0c;然而&#xff0c;真正能够在视频剪辑领域脱颖而出的工具却寥寥无几。 今天我要介绍的 Clapper 就是…

递归函数学习 part1

一&#xff0c;初始递归&#xff1a;阶乘 1&#xff0c;原理 n的阶乘等于n乘以n-1的阶乘&#xff0c;而0的阶乘等于1. 2&#xff0c;代码展示 #include <iostream> using namespace std;int fact(int); int main() {cout<<fact(5);return 0; }int fact(int n) …

解决程序因缺少xinput1_3.dll无法运行的有效方法,有效修复丢失xinput1_3.dll

如果你的电脑在运行某些应用程序或游戏时提示“xinput1_3.dll丢失”或“找不到xinput1_3.dll”的错误消息&#xff0c;那么很可能是因为你的系统中缺少这个重要的DLL文件而导致的问题。那么电脑出现xinput1_3.dll丢失的问题时有哪些方法进行修复呢&#xff1f; 如何确定电脑是否…

深入了解区块链:Web3的基础架构与发展

在数字时代的浪潮中&#xff0c;区块链技术正逐渐成为Web3的重要基础&#xff0c;重新定义互联网的结构和用户体验。Web3不仅是一个全新的网络阶段&#xff0c;更代表了一种去中心化的理念&#xff0c;强调用户主权和数据隐私。本文将深入探讨区块链在Web3中的基础架构、技术特…

内核tracepoint的注册回调及添加的方法

一、背景 内核开发时往往需要做一些内核态函数的监测或者内核状态的监测&#xff0c;就需要用一些调试手段来观测。常用的内核态的观测如kprobe和tracepoint&#xff0c;但是kprobe往往受制于一些系统的限制&#xff0c;很多系统并没有打开kprobe选项&#xff0c;这样我们不能…

React融合css

单纯使用tsx文件生成的页面比较单一&#xff0c;可以考虑结合css进行使用&#xff0c;需要说明的是&#xff0c;本人水平有限&#xff0c;仅对接触过的几种方式进行说明 内联样式 内联样式也有多种写法&#xff0c;此处仅列举两种比较简单的写法 写法一 import React from …

【大数据学习 | kafka高级部分】kafka中的选举机制

controller的选举 首先第一个选举就是借助于zookeeper的controller的选举 第一个就是controller的选举&#xff0c;这个选举是借助于zookeeper的独享锁实现的&#xff0c;先启动的broker会在zookeeper的/contoller节点上面增加一个broker信息&#xff0c;谁创建成功了谁就是主…

【基于PSINS工具箱】以速度为观测量的SINS/GNSS组合导航,UKF滤波

基于【PSINS工具箱】&#xff0c;提供一个MATLAB例程&#xff0c;仅以速度为观测量的SINS/GNSS组合导航&#xff08;滤波方式为UKF&#xff09; 文章目录 工具箱程序简述运行结果 代码程序讲解MATLAB 代码教程&#xff1a;使用UKF进行速度观测1. 引言与基本设置2. 初始设置3. U…

ThinkBook 14+ 2024 Ubuntu 触控板失效 驱动缺失问题解决

首先我的电脑是thinkbook14 2024&#xff0c;从ubuntu18到ubuntu24&#xff0c;笔者整个都试了一遍&#xff0c;触摸板都没反应&#xff0c;确认不是linux系统内核问题&#xff0c;原因为驱动缺失。 解决步骤&#xff1a; &#xff08;1&#xff09;下载驱动&#xff0c;网址如…

如何使用 Web Scraper API 高效采集 Facebook 用户帖子信息

目录 前言一、什么是Web Scraper API二、Web Scraper API 的优势&#xff1a;三、Web Scraper API 适用场景四、实践案例目标需求视频讲解1、选择Web Scraper API2、登录注册3、进入用户控制面板4、选择API5、触发数据收集 API6、获取爬虫结果7、分析爬虫结果&#xff08;1&…

Qt_day3_信号槽

目录 信号槽 1. 概念 2. 函数原型 3. 连接方式 3.1 自带信号 → 自带槽 3.2 自带信号 → 自定义槽 3.3 自定义信号 4. 信号槽传参 5. 对应关系 5.1 一对多 5.2 多对一 信号槽 1. 概念 之前的程序界面只能看&#xff0c;不能交互&#xff0c;信号槽可以让界面进行人机…