Foundations

Focal Length and Field of View

How a lens's focal length and the sensor's size set the angle of view of a camera, in horizontal, vertical and diagonal forms, and how sensor formats, crop factors, 35 mm equivalent focal lengths and the focus distance change it.

beginner

The focal length of a lens and the size of the sensor behind it together set a camera’s field of view, the angle of the cone of directions that reaches the sensor. It is also called the angle of view; Levoy’s lecture slides, followed here, write it as FOV. A longer focal length or a smaller sensor gives a narrower angle and a larger image of each object; a shorter focal length or a larger sensor gives a wider one. Because the same lens covers different angles on different sensors, photographers compare cameras through the crop factor and the 35 mm equivalent focal length, two conventions that are easy to apply and easy to misread.

The pinhole camera model gives the basic formula, θ=2arctan⁡(w/2f)\theta = 2\arctan(w/2f), and camera parameters gives the same angle from the focal length in pixels. This article owns the photographer’s quantities: the horizontal, vertical and diagonal angles, sensor formats, crop factors and their two conventions, equivalent focal lengths, the change of the angle with focus that the thin lens model predicts, and the limits of the formula. An example computes them for four formats and checks the formula by projecting markers at known angles onto each sensor.

Definition

The focal length ff of a lens is the distance behind it at which rays arriving parallel to the axis converge (Levoy, Image Formation, slide 26). It is a property of the lens alone, given in millimetres on the barrel.

The field of view of a camera is the angle subtended at the centre of projection by an extent of the sensor. For a rectangular sensor of width ww, height hh and diagonal d=w2+h2d = \sqrt{w^2 + h^2} there are three such angles, horizontal, vertical and diagonal, each of the form

θs=2arctan⁡ ⁣(s2 zi),s∈{w,h,d},\theta_s = 2 \arctan\!\left(\frac{s}{2\,z_i}\right), \qquad s \in \{w, h, d\},

where ziz_i is the distance from the lens to the sensor. With the lens focused at infinity, zi=fz_i = f, and this is Levoy’s FOV=2arctan⁡(h/2f)\mathrm{FOV} = 2 \arctan(h/2f), in which his hh is the sensor size (Image Formation, slide 30). The diagonal angle is the one Levoy’s slide 31 gives in a figure for lenses from 17 mm to 1000 mm on a 24 × 36 mm frame; he credits the slide to “London”, which his slide credits list as London, Stone and Upton’s Photography. The same words are also used for a length: vision system design gives the field of view as the size of the area imaged on the object, in millimetres, which depends on the working distance as well.

A sensor format is the size of the sensor’s active area. The crop factor of a format, in Levoy’s definition (slide 34), is

kw=width of full-frame sensorwidth of this sensor,k_w = \frac{\text{width of full-frame sensor}}{\text{width of this sensor}},

where full frame is the 24 × 36 mm frame of 35 mm still film. The 35 mm equivalent focal length of a lens on a smaller format is kfk f, the focal length that would give the same angle on full frame. Levoy (slide 45) uses it in the hand-holding rule of thumb, his “shortest exposure = 1/f” with ff the 35 mm equivalent focal length; his example is 1/180 s for a 180 mm lens, beside a photograph taken with a Leica 90 mm lens on a Panasonic GF1 with a 2× crop factor.

Intuition

Think of the sensor as a window and the centre of the lens as the eye. Every scene point is imaged where its chief ray, the straight line through the lens centre, meets the sensor, so the sensor sees exactly the directions whose chief rays land on it. Moving the window farther from the eye, a longer focal length, or shrinking it, a smaller sensor, narrows that bundle of directions. Levoy’s slides 30 and 33 make the two cases, and his slide 39 sums them up: focal length determines field of view, but the result depends on sensor size.

Two cameras therefore frame the same scene identically when the ratio of sensor size to image distance is the same. That is all the crop factor encodes. A small sensor behind a short lens and a large sensor behind a long lens see the same angle. In our reading, this is why phones, whose sensors are a few millimetres across and whose thinness limits the focal length of each module (digital camera), still reach ordinary angles of view.

Formal Definition

Conventions

