使用不同尺寸的传感器拍照时,怎么保证拍出同样视场范围的照片?
1、问题背景
使用竞品机做图像效果对比时,我们通常都会要求拍摄的照片要视场范围一致,这样才具有可比性。之前我会考虑用同样焦距、同样分辨率的设备去拍照对比就可以了,觉得相机的视场范围只由镜头焦距来决定。
但如果对于不同尺寸的传感器,比如我用手机和全画幅的单反相机去拍照,怎么能保证拍照的视场范围保持一致呢?手机传感器的尺寸比全画幅单反相机的尺寸小太多了,只保持分辨率相同,镜头焦距一致,拍出来视场范围不可能一样。但如何做到拍出视场范围一样的照片呢?这是本文要分析的问题。
2、问题分析
a、什么决定拍照时的视场范围?
b、当使用不同尺寸的传感器时,该怎么保证拍出同样视场范围的照片?
a、什么决定拍照时的视场范围?
视场范围,相机能拍摄到的最大物高范围,就叫视场范围。如下光路图所示,是照相机的成像原理,物体在2倍焦距外时,成倒立缩小的实像。根据光路图得到公式:y / -y = -x / -f ,y = x * -y/f (y是物高,x是物距,-y是像高,f是焦距)。

如下图所示,物高实际分轴上和轴下,所以上式要乘以2,得到:Y = x * D/f(基于实际应用,物体在无限远处,焦距的长度忽略不计,光心到传感器的距离就是焦距),Y就是最大像高,也就是视场范围。

由公式 Y = x * D/f 可知,当物距和传感器尺寸一定时,视场范围和焦距成反比。
所以当用一台相机拍照时,即传感器尺寸不变,当拍摄同一物体时,即物距不变。这时焦距决定了拍照时的视场范围,焦距越大,视场范围越小,焦距越小,视场范围越大。
b、当使用不同尺寸的传感器时,该怎么保证拍出同样视场范围的照片?
当我们对比两台设备的图像效果时,通常是拍摄同一场景,即物距相同。但这时存在两个变量,传感器的尺寸和镜头焦距。如果用手机和全画幅的相机来拍照,传感器的尺寸肯定是差别很大的,那如何做到拍摄同样视场范围的照片呢?
1)这里涉及到一个等效焦距的概念,什么叫等效焦距?
就是把不同尺寸传感器上的焦距转化为135全画幅相机同样视角所对应的焦距,转化成全画幅后的焦距叫等效焦距。
补充:什么是135全面画幅相机?
胶片时代,我们使用最多的是编号为135型胶卷底片(感光区域范围36*24mm),摄影厂商就以此为规范设计镜头和机身,数码相机的感光元器件,面积的大小成本差异很大,和135胶卷面积相同的ccd或者cmos为全画幅。


2)等效焦距的计算方法
135全画幅视场范围:Y = x * D35/f35
非全画幅视场范围:Y = x * D0/f0
视场范围相同:x * D35/f35 = x * D0/f0
等效焦距:f35 = D35/D0 * f0 = C * f0
焦距转换系数:C = D35/D0
3)等效焦距的实际应用

