Większość CCTV design toolów liczy zasięg Identify wyłącznie z PPM (rozdzielczość przez piksele na metr), ignorując że kamera nachylona w dół fizycznie nie sięga wzrokiem za pewien dystans. Klasyczny przykład: h=3 m, downtilt 75° (typowy nadzór wejścia), kamera 4 mm 4MP @ 2560x1440. PPM mówi że Identify masz do 7.59 m. Realny pie-slice z tilt: kamera widzi do 2.16 m. 251% nadszacowania zasięgu. Klient na 4 m, plate się nie czyta, instalator zdziwiony.
Disclosure: jestem autorem CCTVplanner.io, więc stronniczy. Ale matematyka jest twarda i każdy może ją zweryfikować.
Co konkretnie liczę inaczej
HFOV/VFOV z geometrycznej optyki:
W to szerokość sensora w mm, f to ogniskowa w mm, aspect_HW to stosunek wysokości do szerokości obrazu wyjściowego (rozdzielczości streamu), nie fizycznego sensora. Niezależnie czy sensor jest natywnie 4:3 (z cropem do 16:9 w streamie) czy natywnie 16:9 (Sony STARVIS itp., bez cropu) - liczy się aspect tego co kamera realnie wypluwa, bo to ten obraz projektujemy na ziemię. Wzór więc działa identycznie dla obu przypadków.
Sensory 1/3", 1/2.8", 1/1.8" mają konkretne fizyczne wymiary (np. 1/2.8" = 5.4 mm szerokości) i to one definiują kąt, a nie marketingowe specki producentów.
Fisheye używa innej projekcji:
Dla zwykłych obiektywów rectilinear działa wzór wyżej. Dla fisheye stosuję projekcję equidistant (r = f * θ), bo rectilinear daje błąd przy θ blisko 90°. Narzędzie wybiera automatycznie wg metadanych kamery z katalogu.
Tilt = "kawałek tortu" na ziemi, nie trójkąt:
Kamera nachylona w dół patrzy na podłogę po skosie. Bliski i daleki próg widoczności na ziemi:
gdzie h to wysokość montażu, β to downtilt angle, czyli kąt nachylenia obiektywu poniżej horyzontu (β=0° = kamera patrzy poziomo, β=90° = prosto w ziemię). Większość narzędzi tego nie liczy, tylko bierze PPM cap (limit pikseli na metr) i pokazuje liniowy zasięg Identify ignorując że kamera fizycznie tam nie patrzy.
Realny zasięg Identify = przecięcie pie-slice (gdzie kamera widzi ziemię) i PPM cap (gdzie ma >=250 px/m). PPM bez pie-slice to bzdura przy każdym mocnym tilcie.
Dwa konkrety na kamerze 4 mm, sensor 1/2.8" (5.4 mm szerokości), 4MP @ 2560x1440 (output 16:9, aspect_HW = 1440/2560 = 0.5625):
- HFOV = 2*atan(5.4/8) = 68.0°
- VFOV = 2*atan(tan(34.01°) * 0.5625) = 2*atan(0.3794) = 41.6°
- PPM cap dla Identify (>=250 px/m): d = 2560 / (2*tan(34.01°)*250) = 7.59 m
Scenariusz A: dachowy nadzór parkingu, h=4 m, β=60°
Realny Identify range = 0.65 m do 4.90 m (pie-slice ucina przed PPM cap 7.59 m). Tool który podaje sam PPM obiecuje 7.59 m. 55% nadszacowania zasięgu.
Scenariusz B: nadzór wejścia, h=3 m, β=75° (kamera mocno do dołu na drzwi)
Realny Identify range = 0 do 2.16 m. Tool z samym PPM nadal twierdzi że masz Identify do 7.59 m. 251% nadszacowania. Klient na 4 m, plate się nie czyta, instalator szuka błędu w kamerze a problem jest w narzędziu projektowym.
Im większy downtilt, tym dramatyczniej rośnie różnica. To jest częsty case (każda kamera nad wejściem, każdy parking widziany z wysokiego dachu, każda kamera w korytarzu pod nadprożem). U mnie pie-slice + PPM cap liczą się obie i Identify range to ich przecięcie.
DORI - progi gęstości pikseli na metr (EN 62676-4:2014):
Wzór PPM przy distance d (head-on, projekcja prostopadła):
Czyli żeby mieć Identify (twarz, tablica) na 25 m, sensor musi pokryć obraz max res_width/250 m szerokości na tej odległości. Dla 1080p (1920 px): max 7.68 m, czyli HFOV ~17°, czyli telephoto ~18 mm na 1/2.8". Plus geometria pie-slice musi obejmować punkt 25 m (wzór z sekcji wyżej). Kalkulator zwraca pełen zestaw parametrów spełniających oba ograniczenia.
Z-occlusion (przeszkody i wielopiętrowość):
FOV zostaje przycięty tam gdzie linia wzroku trafia w przeszkodę o danym Z. Multi-floor: każde piętro ma własną siatkę FOV. Obliczenia są 3D-aware (wysokość, tilt, Z przeszkody), choć rendering został na razie 2D. To jedyne realne miejsce gdzie JVSG ma przewagę (3D walkthrough), reszta równa.
Pełna matematyka i kalkulator:
-> cctvplanner.io/camera-physics - pełen opis matematyki, tabela sensorów, projekcji, obstacle math
-> cctvplanner.io/en-62676-4-calculator - interaktywny kalkulator wymaganej ogniskowej dla DORI/dystansu/wysokości
Jak to wygląda w praktyce
Co konkretnie wyróżnia narzędzie
Czego potrzebuję od Was
Czego JVSG/CCTVCAD ma czego ja jeszcze nie mam
Reszty (storage calc, bandwidth, lens calc, FOV, BOM, DORI) mam i robię to w przeglądarce zamiast Windows-only client-a.
Konto i kontakt
cctvplanner.io, free signup w 30 sekund, bez karty
contact(_at_)cctvplanner.io, odpisuję sam zwykle w 24h
Albo zostawcie feedback w wątku, czytam każdy komentarz.
Free forever (1 projekt, 6 kamer, pełna fizyka), płatne plany 5-10 EUR/mc, szczegóły na stronie.
Dzięki z góry za uwagi.
Aleksander
DEFENSAR / CCTVplanner.io @ElektrodaBot
Disclosure: jestem autorem CCTVplanner.io, więc stronniczy. Ale matematyka jest twarda i każdy może ją zweryfikować.
Co konkretnie liczę inaczej
HFOV/VFOV z geometrycznej optyki:
HFOV = 2 * atan(W / (2 * f))
VFOV = 2 * atan(tan(HFOV/2) * aspect_HW)
W to szerokość sensora w mm, f to ogniskowa w mm, aspect_HW to stosunek wysokości do szerokości obrazu wyjściowego (rozdzielczości streamu), nie fizycznego sensora. Niezależnie czy sensor jest natywnie 4:3 (z cropem do 16:9 w streamie) czy natywnie 16:9 (Sony STARVIS itp., bez cropu) - liczy się aspect tego co kamera realnie wypluwa, bo to ten obraz projektujemy na ziemię. Wzór więc działa identycznie dla obu przypadków.
Sensory 1/3", 1/2.8", 1/1.8" mają konkretne fizyczne wymiary (np. 1/2.8" = 5.4 mm szerokości) i to one definiują kąt, a nie marketingowe specki producentów.
Fisheye używa innej projekcji:
Dla zwykłych obiektywów rectilinear działa wzór wyżej. Dla fisheye stosuję projekcję equidistant (r = f * θ), bo rectilinear daje błąd przy θ blisko 90°. Narzędzie wybiera automatycznie wg metadanych kamery z katalogu.
Tilt = "kawałek tortu" na ziemi, nie trójkąt:
Kamera nachylona w dół patrzy na podłogę po skosie. Bliski i daleki próg widoczności na ziemi:
d_near = h / tan(β + VFOV/2)
d_far = h / tan(β - VFOV/2)
gdzie h to wysokość montażu, β to downtilt angle, czyli kąt nachylenia obiektywu poniżej horyzontu (β=0° = kamera patrzy poziomo, β=90° = prosto w ziemię). Większość narzędzi tego nie liczy, tylko bierze PPM cap (limit pikseli na metr) i pokazuje liniowy zasięg Identify ignorując że kamera fizycznie tam nie patrzy.
Realny zasięg Identify = przecięcie pie-slice (gdzie kamera widzi ziemię) i PPM cap (gdzie ma >=250 px/m). PPM bez pie-slice to bzdura przy każdym mocnym tilcie.
Dwa konkrety na kamerze 4 mm, sensor 1/2.8" (5.4 mm szerokości), 4MP @ 2560x1440 (output 16:9, aspect_HW = 1440/2560 = 0.5625):
- HFOV = 2*atan(5.4/8) = 68.0°
- VFOV = 2*atan(tan(34.01°) * 0.5625) = 2*atan(0.3794) = 41.6°
- PPM cap dla Identify (>=250 px/m): d = 2560 / (2*tan(34.01°)*250) = 7.59 m
Scenariusz A: dachowy nadzór parkingu, h=4 m, β=60°
d_near = 4/tan(60° + 20.78°) = 4/tan(80.78°) = 0.65 m
d_far = 4/tan(60° - 20.78°) = 4/tan(39.22°) = 4.90 m
Realny Identify range = 0.65 m do 4.90 m (pie-slice ucina przed PPM cap 7.59 m). Tool który podaje sam PPM obiecuje 7.59 m. 55% nadszacowania zasięgu.
Scenariusz B: nadzór wejścia, h=3 m, β=75° (kamera mocno do dołu na drzwi)
d_near = 3/tan(75° + 20.78°) = 3/tan(95.78°) = ujemny -> 0 (kamera widzi pod sobą)
d_far = 3/tan(75° - 20.78°) = 3/tan(54.22°) = 2.16 m
Realny Identify range = 0 do 2.16 m. Tool z samym PPM nadal twierdzi że masz Identify do 7.59 m. 251% nadszacowania. Klient na 4 m, plate się nie czyta, instalator szuka błędu w kamerze a problem jest w narzędziu projektowym.
Im większy downtilt, tym dramatyczniej rośnie różnica. To jest częsty case (każda kamera nad wejściem, każdy parking widziany z wysokiego dachu, każda kamera w korytarzu pod nadprożem). U mnie pie-slice + PPM cap liczą się obie i Identify range to ich przecięcie.
DORI - progi gęstości pikseli na metr (EN 62676-4:2014):
Detect >= 25 px/m (jest człowiek/auto?)
Observe >= 62.5 px/m (co robi, na podstawie cech)
Recognize >= 125 px/m (czy znam tego człowieka?)
Identify >= 250 px/m (kto to jest, plate readable)
Wzór PPM przy distance d (head-on, projekcja prostopadła):
PPM(d) = res_width / (2 * d * tan(HFOV/2))
Czyli żeby mieć Identify (twarz, tablica) na 25 m, sensor musi pokryć obraz max res_width/250 m szerokości na tej odległości. Dla 1080p (1920 px): max 7.68 m, czyli HFOV ~17°, czyli telephoto ~18 mm na 1/2.8". Plus geometria pie-slice musi obejmować punkt 25 m (wzór z sekcji wyżej). Kalkulator zwraca pełen zestaw parametrów spełniających oba ograniczenia.
Z-occlusion (przeszkody i wielopiętrowość):
FOV zostaje przycięty tam gdzie linia wzroku trafia w przeszkodę o danym Z. Multi-floor: każde piętro ma własną siatkę FOV. Obliczenia są 3D-aware (wysokość, tilt, Z przeszkody), choć rendering został na razie 2D. To jedyne realne miejsce gdzie JVSG ma przewagę (3D walkthrough), reszta równa.
Pełna matematyka i kalkulator:
-> cctvplanner.io/camera-physics - pełen opis matematyki, tabela sensorów, projekcji, obstacle math
-> cctvplanner.io/en-62676-4-calculator - interaktywny kalkulator wymaganej ogniskowej dla DORI/dystansu/wysokości
Jak to wygląda w praktyce
Co konkretnie wyróżnia narzędzie
- Katalog 23 025 modeli kamer od 79 producentów: Hikvision (3758), Dahua (2501), Axis (1397), Hanwha (1295), Uniview, Bosch, Pelco, Vivotek, ACTi, i-PRO + 70 innych. Każdy model ma pełne dane sensora, obiektywu, IR, IK, IP. FOV liczy się z prawdziwych liczb a nie generic.
Skąd te dane: scrape z oficjalnych datasheetów producentów + ręczna weryfikacja. Reszta verified on demand, zgłaszajcie błędy SKU + screenshot specki, poprawię w 5 min. - Import DXF planów pięter (BLOCK/INSERT, SPLINE, ELLIPSE, HATCH, DIMENSION) + PDF z dwupunktową kalibracją skali
- Eksport DXF (AutoCAD/BricsCAD/Revit/QGIS) z warstwami: kamery, FOV, kable, przeszkody, OSM drogi, multi-floor
- Tryb Survey na tablet: zdjęcia, audio, checklisty pinowane do kamer w terenie
- Cable routing z auto-NVR/switch/WAP + długość kabla per trasa w BoM
- PWA, działa offline po pierwszym załadowaniu projektu
- Hostowane w EU (lh.pl + Supabase EU-West), GDPR, faktura VAT
Czego potrzebuję od Was
- Brakujące modele kamer w katalogu, szczególnie marek mniej znanych globalnie. Wystarczy numer SKU i datasheet, dodam w 5 min
- Błędy w specyfikacji konkretnej kamery (resolution/sensor/IR podane źle). Screenshot wystarcza
- Wzory powyżej: czy widzicie błąd, edge case, niedokładność? Nie ma świętości, fizyka to twarda matematyka, dajcie znać
- Funkcjonalności blokujące Wam realne projekty: bandwidth/storage calc, NVR sizing, formaty eksportu
Czego JVSG/CCTVCAD ma czego ja jeszcze nie mam
- Pełny rendering 3D walk-through (planuję na 2026 H2)
- Offline desktop mode dla obiektów odciętych od internetu (rozważam)
Reszty (storage calc, bandwidth, lens calc, FOV, BOM, DORI) mam i robię to w przeglądarce zamiast Windows-only client-a.
Konto i kontakt
cctvplanner.io, free signup w 30 sekund, bez karty
contact(_at_)cctvplanner.io, odpisuję sam zwykle w 24h
Albo zostawcie feedback w wątku, czytam każdy komentarz.
Free forever (1 projekt, 6 kamer, pełna fizyka), płatne plany 5-10 EUR/mc, szczegóły na stronie.
Dzięki z góry za uwagi.
Aleksander
DEFENSAR / CCTVplanner.io @ElektrodaBot