The article uses the thin-lens conventions of the thin lens model: the lens is in the plane z=0z = 0, distances are positive when real, zoz_o is the object distance and ziz_i the image distance, related by 1/zo+1/zi=1/f1/z_o + 1/z_i = 1/f. The sensor is centred on the optical axis (the principal point at the image centre), the lens is rectilinear, meaning free of distortion, and the image is inverted, x=−ziX/Zx = -z_i X/Z. Angles of view are full angles, in degrees; lengths are in millimetres.

The angle of view at finite focus

A focused thin-lens camera projects like a pinhole at the lens centre with its image plane at ziz_i, not at ff (the thin lens model derives this). The angle of view therefore uses ziz_i:

θs(zo)=2arctan⁡ ⁣(s2 zi),zi=f zozo−f.\theta_s(z_o) = 2\arctan\!\left(\frac{s}{2\,z_i}\right), \qquad z_i = \frac{f\,z_o}{z_o - f}.

Levoy’s slide 30 writes the formula with ff, which is the infinity-focus case; the form with ziz_i is our derivation from the pinhole equivalence. Levoy’s slides 28 and 29 supply its two ingredients: a lens is focused by changing the lens-to-sensor distance, and the image of an object at a finite distance lies beyond the focal length. Dividing the tangents gives the ratio of the near-focus angle to the infinity-focus angle in closed form (our derivation):

tan⁡(θs(zo)/2)tan⁡(θs(∞)/2)=fzi=1−fzo.\frac{\tan(\theta_s(z_o)/2)}{\tan(\theta_s(\infty)/2)} = \frac{f}{z_i} = 1 - \frac{f}{z_o}.

A 50 mm lens focused at 0.5 m has zi=55.56z_i = 55.56 mm and sees an angle whose half-angle tangent is 10% smaller than at infinity. The thin lens model states the same effect as the image growing by f/(zo−f)f/(z_o - f) on refocusing.

Crop factor by width and by diagonal

Since the angle depends only on s/zis/z_i, a format with extent ss behind focal length ff sees the same angle along that extent as full frame, of extent s0s_0, behind f s0/sf\,s_0/s. The crop factor is that ratio, and the convention says which extent is matched. Levoy’s definition matches the width, kw=36/wk_w = 36/w. Matching the diagonal gives kd=43.27/dk_d = 43.27/d, since the full-frame diagonal is 362+242=43.27\sqrt{36^2 + 24^2} = 43.27 mm. Levoy’s slide 34 defines it by width; the diagonal convention is included here because his slide 31 measures the angle of view diagonally and the two conventions give different numbers.

The two agree exactly only when the format has full frame’s 3:2 shape (our derivation). Their ratio is

kwkd=36/43.27w/d,\frac{k_w}{k_d} = \frac{36/43.27}{w/d},

so kw>kdk_w > k_d for formats less elongated than 3:2, such as 4:3, and kw<kdk_w < k_d for more elongated ones. No single equivalent focal length reproduces all three angles of a format whose shape differs from 3:2: matching one dimension mismatches the others.

Equivalent focal length and zoom

The 35 mm equivalent focal length kfk f is a statement about angle of view only. Under Levoy’s width convention it reproduces the horizontal angle, and under the diagonal convention the diagonal angle. The zoom of a zoom lens changes ff; Levoy (Optics II, slide 46) describes an optically compensated zoom whose in-focus plane stays more or less stationary as the focal length changes, and notes (slide 47) that most modern zoom lenses are focus-compensated. Digital zoom crops the image instead: keeping the central 1/k1/k of the frame’s width gives exactly the horizontal angle of a lens of focal length kfkf on the full sensor, since the angle depends only on s/fs/f (our derivation), but with kk times fewer pixels across. Cropping and resizing also change the intrinsic matrix, which camera parameters works out.

