The Image Formation Model

Every computer vision system begins with a single, humbling fact: a camera destroys information. A three-dimensional world full of depth, occlusion, and material texture collapses onto a flat, two-dimensional grid of numbers. The image formation model is the mathematical account of exactly how that collapse happens. It shows which physical quantities are lost, which are preserved, and how the surviving light is measured as pixel intensity. Understanding this model is not academic bookkeeping. It is the reason a self-driving car cannot simply "see" distance from one photograph. It is also the reason two photos of the same scene look different in brightness. And it is the reason algorithms for Stereo Vision and Structure from Motion must explicitly model geometry and light, rather than treat images as arbitrary arrays. The central idea is to split image formation into two independent stages: a geometric stage that determines where a point in the world lands on the sensor, and a photometric (radiometric) stage that determines how much light energy arrives there and how the sensor converts that energy into a number. Geometry answers "which pixel?"; radiometry answers "what value?". Keeping these two questions separate is the single most useful conceptual move in the entire subject. It lets you reason about lens distortion, camera pose, and 3D structure without worrying about exposure. It also lets you reason about shading and reflectance without worrying about camera position. This separation is not just pedagogical convenience — it mirrors the actual physics. Light leaves a source and bounces off surfaces according to their material properties (reflectance). It travels in straight lines through space, is bent by a lens, and is finally integrated over a small sensor area and a finite exposure time. Each of these physical steps has a clean mathematical description. Chaining them together produces the full image formation equation used throughout computer vision, graphics, and photogrammetry. This article builds that chain from first principles: the pinhole projection that maps 3D points to 2D pixels, the radiometric quantities (radiance, irradiance) that connect scene brightness to sensor response, and the combined model that explains phenomena such as vignetting, exposure, and depth-dependent blur. It sets up, but deliberately does not fully develop, the two natural next topics: the precise geometry of The Pinhole Camera Model and the role of real Lenses and Optics in shaping that idealized picture.

Key takeaways
  • Image formation splits cleanly into geometry (where a 3D point lands) and radiometry (what value it gets).
  • The pinhole/perspective model maps a 3D point to 2D via a simple projection: divide by depth, scale by focal length.
  • Radiance leaving a surface, not the surface color alone, determines image brightness — light source, geometry, and material all matter.
  • Image irradiance is proportional to scene radiance, modulated by the camera's aperture, focal length, and off-axis angle (the cos⁴ falloff).
  • The full pipeline — scene radiance → lens → sensor irradiance → integration time → quantization — explains vignetting, noise, and exposure.
  • This model underlies camera calibration, 3D reconstruction, photometric stereo, and every downstream vision algorithm that assumes a physical camera.
The core insight

An image is the result of two independent physical processes — geometric projection of points and radiometric measurement of light — and every vision algorithm implicitly assumes some model of both.

The idea

The image formation model describes the transformation from a scene, a continuous distribution of light-emitting and light-reflecting surfaces in 3D space, to an image, a discrete 2D array of intensity values. This transformation is usually decomposed into a geometric projection and a radiometric response. The geometric part answers: given a 3D point P=(X,Y,Z)\mathbf{P} = (X, Y, Z) in the world, at which pixel (u,v)(u, v) does it appear? The simplest and most widely used answer is the pinhole (perspective) projection: light from P\mathbf{P} travels in a straight line through a single point (the optical center) and strikes an image plane at distance ff (the focal length) behind it. This produces the projection equations

x=f XZ,y=f YZx = f\,\frac{X}{Z}, \qquad y = f\,\frac{Y}{Z}

