SecureCam 0.9


Programátorská dokumentácia




                          Vladimír Bedecs

                               ...
Obsah
 Adresárová štruktúra projektu............................................................................ 3

 Špeci...
Adresárová štruktúra projektu
  Zdrojový kód projektu SecureCam je organizovaný v jednoduchej adresárovej
štruktúre. Každý...
vzhľadom na ich ID využíva hash mapy (navrhovaný štandard tr1) z knižnice
boost.



  Návrhové vzory
  SecureCam využíva p...
•      SystemLoader
       •      VideoAnalyzer



StreamLoader
   SecureCam využíva pre prístup k zdrojom videa platformn...
Zápis videa podporuje aplikácia SecureCam tiž (trieda VideoWriter). Vlákna
jednotlivých video zdrojov sú implementované po...
VideoAnalyzer
   Továreň na objekty poskytuje instancie potomkov troch abstraktných tried,
z ktorých je modul pre spracova...
Obrázok 5 Diagram dedičnosti dvoch obrazových filtrov.

  Detektor

  Detektor je špeciálnym obrazovým filtrom, ktorý okre...
Filtrátor videa




                          Obrázok 7 Diagram dedičnosti filtrátora videa.

   Pracuje s vektorom obrazo...
Ako je vidieť na obrázku 16, filtrátorov môže byť použitých aj viac, tým pádom
je možné distribuovať rôzne výstupy rôznym ...
udalosti (príkazu). Interface pre zapisovanie logu poskytuje modul SystemLoader
so svojim ILogWriter.

  Poplach

  Secure...
Obrázok 12 Továreň a jediná vyrábaná trieda (IPassword).



  XML
  Transformuje zostavy poplašného systému (identifikácia...
Obrazový filter

                                                               Obrazový filter
                          ...
Hlavné okno aplikácie je rozdelené do troch vizuálnych oblastí, ktoré sú vďaka
dokovaniu jednoducho premiestniteľné v rámc...
Obrázok 18 class DialogSystemProps.




                              Obrázok 19 class DialogFilters.




                ...
Kompilácia SecureCam
   Pre úspešné skompilovanie aplikácie SecureCam je nutná prítomnosť
niekoľkých knižníc alebo nástroj...
Upcoming SlideShare
Loading in...5
×

SecureCam Program Guide

770

Published on

Published in: Travel, Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
770
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "SecureCam Program Guide"

  1. 1. SecureCam 0.9 Programátorská dokumentácia Vladimír Bedecs 2.8.2009
  2. 2. Obsah Adresárová štruktúra projektu............................................................................ 3 Špeciality projektu............................................................................................... 3 Návrhové vzory ................................................................................................... 4 Modularizácia ...................................................................................................... 4 StreamLoader ...................................................................................................... 5 VideoAnalyzer ..................................................................................................... 7 Obrazový filter ............................................................................................. 7 Detektor ...................................................................................................... 8 Filtrátor videa .............................................................................................. 9 SecureCam ........................................................................................................ 10 Udalosti a Logovanie ................................................................................. 10 Poplach ...................................................................................................... 11 Security.............................................................................................................. 11 XML.................................................................................................................... 12 GUI..................................................................................................................... 13 Reprezentácia v kóde ................................................................................ 14 Setup ................................................................................................................. 15 Kompilácia SecureCam ...................................................................................... 16 2
  3. 3. Adresárová štruktúra projektu Zdrojový kód projektu SecureCam je organizovaný v jednoduchej adresárovej štruktúre. Každý modul (na OS Windows dynamická knižnica .dll) má vlastný podadresár projektového adresára „Source“. Niektoré súbory so zdrojovým kódom obsahujúce globálne deklarácie alebo deklarácie tried výnimiek sú spoločné pre všetky moduly. Tieto sa nachádzajú v podadresári „Shared“ adresára „Source“. Dokumentácia (Doc), externé knižnice (Libs), ukážkové videá (Samples) s skompilované súbory (Build) majú vlastné adresáre v koreni adresárovej štruktúry projektu tiež. • SecureCam o Build o Doc o Libs o Samples o Sounds o Source GUI SecureCam Security Shared StreamLoader SystemLoader VideoAnalyzer Špeciality projektu V jazyku C++ je veľmi ľahké vytvoriť únik pamäte (memory leak), pretože behové prostredie neposkytuje garbage collection a každá naalokovaná pamäť musí byť aj korektne dealokovaná. Aby sa predišlo podobným nepríjemnostiam, tak sa na automatické uvoľňovanie alokovanej pamäte v zdrojovom kóde používa logika smart pointrov. Implementáciu smart pointrov poskytuje platformne nezávislá zbierka utilít a knižníc Boost, ktorej zdrojový kód je dostupný pod Boost licenciou. Pre rýchly prístup k jednotlivým zdrojom videa 3
  4. 4. vzhľadom na ich ID využíva hash mapy (navrhovaný štandard tr1) z knižnice boost. Návrhové vzory SecureCam využíva pomerne často vo svojom kóde implementácie návrhových vzorov. Preto sa predpokladá, že čitateľ tohto dokumentu má aspoň základný prehľad terminológie tejto oblasti. Základné návrhové vzory, ktoré SecureCam využíva sú: • Iterator • Observer • Factory method • Abstract factory • Command • Visitor Modularizácia Každý modul je kompilovaný ako dynamická knižnica (.dll) operačného systému Windows. Rozhranie modulov tvoria deklarácie interface-ov tried, ktorých instancie vracia továreň na objekty známa z design patterns ako (abstract) Factory. Každý modul má teda vlastnú továreň, pomocou ktorej propaguje svoju funkčnosť iným modulom. V ďalšom texte bude aplikácia SecureCam detailnejšie popísaná vzhľadom na jednotlivé moduly: • GUI • SecureCam • Security • Setup • StreamLoader 4
  5. 5. • SystemLoader • VideoAnalyzer StreamLoader SecureCam využíva pre prístup k zdrojom videa platformne nezávislú knižnicu OpenCV vyvinutú firmou Intel, ktorá je určená najmä pre počítačové videnie v reálnom čase. Zdrojový kód knižnice je dostupný pod licenciou BSD. Pre efektívne využitie prítomnosti viacerých (jadier) procesorov využíva knižnicu pre paralelné programovanie v jazyku C++ s názvom OpenMP. Základné triedy a ich vlastnosti: Obrázok 1 Diagram dedičnosti jednotlivých zdrojov videa. • CameraVideoSource – podporuje všetky druhy kamier, ktoré sú operačným systémom rozpoznané ako zdroj videa. • FileVideoSource – podporuje všetky formáty videa, pre ktoré sú nainštalované v operačnom systéme korektné video kodeky. • BuffCameraVideoSource – je vstup z kamery, ktorého jednotlivé snímky sa vkladajú do vyrovnávacieho buffera. • BufferedFileVideoSource – je vstup z video súboru, ktorého jednotlivé snímky sa vkladajú do vyrovnávacieho buffera. 5
  6. 6. Zápis videa podporuje aplikácia SecureCam tiž (trieda VideoWriter). Vlákna jednotlivých video zdrojov sú implementované pomocou známeho platformne nezávislého frameworku pre aplikácie a aplikačné rozhrania QT, ktorý bude ešte spomenutá najmä v súvislosti s modulom GUI. Obrázok 2 Enumerátor aktívnych zariadení. • DeviceEnumerator – Metoda GetDeviceCount() vracia počet aktívnych zariadení pre video v rozpoznaných operačným systémom. Pre zistenie prítomnosti zariadení opäť využíva knižnicu OpenCV. Továreň modulu StreamLoader poskytuje konštrukciu všetkých spomenutých tried. Obrázok 3 Továreň modulu StreamLoader. 6
  7. 7. VideoAnalyzer Továreň na objekty poskytuje instancie potomkov troch abstraktných tried, z ktorých je modul pre spracovanie videa vytvorený: filtrátor videa, obrazový filter a detektor: Obrázok 4 Továreň modulu VideoAnalyzer. Obrazový filter Každý filter podporuje množstvo parametrov, aby boli maximálne prispôsobiteľné vlastnostiam vstupného videa a zachytenej scény ale aj potrebám užívateľa. Kód každého filtru do veľkej miery využíva funkcie spomínanej knižnice OpenCV. 7
  8. 8. Obrázok 5 Diagram dedičnosti dvoch obrazových filtrov. Detektor Detektor je špeciálnym obrazovým filtrom, ktorý okrem zmeny obrazu (nie je však nutná) dokáže zasielať poplašnému systému správy (metóda SendEvent). V prípade poplašného syst systému sa jedná o správy typu štart / stop poplach. Pre potreby aplikácie SecureCam stačí jediný detektor WhiteDetector. Obrázok 6 Diagram dedičnosti detektora. 8
  9. 9. Filtrátor videa Obrázok 7 Diagram dedičnosti filtrátora videa. Pracuje s vektorom obrazových filtrov, do ktorého je možné jednotlivé obrazové filtre v ľubovoľnom čase pridávať (metóda AddImageFilter) a takisto aj odoberať (metóda RemoveImageFilter). Na vstupné video aplikuje postupne všetky filtre vo vektore obrazových filtrov. Výsledný filtrovaný obraz potom zasiela všetkým príjemcom, ktorý sú u neho zaregistrovaný (metódy AddVideoStreamAcceptor, RemoveVideoStreamAcceptor, SetPrimaryAcceptor). Táto logika je implementáciou návrhového vzoru „Observer“ a umožňuje synchrónne rozosielať jednotlivé spracované snímky všetkým zaregistrovaným príjemcom bez nutnosti aktívneho čakania príjemcov. Poslednou funkčnosťou filtrátora je možnosť zvoliť si aký obraz bude príjemcom rozoslaný po aplikovaní všetkých obrazových filtrov vo vektore (metóda SetOutput). Môže to byť pôvodný (vstupný) obraz, filtrovaný obraz a spojený obraz. Ten je zlúčením pôvodného (vstupného) obrazu a filtrovaného obrazu vo jednom farebnom kanále. Filtrátor Poplašný systém Filtrátor Zobrazenie v GUI Vstupný obraz Zápis videa 9 Obrázok 8 Filtrovanie a distribúcia vstupného obrazu pomocou filtrátorov
  10. 10. Ako je vidieť na obrázku 16, filtrátorov môže byť použitých aj viac, tým pádom je možné distribuovať rôzne výstupy rôznym príjemcom videa. SecureCam Obrázok 9 Diagram dedičnosti poplašného systému. Základná myšlienka kódu tohto modulu spočíva vo využití návrhového vzoru „Command“, pomocou ktorého je možné zasielaním príkazov vo forme objektov (IEvent) z ostatných modulov ovládať celý poplašný systém (OnEvent a ProcessSelf). Udalosti a Logovanie Obrázok 10 Udalosti Start a End Alarm. Každá udalosť (príkaz), ktorú predstavujú instancie implementácie návrhového vzoru „Command“, pomocou ktorých je poplašný systém riadený, je zaznamenávaná formou logu, ktorý je tvorený dvojicami: dátum a čas, názov 10
  11. 11. udalosti (príkazu). Interface pre zapisovanie logu poskytuje modul SystemLoader so svojim ILogWriter. Poplach SecureCam podporuje niekoľko typov (prejavov) poplachu: hlásenie poplachu zvukom (počas poplachu je opakovane prehrávaný zvolený zvukový súbor), nahrávanie videa (na HDD sa začne zapisovať vstupné video (IVideoWriter), ktoré spôsobuje poplach) a zaslanie notifikačného e-mailu, ktoré je realizované pomocou externej aplikácie (je súčasťou dodávky) s voľnou licenciou (sendEmail.exe). Modul SecureCam teda poskytuje len abstrakciu poplašného systému (ISecuritySystem) riadeného príkazmi a abstrakciu vstupu poplašného systému (ISecurityInput), ktorý je zapuzdruje triedy IVideoSource a IVideoStreamFiltrator modulu VideoAnalyzer. Obrázok 11 Továreň modulu SecureCam. Security Poskytuje modulu poplašného systému bezpečnú správu hesiel. To znamená, že heslá sú interne reprezentované 32 bajtovým reťazcom šifrovaného metódou MD5. Tento modul používa implementáciu šifrovania od RSA Data Security. 11
  12. 12. Obrázok 12 Továreň a jediná vyrábaná trieda (IPassword). XML Transformuje zostavy poplašného systému (identifikácia zdrojov videa, obrazové filtre, heslo a iné nastavenia systému) do a z formátu XML. Využíva pri tom externú knižnicu Tiny XML c++. Tento modul implementuje tri I/O triedy, ktorých interface má lan jednu metódu Write/Read a každá z nich jeden parameter (ISecuritySystem). IXMLWritel uloží na dané miesto zostavu poplašného systému vo formáte XML. IXMLReader vytvorí poplašný systém, ktorého zostava je uložená vo formáte XML na danom mieste. ILogWriter uloží záznamy logu poplašnéh systému na dané miesto vo formáte XML. Obrázok 13 Tri I/O triedy modulu SystemLoader. XML modul jednoducho ukladá, resp. nahráva zostavu poplašného systému do, resp. zo súboru na HDD. Hierarchia uložených dát (zostavy) je stromovitá, ako je vidieť aj na nasledujúcom obrázku. 12
  13. 13. Obrazový filter Obrazový filter Zdroj videa Obrazový filter Poplašný systém Zdroj videa Obrazový filter Zdroj videa Obrazový filter Obrazový filter Obrázok 14 Štruktúra reprezentácie zostavy poplašného systému GUI Mal by byť modulom, ktorý sa stará nielen o vizuálnu stránku projektu, ale aj o komfortné používanie celého poplašného systému. Vďaka platformne nezávislému frameworku pre aplikácie a aplikačné rozhrania Qt, naplnil modul GUI obe požiadavky relatívne jednoducho. Celý framework je postavený na architektúre riadenej udalosťami. Zabezpečuje aj množstvo iných platformne nezávislých utilít (podpora vlákien, synchronizácia vlákien, grafika, štandardné dialogy...), ktoré aplikácia SecureCam úspešne využíva. Obrázok 15 Hlavné okno aplikácie - SCMainWindow. 13
  14. 14. Hlavné okno aplikácie je rozdelené do troch vizuálnych oblastí, ktoré sú vďaka dokovaniu jednoducho premiestniteľné v rámci hlavného okna. Reprezentácia v kóde Každé dialógové okno, widget ale aj hlavné okno aplikácie sú reprezentované samostatnou triedou, ktorej predka generuje nástrok frameworku Qt „qmake“. Ten z xml súborov vyjadrujúcich rozloženie, názvy, signály a sloty jednotlivých ovládacích prvkov vygeneruje kód v jazyku C++. Obrázok 16 Diagram dedičnosti troch tried modulu GUI. Obrázok 17 class DialogCameras. 14
  15. 15. Obrázok 18 class DialogSystemProps. Obrázok 19 class DialogFilters. Obrázok 20 class DialogInputProps. Setup Na vytvorenie spoľahlivého inštalátora projektu SecureCam, bol použitý nástroj Inno Setup. Preto je tento modul zastúpený len jedným vstupným skriptom, ktorý nástroj Inno setup kompiluje do spustiteľného súboru. 15
  16. 16. Kompilácia SecureCam Pre úspešné skompilovanie aplikácie SecureCam je nutná prítomnosť niekoľkých knižníc alebo nástrojov. Verzie jednotlivých knižníc / nástrojov ktoré aplikácia aktuálne využíva sú uvedené v súbore Doc/VERSIONS.txt. Pre skompilovanie GUI modulu je nutné pregenerovať GUI.vcproj súbor príkazom qmake v adresári modulu GUI, aby bol prispôsobený na dané prostredie (cesty a verzia knižnice Qt). Boost – Zdrojové kódy knižnice sa nachádzajú na adrese http://www.boost.org. Knižnicu samotnú nie je nutné kompilovať, keďže väčšina súborov sú hlavičkové súbory. OpenCV – Inštalátor behového prostredia a zdrojových kódov sa nachádzajú na adrese http://sourceforge.net/projects/opencvlibrary/. Qt – SDK známeho frameworku je možné stiahnuť pod duálnou licenciou na adrese http://www.qtsoftware.com. Inno Setup – Free nástroj pre kompiláciu inštalačného skriptu je možné nájsť na adrese http://www.jrsoftware.org/isinfo.php. 16

×