CCTVplanner Research
    Technical Note · CP-TN-01

    The geometry of CCTV camera coverage

    How a tilted, mast-mounted camera images the ground — frustum geometry, lens projections, and the DORI distance standard, derived from first principles and drawn by the same code that powers the live designer.

    ID CP-TN-01Version 1.0Published 2026-07Standard EN 62676-43 live figures — drag to recompute
    Abstract

    We derive, from the pinhole camera model, the ground footprint of a tilted, mast-mounted CCTV camera: the near- and far-edge intersections, the geometric blind spot directly under the mount, and the DORI target distances of EN 62676-4 rendered as on-ground arcs. Every figure below is computed live by the geometry module that ships with the CCTVplanner designer — move the sliders to reproduce each result. We close with lens-projection models, the datasheet HFOV/DFOV trap, obstacle shadowing, a parameter error budget, and the assumptions under which the model can be trusted.

    Conventions
    ground
    plane z = 0
    camera
    optical centre at height z = h
    axes
    +x right · +y forward · +z up
    tilt α
    measured downward from horizontal
    rays
    cast from the optical centre in basis (f, r, u)
    angles
    radians in derivatives; degrees in the figures
    Scope — what this note is not

    A purely geometric model of where a camera’s rays land. Within its stated assumptions it is geometrically exact — mathematically precise, though bounded in scope. It does not attempt to model:

    • image quality or sensor noise
    • video compression artefacts
    • lighting, low-light, or IR reach
    • AI / analytics detection accuracy

    1From frustum to ground footprint

    A pinhole camera defines a view frustum: a four-sided pyramid extending from the camera’s optical centre out to the boundaries of its image plane. Each image point — a pixel centre in the discrete implementation — defines a viewing ray from the optical centre through the image plane. To find the region of ground a camera covers, we intersect each ray with the ground plane and keep the points inside the camera’s range. The pinhole model is used here because it gives an analytically tractable approximation that matches the geometric assumptions of EN 62676-4 and the published specifications of most fixed CCTV cameras.

    For a camera at height h, tilted by α below horizontal, with a vertical field of view vfov, the outer envelope of coverage is traced by the image boundary — for a rectilinear projection the four corner rays alone define it, while for fisheye projections it is sampled along the whole boundary. In typical mounts (where α+vfov2<90\alpha + \tfrac{\text{vfov}}{2} < 90^\circ) the shape is an approximately trapezoidal footprint with curved corners — not a triangle or a sector originating at the mount. As α+vfov2\alpha + \tfrac{\text{vfov}}{2} approaches 90° (steep ceiling domes), the lower image edge meets the ground at the base of the mast and the footprint degenerates toward a sector.

    Figure 1Top-down ground footprint
    range 28 mh 4 mtilt 26°hfov 102°
    Fig. 1. Ground footprint from the production geometry module. The lower edge meets the ground a short way in front of the camera; the lateral edges fan outward; the far edge is clamped at the effective range. Widen hfov past 180° and the footprint wraps to a full disk.

    2Near- and far-edge intersection

    Each image-plane sample (s_H, s_V) ∈ [−1, 1]² maps to a viewing-ray direction in the camera frame:

    d(sH,sV)=f+sHtanHFOV2r+sVtanVFOV2u\mathbf{d}(s_H, s_V) = \mathbf{f} + s_H\tan\tfrac{\text{HFOV}}{2}\,\mathbf{r} + s_V\tan\tfrac{\text{VFOV}}{2}\,\mathbf{u}
    (1)

    where f, r, u are the forward / right / up camera basis vectors (pan and tilt already applied) — this is where HFOV and VFOV enter the geometry. Intersecting the ray from the optical centre along d with the ground plane z = 0 gives each footprint sample. The lower-edge ray (s_V = −1) meets the ground at the near distance, the upper-edge ray (s_V = +1) at the far:

    dnear=htan ⁣(α+vfov2)d_{\text{near}} = \dfrac{h}{\tan\!\left(\alpha + \frac{\text{vfov}}{2}\right)}
    (2)
    dfar={htan ⁣(αvfov2),α>vfov2  (below horizon)  clamp to R,αvfov2  (edge above horizon)d_{\text{far}} = \begin{cases} \dfrac{h}{\tan\!\left(\alpha - \frac{\text{vfov}}{2}\right)}, & \alpha > \tfrac{\text{vfov}}{2}\ \ (\text{below horizon}) \\[10pt] \infty \ \rightarrow\ \text{clamp to } R, & \alpha \le \tfrac{\text{vfov}}{2}\ \ (\text{edge above horizon}) \end{cases}
    (3)
    Figure 2Side view — rays, ground strip, blind spot
    h = 6 mcamerablind · 7.2 md_near = 7.2 mrange = 38 mh 6 mtilt α 16°vfov 48°
    Fig. 2. Side elevation. The two blue lines are the lower- and upper-edge rays; the thick blue strip is where the camera images the floor (d_neard_far). The red wedge under the mast is the region no ray reaches. Raise h to watch the blind spot grow (§3); lower α below vfov/2 and the far edge rises above the horizon and clamps to range.

    For the lateral edges (s_H = ±1) the same construction runs in the horizontal plane. For rectilinear lenses (the dominant CCTV optic) these project to diverging straight lines — the trapezoid’s slanted sides. For fisheye lenses the mapping is curved and the footprint becomes a curved disk.

    3The geometric blind spot

    For any camera mounted above the ground and tilted less than 90vfov290^\circ - \tfrac{\text{vfov}}{2}, a region directly under the mount receives no ray. Everything closer than d_near is outside the image entirely, and with tilt and FOV fixed the blind spot scales linearly with height:

    dnear=hcot ⁣(α+vfov2),dnearh=cot ⁣(α+vfov2)d_{\text{near}} = h\,\cot\!\left(\alpha + \tfrac{\text{vfov}}{2}\right), \qquad \frac{\partial d_{\text{near}}}{\partial h} = \cot\!\left(\alpha + \tfrac{\text{vfov}}{2}\right)
    (4)

    A camera at 15° tilt with a 50° vertical FOV has a blind spot of 4.8 m at 4 m and 23.8 m at 20 m — a 5× ratio matching the height ratio. The ratio of blind area to coverage area is the dominant constraint on high-mast placement.

    4DORI ranges (EN 62676-4)

    The DORI standard (Detect / Observe / Recognize / Identify) defines target pixel densities — Identify 250, Recognize 125, Observe 62.5, Detect 25 px/m. A given density is reached at a specific slant (line-of-sight) distance from the lens: the object distance in the imaging relation px/m=fres/(sensord)\text{px/m} = f\cdot\text{res}/(\text{sensor}\cdot d). To place a tier on a 2D map the designer projects that slant distance onto the ground as a horizontal ring at radius dslant2h2\sqrt{d_{\text{slant}}^{2} - h^2} (the module’s slantToGroundRadius), clipped by the footprint. So the arcs are horizontal ground radii derived from the slant tier distance — they equal the slant distance only for a ground-level camera and pull inward as the mount rises. Section 10 maps these px/m tiers to the screen-height, pixels-per-foot, and line-pair criteria used elsewhere in the world.

    Figure 3DORI rings as on-ground arcs
    Identify · 7 mRecognize · 15 mObserve · 32 mDetect · 64 mh 4 mtilt 20°hfov 90°range 70 m
    Identify
    250 px/m
    Recognize
    125 px/m
    Observe
    62.5 px/m
    Detect
    25 px/m
    Fig. 3. DORI tiers inside the footprint. The tier slant distances (8 / 16 / 32 / 64 m, illustrative for a 1080p camera at ~90° HFOV) are projected onto the ground by the engine’s slantToGroundRadius, so each label shows the horizontal radius d2h2\sqrt{d^2 - h^2}. Raise h and the near tiers pull in, then vanish once the camera sits above the slant sphere. Narrow the hfov and the cone gets too thin to hold the outer rings.

    The ground projection. Each tier’s slant distance becomes a horizontal ground radius:

    rground=dslant2h2r_{\text{ground}} = \sqrt{\,d_{\text{slant}}^{\,2} - h^2\,}
    (5)

    A 6 m-mounted camera whose Identify tier (250 px/m) is reached at an 8 m slant distance covers a 5.3 m horizontal ground radius (6436\sqrt{64 - 36}). This is exactly the projection the designer, PDF, and DXF exports apply to every tier. (A legacy fallback — PTZ cameras and cameras with no mount-height / blind-spot config — draws the raw slant distance as a flat radius without the height correction.)

    5Lens projection models

    Different lens designs map the angle θ from the optical axis to the image-plane radius r(θ) differently. The three used in CCTV:

    Projectionr(θ)Typical range
    Rectilinearftanθf\tan\thetaHFOV ≲ 120° — most fixed & varifocal lenses
    Equidistantfθf\,\thetaHFOV ≳ 140° — panoramic / fisheye
    Equisolid2fsin(θ/2)2f\sin(\theta/2)Fisheye preserving solid angle

    For rectilinear lenses the off-axis factor tanθ\tan\theta exceeds 1 once θ passes 45° (HFOV > 90°) and diverges as θ → 90°. As a numerical approximation — an implementation choice, not a property of the optics — CCTVplanner uses rectilinear up to 170° HFOV, then switches to equidistant for stability; equisolid is supported in the geometry layer for manufacturer data that specifies it.

    Datasheet trap: HFOV vs DFOV

    Many manufacturers — particularly Dahua, Hikvision, Uniview, Tiandy — quote a single FOV number that’s actually the diagonal field of view (DFOV). Feeding a DFOV into a tool that expects HFOV yields a footprint 10–15% too wide, with the error concentrated at the lateral edges where pixel density matters most. For a sensor of aspect ratio a (16:9 → a = 16/9):

    tanHFOV2=tanDFOV2aa2+1,tanVFOV2=tanDFOV21a2+1\tan\tfrac{\text{HFOV}}{2} = \tan\tfrac{\text{DFOV}}{2}\cdot\dfrac{a}{\sqrt{a^2+1}}, \qquad \tan\tfrac{\text{VFOV}}{2} = \tan\tfrac{\text{DFOV}}{2}\cdot\dfrac{1}{\sqrt{a^2+1}}
    (6)

    The mapping is non-linear: a tempting linear shortcut HFOVkDFOV\text{HFOV} \approx k\cdot\text{DFOV} works for narrow lenses but fails badly as the field widens. For a 16:9 sensor:

    DFOVExact HFOVExact VFOVLinear-shortcut error
    60°53.4°31.6°−1.1°
    80°72.4°44.7°−2.6°
    100°92.2°60.6°−5.0°
    120°113.0°80.7°−8.4°
    140°134.7°106.8°−12.7°

    6Obstacles, shadows, and the visible footprint

    Walls and fences block rays. Each opaque obstacle is modelled as a polygon or polyline; every segment is projected away from the camera to several times the render range, and the union of those per-segment shadows is the obstacle’s silhouette plus everything behind it. The visible footprint is then footprintshadows\text{footprint} \setminus \bigcup \text{shadows}, via the Martínez–Rueda polygon-difference algorithm.

    For 3D-aware analysis, an obstacle shorter than the camera casts a finite ground shadow. For a wall at horizontal distance d, camera height h_cam, obstacle top h_obs:

    dshadow=dhcamhcamhobs(hcam>hobs)d_{\text{shadow}} = d\cdot\dfrac{h_{\text{cam}}}{h_{\text{cam}} - h_{\text{obs}}}\quad (h_{\text{cam}} > h_{\text{obs}})
    (7)

    For hobshcamh_{\text{obs}} \ge h_{\text{cam}} the obstacle blocks the line of sight entirely — an infinite shadow, treated as a fully opaque blocker. For buildings and generic obstacles this finite-height model is always applied whenever the camera sits above the structure; for fences it is gated by the "Use vertical height (3D)" toggle (default: opaque blocker). The shadow-end math lives in obstacleTypes.ts; obstacleClipping.ts runs the polygon-difference subtraction.

    7Multi-floor projection

    The frustum-to-ground intersection generalises to any horizontal plane: replace z=0z = 0 with z=ztargetz = z_{\text{target}}, solve the same ray-plane equation for every corner ray, and the result is the footprint on that floor. A camera on the second storey of an atrium covers the ground floor by the same construction — just a different z_target and vertical offset.

    8Assumptions and limits

    Every formula above rests on simplifying assumptions. They hold for the bulk of fixed-mount CCTV but break in specific conditions — documented so practitioners know when to trust the model.

    Model assumptions

    • Flat ground (z=0)(z = 0) — no slope, no Earth curvature.
    • Static camera at capture — no PTZ motion, no vibration.
    • Pinhole model — no Brown–Conrady lens distortion (k₁, k₂, p₁, p₂).
    • Ideal calibration — pitch, focal length, optical centre match spec.
    • No rolling shutter; whole frame captured at one instant.
    • No camera roll; sensor stays horizontal.
    • Single optical path — no dome refraction, no reflections.

    When it breaks down

    • Sloped terrain — footprint shifts asymmetrically, error ≈ ±h·tan(slope) per metre.
    • Wide-angle distortion — beyond ~110° HFOV rectilinear can diverge by several percent at the corners (lens, calibration, and model dependent).
    • Glass domes — mm-scale refractive shift; matters only for high-precision DORI.
    • Multi-bounce optics — reflections are not traced; line-of-sight only.
    • PTZ in motion — the model gives one pan/tilt; coverage is the swept footprint.
    • Install tolerance — real angles deviate 1–3°; §9 quantifies the impact.

    9Error sensitivity

    Input errors (height, tilt, FOV) propagate to ground-position error. For the near intersection dnear=h/tan(α+vfov/2)d_{\text{near}} = h/\tan(\alpha + \text{vfov}/2), the partial derivatives are:

    dnearh=dnearh,dnearα=hsin2(α+vfov/2),dnearvfov=h2sin2(α+vfov/2)(α, vfov in radians)\begin{gathered} \dfrac{\partial d_{\text{near}}}{\partial h} = \dfrac{d_{\text{near}}}{h}, \quad \dfrac{\partial d_{\text{near}}}{\partial \alpha} = \dfrac{-h}{\sin^2(\alpha + \text{vfov}/2)}, \quad \dfrac{\partial d_{\text{near}}}{\partial\,\text{vfov}} = \dfrac{-h}{2\sin^2(\alpha + \text{vfov}/2)} \\[5pt] \footnotesize (\alpha,\ \mathrm{vfov}\ \text{in radians}) \end{gathered}
    (8)

    Angular partials are in radians (× π/180\pi/180 for per-degree). For a typical config (h = 10 m, tilt = 15°, vfov = 50° → d_near ≈ 11.9 m):

    ParameterInput errorΔ d_nearNote
    tilt α±1°±0.42 minclinometer resolution
    tilt α±3°±1.27 meyeball bracket install
    height h±0.5 m±0.59 mtape, inaccessible mast
    vfov±1°±0.21 mdatasheet rounding
    combinedRMS~1.4 mat 3° + 0.5 m + 1°

    Put plainly: a 1° installation error can shift the Identify zone by more than the width of a doorway. Install-angle uncertainty dominates: every degree of tilt error costs ~42 cm at d_near here. A laser inclinometer to 0.1° keeps tilt-driven error under 5 cm; an eyeballed bracket is good to ~±1 m. For DORI tier verification — where Recognize and Identify rings can sit 2–3 m apart — tilt should be measured, not estimated.

    10Target-distance criteria across standards

    DORI is the international lingua franca, but a designer works under whatever standard the jurisdiction mandates. Every framework encodes the same physical quantity — required detail at a distance — in one of four units: pixels per metre, percentage of screen height, pixels per foot, or Johnson line-pairs. The geometry above is identical; only the readout changes.

    RegionStandardUnitDetect / Recognise / Identifyvs DORI
    Intl · EUIEC / EN 62676-4 (2014·2025)px/m25 / 125 / 250 (Obs 62.5)reference ladder
    EU legacyEN 50132-7:2012% screen10% / 50% / 100%screen-height form
    UKHOSDB 28/09 · Rotakin% screen10% / 50% / 100%†= EN 50132-7
    AU · NZAS 4806.2 → AS/NZS 62676% → px/m10% / 50% / 100% → DORImigrating to DORI
    USDHS S&T handbook · PPFpx/ft~10 / 40 / 80 ppfDORI × 0.305
    ChinaGB 37300-2018px on targetbody ≥200 · face ≥300 · plate ≥100px-on-target
    UAEDubai SIRApx/m63.5 / 125 / 250≈ DORI
    IndiaBIS IS 16910-4px/m= DORIadopts IEC 62676-4
    RussiaGOST R 51558-2014 ‡inter-eye pxface ID ≥60 px IED ‡partial D/R/I
    Mil · thermalJohnson 1958 · TTPline-pairs1.0 / 4.0 / 6.4 cycunderlying model
    Face biometricISO/IEC 19794-5 · 39794-5inter-eye px~10 / ~40 / ≥90 (IED)floor under Identify

    † UK Identify = 100% of screen height (HOSDB 28/09, 2009); the earlier PSDB 17/94 / Rotakin specification used 120%. Criteria are for a ~1.6–1.7 m reference person. ‡ Russia GOST R 51558 is low-confidence here — the primary text is paywalled and secondary sources disagree, so treat the value as indicative. Face-biometric IED = inter-eye (pupil-to-pupil) distance: the pixel floor that "Identify" ultimately rests on.

    Not every jurisdiction fixes a number. Canada (RCMP GCPSG-011) and, in practice, Saudi Arabia (HCIS) require camera performance to be justified by a site risk assessment rather than a set pixel target, and Japan publishes no dedicated CCTV distance criterion.

    The 2025 revision of IEC 62676-4 replaces the four DORI tiers with a seven-step OODPCVS ladder — Overview, Outline, Discern, Perceive, Characterise, Validate, Scrutinise — at 20 / 40 / 80 / 125 / 250 / 500 / 1500 px/m. The CCTVplanner engine computes both.

    Because all four units measure the same thing, they inter-convert exactly given the sensor resolution and the target’s size:

    ppf=0.3048×(px/m)%screen height=100(px/m)HtargetVpixelspx/m=2Ndc  (N=Johnson line-pairs, dc=critical dim.)\begin{aligned} \text{ppf} &= 0.3048 \times (\text{px/m}) \\[3pt] \%\,\text{screen height} &= 100\cdot\frac{(\text{px/m})\cdot H_{\text{target}}}{V_{\text{pixels}}} \\[3pt] \text{px/m} &= \frac{2N}{d_c}\ \ (N=\text{Johnson line-pairs},\ d_c=\text{critical dim.}) \end{aligned}
    (9)

    So one distance in the engine reads out as 250 px/m (DORI Identify), 100% screen height (EN 50132-7 / HOSDB), 76 px/ft (US), or 6.4 line-pairs (Johnson) — the same camera, four vocabularies.

    11Common misconceptions

    Four confusions account for most of the gap between a paper design and what gets installed — each a direct consequence of the geometry above.

    HFOV is the same as DFOV.
    Datasheets often quote the diagonal FOV. Used as horizontal it over-widens the footprint 10–15% and inflates every DORI range (§5).
    A wider lens means better coverage.
    A wider lens spreads the same pixels over more scene, so pixel density — and every DORI distance — drops. More area, less identifiable detail.
    Mounting higher always improves visibility.
    Height grows the blind spot linearly (§3) and steepens the look-down angle; past a point you image more scalp and roof than face.
    A DORI distance plots straight onto the map as a ground radius.
    The px/m is met at the slant (line-of-sight) distance; the map ring is its ground projection √(slant²−h²), which pulls inward as the camera is mounted higher (§4).

    12Reproducibility

    Every formula here is implemented directly in the geometry module that ships with the CCTVplanner designer — without approximation beyond numerical sampling, polygon clipping, and floating-point ordering — covered by a unit-test suite across rectilinear / equidistant / equisolid projections, blind-spot edge cases, DORI ground projection, polygon-Boolean obstacle clipping, and the multi-floor extension. Every figure on this page calls those same functions.

    Key entry points

    • buildFrustum(args)camera basis + frustum metadata
    • computeGroundFootprint(frustum, projection)sampled footprint polygon
    • slantToGroundRadius(frustum, slantM)d2h2\sqrt{d^2 - h^2} with reachability check
    • subtractObstacleShadows(footprint, shadows)Martínez–Rueda difference
    • computeFloorFootprint(frustum, z, projection)multi-floor variant

    §References

    1. [1]IEC 62676-4:2014 (with amendments) — Video surveillance systems for use in security applications, Part 4: Application guidelines (DORI target distances). Published as EN 62676-4 in Europe.
    2. [2]Hartley & Zisserman, Multiple View Geometry in Computer Vision, 2nd ed., Cambridge University Press, 2004.
    3. [3]Kannala & Brandt, "A generic camera model and calibration method for conventional, wide-angle, and fish-eye lenses," IEEE TPAMI, 2006.
    4. [4]Martínez, Rueda & Feito, "A new algorithm for computing Boolean operations on polygons," Computers & Geosciences, 2009 — with the 2013 follow-up in Advances in Engineering Software.
    5. [5]Szeliski, Computer Vision: Algorithms and Applications, 2nd ed., Springer, 2022 (projection models, camera geometry — standard reference).
    6. [6]EN 50132-7:2012 — Alarm systems, CCTV surveillance systems, Part 7: Application guidelines (screen-height operational requirements; superseded by EN 62676-4).
    7. [7]IEC 62676-4:2025 (Ed. 2) — Application guidelines introducing the OODPCVS seven-step pixel-density ladder.
    8. [8]US DHS Science & Technology, Digital Video Quality Handbook, 2013 (updated 2018) — pixels-per-foot guidance for public-safety video.
    9. [9]GB 37300-2018 — Public security video surveillance (China, mandatory), §5.6 target-pixel requirements.
    10. [10]Johnson, J. (1958), "Analysis of image-forming systems," Proc. Image Intensifier Symposium — with the NVESD Targeting Task Performance (TTP) successor, Vollmerhausen & Jacobs, Opt. Eng. 43(11), 2004.
    11. [11]ISO/IEC 19794-5:2011 & ISO/IEC 39794-5:2019 — Biometric face-image data (inter-eye pixel criteria for face recognition and enrolment).
    How to cite

    CCTVplanner Research. The Geometry of CCTV Camera Coverage. Technical Note CP-TN-01, v1.0, 2026. cctvplanner.io/camera-physics

    @techreport{cctvplanner-cptn01-2026,
      title   = {The Geometry of CCTV Camera Coverage},
      author  = {{CCTVplanner Research}},
      number  = {CP-TN-01},
      version = {1.0},
      year    = {2026},
      url     = {https://cctvplanner.io/camera-physics}
    }

    Every figure in this note is generated by the same geometry engine used by the CCTVplanner designer.

    Open the designer