where (x,y)(x, y) are coordinates on the image plane, later converted to pixel coordinates (u,v)(u, v) via the sensor's pixel size and principal point offset. The key qualitative fact — objects farther away (ZZ larger) project smaller — is what makes monocular depth ambiguous and multi-view geometry necessary. The radiometric part answers: given that a ray from P\mathbf{P} reaches the sensor, what numerical value does that pixel record? This depends on the scene radiance LL leaving the surface toward the camera (itself a function of illumination, surface orientation, and material reflectance), the image irradiance EE that radiance produces at the sensor after passing through the lens aperture, and finally the sensor's conversion of irradiance, integrated over exposure time, into a digital number through gain and quantization. Radiance is preserved along a ray in free space (ignoring atmospheric effects), but irradiance at the sensor is not equal to radiance — it is attenuated by the lens geometry, most importantly by a factor of cos⁡4α\cos^4\alpha where α\alpha is the angle between the ray and the optical axis, which is the physical origin of vignetting (darkening toward image corners). Putting the two halves together gives the full image formation equation used throughout the field:

I(u,v)=g( τ∫ΔtE(u,v,t) dt )+noiseI(u, v) = g\Big(\, \tau \int_{\Delta t} E(u,v,t)\, dt \,\Big) + \text{noise}

where EE is irradiance at pixel (u,v)(u,v) derived from scene radiance via the geometric mapping and lens aperture, Δt\Delta t is exposure time, τ\tau is a sensor gain, and g(⋅)g(\cdot) is a (possibly nonlinear) camera response function converting accumulated charge to a digital pixel value. Every vision algorithm that assumes "brighter surface ⇒\Rightarrow brighter pixel" or "closer object ⇒\Rightarrow different pixel location" is implicitly relying on some version of this equation.

How it works

The image formation pipeline can be broken into five explicit stages, each with a well-defined mathematical operation. This decomposition is what lets camera calibration, photometric correction, and 3D reconstruction be solved as separate, tractable sub-problems rather than one intractable black box.

Stage 1 — Scene radiance. For each visible surface point, compute the radiance LL leaving that point toward the camera. This depends on incoming illumination LiL_i from all directions, the surface's bidirectional reflectance distribution function (BRDF) frf_r, and the surface normal n\mathbf{n}:

L(p,ωo)=∫Ωfr(p,ωi,ωo) Li(p,ωi) (n⋅ωi) dωiL(\mathbf{p}, \omega_o) = \int_{\Omega} f_r(\mathbf{p}, \omega_i, \omega_o)\, L_i(\mathbf{p}, \omega_i)\, (\mathbf{n}\cdot\omega_i)\, d\omega_i

Stage 2 — Geometric projection. Map the 3D point to a 2D location on the image plane using the pinhole model (extended later with lens distortion). This uses the camera's extrinsic parameters (rotation RR, translation t\mathbf{t}, placing the point in camera coordinates) and intrinsic parameters (focal length, pixel scale, principal point).

Stage 3 — Lens aperture and irradiance. Convert the radiance arriving along each ray into image irradiance EE at the corresponding pixel, accounting for the lens aperture diameter dd, focal length ff, and the off-axis angle α\alpha:

E=L⋅π4(df)2cos⁡4αE = L \cdot \frac{\pi}{4}\left(\frac{d}{f}\right)^2 \cos^4 \alpha

Stage 4 — Sensor integration. Integrate irradiance over the pixel's finite area and the exposure time Δt\Delta t, then apply gain τ\tau (ISO-like sensitivity) to produce an analog signal.

