如何使用图片的exif信息计算相机焦距
135胶卷源于35mm高度的打孔电影胶片,1913年,德国人奥斯卡·巴纳克将其用于他发明的徕卡(Leica)牌小型照相机上,由此形成标准。
35mm电影胶卷,35mm指的是胶卷的高度为35mm,由于上下两端有齿孔,所以有效高度为24mm,这种胶片的单幅图像感光面积为24mm*36mm。
详细见:135胶片。135胶片的实物如下图所示。

针对35mm相机的焦距、胶片的单幅图像的感光区域尺寸为:焦距F35=35mm,胶片尺寸为:宽W35=36mm × 高H35=24mm(如果加上上、下两端的齿孔,胶卷的高度为35mm)。
35mm等效焦距: 35mm等效焦距是摄影术语之一,可以理解为将当前使用的芯片映射到与135胶卷底片同样大小后,对应的焦距是多少。 135胶卷感光面积为24mm*36mm, 通过勾股定理可算出斜边长约为43.27mm。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
市面上主流的单反数码相机的焦距、CCD尺寸与标准35mm相机的焦距、胶片尺寸的分别成正比列关系,所以有如下换算公式(单位均为mm):
公式(1):

将毫米转换为像素的换算公式为(上面三个量单位为像素,下面三个量单位为mm):
公式(2):

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
在做基于图像的三维重建和视觉测量的应用中,如果不想做复杂的相机标定,那么可以从图像的exif信息中获取相机的焦距信息。这里提供两种方法:
1.通过35mm等效焦距来计算:
图像的exif信息可以从图像的属性中获取,例如下图中,可以看出35mm等效焦距为35mm, 根据35mm胶片的尺寸为36mmx24mm,
那么,根据本文前面的公式(2)可以计算得相机的焦距为(以像素为单位的焦距) F = 2832 * 35 / 36 = 2753.33 pixel。