如上图所示,是佳能5D4相机200mm焦距和佳能7D相机200mm焦距拍摄的效果图,可以看出在同样的物距、焦距下佳能5D4相机拍摄的视场范围更大一些。佳能5D4相机传感器尺寸36*24mm,佳能7D相机传感器尺寸 22.3*14.9mm。
焦距转换系数:C = D5d4/D7d = √(36^2 + 24^2) / √(22.3^2 + 14.9^2) = 1.6
等效焦距:f5d4 = 200*1.6=320mm,也就是佳能7D+200mm拍摄效果,就相当于全画幅相机320mm焦距时的拍摄效果。
而佳能7D要拍出佳能5D4+200mm的效果,需采用 200/1.6=125mm 焦距的镜头才可以。
相关文章:
使用不同尺寸的传感器拍照时,怎么保证拍出同样视场范围的照片?
1、问题背景 使用竞品机做图像效果对比时,我们通常都会要求拍摄的照片要视场范围一致,这样才具有可比性。之前我会考虑用同样焦距、同样分辨率的设备去拍照对比就可以了,觉得相机的视场范围只由镜头焦距来决定。 但如果对于不同尺寸的传感器…...
01-工具篇-windows与linux文件共享
一般来说绝大部分PC上装的系统均是windows,为了开发linux程序,会在PC上安装一个Vmware的虚拟机,在虚拟机上安装ubuntu18.04,由于windows上的代码查看软件、浏览器,通信软件更全,我们想只用ubuntu进行编译&a…...
医疗实施-住院流程详解
住院就诊流程详解 1.病人入院登记2.病人进入病区3.医生操作病人4.医嘱录入与审核执行5. 医嘱收费前在对应业务系统的操作5.1.药物医嘱5.2.检查检验医嘱5.3.手术医嘱 6.住院医嘱费用的产生7. 医嘱收费后在对应业务系统的操作8. 病人出院 这篇文章是基于我的文章《医疗实施-住院就…...
本地连接服务器 jupyter notebook
本地连接服务器 jupyter notebook 一、前提工作二、服务器操作三、Windows 操作 一、前提工作 准备一台Linux云服务器新建一个用户,并切换到此用户安装 Anaconda 二、服务器操作 远程服务器上安装和配置 Jupyter Notebook: pip3 install jupyter接着…...
Android 使用Kotlin封装RecyclerView
文章目录 1.概述2.运行效果图3.代码实现3.1 扩展RecyclerView 3.2 扩展Adapter3.3 RecyclerView装饰绘制3.3.1 以图片实现分割线3.3.2 画网格线3.3.3空白的分割线3.3.4 不同方向上的分割线 3.4 使用方法 1.概述 在一个开源项目上看到了一个Android Kotlin版的RecyclerView封装…...
WPF 实现点击按钮跳转页面功能
方法1. 配置环境 首先添加prism依赖项,配置好所有文件。需要配置的有两个文件:App.xaml.cs和App.xaml App.xaml.cs using System.Data; using System.Linq; using System.Threading.Tasks; using System.Windows;namespace PrismDemo {/// <summa…...
关于http网络通信数据包封装的过程
当我们谈论网络通信时,数据在从源到目的地传输的过程中会通过多层网络协议。在每一层,都会添加一些头信息(和有时尾信息)来帮助处理和传输数据。这个过程被称为"封装"(Encapsulation)。简单来说&…...
关于RabbitMQ你了解多少?
关于RabbitMQ你了解多少? 文章目录 关于RabbitMQ你了解多少?基础篇同步和异步MQ技术选型介绍和安装数据隔离SpringAMQP快速入门Work queues交换机Fanout交换机Direct交换机Topic交换机 声明队列和交换机MQ消息转换器 高级篇消息可靠性问题发送者的可靠性…...
Vulkan-着色器及编译SPIR-V
1.着色器模块介绍 Vulkan着色器代码一定要用字节码格式,而不是人类可读的语法如GLSL和HLSL。这个字节码就是SPIR-V,设计用于Vulkan和OpenCL。这是一个可以用于编写图形和计算着色器的格式,但是我们主要关注的是Vulkan的图形管线。使用字节码格…...
从MVC到DDD,该如何下手重构?
作者:付政委 博客:bugstack.cn 沉淀、分享、成长,让自己和他人都能有所收获!😄 大家好,我是技术UP主小傅哥。多年的 DDD 应用,使我开了技术的眼界! MVC 旧工程腐化严重,…...
论文阅读:基于隐马尔可夫模型的蛋白质多序列比对方法研究
本文来自chatpaper Basic Information: • Title: Research on Protein Multiple Sequence Alignment Method Based on Hidden Markov Model (基于隐马尔可夫模型的蛋白质多序列比对方法研究) • Authors: Zhan Qing • Affiliation: Harbin Institute of Technology (哈尔滨工…...
Vim同时打开多个文件
分屏模式 在 Vim 中,可以同时打开多个文件并使用分屏模式来查看它们。以下是一些常见的方法和命令: 在启动 Vim 时打开多个文件 使用 -o 选项打开文件并水平分屏: vim -o file1.txt file2.txt使用 -O 选项打开文件并垂直分屏: v…...
SpringCloudStreamkafka接收jsonarray字符串失败
文章目录 场景现象问题处理 场景现象 kafka作为消息队列,作为前端设备数据到后端消费的渠道,也被多个不同微服务消费一个服务与前端边缘计算设备建立socket消息,接收实时交通事件推送,再将事件发送到kafka里面。此处使用的是Spri…...
面向对象特性分析大全集
面向对象特性分析 先进行专栏介绍 面向对象总析前提小知识分类浅析封装浅析继承浅析多态面向对象编程优点abc 核心思想实际应用总结 封装概念详解关键主要目的核心思想优点12 缺点12 Java代码实现封装特性 继承概念详解语法示例关键主要目的核心思想优点12 缺点12 Java代码实现…...
【数据结构】队列和栈
大家中秋节快乐,玩了好几天没有学习,今天分享的是栈以及队列的相关知识,以及栈和队列相关的面试题 1.栈 1.1栈的概念及结构 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作…...
WordPress主题开发( 十)之—— 条件标签函数(上)
这里写目录标题 什么是条件标签函数?条件标签函数的使用场景使用条件标签函数的注意事项常用的条件标签函数主页示例:is_front_page() 示例:管理后台is_admin() 示例:单个文章页面is_single() 示例:is_single(17) 示例:is_single(Hello World) 示例:is_single(hello…...
vue学习-10vue整合SpringBoot跨域请求
在Vue.js应用整合Spring Boot后端时,需要处理跨域请求。跨域请求通常发生在前端应用运行在不同的域名或端口上时,而后端服务运行在不同的域名或端口上。以下是一种处理跨域请求的常见方式: 后端(Spring Boot)配置 在…...
ElasticSearch - 基于 JavaRestClient 查询文档(match、精确、复合查询,以及排序、分页、高亮)
目录 一、基于 JavaRestClient 查询文档 1.1、查询 API 演示 1.1.1、查询基本框架 DSL 请求的对应格式 响应的解析 1.1.2、全文检索查询 1.1.3、精确查询 1.1.4、复合查询 1.1.5、排序和分页 1.1.6、高亮 一、基于 JavaRestClient 查询文档 1.1、查询 API 演示 1.1.…...
简易实现通讯录(2.0)
这篇文章是在上期实现的通讯录基础上,增加了自动增容的功能,也解决了一开始通讯录自动开辟一个空间,可能会浪费空间,或者是信息过多无法增容的痛点,由于我们使用的是malloc这类函数来开辟空间,我们也需要来…...
Jasypt 实现自定义加解密
如下文章已经讲解了, Jasypt 是什么,怎么集成 Jasypt,怎么使用 Jasypt。 Jasypt 开源加密库使用教程_jasyptstringencryptor-CSDN博客Jasypt 加密框架概述1、Jasypt Spring Boot 为 spring boot 应用程序中的属性源提供加密支持,…...
语析Yuxi-Know:构建企业级智能知识管理系统的技术架构与实践
语析Yuxi-Know:构建企业级智能知识管理系统的技术架构与实践 【免费下载链接】Yuxi-Know 基于大模型 RAG 知识库与知识图谱的问答平台。Llamaindex VueJS Flask Neo4j。大模型适配 OpenAI、国内主流大模型平台的模型调用、本地 vllm 部署。 项目地址: https://…...
Java 面试必看的 1000 道面试解析,助你通过大厂面试
前言: 本文收集整理了各大厂常见面试题 N 道,你想要的这里都有内容涵盖:Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、Redis、MySQL、Spring、Spring Boot、Spring Cloud、RabbitMQ、Kafka、Linux 等技术栈,希望大家都能找到…...
PDF-Parser-1.0开箱即用体验:无需配置的PDF解析工具
PDF-Parser-1.0开箱即用体验:无需配置的PDF解析工具 1. 引言:PDF解析的痛点与解决方案 如果你经常需要从PDF文档里提取文字、表格或者公式,肯定遇到过这样的烦恼:要么工具太复杂,配置起来让人头疼;要么效…...
JMeter阶梯式压测实战:从零到一构建稳健性能评估体系
1. 为什么需要阶梯式压测? 做过性能测试的朋友都知道,直接给系统施加最大压力就像让一个平时不运动的人突然跑马拉松,很容易出问题。我在实际项目中就遇到过这种情况:某次直接给系统施加5000并发请求,结果不仅测试失败…...
开箱即用!春联生成模型-中文-base快速体验:1秒出对联,效果超预期
开箱即用!春联生成模型-中文-base快速体验:1秒出对联,效果超预期 1. 前言:AI写春联的时代来了 春节贴春联是中国人延续千年的传统习俗,但创作一副对仗工整、寓意吉祥的春联并不容易。现在,借助AI技术&…...
B端拓客号码核验行业现状:困局破解与价值重构氪迹科技法人股东号码筛选核验系统、阶梯式价格
在B端客户拓展的全链条中,企业核心决策层的有效触达是实现合作转化的关键前提,而法人、股东、董监高等核心群体的联系方式,則是搭建这一沟通桥梁的核心载体。作为拓客工作的前置基础性环节,号码核验与筛选的质量、效率,…...
手把手教你用Node.js 24和OpenEuler复现CVE-2025-55182漏洞(附完整POC)
手把手教你用Node.js 24和OpenEuler复现CVE-2025-55182漏洞(附完整POC) 在安全研究领域,漏洞复现是理解漏洞原理、验证修复方案的关键环节。本文将带领读者在国产操作系统OpenEuler 22.03 SP4上,使用Node.js 24环境,从…...
Phi-3-vision-128k-instruct 数据库课程设计助手:ER 图生成与 SQL 优化
Phi-3-vision-128k-instruct 数据库课程设计助手:ER 图生成与 SQL 优化 1. 数据库课程设计的痛点与挑战 每到学期中段,计算机专业的学生们总会面临一个共同的难题——数据库课程设计。这个看似简单的任务,往往让许多同学熬夜到凌晨。从需求…...
TVBoxOSC无线投屏完全指南:多设备协同与电视大屏无缝连接
TVBoxOSC无线投屏完全指南:多设备协同与电视大屏无缝连接 【免费下载链接】TVBoxOSC TVBoxOSC - 一个基于第三方项目的代码库,用于电视盒子的控制和管理。 项目地址: https://gitcode.com/GitHub_Trending/tv/TVBoxOSC 你是否曾遇到过这样的场景&…...
告别硬编码!用Aviator实现动态规则引擎的5个真实业务场景
告别硬编码!用Aviator实现动态规则引擎的5个真实业务场景 在快速变化的商业环境中,业务规则往往需要频繁调整。传统的硬编码方式不仅响应慢,还需要开发人员反复修改代码并重新部署。Aviator作为一款高性能的Java表达式引擎,能够完…...
