When you take a photo with almost any digital camera, the camera
embeds useful information about the photo into the JPEG file itself.
This often includes information about exposure time, focus, aperture,
whether the flash was activated, and focal length. The last of these,
focal length, is especially useful when creating panoramas. This page
describes how to extract the focal length from the EXIF tags
of a digital photo and to convert it to pixel units, so that it can be
used in the panorama stitcher.
Jhead webpage
direct link
to Windows executable
Once you have jhead, you can run "jhead foo.jpg" from the command line, which will output something like this:
Sample jhead output:
File name : foo.jpg File size : 463023 bytes File date : 2001:08:12 21:02:04 Camera make : Canon Camera model : Canon PowerShot S100 Date/Time : 2001:08:05 15:39:33 Resolution : 1600 x 1200 Flash used : No Focal length : 5.4mm (35mm equivalent: 36mm) CCD Width : 5.23mm Exposure time: 0.100 s (1/10) Aperture : f/2.8 Focus Dist. : 1.18m Metering Mode: center weight Jpeg process : Baseline
Sometimes the CCD width on dpreview is given as a ratio of inches (e.g., 1/2.7""). The conversion from these units to millimeters is not straightforward, but you can look up the mapping here.
focal length in pixels = (image width in pixels) * (focal length in mm) / (CCD width in mm)
For the example photo above taken with the Canon PowerShot S100, this would be:
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.