CCTVPLANNER.IO / ARAŞTIRMA

    CCTV kamera kapsama geometrisi

    Eğimli, monte edilmiş bir kamera yeri nasıl görüntüler — frustum geometrisi, mercek projeksiyonları ve DORI mesafe standardı, temel ilkelerden türetildi ve canlı tasarımcıyı çalıştıran kodun aynısıyla gösterildi.

    1. Frustumdan yer izine

    Bir iğne deliği (pinhole) kamerası bir görüş frustumu tanımlar: kameranın optik merkezinden görüntü düzleminin sınırlarına uzanan dört yüzlü bir piramit. Her piksel, optik merkezden görüntü düzlemindeki ilgili noktadan geçen bir ışındır. Bir kameranın yerin hangi bölgesini kapsadığını bulmak için her ışını yer düzlemiyle keser ve kameranın menzilinin içine düşen noktaları tutarız.

    h yüksekliğine monte edilmiş, yataydan α açıyla aşağı eğik, dikey görüş alanı vfov olan bir kamera için frustumun dört köşe ışını, yer üzerindeki kapsama alanının dış zarfını çizer. Tipik montaj yapılandırmalarında (α + vfov/2 < 90° olduğunda) şekil kavisli köşeli kesik bir yamuk olur — bir üçgen ya da kamera montaj noktasından çıkan bir sektör değil. α + vfov/2, 90°'ye yaklaştığında (çok dik açıyla tavana monte edilmiş dome kameralar), görüntünün alt kenarı kameranın tabanında yere değmeye başlar ve yamuk bir sektöre dönüşür.

    h = 4 m · tilt = 30° · hfov = 106° · vfov = 70° · range = 25 mmenzil çemberi (25 m)

    h = 4 m, eğim = 30°, hfov = 106° olan bir kamera için yukarıdan görünüş yer izi. Görüntünün alt kenarı kameranın önünde kısa bir mesafede yere değer; yan kenarlar yelpaze gibi açılır; uzak kenar kameranın etkin menziliyle sınırlanır.

    2. Alt kenar / üst kenar kesişimi

    Alt kenar ışını (görüntü düzlemi koordinatlarında sV = −1) yere şu noktada çarpar:

    d_near = h / tan(α + vfov/2)

    Üst kenar ışını (sV = +1) şurada çarpar:

    d_far = h / tan(α − vfov/2)            α > vfov/2 ise   (tamamen ufkun altında)
            sınırsız                        α ≤ vfov/2 ise   (üst kenar ufkun üstünde
                                                                — renderRange ile sınırlanır)
    h = 4 mkamera (h = 4 m)kör 0 – 4.8 md_near = 4.8 mrenderRange = 10 mh = 4 m · tilt α = 15° · vfov = 50°

    Yandan görünüş, h = 4 m, eğim = 15°, vfov = 50°. İki mavi çizgi, frustumun alt ve üst kenar ışınlarıdır; yerdeki kalın mavi şerit, kameranın zemini görüntülediği yeri (d_near'den renderRange'e kadar) işaret eder. Direğin altındaki kırmızı kama, merceğin çözemediği geometrik bölgedir.

    Yan kenarlar için (sH = ±1) aynı yapı yatay düzlemde geçerlidir: her yan ışın, görüntü düzleminin her yüksekliğinde kameranın HFOV'sini tarar. Rektilinear mercekler (baskın CCTV optiği) için bunlar yere ayrışan düz çizgiler olarak yansır ve yamuğun eğik kenarlarını oluşturur. Fisheye mercekler için aynı eşleme kavislidir ve yer izi kavisli bir disk haline gelir.

    3. Geometrik kör nokta

    Yerin üstüne monte edilmiş ve 90° − vfov/2'den daha az eğimli her kamera için, montaj noktasının tam altında frustumun hiçbir ışınının ulaşamadığı bir bölge vardır. Görüntünün alt kenarı yataydan α + vfov/2 altına bakar; d_near'den daha yakın olan her şey, kameranın görüntüsünün tamamen dışındadır.

    Eğim ve FOV sabit tutulduğunda, kör nokta montaj yüksekliğiyle doğrusal olarak büyür — formül d_near = h × cot(α + vfov/2) şeklinde sadeleşir; burada kotanjant terimi mercek tarafından sabitlenir. 50° dikey FOV'lu, 15° eğimli bir kamera, 4 m montaj yüksekliğinde 4,8 m ve 20 m'de 23,8 m kör noktaya sahiptir — yükseklik oranıyla eşleşen 5×'lik bir oran. Kör alan/kapsama alanı oranı, yüksek direkli kamera yerleşiminde baskın kısıtlamadır.

    h = 20 mkamera (h = 20 m)kör 0 – 23.8 md_near = 23.8 mrenderRange = 50 mh = 20 m · tilt α = 15° · vfov = 50°

    Aynı mercek, aynı 15° eğim, sadece daha yükseğe monte edilmiş (h = 20 m): kör nokta odak uzaklığı veya sensör boyutundan bağımsız olarak yükseklikle orantılı olarak büyür.

    4. DORI menzilleri (EN 62676-4)

    DORI standardı (Detect / Observe / Recognize / Identify — Tespit / Gözlem / Tanıma / Tanımlama), kameradan belirli mesafelerde hedef piksel yoğunluklarını tanımlar. EN 62676-4'e göre bu mesafeler, kamera ile hedef arasındaki yer üzerindeki yatay mesafelerdir — optik eksen boyunca eğik mesafeler değil. Önemli üreticilerin (Axis, Hikvision, Dahua, Bosch) veri sayfaları bu sözleşmeyi izler.

    2D bir haritada dört DORI seviyesi, yatay mesafelerine eşit yarıçaplı eş merkezli yaylardır; kameranın yer izi poligonuyla kırpılır. Yer izinin söz konusu yarıçapa ulaşmadığı yerlerde, yayın ilgili kısmı gizlenir — dar HFOV'lu kameralarda koni, tüm çemberi içerecek kadar geniş değildir, bu nedenle her seviyenin yan uçları kırpılır; kısa menzilli kameralar için ise daha büyük seviyeler tamamen koninin dışına düşer.

    Tanımlama → 8 mTanıma → 16 mGözlem → 32 mTespit → 64 mh = 4 m · tilt = 20° · hfov = 90° · range = 70 mHer yay = ilgili seviye için kameraya yatay mesafe (EN 62676-4)

    Kameranın yer izi içindeki yer yayları olarak DORI halkaları. h = 4 m, eğim = 20°, hfov = 90°, menzil = 70 m. Gösterilen seviye değerleri (8 / 16 / 32 / 64 m), ~90° HFOV'lu tipik bir 1080p kamera için örnektir; gerçek yatay mesafeler sensöre ve odak uzaklığına bağlıdır. EN 62676-4 her seviyedeki piksel yoğunluklarını belirtir (Tanımlama: 250 px/m, Tanıma: 125 px/m, Gözlem: 62 px/m, Tespit: 25 px/m); kamera başına yatay menziller bunlardan türetilir.

    Eğik mesafe yorumu (uygulanabilir olduğunda). Belirli bir veri sayfası menzili, mercek merkezinden eğik bir mesafe olarak belirtirse — genel amaçlı CCTV optiği için nadir, ara sıra termal veya teleobjektif spesifikasyonlarında görülür — yerdeki eşdeğer yatay menzil √(d_slant² − h²)'dir. 6 m'ye monte edilmiş, 8 m eğik Tanımlama menzilli bir kamera, 5,3 m yatay yarıçapı kapsar (√(64 − 36)). Geometri modülü her iki formu da sunar; sayfa diyagramı standart yatay yorumu kullanır.

    5. Mercek projeksiyon türleri

    Farklı mercek tasarımları, optik eksenden gelen açıyı görüntü düzlemi yarıçapına farklı şekilde eşler. CCTV'de kullanılan üç projeksiyon:

    Projeksiyonr(θ)Tipik aralık
    Rektilinearf · tan θHFOV ≲ 120° (sabit ve varifokal CCTV merceklerinin çoğu)
    Eşit uzaklıklıf · θHFOV ≳ 140° (panoramik / fisheye)
    Eşit-katı2 f · sin(θ/2)Katı açıyı koruyan fisheye mercekler

    θ = optik eksenden açı (radyan); f = odak uzaklığı. r(θ), görüntü düzleminde ana noktadan radyal mesafedir.

    Rektilinear mercekler için, eksen dışı yan faktörü tan(θ) optik eksenden θ 45°'yi geçtiğinde (yani HFOV 90°'yi geçtiğinde) 1'i aşar ve θ 90°'ye yaklaştığında (HFOV 180°'ye yaklaşırken) sınırsız büyür. Gerçek dünyadaki optikte, köşe esnemesi matematik ıraksamadan çok önce ciddi hale gelir — çoğu mercek tasarımcısı 120–140° HFOV civarında yarı-fisheye cama geçer; tam fisheye mercekler ~170°'nin üzerinde kullanılır.

    CCTVplanner.io şu anda 170° HFOV'a kadar rektilinear projeksiyonu seçer; bunun ötesinde köşe esnemesi sayısal kararlılık için eşit uzaklıklıya geçecek kadar büyür. ~140° ile 170° HFOV arasındaki kameralar bu nedenle, fiziksel mercekleri fisheye'a daha yakın olsa bile rektilinear matematikle modellenir — daha basit köşe geometrisi karşılığında bunu kabul ederiz. Eşit-katı projeksiyonu geometri katmanında desteklenir (üreticilerin açıkça belirttiği veriler için), ancak henüz bunun için kullanıcıya yönelik bir anahtar yoktur.

    Veri sayfası uyarısı: HFOV ve DFOV

    Birçok üretici — özellikle büyük Asya markaları (Dahua, Hikvision, Uniview, Tiandy) — veri sayfasında aslında çapraz görüş alanı (DFOV) olan tek bir görüş alanı sayısı verir; yatay değil. HFOV bekleyen bir araca DFOV değeri girmek %10–15 oranında çok geniş bir yer izi üretir; hata, piksel yoğunluğunun en çok önem taşıdığı yan kenarlarda yoğunlaşır.

    Yatay-dikey en-boy oranı a olan bir sensör için (örneğin 16:9 → a = 16/9) dönüşüm:

    tan(HFOV/2) = tan(DFOV/2) × a / √(a² + 1)
    tan(VFOV/2) = tan(DFOV/2) × 1 / √(a² + 1)

    Eşleme açıda doğrusal değildir: HFOV ≈ k × DFOV şeklindeki cazip doğrusal kısayollar dar mercekler için işe yarar, ancak görüş alanı genişledikçe ciddi şekilde başarısız olur. 16:9 sensör için tam dönüşümler:

    DFOV (16:9)Tam HFOVTam VFOVDoğrusal kısayol hatası
    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°

    "Doğrusal kısayol hatası" = naif HFOV = (a / √(a²+1)) × DFOV formülünden HFOV eksi tam değer. Kısayol, modern CCTV optiğine hâkim olan geniş açı aralığında HFOV'yi 5–13° eksik tahmin eder — §9'da varsayılan ±1° veri sayfası toleransından çok daha fazla. Her zaman tan tabanlı formülü veya yukarıdaki tam değerleri kullanın.

    CCTVplanner.io'nun kamera veritabanı HFOV'yi (kanonik CCTV ölçümü) saklar ve veri sayfaları yalnızca DFOV belirten kameralar için içe aktarımda dönüştürür. Manuel olarak özel bir kamera girerken, HFOV alanına sayıyı yazmadan önce birimleri kontrol edin — bu hatayı yapmak, saha keşif yer izlerinin gerçekleşen kuruluma uymamasının iki ana nedeninden biridir (diğeri sensör en-boy oranı).

    6. Engeller, gölgeler ve görünür yer izi

    Duvarlar, çitler ve yüksek yapılar kameradan gelen ışınları engeller. Görünür yer izini hesaplamak için her opak engeli bir poligon (kapalı çevre) veya çoklu çizgi (açık çit) olarak modellerken, her segment için bir gölge dörtgeni yansıtırız: her segment kameradan uzağa render menzilinin birkaç katı kadar uzatılır. Bu segment başına gölgelerin birleşimi, engelin silüetinin yanı sıra arkasındaki her şeyin kameradan görünüşüdür.

    Görünür yer izi yer izi − ⋃ gölgeler'dir; Martínez–Rueda poligon-fark algoritması ile hesaplanır. Sonuç, bir poligon (veya bir engel koniyi böldüğünde ayrık poligonların listesi) olup, kenarları hem frustumun uzak yayıyla hem de her engel duvarla temiz şekilde hizalanır.

    3D-farkındalıklı analiz için, kameranın montaj yüksekliğinden daha kısa bir engel ışını tamamen engellemez — engelin arkasına uzanan sonlu bir yer gölgesi yansıtır. Kameradan d yatay mesafedeki bir duvar için, montaj yüksekliği h_cam ve engelin tepe yüksekliği h_obs ile gölge, duvardan şu yatay mesafeye kadar uzanır:

    d_shadow_end = d × h_cam / (h_cam − h_obs)            h_cam > h_obs için
    
    h_obs ≥ h_cam için engel görüş hattını tamamen engeller —
    sonsuz gölgeye eşdeğerdir. Tasarımcı bu durumu tamamen opak
    bir engelleyici olarak ele alır (üzerinden görüş yok) ve 2D
    engel-kırpma yolunda kullanılan aynı segment başına gölge
    projeksiyonunu uygular.

    Tasarımcıda bir bina veya çit üzerinde "Dikey yüksekliği kullan (3D)" seçeneğinin açılması, onu bu gölge projeksiyonu modeline geçirir. Kamera engelden daha kısa olduğunda (veya eşit yükseklikte), anahtarın etkisi olmaz.

    7. Çok katlı projeksiyon

    Frustum-yer kesişimi herhangi bir yatay düzleme önemsiz şekilde genelleşir. Zemin denklemini z = 0 yerine z = z_target ile değiştirin, her köşe ışını için aynı ışın-düzlem denklemini çözün; sonuç, kameranın o hedef kattaki yer izidir. Bir atriyumun ikinci katına monte edilmiş bir kamera, zemine monte edilmiş bir kameranın kendi katını kapsadığı aynı yapıyla zemini kapsar; sadece farklı bir z_target değeri ve kamera ile hedef düzlem arasında değiştirilmiş bir dikey ofset ile.

    Çok katlı projeksiyonun matematik katmanı bugün geometri modülünde mevcut; kat seçici arayüz ve Three.js sahne önizlemesi gelecekteki bir sürüm için kuyrukta.

    8. Varsayımlar ve sınırlamalar

    Yukarıdaki her formül bir basitleştirici varsayımlar setine dayanır. Sabit montaj CCTV senaryolarının çoğunda geçerlidirler ancak belirli koşullarda bozulurlar; uygulayıcıların modele ne zaman güvenecekleri konusunda karar verebilmesi için bunları belgeliyoruz.

    Model varsayımları

    • Düz zemin (zemin z = 0 düzlemidir) — arazi eğimi yok, Dünya eğriliği yok.
    • Yakalama anında statik kamera — kare boyunca PTZ hareketi yok, titreşim yok.
    • İğne deliği kamera modeli — mercek bozulması yok. Gerçek mercekler, modellemediğimiz Brown–Conrady radyal ve teğetsel bozulmasını (k₁, k₂, p₁, p₂ katsayıları) tanıtır.
    • İdeal kalibrasyon — sensör piksel adımı, odak uzaklığı ve optik merkez tam olarak üretici özelliklerine uyar.
    • Rolling-shutter artefaktları yok; tüm görüntü tek bir anda yakalanır.
    • Kamera yatış açısı yok — optik eksen yalnızca pan ve eğim ile döndürülür; sensör yatay kalır.
    • Tek optik yol — cam kubbe kırılması yok, sahnede yansıtıcı yüzeyler yok.
    • Atmosferik kırılma tipik CCTV menzillerinde ihmal edilebilir (50 m'de 1 cm'nin altında hata).

    Modelin bozulduğu durumlar

    • Eğimli arazi. Yer izi asimetrik olarak kayar: aşağı eğim tarafı modelin öngördüğünden daha uzağa uzanır, yukarı eğim tarafı sıkışır. Hata, yatay mesafe metresi başına yaklaşık ±h · tan(eğim)'dir.
    • Geniş açı mercek bozulması. ~110° HFOV'un üzerinde, rektilinear projeksiyon merceğin gerçek eşlemesinden köşelerde %1–5 oranında ayrılır. Bu durumlar için geometri katmanında eşit uzaklıklı / eşit-katı projeksiyonlar mevcuttur (bkz. §5).
    • Cam kubbeli kameralar. Kubbe, mercek girişinde küçük bir kırılma kayması (tipik montaj yüksekliklerinde milimetreler) tanıtır. Aynalı camlı kurulumlardaki yüksek hassasiyetli DORI çalışması için bu önemsiz olmaktan çıkar; genel planlama için diğer hata kaynaklarının altındadır.
    • Çoklu yansımalı optik. Cam duvarlardan, aynalı tavanlardan veya parlatılmış zeminlerden gelen yansımalar izlenmez. Model yalnızca görüş hattı yer izini döndürür.
    • Hareket halindeki PTZ. Model, tek bir pan/eğim ayarında anlık yer izini verir. Zaman içinde hareket eden bir PTZ'nin kapsamı, anlık değil süpürülmüş yer izidir.
    • Kurulum toleransı. Gerçek kurulum açıları tasarımdan 1–3° (teknisyen hatası) sapar. Bir sonraki bölüm bunun yer hatasına nasıl yayıldığını niceliksel olarak ölçer.

    9. Hata duyarlılığı

    Giriş parametrelerindeki (montaj yüksekliği, eğim açısı, FOV) hatalar, yer izindeki yer-konumu hatalarına yayılır. Alt kenar yer kesişimi d_near = h / tan(α + vfov/2) için kısmi türevler şunu verir:

    ∂d_near/∂h = 1 / tan(α + vfov/2)        = d_near / h
    ∂d_near/∂α = −h / sin²(α + vfov/2)         (radyan)
    ∂d_near/∂vfov = −h / (2 · sin²(α + vfov/2)) (radyan)

    Açısal kısmi türevler radyan cinsindendir; derece başına dönüştürmek için π/180 (≈ 0,01745) ile çarpın. Aşağıdaki tablo dönüşümü uygular.

    Tipik bir yapılandırma için (h = 10 m, eğim = 15°, vfov = 50° → d_near ≈ 11,9 m), her parametredeki küçük hatalar d_near'da aşağıdaki sapmaları üretir:

    ParametreGiriş hatasıΔ d_nearNot
    eğim α±1°±0,42 mtipik eğimölçer çözünürlüğü
    eğim α±3°±1,27 mbrakette gözle kurulum
    yükseklik h±0,5 m±0,59 mşerit ölçüm, erişilemez direk
    vfov±1°±0,21 mveri sayfası yuvarlama
    tüm hepsi birlikteRMS~1,4 m3° eğim + 0,5 m yükseklik + 1° fov ile

    Baskın terim, kurulum açısı belirsizliğidir: yukarıdaki yapılandırmada her derece eğim hatası, d_near'da yer-konumu doğruluğunda ~42 cm'ye mal olur. 0,1° çözünürlüklü bir lazer eğimölçer, eğim kaynaklı d_near hatasını 5 cm'nin altında tutar; gözle yapılan braket kurulumu yaklaşık ±1 m doğrulukta iyidir. DORI seviye doğrulaması için (Tanıma ve Tanımlama yer halkaları arasındaki fark 2–3 m olabilir), eğim tahmin edilmemeli, ölçülmelidir.

    Aynı kısmi türev analizi, HFOV aracılığıyla yer izi yan genişliğine de uygulanır — HFOV'da 1° hata, d mesafesinde yaklaşık 2 · d · tan(½°) ≈ %1,7 yan yayılma hatası üretir. 30 m menzilde bu ~52 cm yan belirsizliktir; bu nedenle üretici HFOV rakamlarını kesin değil, ±1° olarak ele alıyoruz.

    10. Yeniden üretilebilirlik

    Bu makaledeki tüm formüller, CCTVplanner.io'nun tasarımcısı ile birlikte gelen geometri modülünde kelimesi kelimesine uygulanır. Modül; rektilinear / eşit uzaklıklı / eşit-katı projeksiyonları, kör nokta sınır durumlarını, DORI yer projeksiyonunu, poligon Boolean engel kırpmasını ve çok katlı uzantıyı kapsayan kapsamlı bir birim test paketi tarafından kapsanmaktadır. Bu sayfadaki her diyagram, canlı tasarımcının kullandığı aynı işlevler çağrılarak oluşturulur.

    Ana giriş noktaları

    • buildFrustum(args) — kamera tabanı (forward / right / upCam) + frustum meta verileri
    • computeGroundFootprint(frustum, projection) — örneklenmiş poligon (kenar başına 8 / 32 nokta)
    • slantToGroundRadius(frustum, slantM) — erişilebilirlik kontrolüyle √(slant² − h²)
    • computeSegmentShadow / computePolygonShadow — segment / poligon başına yer gölgesi projeksiyonu
    • subtractObstacleShadows(footprint, shadows) — Martínez–Rueda poligon farkı
    • computeFloorFootprint(frustum, z, projection) — çok katlı varyant

    Varsayılan sabitler

    • defaultLensProjection: HFOV < 170° iken rektilinear, aksi halde eşit uzaklıklı
    • SAMPLES_PER_EDGE: rektilinear için 8, fisheye projeksiyonlar için 32
    • Gölge kırpma mesafesi: renderRange × 4 (makul herhangi bir engel mesafesinde uzak kenar kırpmayı kapsar)
    • Uzak kenar yatay sınırlama: yer kesişimi renderRange'i yatay mesafede aşan ışınlar, yatay yönleri boyunca renderRange'e geri yansıtılır (poligonun uzak yayında ufuk yakını başıboş çizgi artefaktlarını önler).

    Matematiği sıfırdan yeniden üretmek: yayımlanan { x, y, h, panDeg, tiltDeg, hfovDeg, vfovDeg, renderRangeM, pixelsPerMeter } yapısıyla bir CameraFrustum oluşturun; sH, sV ∈ [−1, +1]'de görüntü düzlemi köşelerini kenar başına 8 örnekle (fisheye için 32) örnekleyin; her ışını z = 0 düzlemiyle kesin; gölge çıkarımı için poligon-fark uygulayın. Poligon Boolean adımındaki IEEE 754 sıralama etkileri haricinde sonuç, canlı tasarımcının render edilmiş poligonuyla kayan nokta hassasiyetinde (gerçek ölçekli girdilerde alt-milimetre) eşleşir.

    Kaynaklar

    • IEC 62676-4:2014 (değişiklikleriyle birlikte) — Güvenlik uygulamalarında kullanım için video gözetim sistemleri, bölüm 4: uygulama yönergeleri (DORI, hedef mesafeleri). Aynı metin, Avrupa baskısında EN 62676-4 olarak yayımlanmıştır.
    • Hartley & Zisserman, Multiple View Geometry in Computer Vision, 2. baskı, Cambridge University Press, 2004 (kamera projeksiyon modelleri, frustum geometrisi).
    • Kannala & Brandt, "A generic camera model and calibration method for conventional, wide-angle, and fish-eye lenses," IEEE TPAMI, 2006 (rektilinear / eşit uzaklıklı / eşit-katı projeksiyon karşılaştırması).
    • Martínez, Rueda & Feito, "A new algorithm for computing Boolean operations on polygons," Computers & Geosciences, 2009 — orijinal Martínez–Rueda algoritması. 2013'teki devamı "A simple algorithm for Boolean operations on polygons" (Advances in Engineering Software), burada kullanılan polygon-clipping kütüphanesinde uygulanan varyanttır.