Stage 5 — Quantization and response. Apply the sensor/ISP response function g(⋅)g(\cdot) (often approximately linear for RAW data, nonlinear such as gamma-corrected for JPEG output), add sensor noise, and quantize to a fixed bit depth (e.g., 8 or 12 bits). The pseudocode below implements this pipeline for a synthetic scene made of point samples with known position, normal, and material, which is exactly how physically based renderers and vision simulators generate labeled training data. ``` function FORM_IMAGE(scene_points, camera):

# scene_points: list of (P_world, normal, brdf, light_sources)

# camera: {R, t, f, pixel_size, principal_point, aperture_d, exposure_dt, gain, response_fn} image_irradiance = zeros(height, width) depth_buffer = full(height, width, +infinity) for each point in scene_points:

# --- Stage 1: radiance leaving the surface --- L = compute_radiance(point.normal, point.brdf, point.light_sources)

# --- Stage 2: geometric projection (pinhole) --- P_cam = camera.R point.P_world + camera.t # world -> camera coords if P_cam.Z <= 0: continue # behind the camera, skip x = camera.f P_cam.X / P_cam.Z y = camera.f * P_cam.Y / P_cam.Z (u, v) = to_pixel_coords(x, y, camera.pixel_size, camera.principal_point) if not in_bounds(u, v, height, width): continue

# --- occlusion: keep only the nearest point per pixel --- if P_cam.Z >= depth_buffer[u, v]: continue depth_buffer[u, v] = P_cam.Z

# --- Stage 3: radiance -> irradiance via lens aperture, cos^4 falloff --- alpha = angle_between(ray_direction(u, v, camera), camera.optical_axis) E = L (pi / 4) (camera.aperture_d / camera.f)^2 * cos(alpha)^4 image_irradiance[u, v] = E

# --- Stage 4: integrate over exposure time and apply gain --- signal = image_irradiance camera.exposure_dt camera.gain

# --- Stage 5: response function, noise, quantization --- signal = signal + sample_sensor_noise(signal) pixel_values = quantize(camera.response_fn(signal), bit_depth=8) return pixel_values ``` The loop over `scene_points` with a depth buffer is the standard way to correctly resolve occlusion: multiple 3D points can project to the same pixel, and only the nearest (smallest camera-space depth ZZ) should contribute, since it physically blocks light from farther points along that ray.

Figure
The image formation pipeline: scene radiance to pixel value
scene point P radiance L lens / aperture d axis focal length f image plane (sensor) pixel (u,v): irradiance E 1. Radiance L 2. Projection 3. Irradiance E 4. Exposure & gain 5. Quantized pixel I(u,v)

Complexity & correctness

Time and space complexity. For a scene represented by NN point samples (or, in a rasterizer, NN triangle vertices) and an image of P=H×WP = H \times W pixels, the algorithm above performs O(1)O(1) work per point for radiance computation and projection, and O(1)O(1) amortized work per depth-buffer update, giving overall time complexity

O(N+P)O(N + P)

— linear in the number of scene primitives plus a constant pass to initialize and finalize the image buffer. Space complexity is O(P)O(P) for the irradiance image and depth buffer, plus O(N)O(N) to store the scene description if it must be kept in memory. This is asymptotically optimal: any correct renderer must at minimum write to every pixel it touches and read every scene primitive at least once, so Ω(N+P)\Omega(N + P) is a lower bound whenever primitives can independently affect arbitrary pixels. Real rasterizers using triangles rather than points add a per-triangle rasterization cost proportional to the triangle's projected pixel area, but the point-sample analysis captures the essential linear scaling.

Correctness argument. The correctness of the pipeline rests on three invariants that must each be maintained: 1. Projection invariant: a 3D point P\mathbf{P} with camera-frame depth Z>0Z > 0 projects to the unique pixel (u,v)(u,v) predicted by similar triangles under the pinhole assumption — this follows directly from Euclidean geometry: the ray from the origin through P\mathbf{P} intersects the plane Z=fZ = f at (fX/Z,fY/Z,f)(fX/Z, fY/Z, f), which is exactly the perspective divide used in Stage 2. Points with Z≤0Z \le 0 are behind the camera and must be discarded, otherwise the projection formula would place them incorrectly in front. 2. Occlusion invariant: at the end of processing, `depth_buffer[u,v]` holds the minimum camera-space depth among all points that projected to (u,v)(u,v), and `image_irradiance[u,v]` corresponds to that same nearest point. This is maintained inductively: each new candidate point is accepted only if its depth is strictly less than the current minimum, so after processing all NN points the buffer reflects the true visible surface — exactly the physical fact that opaque nearer surfaces block farther light along the same ray. 3. Radiometric invariant: the irradiance formula E=L⋅π4(d/f)2cos⁡4αE = L \cdot \frac{\pi}{4}(d/f)^2 \cos^4\alpha is not an approximation invented for convenience but follows from integrating radiance over the solid angle subtended by a lens aperture of diameter dd at distance ff, projected through angle α\alpha from the axis — the four factors of cos⁡α\cos\alpha arise from foreshortening of the aperture as seen from the point (one factor), foreshortening of the pixel as seen from the lens (one factor), and the inverse-square falloff of solid angle with the two remaining factors of cos⁡α\cos\alpha absorbed into the distance term. This derivation is standard in radiometry and explains why corners of wide-angle images are reliably darker even for a perfectly uniform scene.