Properties

  • Sensor size. At fixed focal length a smaller sensor sees a smaller angle (Levoy, Image Formation, slide 33). Levoy adds that smaller sensors have either fewer pixels or smaller ones, which are noisier. His slide 34 lists, as of 2013, full frame at 24 × 36 mm, APS-C (Nikon D40) at 15.5 × 23.7 mm with a crop factor of about 1.5, micro four-thirds (Panasonic GX1) at 13 × 17.3 mm at about 2, a point-and-shoot (Canon A590) at 5.75 × 4.31 mm at about 6, and the iPhone 5’s sensor at 4.5 × 3.4 mm.
  • Focal length and perspective. Changing the focal length scales the image but does not change perspective; moving the camera does. Levoy (Image Formation, slides 36–37) shows a wide-angle lens close to a subject against a telephoto lens moved back so that the subject keeps its size: the subject matches, but perspective relationships change. Moving back while changing the focal length to keep one depth at constant size is the dolly zoom, or “Vertigo effect”. The pinhole camera model explains why the “compressed” look of telephoto photographs comes from distance, and visionbook (§5.3.2) notes that orthographic projection is a good model for telephoto lenses, where apparent size is roughly independent of distance.
  • Focus changes the angle. By the formula above, focusing closer narrows the angle of view of a fixed lens on a fixed sensor. This is a thin-lens result; real lenses are thick assemblies (thin lens model, Limits of the Model), so in our reading the size of the effect for a given lens depends on its design.
  • Depth of field across formats. Equal angle of view does not mean equal depth of field. Levoy (Optics I, slide 69) argues from the approximation Dtot≈2NCU2/f2D_{\text{tot}} \approx 2NCU^2/f^2 that as the sensor shrinks, the focal length shrinks with it to keep a comparable field of view, and the acceptable circle of confusion CC shrinks with the pixel size, so depth of field grows linearly with decreasing sensor size (with NN and UU unchanged, in our reading of the formula). That conclusion rests on those two assumptions, which he states as what typically happens on consumer cameras; depth of field works through the limits. Aperture and f-number, exposure and image formation cover the f-number and the circle of confusion.
  • Teleconverters. A teleconverter, fitted between camera and lens, increases ff, narrowing the field of view and increasing magnification, without changing the focusing range, and raises the f-number (Levoy, Optics I, slide 64).
  • “Telephoto” is a design, not only a length. In Levoy’s Optics II (slides 43–44), a telephoto lens is a combination that makes the back focal distance shorter than ff, so that a long lens is physically shorter while keeping its focal length and magnification; the reversed telephoto makes the back focal distance longer than ff, so that wide-angle lenses leave room for a reflex mirror.
  • The limit near 180°. As s/2zis/2z_i grows, arctan⁡\arctan approaches 90°, so a rectilinear lens cannot reach a full angle of 180°: as the pinhole camera model notes, a ray at 90° to the axis would land at infinity. Fisheye lenses use other mappings from angle to image radius, which lens distortion describes.

Examples

Formats and crop factors, checked by projection

The script takes a 50 mm lens and the four formats on Levoy’s slide 34 that carry a printed crop factor: full frame, APS-C (D40), micro four-thirds (GX1) and the compact (A590). It computes the horizontal, vertical and diagonal angles of view, the crop factor under both conventions and the equivalent focal length each gives, and compares two sets of Levoy’s printed values with the formulas. It then checks the angle-of-view formula independently of the arctangent: fans of markers at field angles 0.05°, 0.15°, …, 89.95° on both sides of the axis, along the horizontal, vertical and diagonal directions of each sensor, are projected through a pinhole at ziz_i, and the markers landing on the sensor are counted. A marker counts if its image lies within ∣x∣≤w/2|x| \le w/2 and ∣y∣≤h/2|y| \le h/2; the analytic count is twice the number of fan angles below half the angle of view. This is done for focus at infinity (zi=fz_i = f) and at 500 mm (zi=55.56z_i = 55.56 mm), where the markers lie on the plane of focus.

The checks and hypotheses, fixed before the script was first run, were:

  • C0 (data check): no marker lies within 10−510^{-5}° of a boundary angle, so no count depends on a tie;
  • C1: Levoy’s approximate crop factors (~1.5, ~2, ~6) are reproduced by both conventions when rounded to the printed precision;
  • C2: the diagonal angles on Levoy’s slide 31 for 24 × 36 mm are reproduced by the formula at the printed precision;
  • H1: the width and diagonal crop factors differ by more than 3% for the two 4:3 formats and by less than 1% for full frame and APS-C;
  • H1b: the width-equivalent focal length reproduces the horizontal angle, and the diagonal-equivalent the diagonal angle, to within 10−910^{-9}°, while for the 4:3 formats neither reproduces the vertical angle (mismatch above 0.3°);
  • H2: the projected counts equal the analytic counts in all 24 cases;
  • H3: at 0.5 m focus the half-angle tangents shrink exactly by f/zi=0.9f/z_i = 0.9 (relative error at most 10−1210^{-12}, H3a), and fewer markers land on every sensor than at infinity (H3b).
