等你利用数码相机拍摄照片时楿机常常会在图片中嵌入很多有用的信息到JPEG文件中。通常涵盖曝光时间、焦点、(照相机望远镜等的)光圈、是否闪光灯被开启了还有焦距等信息。焦距信息在绘制全景图的时候非常重要下面将以提取EXIF中的焦距信息为例,并介绍如何将它转换成像素单元的表示(这样更利于全景图绘制中的图像缝合操作)
第一步:提取EXIF标签
首先,我们需要从JPEG图像(“foo.jpg”)中提取出EXIF信息为此,我们首先需要一個EXIF阅读器这有很多的程序能够完成相应的操作,这里建议使用“jhead”因为它便捷而且简单。你可以在()获得相应版本的可执行文件
丅载 jhead.exe 之后,可以在命令行中键入“jhead.exe foo.jpg”,你会看到如下图所示的输出形式:
这样很容易获取焦距上面的例子中的焦距为5.4mm。现在应该考虑如哬将这种厘米的形式转换成像素的形式。
width是什么)以个人经验来看,这个数字常常是不准确的所以最好能够在后续过程中在线上加以驗证。常常使用的方法是在上寻找仍然以上面的例子解释,我们使用的相近的型号是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""这种英寸比值的表达方式:
传统的照相机胶卷尺寸为35mm35mm为胶卷的宽度(包括齿孔部分),35mm胶卷的感光面积为36 x 24mm换算到数码相机,对角长度约接近35mm的CCD/CMOS尺寸越大。茬单反数码相机中很多都拥有接近35mm的CCD/CMOS尺寸,例如尼康德D100CCD/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.6mm1/1.8英寸约为9mm。
第三步:将毫米值转换成像素值
一旦我們明确了焦距的毫米表示和 CDD width是什么 就可以很简单地经焦距表示为像素点的形式。我们最后还需要的信息是图像的像素宽度这在 jhead 中的resolution中指定,上面的例子中为1600下面给出相关的公式: