利用照片携带的EXIF来估计焦距等信息

news/2024/7/21 7:28:45 标签: 图像处理, 数码相机, 传感器


(本文章大部分内容参考Noah Snavely)


等你利用数码相机拍摄照片时,相机常常会在图片中嵌入很多有用的信息到JPEG文件中。通常涵盖曝光时间、焦点、(照相机,望远镜等的)光圈、是否闪光灯被开启了还有焦距等信息。焦距信息在绘制全景图的时候非常重要。下面将以提取EXIF中的焦距信息为例,并介绍如何将它转换成像素单元的表示(这样更利于全景图绘制中的图像缝合操作)。


第一步:提取EXIF标签

首先,我们需要从JPEG图像(“foo.jpg”)中提取出EXIF信息。为此,我们首先需要一个EXIF阅读器。这有很多的程序能够完成相应的操作,这里建议使用“jhead”,因为它便捷而且简单。你可以在(http://www.sentex.net/~mwandel/jhead/)获得相应版本的可执行文件。


下载 jhead.exe 之后,可以在命令行中键入“jhead.exe foo.jpg”,你会看到如下图所示的输出形式:

这样很容易获取焦距。上面的例子中的焦距为5.4mm。现在,应该考虑如何将这种厘米的形式转换成像素的形式。


第二步:获取CCD width

一旦我们有了焦距的毫米we would Google "dpreview Canon PowerShot S100 specifications.表示,一个简单的公式就可以将焦距转换成像素点的表示。首先,需要知道相机图像传感器的宽度。有时它被罗列在EXIF标记的列表中(CCD Width)。以个人经验来看,这个数字常常是不准确的,所以最好能够在后续过程中在线上加以验证。常常使用的方法是在http://www.dpreview.com/上寻找。仍然以上面的例子解释,我们使用的相近的型号是Canon PowerShot S100,我们可以Google " dpreview Canon PowerShot S100 specifications." ,其中就有我们需要的信息。在结果页面,搜索 "sensor size" 。以S100为例,我们可以查到相关的传感器尺寸为1/2.7""(5.27 X 3.96 mm). 这与EXIF给出的数据差异较小,但是dpreview的数据更为可信(5.27 mm)。


对于1/2.7""这种英寸比值的表达方式:


传统的照相机胶卷尺寸为35mm,35mm为胶卷的宽度(包括齿孔部分),35mm胶卷的感光面积为36 x 24mm。换算到数码相机,对角长度约接近35mm的,CCD/CMOS尺寸越大。在单反数码相机中,很多都拥有接近35mm的CCD/CMOS尺寸,例如尼康德D100,CCD/CMOS尺寸面积达到23.7 x 15.6,比起消费级数码相机要大很多,而佳能的EOS-1Ds的CMOS尺寸为36 x 24mm,达到了35mm的面积,所以成像也相对较好。

  现在市面上的消费级数码相机主要有2/3英寸、1/1.8英寸、1/2.7英寸、1/3.2英寸四种。CCD/CMOS尺寸越大,感光面积越大,成像效果越好。1/1.8英寸的300万像素相机效果通常好于1/2.7英寸的400万像素相机(后者的感光面积只有前者的55%)。而相同尺寸的CCD/CMOS像素增加固然是件好事,但这也会导致单个像素的感光面积缩小,有曝光不足的可能。但如果在增加CCD/CMOS像素的同时想维持现有的图像质量,就必须在至少维持单个像素面积不减小的基础上增大CCD/CMOS的总面积。目前更大尺寸CCD/CMOS加工制造比较困难,成本也非常高。因此,CCD/CMOS尺寸较大的数码相机,价格也较高。感光器件的大小直接影响数码相机的体积重量。超薄、超轻的数码相机一般CCD/CMOS尺寸也小,而越专业的数码相机,CCD/CMOS尺寸也越大。

  数码相机规格表中的CCD一栏经常写着“1/2.7英寸CCD”等。这里的“1/2.7英寸”就是CCD的尺寸,实际上就是CCD对角线的长度。

  1/2.7英寸,在这里不是普通的“1英寸=25.4mm”。由于结合了CCD亮相前摄像机上使用的摄像管和显示方式,因此,习惯上采用比较特殊的尺寸。1/2.7英寸为6.6mm,1/1.8英寸约为9mm。
 
 

第三步:将毫米值转换成像素值

一旦我们明确了焦距的毫米表示和 CDD width, 就可以很简单地经焦距表示为像素点的形式。我们最后还需要的信息是图像的像素宽度。这在 jhead 中的resolution中指定,上面的例子中为1600,下面给出相关的公式:

focal length in pixels = (image width in pixels) * (focal length in mm) / (CCD width in mm)

对于上面的例子,

focal length in pixels = 1600 pixels * 5.4mm / 5.27mm   = 1639.47 pixels

So the focal length we would use for the stitcher is 1639.47.

 





http://www.niftyadmin.cn/n/1244860.html

相关文章

matlab-Computer Vision System ToolBox的系统对象使用

(人人网:MATLAB STUDY) 采用基于系统对象vision.X的图像处理,与采用数字图像处理工具箱相比,其优势主要体现在以下两个方面: 1) 运行速度更快; 2) 绝大多数系统函数支持MATLAB的C…

Bundler 用户指南

copyright 2008-2009 Noah Snavely (snavelycs.cornell.edu) any problems : please e-mail luangws163.com 什么是Bundler? Bundler是主要用于无序图片(源于搜索引擎的图片)收集的运动估计结构的系统。Bundler以一组图片、图片特征、图像…

多视点的数据表示

常见的多视点数据表示常常使用以下几种形式: voxels、level-sets、ploygon meshes、depth map。下面分别介绍: Voxels (三维像素)三维像素是一种基于体积概念的像素。通常的普通像素只需要X、Y轴两个坐标来定位它在空间中的方位。而它还需要加进一个额外…

马尔科夫随机场(MRF)与条件随机场(CRF)

条件随机场(Conditional random fields),是一种判别式图模型,因为其强大的表达能力和出色的性能,得到了广泛的应用。从最通用角度来看,CRF本质上是给定了观察值集合(observations)的马尔可夫随机场。在这里,我们直接从…

VirtualBox安装增强功能包

1.在VirtualBox的菜单栏里选择 设备(D) --> 安装增强功能(I)这时桌面就会多出一个光盘图标了,双击打开光盘。2.打开终端(紫色的是输入): luangLu (~/Desktop): cd /medialuangLu (/media): ls VBOXADDITIONS_4.1.18_78…

深入使用Bundler

这是本BLOG关于Bundler的第四个帖子,感兴趣的同学可以联系luangsszju.edu.cn,一起交流。 Photogrammetry 3D reconstruction using Bundler and PMVS2 第一步:Setup 安装 1. Get thesoftware needed MeshLab from http://downloads.sourc…

Voodoo Camera Tracker 的介绍与使用

Voodoo Camera Tracker 可以用来估计图片序列的相机参数和重建3D场景。估计算法获得的是视频序列的一组全自动的,鲁棒性的解。生成的结果可以用于电影影片的制作,3D 重建或视频编码。估计出来的参数可以导入到3D动画包: 3D Studio Max, Blen…

Cygwin的安装

下载和安装Cygwin。Cygwin是许多自由软件的集合,最初由Cygnus Solutions开发,用于各种版本的Microsoft Windows上,运行UNIX类系统。由于Bundler默认是通过在Unix环境下执行shell脚本来启动Bundler的,因为在Windows环境下需要安装C…