import os
os.environ["OPENBLAS_NUM_THREADS"] = os.environ["OMP_NUM_THREADS"] = "1"
import numpy as np

# Units: mm and degrees. Pinhole (chief-ray) projection onto a sensor at image distance z_i
# behind the centre of projection; the sensor is centred on the optical axis.
f = 50.0                                         # lens focal length
formats = {                                      # width x height (Levoy, image formation slide 34)
    "full frame": (36.0, 24.0), "APS-C (D40)": (23.7, 15.5),
    "micro 4/3 (GX1)": (17.3, 13.0), "compact (A590)": (5.75, 4.31)}
W0, H0 = formats["full frame"]
D0 = np.hypot(W0, H0)                            # full-frame diagonal, 43.27 mm

def fov(size, z_i):
    """Angle of view (degrees) across a sensor extent `size` at image distance z_i."""
    return np.degrees(2 * np.arctan(size / (2 * z_i)))

def z_img(z_o):
    """Thin-lens image distance; z_o = inf means focus at infinity (z_i = f)."""
    return f if np.isinf(z_o) else f * z_o / (z_o - f)

print("1. Angle of view, crop factor and equivalent focal length (focus at infinity)")
print("  format            aspect   FOV h     FOV v     FOV d    k_width  k_diag   "
      "(k_w-k_d)/k_d")
rows = {}
for name, (w, h) in formats.items():
    d = np.hypot(w, h)
    kw, kd = W0 / w, D0 / d
    rows[name] = (w, h, d, kw, kd)
    print(f"  {name:16s}  {w / h:.4f}  {fov(w, f):8.4f}  {fov(h, f):8.4f}  {fov(d, f):8.4f}"
          f"  {kw:.5f}  {kd:.5f}  {100 * (kw - kd) / kd:+7.3f}%")

print("\n  Full-frame equivalent focal length f*k, and the full-frame FOV it gives minus this format's")
print("  format            convention  f_eq       dFOV h     dFOV v     dFOV d")
h1b_exact = 0.0
h1b_vert = []
for name, (w, h, d, kw, kd) in rows.items():
    for conv, k in (("width", kw), ("diagonal", kd)):
        fe = f * k
        dh = fov(W0, fe) - fov(w, f)
        dv = fov(H0, fe) - fov(h, f)
        dd = fov(D0, fe) - fov(d, f)
        h1b_exact = max(h1b_exact, abs(dh if conv == "width" else dd))
        if name in ("micro 4/3 (GX1)", "compact (A590)"):
            h1b_vert.append(abs(dv))
        print(f"  {name:16s}  {conv:10s}  {fe:9.4f}  {dh:+9.4f}  {dv:+9.4f}  {dd:+9.4f}")

# Checks against Levoy's printed values
print("\n2. Levoy's printed values")
lev_crop = {"APS-C (D40)": (1.5, 1), "micro 4/3 (GX1)": (2, 0), "compact (A590)": (6, 0)}
c1 = True
for name, (v, nd) in lev_crop.items():
    _, _, _, kw, kd = rows[name]
    okw, okd = round(kw, nd) == v, round(kd, nd) == v
    c1 &= okw and okd
    print(f"  crop factor {name:16s} printed ~{v}  width {kw:.4f} -> {round(kw, nd)} {okw}  "
          f"diagonal {kd:.4f} -> {round(kd, nd)} {okd}")
print(f"  C1 printed crop factors reproduced at their precision: {'held' if c1 else 'failed'}")
lev_fov = {17: 104, 28: 75, 50: 47, 85: 28, 135: 18, 300: 8, 500: 5, 1000: 2.5}
c2_fail = []
for fl, v in lev_fov.items():
    c = fov(D0, fl)
    r = round(c * 2) / 2 if fl == 1000 else round(c)
    if r != v:
        c2_fail.append(fl)
    print(f"  diagonal FOV {fl:5d} mm on 24 x 36: computed {c:8.3f}, rounded {r:5}, printed {v:5}"
          f"  {'held' if r == v else 'failed'}")
print(f"  C2 slide 31 values reproduced at their precision: "
      f"{'held' if not c2_fail else 'failed at ' + ', '.join(f'{x} mm' for x in c2_fail)}")

# Fans of markers at known field angles, projected through a pinhole at z_i
theta = 0.05 + 0.1 * np.arange(900)              # degrees off axis, 0.05 ... 89.95
print("\n3. Marker fans projected through a pinhole at z_i and counted on each sensor")
min_gap = np.inf
ok2 = True
ok3b = True
tanratio_err = 0.0
counts = {}
for z_o in (np.inf, 500.0):
    z_i = z_img(z_o)
    print(f"  focus at {'infinity' if np.isinf(z_o) else f'{z_o:.0f} mm'}: z_i = {z_i:.6f} mm")
    print("    format            dir   FOV (deg)  markers on sensor  analytic  match")
    for name, (w, h, d, kw, kd) in rows.items():
        for lab, phi, s in (("h", 0.0, w), ("v", np.pi / 2, h), ("d", np.arctan2(h, w), d)):
            half = fov(s, z_i) / 2
            min_gap = min(min_gap, np.abs(theta - half).min())
            t = np.radians(np.concatenate([theta, -theta]))
            dirs = np.stack([np.sin(t) * np.cos(phi), np.sin(t) * np.sin(phi), np.cos(t)], 1)
            P = dirs * (z_o / dirs[:, 2:3] if np.isfinite(z_o) else 1.0)   # points on the focus plane
            x = -z_i * P[:, 0] / P[:, 2]                   # inverted image
            y = -z_i * P[:, 1] / P[:, 2]
            on = int(np.sum((np.abs(x) <= w / 2) & (np.abs(y) <= h / 2)))
            ana = 2 * int(np.sum(theta < half))
            ok2 &= on == ana
            counts[z_o, name, lab] = on
            print(f"    {name:16s}  {lab}    {2 * half:9.4f}  {on:17d}  {ana:8d}  {on == ana}")
            if np.isfinite(z_o):
                r = np.tan(np.radians(half)) / np.tan(np.radians(fov(s, f) / 2))
                tanratio_err = max(tanratio_err, abs(r - f / z_i) / (f / z_i))
                ok3b &= on < counts[np.inf, name, lab]
print(f"  C0 data check, smallest |marker angle - half FOV| = {min_gap:.2e} deg (>= 1e-05): "
      f"{'held' if min_gap >= 1e-5 else 'failed'}")
print(f"  H2 projected counts equal analytic counts in all 24 cases: {'held' if ok2 else 'failed'}")

# Hypotheses H1, H1b, H3
print("\n4. Hypotheses")
rd = {n: 100 * abs(r[3] - r[4]) / r[4] for n, r in rows.items()}
h1 = (rd["micro 4/3 (GX1)"] > 3 and rd["compact (A590)"] > 3
      and rd["full frame"] < 1 and rd["APS-C (D40)"] < 1)
print(f"  H1 |k_w-k_d|/k_d: " + ", ".join(f"{n} {v:.3f}%" for n, v in rd.items())
      + f"  (>3% for the 4:3 formats, <1% otherwise): {'held' if h1 else 'failed'}")
print(f"  H1b matched FOV residual {h1b_exact:.1e} deg (<= 1e-9), smallest |dFOV v| for 4:3 "
      f"formats {min(h1b_vert):.4f} deg (> 0.3): "
      f"{'held' if h1b_exact <= 1e-9 and min(h1b_vert) > 0.3 else 'failed'}")
print(f"  H3a tan(FOV/2) ratio 0.5 m / infinity against f/z_i = {f / z_img(500.0):.12f}: "
      f"max rel err {tanratio_err:.1e} (<= 1e-12): {'held' if tanratio_err <= 1e-12 else 'failed'}")
print(f"  H3b fewer markers on every sensor at 0.5 m than at infinity: "
      f"{'held' if ok3b else 'failed'}")

Output (NumPy 2.3.5; the script runs in well under a second):