Honest tradeoffs. The pinhole model ignores lens aberrations, diffraction, and finite aperture blur (depth of field), all of which require extending Stage 3 with a more detailed optical model — the subject of lens-based image formation. The point-sampled radiance model also ignores interreflection and global illumination unless the radiance computation in Stage 1 itself recursively accounts for light bouncing between surfaces, which is expensive. Finally, treating the sensor response g(⋅)g(\cdot) as known and fixed is itself an approximation; real cameras apply proprietary, often nonlinear in-camera processing (white balance, tone mapping, denoising) that must be estimated or inverted (radiometric calibration) before radiance-level reasoning is valid.

Worked example

Consider a small gray Lambertian sphere of radius 0.050.05 m sitting at world position (0,0,2)(0, 0, 2) m, illuminated by a point light of intensity such that the topmost surface point facing the camera has outgoing radiance L=120 W/(sr⋅m2)L = 120\ \text{W}/(\text{sr}\cdot\text{m}^2). The camera has focal length f=0.05f = 0.05 m (50 mm), aperture diameter d=0.01d = 0.01 m (f/5f/5), pixel size 5 μm5\ \mu\text{m}, exposure time Δt=1/500 s\Delta t = 1/500\ \text{s}, gain τ=1\tau = 1, and a linear response g(x)=255⋅min⁡(x/xmax⁡,1)g(x) = 255 \cdot \min(x / x_{\max}, 1).

StageQuantityComputationResult
1. RadianceLL at the surface point closest to axisgiven120 W/(sr⋅m2)120\ \text{W}/(\text{sr}\cdot\text{m}^2)
2. ProjectionSurface point at (0.02,0,1.97)(0.02, 0, 1.97) m in camera framex=fX/Z, y=fY/Zx = f X/Z,\ y = f Y/Zx=0.05⋅0.02/1.97≈5.08×10−4x = 0.05\cdot0.02/1.97 \approx 5.08\times10^{-4} m, y≈0y \approx 0
2. Pixel coordsconvert to pixel with 5μ5\mum pitch, principal point at center (say 512,384)u=512+x/5μmu = 512 + x/5\mu\text{m}u≈512+101.6≈614u \approx 512 + 101.6 \approx 614, v=384v = 384
3. Off-axis angleα=arctan⁡(x2+y2/f)\alpha = \arctan(\sqrt{x^2+y^2}/f)arctan⁡(5.08×10−4/0.05)\arctan(5.08\times10^{-4}/0.05)α≈0.582∘\alpha \approx 0.582^\circ, cos⁡4α≈0.99994\cos^4\alpha \approx 0.99994
3. IrradianceE=L⋅π4(d/f)2cos⁡4αE = L\cdot\frac{\pi}{4}(d/f)^2\cos^4\alpha120⋅0.7854⋅(0.2)2⋅0.99994120 \cdot 0.7854 \cdot (0.2)^2 \cdot 0.99994E≈3.77 W/m2E \approx 3.77\ \text{W/m}^2
4. ExposureQ=E⋅Δt⋅τQ = E \cdot \Delta t \cdot \tau3.77×(1/500)×13.77 \times (1/500) \times 1Q≈7.54×10−3 J/m2Q \approx 7.54\times10^{-3}\ \text{J/m}^2
5. Quantized valueassume xmax⁡x_{\max} chosen so full well maps to 255255, e.g. xmax⁡=8×10−3x_{\max} = 8\times10^{-3}g(Q)g(Q)≈255×0.9425≈240\approx 255 \times 0.9425 \approx 240

