CCTVPLANNER.IO / VÝZKUM
Geometrie pokrytí kamer CCTV
Jak nakloněná, namontovaná kamera zobrazuje zem — geometrie frustumu, projekce objektivu a norma vzdáleností DORI, odvozeno od základních principů a ilustrováno stejným kódem, který pohání live designer.
1. Od frustumu k půdorysu na zemi
Dírkovaná kamera (pinhole) definuje zorný frustum: čtyřboký jehlan, který se rozprostírá z optického středu kamery až k okrajům její obrazové roviny. Každý pixel je jeden paprsek z optického středu skrz odpovídající bod na obrazové rovině. Pro nalezení oblasti země, kterou kamera pokrývá, protneme každý paprsek s rovinou země a ponecháme body, které spadají do dosahu kamery.
Pro kameru namontovanou ve výšce h, nakloněnou o úhel α pod horizontálu, s vertikálním zorným polem vfov, čtyři rohové paprsky frustumu vykreslí vnější obálku pokrytí na zemi. V typických montážních konfiguracích (kde α + vfov/2 < 90°) má tvar zkráceného lichoběžníku se zaoblenými rohy — nikoli trojúhelníku ani výseče vycházející z bodu montáže kamery. Když se α + vfov/2 blíží 90° (velmi strmě nakloněné stropní dome kamery), spodní okraj obrazu začíná dopadat na zem u paty kamery a lichoběžník degeneruje směrem k výseči.
Pohled shora na půdorys pro kameru s h = 4 m, sklon = 30°, hfov = 106°. Spodní okraj obrazu se setkává se zemí v krátké vzdálenosti před kamerou; boční okraje se vějířovitě rozevírají; vzdálený okraj je omezen efektivním dosahem kamery.
2. Průsečík spodního / horního okraje
Paprsek spodního okraje (sV = −1 v souřadnicích obrazové roviny) dopadne na zem v:
d_near = h / tan(α + vfov/2)
Paprsek horního okraje (sV = +1) dopadá v:
d_far = h / tan(α − vfov/2) pokud α > vfov/2 (zcela pod horizontem)
neomezené pokud α ≤ vfov/2 (horní okraj nad horizontem
— omezeno na renderRange)Pohled z boku, h = 4 m, sklon = 15°, vfov = 50°. Dvě modré čáry jsou paprsky spodního a horního okraje frustumu; tlustý modrý pás na zemi vyznačuje, kde kamera zobrazuje podlahu (od d_near do renderRange). Červený klín pod stožárem je geometrická oblast, kterou objektiv nedokáže rozlišit.
Pro boční okraje (sH = ±1) platí stejná konstrukce v horizontální rovině: každý boční paprsek přechází napříč HFOV kamery v každé výšce obrazové roviny. Pro rektilineární objektivy (dominantní CCTV optika) se promítají na zemi jako rozbíhající se přímky a vytvářejí šikmé strany lichoběžníku. Pro fisheye objektivy je stejné mapování zakřivené a půdorys se stává zakřiveným diskem.
3. Geometrická slepá zóna
Pro jakoukoli kameru namontovanou nad zemí a nakloněnou méně než 90° − vfov/2 existuje oblast přímo pod montážním bodem, kam žádný paprsek frustumu nedosáhne. Spodní okraj obrazu míří pod úhlem α + vfov/2 pod horizontálu; vše bližší než d_near je zcela mimo obraz kamery.
Při zachování konstantního sklonu a FOV roste slepá zóna lineárně s montážní výškou — vzorec se redukuje na d_near = h × cot(α + vfov/2), kde kotangentový člen je dán objektivem. Kamera nakloněná pod 15° s vertikálním FOV 50° má slepou zónu 4,8 m při montážní výšce 4 m a 23,8 m při 20 m — poměr 5× odpovídá poměru výšek. Poměr slepé plochy k pokryté ploše je dominantním omezením při umisťování kamer na vysokých sloupech.
Stejný objektiv, stejný sklon 15°, jen namontováno výše (h = 20 m): slepá zóna roste úměrně s výškou, nezávisle na ohniskové vzdálenosti nebo velikosti snímače.
4. Vzdálenosti DORI (EN 62676-4)
Norma DORI (Detect / Observe / Recognize / Identify — Detekovat / Pozorovat / Rozpoznat / Identifikovat) definuje hustoty pixelů na cíli ve specifických vzdálenostech od kamery. Podle EN 62676-4 jsou těmito vzdálenostmi horizontální vzdálenosti na zemi mezi kamerou a cílem — ne šikmé vzdálenosti podél optické osy. Datasheety hlavních výrobců (Axis, Hikvision, Dahua, Bosch) tuto konvenci dodržují.
Na 2D mapě jsou čtyři úrovně DORI prostě soustředné oblouky o poloměrech rovných jejich horizontálním vzdálenostem, ořezané polygonem půdorysu kamery. Tam, kde půdorys daný poloměr nedosahuje, je odpovídající část oblouku skryta — pro kamery s úzkým HFOV je kužel příliš úzký na to, aby pojal celý kruh, takže boční konce každé úrovně jsou ořezány, a pro kamery s krátkým dosahem spadají větší úrovně zcela mimo kužel.
Prstence DORI jako oblouky na zemi uvnitř půdorysu kamery. h = 4 m, sklon = 20°, hfov = 90°, dosah = 70 m. Hodnoty úrovní (8 / 16 / 32 / 64 m) jsou ilustrativní pro typickou 1080p kameru při ~90° HFOV; skutečné horizontální vzdálenosti závisí na snímači a ohniskové vzdálenosti. EN 62676-4 specifikuje hustoty pixelů na každé úrovni (Identifikovat: 250 px/m, Rozpoznat: 125 px/m, Pozorovat: 62 px/m, Detekovat: 25 px/m), ze kterých se odvozují horizontální dosahy pro každou kameru.
Interpretace šikmé vzdálenosti (kde je relevantní). Pokud konkrétní datasheet udává dosah jako šikmou vzdálenost od objektivu — neobvyklé pro běžnou CCTV optiku, občas viděno u specifikací termálních nebo teleobjektivů — odpovídající horizontální dosah na zemi je √(d_slant² − h²). Kamera namontovaná v 6 m s šikmou vzdáleností Identifikace 8 m pokrývá horizontální poloměr 5,3 m (√(64 − 36)). Geometrický modul vystavuje obě formy; diagram na stránce používá standardní horizontální interpretaci.
5. Typy projekce objektivu
Různé designy objektivů mapují úhel od optické osy na poloměr v obrazové rovině různě. Tři projekce používané v CCTV jsou:
| Projekce | r(θ) | Typický rozsah |
|---|---|---|
| Rektilineární | f · tan θ | HFOV ≲ 120° (většina pevných a varifokálních CCTV objektivů) |
| Ekvidistantní | f · θ | HFOV ≳ 140° (panoramatické / fisheye) |
| Ekvisolidní | 2 f · sin(θ/2) | Fisheye objektivy zachovávající prostorový úhel |
θ = úhel od optické osy (v radiánech); f = ohnisková vzdálenost. r(θ) je radiální vzdálenost na obrazové rovině od hlavního bodu.
U rektilineárních objektivů přesahuje boční faktor mimo osu tan(θ) hodnotu 1, jakmile θ překročí 45° od optické osy (tj. když HFOV překročí 90°), a roste neomezeně, jak se θ blíží k 90° (HFOV se blíží 180°). V reálné optice se rohové natažení stává závažným dlouho před tím, než matematika diverguje — většina návrhářů objektivů přechází na kvazifisheye sklo kolem 120–140° HFOV, s plnými fisheye objektivy používanými nad ~170°.
CCTVplanner.io v současnosti volí rektilineární projekci až do 170° HFOV, nad nímž rohové natažení roste natolik, že přepínáme na ekvidistantní pro numerickou stabilitu. Kamery mezi ~140° a 170° HFOV jsou tedy modelovány rektilineární matematikou, i když jejich fyzický objektiv je blíže fisheye — přijímáme to výměnou za jednodušší rohovou geometrii. Ekvisolidní projekce je podporována ve geometrické vrstvě (pro data výrobců, kteří ji explicitně specifikují), ačkoli pro ni zatím není uživatelské přepínání.
Upozornění k datasheetu: HFOV vs DFOV
Mnoho výrobců — zejména velké asijské značky (Dahua, Hikvision, Uniview, Tiandy) — uvádí v datasheetu jediné číslo zorného pole, které je ve skutečnosti diagonální zorné pole (DFOV), nikoli horizontální. Vložení hodnoty DFOV do nástroje, který očekává HFOV, vede k půdorysu o 10–15 % příliš širokému, s chybou soustředěnou na bočních okrajích — kde nejvíce záleží na hustotě pixelů.
Pro snímač s horizontálně-vertikálním poměrem stran a (např. 16:9 → a = 16/9) je převod:
tan(HFOV/2) = tan(DFOV/2) × a / √(a² + 1) tan(VFOV/2) = tan(DFOV/2) × 1 / √(a² + 1)
Mapování je v úhlu nelineární: lákavé lineární zkratky tvaru HFOV ≈ k × DFOV fungují pro úzké objektivy, ale silně selhávají, jakmile se zorné pole rozšíří. Pro snímač 16:9 jsou přesné převody:
| DFOV (16:9) | Přesný HFOV | Přesný VFOV | Chyba lineární zkratky |
|---|---|---|---|
| 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° |
"Chyba lineární zkratky" = HFOV z naivního vzorce HFOV = (a / √(a²+1)) × DFOV minus přesná hodnota. Zkratka podhodnocuje HFOV o 5–13° v širokoúhlém rozsahu, který dominuje moderní CCTV optice — mnohem víc než tolerance ±1° datasheetu předpokládaná v §9. Vždy používejte vzorec založený na tan nebo výše uvedené přesné hodnoty.
Databáze kamer CCTVplanner.io ukládá HFOV (kanonickou CCTV míru) a při importu ho převádí pro kamery, jejichž datasheety specifikují pouze DFOV. Při ručním zadávání vlastní kamery zkontrolujte jednotky, než zadáte číslo do pole HFOV — chyba v tomto je jedním ze dvou nejčastějších důvodů, proč půdorysy z předmontážního průzkumu neodpovídají instalované realitě (druhým je poměr stran snímače).
6. Překážky, stíny a viditelný půdorys
Stěny, ploty a vysoké stavby blokují paprsky kamery. Pro výpočet viditelného půdorysu modelujeme každou neprůhlednou překážku jako polygon (uzavřený obvod) nebo polylinii (otevřený plot) a promítáme stínový čtyřúhelník pro každý segment: každý segment je prodloužen směrem od kamery na několikanásobek vykreslovacího dosahu. Sjednocení těchto stínů na segment je silueta překážky plus vše za ní z pohledu kamery.
Viditelný půdorys je pak půdorys − ⋃ stíny, vypočtený pomocí algoritmu rozdílu polygonů Martínez–Rueda. Výsledkem je polygon (nebo seznam disjunktních polygonů, pokud překážka rozděluje kužel), jehož hrany se čistě vyrovnávají jak se vzdáleným obloukem frustumu, tak s každou blokující stěnou.
Pro 3D analýzu překážka nižší než montážní výška kamery paprsek úplně neblokuje — vrhá konečný stín na zem rozprostírající se za překážkou. Pro stěnu v horizontální vzdálenosti d od kamery, s montážní výškou h_cam a výškou vrcholu překážky h_obs, se stín rozprostírá od stěny do horizontální vzdálenosti:
d_shadow_end = d × h_cam / (h_cam − h_obs) pro h_cam > h_obs Pro h_obs ≥ h_cam překážka zcela blokuje pohledovou linii — ekvivalentní nekonečnému stínu. Designer s tímto případem zachází jako s plně neprůhledným blokátorem (žádný pohled přes) a aplikuje stejnou projekci stínu na segment používanou v 2D cestě ořezávání překážek.
Přepnutí "Použít vertikální výšku (3D)" na budově nebo plotě v designeru přepne na tento model s projekcí stínu. Pokud je kamera nižší než překážka (nebo stejně vysoká), přepínač nemá efekt.
7. Vícepatrová projekce
Průnik frustumu se zemí se triviálně zobecňuje na libovolnou horizontální rovinu. Nahraďte rovnici podlahy z = 0 rovnicí z = z_target, vyřešte stejnou rovnici paprsek-rovina pro každý rohový paprsek a výsledkem je půdorys kamery na cílovém patře. Kamera namontovaná v druhém patře atria pokrývá přízemí stejnou konstrukcí, jakou kamera namontovaná na zemi pokrývá vlastní patro, jen s jinou hodnotou z_target a upraveným vertikálním posunem mezi kamerou a cílovou rovinou.
Matematická vrstva pro vícepatrovou projekci je dnes součástí geometrického modulu; UI volby patra a náhled scény Three.js jsou ve frontě pro budoucí vydání.
8. Předpoklady a omezení
Každý výše uvedený vzorec spočívá na sadě zjednodušujících předpokladů. Platí pro většinu CCTV scénářů s pevnou montáží, ale za specifických podmínek selhávají; dokumentujeme je, aby odborníci mohli rozhodnout, kdy modelu důvěřovat.
Předpoklady modelu
- Rovná zem (podlaha je rovina
z = 0) — bez sklonu terénu, bez zakřivení Země. - Statická kamera v okamžiku snímání — žádný pohyb PTZ během snímku, žádné vibrace.
- Model dírkované kamery — bez zkreslení objektivu. Reálné objektivy zavádějí Brown–Conradyho radiální a tangenciální zkreslení (koeficienty
k₁, k₂, p₁, p₂), které nemodelujeme. - Ideální kalibrace — rozteč pixelů snímače, ohnisková vzdálenost a optický střed přesně odpovídají specifikacím výrobce.
- Bez artefaktů rolling shutteru; celý obraz je zachycen v jednom okamžiku.
- Bez naklonění kamery kolem optické osy (roll) — optická osa je rotována pouze pan a sklonem; snímač zůstává horizontální.
- Jediná optická cesta — bez lomu skleněnou kupolí, bez odrazných ploch ve scéně.
- Atmosférická refrakce je zanedbatelná pro typické CCTV dosahy (chyba pod 1 cm na 50 m).
Kdy model selhává
- Svažitý terén. Půdorys na zemi se asymetricky posouvá: po svahu dolů se rozšiřuje víc, než model předpovídá, po svahu nahoru se stlačuje. Chyba je přibližně
±h · tan(sklon)na metr horizontální vzdálenosti. - Zkreslení širokoúhlých objektivů. Nad ~110° HFOV se rektilineární projekce odchyluje od skutečného mapování objektivu o 1–5 % v rozích. Pro tyto případy jsou v geometrické vrstvě k dispozici ekvidistantní / ekvisolidní projekce (viz §5).
- Kamery se skleněnou kupolí. Kupole zavádí malý posun lomem na vstupu objektivu (milimetry při typických montážních výškách). Pro vysoce přesnou DORI práci na instalacích se zrcadlovým sklem se to stává netriviálním; pro obecné plánování je to pod ostatními zdroji chyb.
- Optika s vícenásobnými odrazy. Odrazy od skleněných stěn, zrcadlových stropů nebo leštěných podlah nejsou trasovány. Model vrací pouze půdorys v přímé pohledové linii.
- PTZ v pohybu. Model dává okamžitý půdorys při jednom nastavení pan/sklon. Pokrytí pohybujícího se PTZ v čase je zametaný půdorys, nikoli okamžitý.
- Tolerance instalace. Reálné instalační úhly se odchylují od projektu o 1–3° (chyba technika). Další oddíl kvantifikuje, jak se to propaguje do chyby na zemi.
9. Citlivost na chybu
Chyby vstupních parametrů (montážní výška, úhel sklonu, FOV) se propagují do chyb pozice na zemi v půdorysu. Pro průsečík spodního okraje se zemí d_near = h / tan(α + vfov/2) dávají parciální derivace:
∂d_near/∂h = 1 / tan(α + vfov/2) = d_near / h ∂d_near/∂α = −h / sin²(α + vfov/2) (radiány) ∂d_near/∂vfov = −h / (2 · sin²(α + vfov/2)) (radiány)
Úhlové parciální derivace jsou v radiánech; pro převod na hodnotu na stupeň násobte π/180 (≈ 0,01745). Tabulka níže převod aplikuje.
Pro typickou konfiguraci (h = 10 m, sklon = 15°, vfov = 50° → d_near ≈ 11,9 m) způsobují malé chyby v každém parametru následující odchylky v d_near:
| Parametr | Vstupní chyba | Δ d_near | Poznámka |
|---|---|---|---|
| sklon α | ±1° | ±0,42 m | typické rozlišení sklonoměru |
| sklon α | ±3° | ±1,27 m | instalace podle oka na držáku |
| výška h | ±0,5 m | ±0,59 m | měření metrem, nepřístupný stožár |
| vfov | ±1° | ±0,21 m | zaokrouhlení datasheetu |
| vše kombinováno | RMS | ~1,4 m | při 3° sklon + 0,5 m výška + 1° fov |
Dominantním členem je nejistota instalačního úhlu: ve výše uvedené konfiguraci stojí každý stupeň chyby sklonu ~42 cm v přesnosti pozice na zemi v d_near. Laserový sklonoměr s rozlišením 0,1° udržuje chybu d_near způsobenou sklonem pod 5 cm; instalace na držáku podle oka je dobrá zhruba na ±1 m. Pro ověření úrovní DORI (kde rozdíl mezi prstenci Rozpoznání a Identifikace na zemi může být 2–3 m) by se sklon měl měřit, nikoli odhadovat.
Stejná analýza parciálních derivací platí pro boční šířku půdorysu skrz HFOV — chyba 1° v HFOV způsobuje přibližně 2 · d · tan(½°) ≈ 1,7 % bočního rozptylu na vzdálenosti d. Při dosahu 30 m je to ~52 cm boční nejistoty, což je důvod, proč hodnoty HFOV od výrobců považujeme za ±1° spíše než přesné.
10. Reprodukovatelnost
Všechny vzorce v tomto článku jsou doslovně implementovány v geometrickém modulu, který je dodáván s designerem CCTVplanner.io. Modul je pokryt rozsáhlou sadou jednotkových testů zahrnujících rektilineární / ekvidistantní / ekvisolidní projekce, mezní případy slepé zóny, DORI projekci na zemi, booleovské polygonální ořezávání překážek a vícepatrové rozšíření. Každý diagram na této stránce je vykreslen voláním stejných funkcí, které používá live designer.
Hlavní vstupní body
buildFrustum(args)— báze kamery (forward / right / upCam) + metadata frustumucomputeGroundFootprint(frustum, projection)— vzorkovaný polygon (8 / 32 bodů na hranu)slantToGroundRadius(frustum, slantM)— √(slant² − h²) s kontrolou dosažitelnosticomputeSegmentShadow / computePolygonShadow— projekce stínu na zemi pro segment / pro polygonsubtractObstacleShadows(footprint, shadows)— Martínez–Rueda rozdíl polygonůcomputeFloorFootprint(frustum, z, projection)— vícepatrová varianta
Výchozí konstanty
defaultLensProjection: rektilineární když HFOV < 170°, jinak ekvidistantníSAMPLES_PER_EDGE: 8 pro rektilineární, 32 pro fisheye projekce- Vzdálenost ořezu stínu:
renderRange × 4(pokrývá ořezání vzdáleného okraje při jakékoli rozumné vzdálenosti překážky) - Horizontální omezení vzdáleného okraje: paprsky, jejichž průnik se zemí přesahuje
renderRangev horizontální vzdálenosti, jsou promítnuty zpět narenderRangepodél jejich horizontálního směru (zabraňuje artefaktům zatoulaných čar poblíž horizontu na vzdáleném oblouku polygonu).
Reprodukce matematiky od nuly: sestavte CameraFrustum s publikovanou strukturou { x, y, h, panDeg, tiltDeg, hfovDeg, vfovDeg, renderRangeM, pixelsPerMeter }; navzorkujte rohy obrazové roviny v sH, sV ∈ [−1, +1] s 8 vzorky na hranu (32 pro fisheye); protněte každý paprsek s rovinou z = 0; aplikujte rozdíl polygonů pro odečtení stínu. Až na efekty řazení IEEE 754 v booleovském kroku polygonů odpovídá výsledek polygonu vykreslenému live designerem s přesností pohyblivé řádové čárky (sub-milimetrová chyba na vstupech v reálném měřítku).
Reference
- IEC 62676-4:2014 (s dodatky) — Systémy videodozoru pro použití v bezpečnostních aplikacích, část 4: aplikační směrnice (DORI, vzdálenosti cíle). Identický text vydán jako EN 62676-4 v evropském vydání.
- Hartley & Zisserman, Multiple View Geometry in Computer Vision, 2. vyd., Cambridge University Press, 2004 (modely projekce kamery, geometrie frustumu).
- Kannala & Brandt, "A generic camera model and calibration method for conventional, wide-angle, and fish-eye lenses," IEEE TPAMI, 2006 (srovnání rektilineární / ekvidistantní / ekvisolidní projekce).
- Martínez, Rueda & Feito, "A new algorithm for computing Boolean operations on polygons," Computers & Geosciences, 2009 — původní algoritmus Martínez–Rueda. Pokračování z roku 2013 "A simple algorithm for Boolean operations on polygons" (Advances in Engineering Software) je varianta implementovaná v zde použité knihovně polygon-clipping.