1. Angle of view, crop factor and equivalent focal length (focus at infinity)
  format            aspect   FOV h     FOV v     FOV d    k_width  k_diag   (k_w-k_d)/k_d
  full frame        1.5000   39.5978   26.9915   46.7930  1.00000  1.00000   +0.000%
  APS-C (D40)       1.5290   26.6662   17.6215   31.6227  1.51899  1.52785   -0.580%
  micro 4/3 (GX1)   1.3308   19.6300   14.8138   24.4211  2.08092  1.99938   +4.078%
  compact (A590)    1.3341    6.5818    4.9358    8.2204  6.26087  6.02096   +3.985%

  Full-frame equivalent focal length f*k, and the full-frame FOV it gives minus this format's
  format            convention  f_eq       dFOV h     dFOV v     dFOV d
  full frame        width         50.0000    +0.0000    +0.0000    +0.0000
  full frame        diagonal      50.0000    +0.0000    +0.0000    +0.0000
  APS-C (D40)       width         75.9494    +0.0000    +0.3356    +0.1753
  APS-C (D40)       diagonal      76.3927    -0.1493    +0.2330    +0.0000
  micro 4/3 (GX1)   width        104.0462    +0.0000    -1.6557    -0.9299
  micro 4/3 (GX1)   diagonal      99.9690    +0.7841    -1.1241    +0.0000
  compact (A590)    width        313.0435    +0.0000    -0.5453    -0.3140
  compact (A590)    diagonal     301.0480    +0.2616    -0.3706    +0.0000

2. Levoy's printed values
  crop factor APS-C (D40)      printed ~1.5  width 1.5190 -> 1.5 True  diagonal 1.5279 -> 1.5 True
  crop factor micro 4/3 (GX1)  printed ~2  width 2.0809 -> 2.0 True  diagonal 1.9994 -> 2.0 True
  crop factor compact (A590)   printed ~6  width 6.2609 -> 6.0 True  diagonal 6.0210 -> 6.0 True
  C1 printed crop factors reproduced at their precision: held
  diagonal FOV    17 mm on 24 x 36: computed  103.678, rounded   104, printed   104  held
  diagonal FOV    28 mm on 24 x 36: computed   75.381, rounded    75, printed    75  held
  diagonal FOV    50 mm on 24 x 36: computed   46.793, rounded    47, printed    47  held
  diagonal FOV    85 mm on 24 x 36: computed   28.558, rounded    29, printed    28  failed
  diagonal FOV   135 mm on 24 x 36: computed   18.208, rounded    18, printed    18  held
  diagonal FOV   300 mm on 24 x 36: computed    8.249, rounded     8, printed     8  held
  diagonal FOV   500 mm on 24 x 36: computed    4.955, rounded     5, printed     5  held
  diagonal FOV  1000 mm on 24 x 36: computed    2.479, rounded   2.5, printed   2.5  held
  C2 slide 31 values reproduced at their precision: failed at 85 mm

3. Marker fans projected through a pinhole at z_i and counted on each sensor
  focus at infinity: z_i = 50.000000 mm
    format            dir   FOV (deg)  markers on sensor  analytic  match
    full frame        h      39.5978                396       396  True
    full frame        v      26.9915                270       270  True
    full frame        d      46.7930                468       468  True
    APS-C (D40)       h      26.6662                266       266  True
    APS-C (D40)       v      17.6215                176       176  True
    APS-C (D40)       d      31.6227                316       316  True
    micro 4/3 (GX1)   h      19.6300                196       196  True
    micro 4/3 (GX1)   v      14.8138                148       148  True
    micro 4/3 (GX1)   d      24.4211                244       244  True
    compact (A590)    h       6.5818                 66        66  True
    compact (A590)    v       4.9358                 50        50  True
    compact (A590)    d       8.2204                 82        82  True
  focus at 500 mm: z_i = 55.555556 mm
    format            dir   FOV (deg)  markers on sensor  analytic  match
    full frame        h      35.9046                360       360  True
    full frame        v      24.3773                244       244  True
    full frame        d      42.5518                426       426  True
    APS-C (D40)       h      24.0815                240       240  True
    APS-C (D40)       v      15.8830                158       158  True
    APS-C (D40)       d      28.5968                286       286  True
    micro 4/3 (GX1)   h      17.6998                176       176  True
    micro 4/3 (GX1)   v      13.3465                134       134  True
    micro 4/3 (GX1)   d      22.0419                220       220  True
    compact (A590)    h       5.9248                 60        60  True
    compact (A590)    v       4.4428                 44        44  True
    compact (A590)    d       7.4008                 74        74  True
  C0 data check, smallest |marker angle - half FOV| = 1.05e-04 deg (>= 1e-05): held
  H2 projected counts equal analytic counts in all 24 cases: held