2.根据ccd尺寸计算焦距,首先从图中可知相机的焦距为6毫米,根据相机型号KODAK Z612 查询http://www.dpreview.com/得知,此款相机的ccd尺寸为5.75mm,
那么根据本文前面的公式(2)可以计算得, F = 2832 * 6/5.75=2955.13 pixel。
原文链接:https://blog.csdn.net/non_hercules/article/details/111699080
参考链接:https://blog.csdn.net/sinat_38129976/article/details/116448487
参考链接:焦距的物理尺度、像素尺度之间的转换关系以及35mm等效焦距
参考链接:Estimating the focal length of a photo from EXIF tags
参考链接:SFM之通过exif获取初始焦距
参考链接:sensor尺寸、35mm等效焦距、FOV、ZOOM倍数的换算关系
如何使用图片的exif信息计算相机焦距的更多相关文章
- IOS: 使用imageIO获取和修改图片的exif信息
使用imageIO获取和修改图片的exif信息 一幅图片除了包含我们能看见的像素信息,背后还包含了拍摄时间,光圈大小,曝光等信息.UIImage类将这些细节信息都隐藏了起来,只提供我们关心的图片尺寸, ...
- C# 获取图片的EXIF 信息
关于 EXIF 信息的介绍. 1 EXIF,是英文Exchangeable Image File(可交换图像文件)的缩写.EXIF是一种图像文件格式,只是文件的后缀名为jpg.EXIF信息是由数码相 ...
- 在Android下通过ExifInterface类操作图片的Exif信息
什么是Exif 先来了解什么是Exif.Exif是一种图像文件格式,它的数据存储于JPEG格式是完全相同的,实际上Exif格式就是JPEG格式头插入了 数码照片的信息,包括拍摄的光圈.快门.平衡白.I ...
- 用C#读取图片的EXIF信息的方法
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Dr ...
- 使用Java程序读取JPG Tif等格式图片的exif信息
package com.util; import java.io.File;import java.util.Iterator; import com.drew.imaging.ImageProces ...
- 利用php获取图片完整Exif信息类 获取图片详细完整信息类
<?php /** * @Author: TonyLevid * @Copyright: TonyLevid.com * @Name: Image Exif Class * @Version: ...
- 获取图片的EXIF信息
对于专业的摄影师来说,Exif信息是很重要的信息,也包含了非常多的东西 1.EXIF EXIF(Exchangeable Image File)是“可交换图像文件”的缩写,当中包含了专门为数码相机的照 ...
- 以最省内存的方式把大图片加载到内存及获取Exif信息和获取屏幕高度和宽度的新方法
我们在加载图片时经常会遇到内存溢出的问题,图片太大,我们加载图片时,一般都是用的如下一般方法(加载本地图片): /** * 不作处理,去加载图片的方法,碰到比较大的图片会内存溢出 */ private ...
- 七牛--关于图片上传方向不统一的问题--主要关于图片EXIF信息中旋转参数Orientation的理解
[图片引用方向纠正]直接在图片后面添加 ?imageMogr/auto-orient eg:http://data.upfitapp.com/data/2016/10/18/1629114767606 ...
- 图片Exif 信息中Orientation的理解和对此的处理
这个问题是在用七牛上传图片后获取宽高时发现的,一张图片,用图片浏览器打开始终是竖图,但是查看属性或者用七牛获取宽高,却发现宽大于高,也就是在属性中这是个横图.这样导致客户端用该宽高来展示图片会出现问题 ...
随机推荐
- 工作使用:Exchange命令集(超级重要)
工作使用:Exchange命令集(超级重要) 命令1:导出某个用户的邮件 New-MailboxExportRequest -mailbox dusonglin ...
- AOT漫谈专题(第五篇): 如何劫持.NET AOT编译器 进行源码级调试
一:背景 1. 讲故事 上篇聊到了 C#程序编译成Native代码 的宏观过程,有粉丝朋友提了一个问题,能不能在 dotnet publish 发布的过程中对AOT编译器拦截进行源码级调试,这是一个好 ...
- linux 基础(1)快速查询指令的用法
--help 几乎所有的指令,都可以使用--help选项进行查询.给命令使用--help选项,就会直接出现一段说明命令的文字. > date --help 用法:date [选项]... [+格 ...
- Selenium操作:测试form表单
from表单是经常测试的用例,用户登录.注册等都会用到form表单,本文简单设计了一个用户登录的form表单,并对该form表单进行测试 一.自定义form表单 1.用到的组件 如下图,图中定义了一个 ...
- 循环中拼接String不同方法性能耗时对比
对比背景 Java中最常用的拼接字符串方法就是 + 或 +=,使用上简单方便.但如果拼接数量比较大,例如在循环中拼接字符串,可能会有性能问题: 测试数据 循环100000次进行String拼接,对比+ ...
- 鸿蒙NEXT开发案例:随机密码生成
[引言] 本案例将实现一个随机密码生成器.用户可以自定义密码的长度以及包含的字符类型(大写字母.小写字母.数字.特殊字符),最后通过点击按钮生成密码,并提供一键复制功能. [环境准备] •操作系统:W ...
- 一个.NET开源、快速、功能丰富的跨平台阅读服务器
前言 今天大姚给大家分享一个基于.NET开源的快速.功能丰富的跨平台阅读服务器,它的设计初衷是提供一个全面的解决方案,满足用户的所有阅读需求.用户可以设置自己的服务器,并与朋友和家人分享阅读收藏:Ka ...
- 读书笔记-C#8.0本质论-02
10. 接口 10.1 显式与隐式接口实现的比较 10.1.1 隐式接口 namespace ConsoleApp1; internal static class Program { internal ...
- k8s之常用命令
Minikube # 启动集群服务 minikube start # 查看集群服务状态 minikube status# 登录集群minikube ssh # 关闭,暂停,恢复,删除集群服务 mini ...
- golang不同版本特性
Go 1.0[1] - 2012 年 3 月: 随着 Go 第一个版本发布的还有一份兼容性说明文档[2] .该文档承诺,Go 的未来版本会尽可能确保向后兼容性,不会破坏现有程序. For insta ...