The nearly-off-axis point (α≈0.58∘\alpha \approx 0.58^\circ) suffers negligible vignetting here, but repeating the same computation for a surface point projecting to the far image corner — say u=1000u = 1000, giving x≈0.0244x \approx 0.0244 m and α=arctan⁡(0.0244/0.05)≈26.0∘\alpha = \arctan(0.0244/0.05) \approx 26.0^\circ — yields cos⁡4(26.0∘)≈0.653\cos^4(26.0^\circ) \approx 0.653, roughly a 35% darkening purely from geometry, even though the physical surface radiance is identical. This is precisely the vignetting effect that flat-field calibration must remove before, for example, using pixel brightness as a proxy for surface reflectance in Photometric Stereo.

Common pitfalls & traps

PitfallWhy it happensConsequence
Confusing radiance and irradianceTreating "surface brightness" and "pixel value" as the same physical quantityIgnores lens attenuation, cos⁡4\cos^4 falloff, and exposure — breaks any photometric reasoning
Forgetting the Z>0Z > 0 (behind-camera) checkPerspective divide formula is applied blindlyPoints behind the camera are incorrectly projected as if in front, corrupting geometry
Skipping the depth buffer / occlusion testAssuming scene points are processed in a convenient orderFarther, hidden surfaces overwrite or blend with nearer visible ones
Assuming the camera response gg is linearRAW-vs-JPEG confusion; many pipelines apply gamma or tone-mappingRadiometric algorithms (shape-from-shading, photometric stereo) silently fail on processed JPEGs
Ignoring vignetting in wide-angle lensesThe cos⁡4α\cos^4\alpha term is small near the axis, easy to forgetUniform-albedo scenes appear to darken toward the edges, misread as material or lighting variation
Treating pixel size as isotropic without calibrationAssuming square pixels and a centered principal pointSmall calibration errors compound into large 3D reconstruction errors

Pioneers & history

The image formation model synthesizes three historically separate lineages: the geometry of perspective from Renaissance art and optics, the physics of radiometric measurement, and the computational formalization of both within computer vision starting in the 1970s–1980s.

Origins · 1 minBerthold K. P. Horn and how this was discovered
BK
Berthold K. P. Horn
1943–present · Formalized image irradiance equations and shape-from-shading, connecting radiometry to computer vision

Horn's work at MIT established the image irradiance equation relating scene radiance, surface orientation, and pixel brightness in a rigorous, computable form, laying the mathematical groundwork that this article's radiometric stages directly follow.

History
1435
— Leon Battista Alberti formalizes linear perspective geometry, the ancestor of the pinhole projection equations.
1604
— Johannes Kepler describes the camera obscura and pinhole image formation mathematically.
1970
— Berthold Horn develops the image irradiance equation, linking radiance, surface normals, and pixel brightness.
1980
— Horn and Robert Sjoberg formalize photometric stereo, directly exploiting the radiometric side of image formation.
1998
— Debevec and Malik popularize practical radiometric calibration (recovering the camera response function) for high dynamic range imaging.

Where this matters

Camera calibration pipelines, used in every robotics and augmented-reality system, exist precisely to estimate the intrinsic and extrinsic parameters of the geometric half of this model, so that pixel coordinates can be converted back into 3D rays. Multi-view 3D reconstruction, autonomous vehicle perception stacks, and photogrammetry software (used for mapping, archaeology, and visual effects) all depend on the pinhole projection equation being an accurate — or accurately corrected — description of how points land in the image. On the radiometric side, high dynamic range (HDR) imaging, photometric stereo for industrial inspection and film-quality 3D scanning, and physically based rendering engines used in game and movie production all rely on recovering or simulating the sensor's radiometric response function. Even modern learned approaches — neural radiance fields, differentiable rendering, and self-supervised depth estimation from video — bake the same pinhole-and-radiance equations directly into their loss functions and forward models, showing that this classical formulation remains foundational even inside deep learning systems. Consumer smartphone cameras apply real-time vignetting correction and exposure fusion that are direct engineering responses to the cos⁡4α\cos^4\alpha falloff and dynamic-range limits described here.