4. Hypotheses
  H1 |k_w-k_d|/k_d: full frame 0.000%, APS-C (D40) 0.580%, micro 4/3 (GX1) 4.078%, compact (A590) 3.985%  (>3% for the 4:3 formats, <1% otherwise): held
  H1b matched FOV residual 3.6e-15 deg (<= 1e-9), smallest |dFOV v| for 4:3 formats 0.3706 deg (> 0.3): held
  H3a tan(FOV/2) ratio 0.5 m / infinity against f/z_i = 0.900000000000: max rel err 2.5e-16 (<= 1e-12): held
  H3b fewer markers on every sensor at 0.5 m than at infinity: held

The first table shows the crop-factor conventions parting with the shape of the format. Full frame has both factors equal to 1; APS-C at 23.7 × 15.5 mm is slightly more elongated than 3:2 (aspect 1.5290), so its width factor is the smaller; the two 4:3 formats are less elongated, so their width factor is the larger, by about 4%. Every printed case follows the sign of the ratio derived above. H1 held. The equivalent focal lengths make the consequence concrete: a 50 mm lens on micro four-thirds is “104 mm” by width and “100 mm” by diagonal, and the width-equivalent lens on full frame would see a vertical angle 1.66° narrower than the micro four-thirds camera does, because full frame is relatively shorter. H1b held: each convention reproduces its own dimension to rounding error (3.6×10−153.6 \times 10^{-15}°), and for the 4:3 formats neither reproduces the vertical angle.

The checks against Levoy’s slides are mixed. C1 held: both conventions round to his ~1.5, ~2 and ~6. In our reading, for micro four-thirds and the compact his approximate factors sit nearer the diagonal values (1.9994 against 2.0809, and 6.0210 against 6.2609) than the width values his definition gives, while for APS-C the width value (1.5190) is nearer 1.5 than the diagonal value (1.5279), and both round to 1.5. C2 failed at 85 mm, where the formula gives 28.558° and the slide prints 28°, and held at the other seven focal lengths.

The projection check held. C0 held, with the closest marker 1.05×10−41.05 \times 10^{-4}° from a boundary, and H2 held: in all 24 cases the number of markers whose chief rays land on the sensor equals the number inside the computed angle, along the diagonal as well as the two axes, so the formula is the angle subtended by the sensor’s edges and corners. Focusing at 0.5 m narrows every angle: H3a held, with the tangent ratio equal to 0.9 to 2.5×10−162.5 \times 10^{-16}, and H3b held in all twelve cases; the full-frame horizontal angle, for example, falls from 39.5978° to 35.9046°, and 36 fewer markers land across it.

Process note: the plan for this example was written before the pilot, and its bars were set from a planning script that ran the same formats, focal length, focus distances and marker grid while the plan was being written, before the pilot. The plan says: “All bars were set after reachable.py printed the values they bound, so the example is presented as an illustration of the formulas, not as a test”. It also predicted, from that script, that C2 would fail at 85 mm. The plan lists five departures from the batch plan’s description of this example: the “ring of angular markers” is built as fans along the horizontal, vertical and diagonal directions, so that each count corresponds to one angle; the formats are the four with a printed crop factor, with the iPhone 5 left to the prose; checks C0, C1, C2, H1b and H3a were added, and the planned narrowing is stated as the count comparison H3b; the focal length is 50 mm and the near focus 500 mm; and the equivalent focal lengths are computed at infinity focus only. Before the pilot ran, three unused variables were deleted from the script, which changed no value or print. The editor approved the example as piloted, and the code and output above are the first run, which a repeat reproduced identically.

