#!/usr/bin/perl
# extract_focal.pl
# -- Tool for preparing a directory of images for bundler by computing
# focal lengths from Exif tags
# Copyright 2005-2009 Noah Snavely
$BIN_PATH = `dirname $0`;
chomp($BIN_PATH);
$OS = `uname -o`;
chomp($OS);
if ($OS eq "Cygwin") {
$JHEAD_EXE = "$BIN_PATH/jhead.exe";
} else {
$JHEAD_EXE = "$BIN_PATH/jhead";
}
unless (-e $JHEAD_EXE) {
printf("[extract_focal] Error: jhead not found. Please install jhead to %s\n", $BIN_PATH);
exit(1);
}
$OUT_DIR = "./prepare";
$SCALE=1.0;
%ccd_widths = (
"Asahi Optical Co.,Ltd. PENTAX Optio330RS" => 7.176, # 1/1.8"
"Canon Canon DIGITAL IXUS 400" => 7.176, # 1/1.8"
"Canon Canon DIGITAL IXUS 40" => 5.76, # 1/2.5"
"Canon Canon DIGITAL IXUS 430" => 7.176, # 1/1.8"
"Canon Canon DIGITAL IXUS 500" => 7.176, # 1/1.8"
"Canon Canon DIGITAL IXUS 50" => 5.76, # 1/2.5"
"Canon Canon DIGITAL IXUS 55" => 5.76, # 1/2.5"
"Canon Canon DIGITAL IXUS 60" => 5.76, # 1/2.5"
"Canon Canon DIGITAL IXUS 65" => 5.76, # 1/2.5"
"Canon Canon DIGITAL IXUS 700" => 7.176, # 1/1.8"
"Canon Canon DIGITAL IXUS 750" => 7.176, # 1/1.8"
"Canon Canon DIGITAL IXUS 800 IS" => 5.76, # 1/2.5"
"Canon Canon DIGITAL IXUS II" => 5.27, # 1/2.7"
"Canon Canon EOS 10D" => 22.7,
"Canon Canon EOS-1D Mark II" => 28.7,
"Canon Canon EOS-1Ds Mark II" => 35.95,
"Canon Canon EOS 20D" => 22.5,
"Canon Canon EOS 20D" => 22.5,
"Canon Canon EOS 300D DIGITAL" => 22.66,
"Canon Canon EOS 30D" => 22.5,
"Canon Canon EOS 350D DIGITAL" => 22.2,
"Canon Canon EOS 400D DIGITAL" => 22.2,
"Canon Canon EOS 40D" => 22.2,
"Canon Canon EOS 5D" => 35.8,
"Canon Canon EOS 5D Mark II" => 36.0,
"Canon Canon EOS 5D Mark III" => 36.0,
"Canon Canon EOS 550D" => 22.3,
"Canon EOS DIGITAL REBEL" => 22.66,
"Canon Canon EOS DIGITAL REBEL" => 22.66,
"Canon Canon EOS DIGITAL REBEL XT" => 22.2,
"Canon Canon EOS DIGITAL REBEL XTi" => 22.2,
"Canon Canon EOS REBEL T5i" => 22.3,
"Canon Canon EOS Kiss Digital" => 22.66,
"Canon Canon IXY DIGITAL 600" => 7.176, # 1/1.8"
"Canon Canon PowerShot A20" => 7.176, # 1/1.8"
"Canon Canon PowerShot A400" => 4.54, # 1/3.2"
"Canon Canon PowerShot A40" => 5.27, # 1/2.7"
"Canon Canon PowerShot A510" => 5.76, # 1/2.5"
"Canon Canon PowerShot A520" => 5.76, # 1/2.5"
"Canon Canon PowerShot A530" => 5.76, # 1/2.5"
"Canon Canon PowerShot A60" => 5.27, # 1/2.7"
"Canon Canon PowerShot A620" => 7.176, # 1/1.8"
"Canon Canon PowerShot A630" => 7.176, # 1/1.8"
"Canon Canon PowerShot A640" => 7.176, # 1/1.8"
"Canon Canon PowerShot A700" => 5.76, # 1/2.5"
"Canon Canon PowerShot A70" => 5.27, # 1/2.7"
"Canon Canon PowerShot A710 IS" => 5.76, # 1/2.5"
"Canon Canon PowerShot A75" => 5.27, # 1/2.7"
"Canon Canon PowerShot A80" => 7.176, # 1/1.8"
"Canon Canon PowerShot A85" => 5.27, # 1/2.7"
"Canon Canon PowerShot A95" => 7.176, # 1/1.8"
"Canon Canon PowerShot G1" => 7.176, # 1/1.8"
"Canon Canon PowerShot G2" => 7.176, # 1/1.8"
"Canon Canon PowerShot G3" => 7.176, # 1/1.8"
"Canon Canon PowerShot G5" => 7.176, # 1/1.8"
"Canon Canon PowerShot G6" => 7.176, # 1/1.8"
"Canon Canon PowerShot G7" => 7.176, # 1/1.8"
"Canon Canon PowerShot G9" => 7.600, # 1/1.7"
"Canon Canon PowerShot Pro1" => 8.8, # 2/3"
"Canon Canon PowerShot S110" => 5.27, # 1/2.7"
"Canon Canon PowerShot S1 IS" => 5.27, # 1/2.7"
"Canon Canon PowerShot S200" => 5.27, # 1/2.7"
"Canon Canon PowerShot S2 IS" => 5.76, # 1/2.5"
"Canon Canon PowerShot S30" => 7.176, # 1/1.8"
"Canon Canon PowerShot S3 IS" => 5.76, # 1/2.5"
"Canon Canon PowerShot S400" => 7.176, # 1/1.8"
"Canon Canon PowerShot S40" => 7.176, # 1/1.8"
"Canon Canon PowerShot S410" => 7.176, # 1/1.8"
"Canon Canon PowerShot S45" => 7.176, # 1/1.8"
"Canon Canon PowerShot S500" => 7.176, # 1/1.8"
"Canon Canon PowerShot S50" => 7.176, # 1/1.8"
"Canon Canon PowerShot S60" => 7.176, # 1/1.8"
"Canon Canon PowerShot S70" => 7.176, # 1/1.8"
"Canon Canon PowerShot S80" => 7.176, # 1/1.8"
"Canon Canon PowerShot SD1000" => 5.75, # 1/2.5"
"Canon Canon PowerShot SD100" => 5.27, # 1/2.7"
"Canon Canon PowerShot SD10" => 5.75, # 1/2.5"
"Canon Canon PowerShot SD110" => 5.27, # 1/2.7"
"Canon Canon PowerShot SD200" => 5.76, # 1/2.5"
"Canon Canon PowerShot SD300" => 5.76, # 1/2.5"
"Canon Canon PowerShot SD400" => 5.76, # 1/2.5"
"Canon Canon PowerShot SD450" => 5.76, # 1/2.5"
"Canon Canon PowerShot SD500" => 7.176, # 1/1.8"
"Canon Canon PowerShot SD550" => 7.176, # 1/1.8"
"Canon Canon PowerShot SD600" => 5.76, # 1/2.5"
"Canon Canon PowerShot SD630" => 5.76, # 1/2.5"
"Canon Canon PowerShot SD700 IS" => 5.76, # 1/2.5"
"Canon Canon PowerShot SD750" => 5.75, # 1/2.5"
"Canon Canon PowerShot SD800 IS" => 5.76, # 1/2.5"
"Canon Canon PowerShot SX500 IS" => 6.17, # 1/2.3"
"Canon EOS 300D DIGITAL" => 22.66,
"Canon PowerShot A510" => 5.76, # 1/2.5" ???
"Canon PowerShot S30" => 7.176, # 1/1.8"
"CASIO COMPUTER CO.,LTD. EX-S500" => 5.76, # 1/2.5"
"CASIO COMPUTER CO.,LTD. EX-Z1000" => 7.716, # 1/1.8"
"CASIO COMPUTER CO.,LTD EX-Z30" => 5.76, # 1/2.5 "
"CASIO COMPUTER CO.,LTD. EX-Z600" => 5.76, # 1/2.5"
"CASIO COMPUTER CO.,LTD. EX-Z60" => 7.176, # 1/1.8"
"CASIO COMPUTER CO.,LTD EX-Z750" => 7.176, # 1/1.8"
"CASIO COMPUTER CO.,LTD. EX-Z850" => 7.176,
"EASTMAN KODAK COMPANY KODAK CX7330 ZOOM DIGITAL CAMERA" => 5.27, # 1/2.7"
"EASTMAN KODAK COMPANY KODAK CX7530 ZOOM DIGITAL CAMERA" => 5.76, # 1/2.5"
"EASTMAN KODAK COMPANY KODAK DX3900 ZOOM DIGITAL CAMERA" => 7.176, # 1/1.8"
"EASTMAN KODAK COMPANY KODAK DX4900 ZOOM DIGITAL CAMERA" => 7.176, # 1/1.8"
"EASTMAN KODAK COMPANY KODAK DX6340 ZOOM DIGITAL CAMERA" => 5.27, # 1/2.7"
"EASTMAN KODAK COMPANY KODAK DX6490 ZOOM DIGITAL CAMERA" => 5.76, # 1/2.5"
"EASTMAN KODAK COMPANY KODAK DX7630 ZOOM DIGITAL CAMERA" => 7.176, # 1/1.8"
"EASTMAN KODAK COMPANY KODAK Z650 ZOOM DIGITAL CAMERA" => 5.76, # 1/2.5"
"EASTMAN KODAK COMPANY KODAK Z700 ZOOM DIGITAL CAMERA" => 5.76, # 1/2.5"
"EASTMAN KODAK COMPANY KODAK Z740 ZOOM DIGITAL CAMERA" => 5.76, # 1/2.5"
"EASTMAN KODAK COMPANY KODAK Z740 ZOOM DIGITAL CAMERA" => 5.76, # 1/2.5" ?
"FUJIFILM FinePix2600Zoom" => 5.27, # 1/2.7"
"FUJIFILM FinePix40i" => 7.600, # 1/1.7"
"FUJIFILM FinePix A310" => 5.27, # 1/2.7"
"FUJIFILM FinePix A330" => 5.27, # 1/2.7"
"FUJIFILM FinePix A600" => 7.600, # 1/1.7"
"FUJIFILM FinePix E500" => 5.76, # 1/2.5"
"FUJIFILM FinePix E510" => 5.76, # 1/2.5"
"FUJIFILM FinePix E550" => 7.600, # 1/1.7"
"FUJIFILM FinePix E900" => 7.78, # 1/1.6"
"FUJIFILM FinePix F10" => 7.600, # 1/1.7"
"FUJIFILM FinePix F30" => 7.600, # 1/1.7"
"FUJIFILM FinePix F450" => 5.76, # 1/2.5"
"FUJIFILM FinePix F601 ZOOM" => 7.600, # 1/1.7"
"FUJIFILM FinePix S3Pro" => 23.0,
"FUJIFILM FinePix S5000" => 5.27, # 1/2.7"
"FUJIFILM FinePix S5200" => 5.76, # 1/2.5"
"FUJIFILM FinePix S5500" => 5.27, # 1/2.7"
"FUJIFILM FinePix S6500fd" => 7.600, # 1/1.7"
"FUJIFILM FinePix S7000" => 7.600, # 1/1.7"
"FUJIFILM FinePix Z2" => 5.76, # 1/2.5"
"Hewlett-Packard hp 635 Digital Camera" => 4.54, # 1/3.2"
"Hewlett-Packard hp PhotoSmart 43x series" => 5.27, # 1/2.7"
"Hewlett-Packard HP PhotoSmart 618 (V1.1)" => 5.27, # 1/2.7"
"Hewlett-Packard HP PhotoSmart C945 (V01.61)" => 7.176, # 1/1.8"
"Hewlett-Packard HP PhotoSmart R707 (V01.00)" => 7.176, # 1/1.8"
"KONICA MILOLTA DYNAX 5D" => 23.5,
"Konica Minolta Camera, Inc. DiMAGE A2" => 8.80, # 2/3"
"KONICA MINOLTA CAMERA, Inc. DiMAGE G400" => 5.76, # 1/2.5"
"Konica Minolta Camera, Inc. DiMAGE Z2" => 5.76, # 1/2.5"
"KONICA MINOLTA DiMAGE A200" => 8.80, # 2/3"
"KONICA MINOLTA DiMAGE X1" => 7.176, # 1/1.8"
"KONICA MINOLTA DYNAX 5D" => 23.5,
"Minolta Co., Ltd. DiMAGE F100" => 7.176, # 1/2.7"
"Minolta Co., Ltd. DiMAGE Xi" => 5.27, # 1/2.7"
"Minolta Co., Ltd. DiMAGE Xt" => 5.27, # 1/2.7"
"Minolta Co., Ltd. DiMAGE Z1" => 5.27, # 1/2.7"
"NIKON COOLPIX L3" => 5.76, # 1/2.5"
"NIKON COOLPIX P2" => 7.176, # 1/1.8"
"NIKON COOLPIX S4" => 5.76, # 1/2.5"
"NIKON COOLPIX S7c" => 5.76, # 1/2.5"
"NIKON CORPORATION NIKON D100" => 23.7,
"NIKON CORPORATION NIKON D1" => 23.7,
"NIKON CORPORATION NIKON D1H" => 23.7,
"NIKON CORPORATION NIKON D200" => 23.6,
"NIKON CORPORATION NIKON D2H" => 23.3,
"NIKON CORPORATION NIKON D2X" => 23.7,
"NIKON CORPORATION NIKON D40" => 23.7,
"NIKON CORPORATION NIKON D50" => 23.7,
"NIKON CORPORATION NIKON D60" => 23.6,
"NIKON CORPORATION NIKON D70" => 23.7,
"NIKON CORPORATION NIKON D70s" => 23.7,
"NIKON CORPORATION NIKON D80" => 23.6,
"NIKON E2500" => 5.27, # 1/2.7"
"NIKON E2500" => 5.27, # 1/2.7"
"NIKON E3100" => 5.27, # 1/2.7"
"NIKON E3200" => 5.27,
"NIKON E3700" => 5.27, # 1/2.7"
"NIKON E4200" => 7.176, # 1/1.8"
"NIKON E4300" => 7.18,
"NIKON E4500" => 7.176, # 1/1.8"
"NIKON E4600" => 5.76, # 1/2.5"
"NIKON E5000" => 8.80, # 2/3"
"NIKON E5200" => 7.176, # 1/1.8"
"NIKON E5400" => 7.176, # 1/1.8"
"NIKON E5600" => 5.76, # 1/2.5"
"NIKON E5700" => 8.80, # 2/3"
"NIKON E5900" => 7.176, # 1/1.8"
"NIKON E7600" => 7.176, # 1/1.8"
"NIKON E775" => 5.27, # 1/2.7"
"NIKON E7900" => 7.176, # 1/1.8"
"NIKON E7900" => 7.176, # 1/1.8"
"NIKON E8800" => 8.80, # 2/3"
"NIKON E990" => 7.176, # 1/1.8"
"NIKON E995" => 7.176, # 1/1.8"
"NIKON S1" => 5.76, # 1/2.5"
"Nokia N80" => 5.27, # 1/2.7"
"Nokia N80" => 5.27, # 1/2.7"
"Nokia N93" => 4.536, # 1/3.1"
"Nokia N95" => 5.7, # 1/2.7"
"OLYMPUS CORPORATION C-5000Z" => 7.176, # 1/1.8"
"OLYMPUS CORPORATION C5060WZ" => 7.176, # 1/1.8"
"OLYMPUS CORPORATION C750UZ" => 5.27, # 1/2.7"
"OLYMPUS CORPORATION C765UZ" => 5.76, # 1//2.5"
"OLYMPUS CORPORATION C8080WZ" => 8.80, # 2/3"
"OLYMPUS CORPORATION X250,D560Z,C350Z" => 5.76, # 1/2.5"
"OLYMPUS CORPORATION X-3,C-60Z" => 7.176, # 1.8"
"OLYMPUS CORPORATION X400,D580Z,C460Z" => 5.27, # 1/2.7"
"OLYMPUS IMAGING CORP. E-500" => 17.3, # 4/3?
"OLYMPUS IMAGING CORP. FE115,X715" => 5.76, # 1/2.5"
"OLYMPUS IMAGING CORP. SP310" => 7.176, # 1/1.8"
"OLYMPUS IMAGING CORP. SP510UZ" => 5.75, # 1/2.5"
"OLYMPUS IMAGING CORP. SP550UZ" => 5.76, # 1/2.5"
"OLYMPUS IMAGING CORP. uD600,S600" => 5.75, # 1/2.5"
"OLYMPUS_IMAGING_CORP. X450,D535Z,C370Z" => 5.27, # 1/2.7"
"OLYMPUS IMAGING CORP. X550,D545Z,C480Z" => 5.76, # 1/2.5"
"OLYMPUS OPTICAL CO.,LTD C2040Z" => 6.40, # 1/2"
"OLYMPUS OPTICAL CO.,LTD C211Z" => 5.27, # 1/2.7"
"OLYMPUS OPTICAL CO.,LTD C2Z,D520Z,C220Z" => 4.54, # 1/3.2"
"OLYMPUS OPTICAL CO.,LTD C3000Z" => 7.176, # 1/1.8"
"OLYMPUS OPTICAL CO.,LTD C300Z,D550Z" => 5.4,
"OLYMPUS OPTICAL CO.,LTD C4100Z,C4000Z" => 7.176, # 1/1.8"
"OLYMPUS OPTICAL CO.,LTD C750UZ" => 5.27, # 1/2.7"
"OLYMPUS OPTICAL CO.,LTD X-2,C-50Z" => 7.176, # 1/1.8"
"OLYMPUS SP550UZ" => 5.76, # 1/2.5"
"OLYMPUS X100,D540Z,C310Z" => 5.27, # 1/2.7"
"Panasonic DMC-FX01" => 5.76, # 1/2.5"
"Panasonic DMC-FX07" => 5.75, # 1/2.5"
"Panasonic DMC-FX9" => 5.76, # 1/2.5"
"Panasonic DMC-FZ20" => 5.760, # 1/2.5"
"Panasonic DMC-FZ2" => 4.54, # 1/3.2"
"Panasonic DMC-FZ30" => 7.176, # 1/1.8"
"Panasonic DMC-FZ50" => 7.176, # 1/1.8"
"Panasonic DMC-FZ5" => 5.760, # 1/2.5"
"Panasonic DMC-FZ7" => 5.76, # 1/2.5"
"Panasonic DMC-LC1" => 8.80, # 2/3"
"Panasonic DMC-LC33" => 5.760, # 1/2.5"
"Panasonic DMC-LX1" => 8.50, # 1/6.5"
"Panasonic DMC-LZ2" => 5.76, # 1/2.5"
"Panasonic DMC-TZ1" => 5.75, # 1/2.5"
"Panasonic DMC-TZ3" => 5.68, # 1/2.35"
"PENTAX Corporation PENTAX *ist DL" => 23.5,
"PENTAX Corporation PENTAX *ist DS2" => 23.5,
"PENTAX Corporation PENTAX *ist DS" => 23.5,
"PENTAX Corporation PENTAX K100D" => 23.5,
"PENTAX Corporation PENTAX Optio 450" => 7.176, # 1/1.8"
"PENTAX Corporation PENTAX Optio 550" => 7.176, # 1/1.8"
"PENTAX Corporation PENTAX Optio E10" => 5.76, # 1/2.5"
"PENTAX Corporation PENTAX Optio S40" => 5.76, # 1/2.5"
"PENTAX Corporation PENTAX Optio S4" => 5.76, # 1/2.5"
"PENTAX Corporation PENTAX Optio S50" => 5.76, # 1/2.5"
"PENTAX Corporation PENTAX Optio S5i" => 5.76, # 1/2.5"
"PENTAX Corporation PENTAX Optio S5z" => 5.76, # 1/2.5"
"PENTAX Corporation PENTAX Optio SV" => 5.76, # 1/2.5"
"PENTAX Corporation PENTAX Optio WP" => 5.75, # 1/2.5"
"RICOH CaplioG3 modelM" => 5.27, # 1/2.7"
"RICOH Caplio GX" => 7.176, # 1/1.8"
"RICOH Caplio R30" => 5.75, # 1/2.5"
"Samsung Digimax 301" => 5.27, # 1/2.7"
"Samsung Techwin