[Digikam-devel] [Bug 151685] Show calculated/derived image paramters (depth of field, image angle, ...)

Christian Mayer bug at christianmayer.de
Sat Dec 1 15:36:46 GMT 2007

------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.

------- Additional Comments From bug christianmayer de  2007-12-01 16:36 -------

> > Absolutly, we need formulas + context to use + full descriptions to add on API doc... else nothing will be done (:=)))

Here are some collected formulas for part one (more might come later...)

The information of this post comes from
http://www.dslr-forum.de/showthread.php?t=21047 (for those that can
understand German...).

Some definitions:

f:       the real focal length in mm (the number on the lens;
         independent of the sensor size)
f_equiv: the felt focal length when used on a crop camera by comparing
         the picture angle
Y:       the crop factor (Canon DSLRs have e.g. mostly 1.6)
s_[o,p]: size of the object (the thing infront of the camera) or the
         picture (i.e. 1/2 of the sensor chip) in mm
d_[o,p]: distance of the object or the picture (i.e. sensor) to the
         principal plane of the lens in mm
S:       the size of the sensor in mm (and thus S = 2*s_p) - depending
         on the context it might be length, height or diameter
                 S = [36mm x 24mm] / Y
V:       reproduction scale, the ratio between picture size and object
         size    V := s_o / s_p
a°:      picture angle (the real one, not the simplified one with the
         object at infinity; changes with focus setting)
a°_inf:  picture angle when d_o = infinity (that's the one usually used
         in advertising material of the manufacturer)

I'm assuming that the EXIF will tell me: f, d_o, S
to calculate the rest here are some formulas:

class optics (just for background; not needed):
1/f = 1/d_o + 1/d_p
s_o/d_o = s_p/d_p

interesting for the digiKam user (thus the results should be shown in
this whish):
Y = [36mm x 24mm] / S
V = f/(d_o-f)
a° = 2 * arctan( S*(d_o-f)/(2*f*d_o) )
a°_inf = 2 * arctan( S / (2*f) )

(note to the reader: this shows us that focal length at a croped camera
= crop_factor * real focal length is *only* correct when the lens is
focused at infinity! Thus:)

f_equiv = f*Y / (1 - f/d_o + f*Y/d_o)

V is important for macro photos (that have about a 1:1 ratio). It should
be displayed differently, depending on its value:
  if( V < 1 )
    printf( "%f : 1", 1/V );
    printf( "1 : %f", V   );

> > We working on more important parts currently (Database improvements + XMP support + KDE4 port). So all help is very usefull.

I know. :)

More information about the Digikam-devel mailing list