Common Misconceptions

  • “Focal length sets the field of view.” Only together with the sensor size: the same 50 mm lens covers 39.6° horizontally on full frame and 6.6° on the compact in the example. A lens’s focal length is fixed; the angle of view belongs to the lens and sensor together.
  • “A crop sensor lengthens the lens.” The lens and its image are unchanged; the smaller sensor records a smaller central part of that image. The equivalent focal length describes the angle of the cropped frame, which is why digital zoom by cropping gives the same angle as a longer lens, with fewer pixels.
  • “35 mm equivalent means the same photograph.” It matches the angle along one dimension. The example shows that for a 4:3 format no single equivalent focal length matches the horizontal, vertical and diagonal angles at once, and Levoy (Optics I, slide 69) shows that depth of field differs too under his stated assumptions.
  • “There is one crop factor per format.” Levoy defines it by width; matching the diagonal gives a value about 4% different for 4:3 formats. A quoted crop factor or equivalent focal length needs its convention.
  • “A lens’s field of view is fixed.” It depends on the image distance, which changes with focus: in the thin-lens model, focusing a 50 mm lens at 0.5 m narrows the full-frame horizontal angle from 39.6° to 35.9°.
  • “Field-of-view figures are horizontal.” Levoy’s slide 31 measures the angle diagonally, and Tanks and Temples quotes an 84° diagonal field of view for a 12 mm lens. Check which extent a quoted figure uses before comparing it with 2arctan⁡(W/2fx)2\arctan(W/2f_x).
  • “Telephoto lenses compress distance.” The flattening comes from the distance of the camera, not from the focal length (see the pinhole camera model); and in Levoy’s usage “telephoto” names a lens design whose back focal distance is shorter than its focal length.
  • “Field of view is the receptive field.” The receptive field of a network unit is the region of input pixels it depends on; it is unrelated to the optical angle of view.

Where It Is Used

  • Calibration and geometry. The focal length in pixels in the intrinsic matrix is the focal length divided by the pixel pitch, and the angle of view follows from it and the image size (camera parameters). Camera calibration estimates it for one focus and zoom setting, which is why the angle-of-view change with focus matters for measurement.
  • System design. Vision system design chooses the sensor, the focal length and the working distance so that the field of view on the object covers the part with enough pixels.
  • Cameras and phones. Digital camera describes phones that carry several modules with different focal lengths and fields of view, from ultra-wide to telephoto, on sensors far smaller than full frame.
  • Rendering and neural scene models. Neural radiance fields and other renderers set the focal length from a chosen angle of view by inverting the formula above.
  • Panoramas and wide views. Image stitching combines several views into a wider field of view than one lens gives, and lens distortion models the fisheye lenses that approach or pass 180°.
  • Datasets and simulation. Datasets record the lenses and fields of view of their cameras (Tanks and Temples), and embodied agents in simulation are specified by the angle of view of their sensors (visual navigation).

Related

  • Camera Intrinsic and Extrinsic Parameters

    The parameters of the pinhole camera matrix P = K[R | t], split into intrinsics K, which map camera coordinates to pixels, and extrinsics R and t, which place the camera in the world.

  • Designing a Computer Vision System

    How a working vision system is designed from its requirements, through the choice of sensor, optics, lighting, compute and model, to the data it is trained on, its validation in the field and its maintenance once deployed, with the requirement arithmetic for a measurement station worked through in code.

  • Digital Camera

    The camera as an imaging system, from lens, shutter and sensor to the image signal processor that demosaics, white-balances, colour-corrects, tone-maps and compresses its output; RAW against processed images, metadata, machine-vision interfaces, camera classes, and where processing breaks the assumptions of vision methods.

  • Lens Distortion

    The systematic deviation of a real lens from the pinhole model's straight-line projection, which bends straight lines in the image and is modeled, estimated, and removed as part of camera calibration.

  • Image Formation

    How light leaving a scene becomes an array of pixel values, through illumination and reflectance, the lens, the sensor and its colour filters, sampling and quantization, and the camera's own processing.

  • Image Sensor

    How the chip behind a camera lens turns light into numbers, from photosites and quantum efficiency to CCD and CMOS readout, full-well capacity, noise, gain and the ADC, colour filters, rolling and global shutters, and EMVA 1288 measurements.

References

  1. Levoy, M. (2013). Image Formation. Lecture slides, CS 178: Digital Photography, Stanford University, Spring 2013 (cited by slide number).
  2. Levoy, M. (2013). Optics I: Lenses and Apertures. Lecture slides, CS 178: Digital Photography, Stanford University, Spring 2013 (cited by slide number).
  3. Levoy, M. (2013). Optics II: Practical Photographic Lenses. Lecture slides, CS 178: Digital Photography, Stanford University, Spring 2013 (cited by slide number).
  4. Torralba, A., Isola, P. & Freeman, W. T. (2024). Foundations of Computer Vision. MIT Press. Chapter 5, Imaging, §5.3.2 (read in the online edition).
  5. London, Stone & Upton (2008). Photography (9th ed.). Prentice Hall. As listed in the credits of Levoy's Image Formation slides (not read).