Ask the tutor: How does adding real lens distortion change the geometric projection equations derived here?

Why is image formation split into geometric and radiometric parts instead of one unified model?

Because the two processes are physically and mathematically independent given a fixed camera and scene. Geometry depends only on the position and orientation of points relative to the camera (rigid transforms and projection), while radiometry depends only on light transport and material reflectance. Splitting them lets you solve each with the tools suited to it: geometry with linear algebra and projective transforms (used in calibration and 3D reconstruction), radiometry with integrals over the BRDF and illumination (used in shading and photometric stereo). This separation is also why you can calibrate a camera's geometry using a printed checkerboard under any lighting, and separately correct its radiometric response using a gray card, without the two calibrations interfering.

Does the pinhole model ever break down badly enough to matter in practice?

Yes, in two common situations. First, wide-angle and fisheye lenses introduce significant radial distortion that the linear pinhole equations do not capture, requiring an added distortion model (typically polynomial in radius) before pixel coordinates match reality. Second, real lenses have finite aperture, producing depth-of-field blur that the infinitesimally small pinhole aperture cannot represent at all — a truly ideal pinhole has infinite depth of field but also admits almost no light. Both issues are addressed by extending the model with real lens optics, which trade off sharpness, light-gathering, and geometric fidelity in ways the ideal pinhole abstraction ignores.

What is the difference between radiance and irradiance, precisely?

Radiance LL is a property of a ray of light: power per unit area per unit solid angle per unit projected area, roughly "how bright a ray is" independent of any observer, and it is invariant along a ray in a vacuum. Irradiance EE is a property of a surface (such as the camera sensor): power per unit area arriving from all incoming directions, obtained by integrating incoming radiance over a hemisphere of directions weighted by the cosine of incidence angle. A camera sensor measures irradiance (accumulated over exposure time), but that irradiance is derived from the radiance of the scene points imaged through the lens, related by the aperture and cos⁴α attenuation described in this article.

How does exposure time interact with the geometric model?

Exposure time is purely a radiometric/temporal parameter and does not affect where points project — the geometric mapping from 3D to pixel coordinates is instantaneous and independent of Δt\Delta t. However, exposure time strongly affects two things the geometric model assumes are fixed: if the camera or scene moves during a long exposure, points effectively project to a range of pixels (motion blur), violating the static-projection assumption, and if Δt\Delta t is too short or too long, the accumulated signal underflows into noise or saturates, both of which corrupt the radiometric measurement even though the geometry remains correct.

Why do vision researchers care about the camera response function g(·) instead of just using raw pixel values?

Many classic and modern algorithms — shape-from-shading, photometric stereo, high dynamic range merging, intrinsic image decomposition — need pixel values that are linear in scene irradiance to apply their underlying physical equations correctly. If the camera applies a nonlinear response (common for perceptual reasons: gamma encoding matches human brightness perception and compresses dynamic range for 8-bit storage), then naively treating pixel value as radiance introduces systematic multiplicative and additive errors. Radiometric calibration methods, such as recovering g(⋅)g(\cdot) from multiple differently-exposed photos of a static scene, invert this nonlinearity so that downstream physically based reasoning becomes valid again.

Is the pinhole camera model still relevant given deep learning-based vision systems?

Yes, arguably more than ever. Neural radiance fields, differentiable renderers, and self-supervised monocular depth networks all embed the pinhole (or a distorted extension of it) projection equation directly inside their loss functions, because it is the correct, differentiable, and data-efficient way to relate 3D structure to 2D observations. Even purely data-driven detectors benefit from knowing the camera's intrinsics when reasoning about object scale or distance. The image formation model is not replaced by learning — it is the physical scaffolding that tells a learned model what geometric and photometric relationship it should be learning to exploit or invert.

Where this leads