Sisteme de Supraveghere Video cu Căutarea Informației de Intere s [631160]
Universitatea “Politehnica” din București
Facultatea de Eelectronică , Telecomunicații și Tehnologia Informației
Titlul complet al temei
Sisteme de Supraveghere Video cu Căutarea Informației de Intere s
Proiect de diplomă
prezentat ca cerință parțială pentru obținerea titlului de
Inginer în domeniul Electronic ă și Telecomunicații (ETC )
programul de studii de licență Electronică Aplicată (ELA)
Conducător științific: Absolvent: [anonimizat].dr.ing. Bogdan IONESCU Andreea Roxana VASILE
2017
Cuprins
CUPRINS ………………………….. ………………………….. ………………………….. ………………………….. ……….. 7
LISTA FIGURILOR ………………………….. ………………………….. ………………………….. …………………… 9
LISTA TABELELOR ………………………….. ………………………….. ………………………….. ………………… 11
LISTA ACRONIMELOR ………………………….. ………………………….. ………………………….. ………….. 13
INTRODUCERE ………………………….. ………………………….. ………………………….. ……………………….. 15
1. SISTEME DE SUPRAVEGH ERE VIDEO ………………………….. ………………………….. ………….. 17
1.1 Istoria sistemelor de supraveghere vide o ………………………….. ………………………….. ………… 17
1.2 Utilizare ………………………….. ………………………….. ………………………….. ………………………….. ..18
1.2.1 Prevenirea crimelor ………………………….. ………………………….. ………………………….. ……….. 18
1.2.2 Procese industrial ………………………….. ………………………….. ………………………….. ………….. 19
1.2.3 Monitorizarea traficului ………………………….. ………………………….. ………………………….. ….19
1.2.4 Alte utiliz ări ale sistemelor CCTV ………………………….. ………………………….. ………………. 19
1.3 CCTV în lume ………………………….. ………………………….. ………………………….. …………………… 20
1.4 Clasificare sisteme CCTV ………………………….. ………………………….. ………………………….. …..21
1.4.1 După perioada de func ționare a camerelor de supraveghere ………………………….. ………… 21
1.4.2 După rezolu ția și calitatea imaginii ………………………….. ………………………….. ……………… 22
1.4.3 După modul de conectivitate ………………………….. ………………………….. ………………………. 23
1.4.4 După nivelul de vizibi litate ………………………….. ………………………….. …………………………. 23
1.4.5 După modul de prelucrare al semnalului ………………………….. ………………………….. ………. 24
1.4.6 După nivelul de rezistenta la interperii ………………………….. ………………………….. …………. 24
1.5 Func țiile sistemelor CCTV ………………………….. ………………………….. ………………………….. …24
1.6 CCTV în lege ………………………….. ………………………….. ………………………….. …………………….. 26
1.7 Costuri ………………………….. ………………………….. ………………………….. ………………………….. ….27
2. INFORMA ȚIA DE INTERES ÎN IMAGINI ȘI VIDEO ………………………….. …………………… 29
2.1 Detectarea col țurilor ………………………….. ………………………….. ………………………….. …………. 29
2.1.1 Algoritmul lui Moravec ………………………….. ………………………….. ………………………….. ….30
2.1.2 Algoritmul creat de Harris și Stephens ………………………….. ………………………….. …………. 30
2.1.3 Detectorul de colț Förstner ………………………….. ………………………….. …………………………. 31
2.1.4 Operatorul Harris ………………………….. ………………………….. ………………………….. ………….. 33
2.1.5 Sinteza automată a detectoarelor ………………………….. ………………………….. …………………. 33
2.2 Detectarea marginilor ………………………….. ………………………….. ………………………….. ……….. 35
2.2.1 Un model simplu de extragere al margin ilor ………………………….. ………………………….. ….36
2.2.2 Detector de margini Canny ………………………….. ………………………….. …………………………. 36
2.2.3 Binarizarea imaginii ………………………….. ………………………….. ………………………….. ……… 37
2.2.4 Exemplu de extragere a muchiei ………………………….. ………………………….. …………………. 37
2.3 Detecția petelor ………………………….. ………………………….. ………………………….. …………………. 39
2.3.1 Operatorul LoG ………………………….. ………………………….. ………………………….. …………….. 39
2.3.2 Algoritmul DoG ………………………….. ………………………….. ………………………….. ……………. 41
2.3.3 Nivel de gri în pete ………………………….. ………………………….. ………………………….. ……….. 42
2.3.4 Exemplu de aplicare a m etodei de detecție a petelor ………………………….. …………………… 42
3. TEHNOLOGIA FOLOSITĂ ………………………….. ………………………….. ………………………….. …..45
3.1 Limbajul de programare C++ ………………………….. ………………………….. ………………………… 45
3.2 Visual Studio ………………………….. ………………………….. ………………………….. …………………….. 46
3.3 Librăria OpenCV ………………………….. ………………………….. ………………………….. ……………… 47
3.4 Baza de date SCOUTER ………………………….. ………………………….. ………………………….. …….47
4. DETECȚIA MIȘCĂRII ÎN FIȘIERELE VIDEO ………………………….. ………………………….. …49
4.1 Algoritmul de extragere a l fundalului ………………………….. ………………………….. …………….. 49
4.2 Algoritmul de detecție a mișcării folosind filtre de culoare și detectarea conturului …..50
4.3 Algoritmul de detecție a obiectelor ce se deplasează în cadru fără a se folosi culorile
acestora ………………………….. ………………………….. ………………………….. ………………………….. ………………. 53
5. REZULTATE EXPERIMENT ALE ………………………….. ………………………….. …………………….. 55
CONCLUZII ………………………….. ………………………….. ………………………….. ………………………….. …65
BIBLIOGRAFIE ………………………….. ………………………….. ………………………….. ……………………….. 67
ANEX A 1 ………………………….. ………………………….. ………………………….. ………………………….. ……… 69
Lista figurilor
Figura 1 : În imagine se poate observa diferența dintre 4 camere cu rezoluții diferite. ………………. 22
Figura 2 : Diferențele dintre o cameră analogică și două camere digitale cu rezoluții diferite …….. 23
Figura 3 : Diferențele dintre două cad re ale aceleiași camere, în primul cadru (stânga) camera are
activate funcția WDR, iar în al doilea cadru (dreapta) camera are funcția WDR oprită ……………………. 25
Figura 4 : Detecția unui colț, folosind algoritmul lui Förstner ………………………….. ……………………. 32
Figura 5 : În imaginea de mai sus se pot v edea 12 respectiv 13 colțuri găsite într -o imagine din
baza de date SCOUTER, alături de coordonatele acestora. Codul folosit pentru testarea ac estei metode
provine de la sursa [13] ………………………….. ………………………….. ………………………….. ………………………. 32
Figura 6 : Principiul funcției de auto -corelație ………………………….. ………………………….. …………….. 33
Figura 7 : Exemplu de rezultat al extragerii conturului unei imagini, codul sursă a fost preluat de la
sursa [15] și a fost adaptată pentru o imagine din baza de date SCOUTER. Pentru acest exemplu s -a
ales o valoare a pragului de detectare a colturilor de 100 ………………………….. ………………………….. …….. 34
Figura 8 : Exemp lu de rezultat al extragerii conturului unei imagini, codul sursă a fost preluat de la
sursa [ 15] și a fost adaptată pentru o imagine din baza de date SCOUTER. Pentru acest exemplu s -a
ales o valoare a prag de detectare al colturilor foarte mic, aproximati v 0. ………………………….. ………….. 34
Figura 9 : Exemplu de rezultat al extragerii conturului unei imagini, codul sursă a fost preluat de la
sursa [ 15] și a fost adaptată pentru o imagine din baza de date SCOUTER. Pentru acest exemplu s -a
ales o valoare a prag de detectare al colturilor foarte mare, aproximativ 255. În acest exemplu se pot
vedea și coordonatele contururilor extrase ………………………….. ………………………….. …………………………. 35
Figura 10 : Extragerea muchiilor dintr -o imagine, folosindu -se un prag foarte mic, egal cu 0 …….38
Figura 11 : Extragerea muchiilor dintr -o imagine, folosindu -se un prag foarte mare, egal cu 100 .38
Figura 12 : Extragerea muchiilor pentru o imagine, în acest caz pragul a fost ales la jumătate, de
valoare aproximativ 50, astfel se poate observa conturul persoanei complet, se poate observa, mașina și
conturul persoan ei din fundal ………………………….. ………………………….. ………………………….. ………………. 39
Figura 13 : Funcția “Laplacian of Gaussian” (LoG) 2D ………………………….. ………………………….. ..40
Figura 14 : Funcția "Difference of Gaussians" (DoG) și funcția aferentă acestui operator …………. 41
Figura 15 : Exemplu de utilizare a metodei de detecție a petelor, folosind parametrii inițiali , și
anume pragul minim egal cu 0, pragul maxim egal cu 256. Filtrarea după zonă a fost activată, cu o
valoare minimă egală cu 1500. De asemenea filtrarea prin convexitate este activată. Astfel se poate
vedea cum s -a detectat o singură pată ce este evidenț iată printr -un cerc de culoare roșie …………………. 42
Figura 16 : Exemplu de utilizare a metodei de detecție a petelor. În acest caz a fost dezactivat filtru
după zona a fost dezactivat pentru imaginea din partea stângă, iar pentru imaginea din partea dreaptă s –
a ales o valoare minimă pentru arie mult mai mică, de aproximativ 15. Astfel se poate vedea că pentru
imaginea din stânga sunt evidențiate mult mai multe pete de dimensiuni mai mici, iar imaginea din
dreapta petele sunt mai puține, dar cu dimensiuni puțin mai mari ………………………….. …………………….. 43
Figura 17 : Exemplu de utilizare a metodei de detecție a petelor. Pentru acest exemplu cele două
filtre au fost dezactivate, astfel se poate vedea influenta zgomotului, apar foarte multe pete evidențiate
de diverse dimensiuni care se suprapun între ele, în acest mod nu se poate observa nimic clar în
imagine, nici un obiect de interes nu poate fi detectat. ………………………….. ………………………….. ………… 43
Figura 18 : Exemplu de utilizare a metodei de detecție a petelor. În ambele imagini filtrarea după
zona a fost activată. Și a fost variat parametrul d e convexitate ………………………….. …………………………. 44
Figura 19 : Exemplu de cod scris în limbajul de programare C++ (imaginea din p artea stânga), iar
în imaginea din partea dreaptă avem ceea ce codul nostru a returnat după compilare. Codul are rolul de
a afișa două imagini în ferestre de di mensiuni diferite. Imaginile sunt extrase din baza de date
SCOUTER ………………………….. ………………………….. ………………………….. ………………………….. …………… 46
Figura 20 : Interfața cu utilizatorul a programului Microsoft Visual Studio ………………………….. …47
Figura 21 : Prezentarea unei imagini preluata din baza de date SCOUTER, pentru care s -a făcut
legătura cu fiș ierul CSV corespunzător, astfel persoana 1 sau scenariul 1 este înconjurat de un
dreptunghi de culoare neagră, codul sursă se găsește în Anexa 1 ………………………….. ………………………. 48
Figura 22 : Modul de lucru al algoritmului BS (“Background subtraction”), poza a fost preluată de
la sursă [ 26] ………………………….. ………………………….. ………………………….. ………………………….. ………….. 49
Figura 23 : Modul de funcționare al operației de erodare ………………………….. ………………………….. 51
Figura 24 : Modul de funcționare al operației de dilatare ………………………….. ………………………….. 51
Figura 25 : Utilizând un cod sursă [ 26] ce are rolul de a demonstra aplicarea funcției
“createBackgroundSubtractorMOG2()” pentru caz ul în care cei trei parametrii au fost setați cu valorile
implicite, astfel că history = 500, varThreshold = 16, detectShadows = este setat ca fiind adevărat
(“true” ) ………………………….. ………………………….. ………………………….. ………………………….. ………………… 55
Figura 26 : Modul in care se modifica imginile rezultate atunci cand variem cel de al t reilea
parametru, si anume “detectShadows”. ………………………….. ………………………….. ………………………….. ….56
Figura 27 : Exemplu de testare al algoritmului de modelare a fundalului, pentru care s -a variat
parametrul “history”. Se poate observa cum pentru valoare 1 apar foarte mulți pixeli albi, astfel că nu
se pot ved ea obiectele de interes ………………………….. ………………………….. ………………………….. ………….. 56
Figura 28 : Imaginile obținute în urma testelor efectuate în cazul varierii pragului …………………… 57
Figura 29 : Model de aplicare al algoritmul de de detecție a mișcării folosind filtre de culoare și
detectarea conturului, detectându -se culoar ea neagră ………………………….. ………………………….. ………….. 58
Figura 30 : Model de aplicare al algoritmul de detecție a mișcării folosind filtre de culoare și
detectarea conturului, detectându -se culoarea roșie ………………………….. ………………………….. …………….. 58
Figura 31 : Model de aplicare al algoritmul de detecție a mișcării folosind filtre de culoare și
detectarea conturului, folosind camera web pentru a se detecta un obiect ce se deplasează în scenă …..59
Figura 32 : Imaginile finale al contururilor extrase, obținute cu diverse valori ale parametrilor ce
pot varia (senzitivitatea și nivelul de netezire) ………………………….. ………………………….. ……………………. 59
Figura 33 : Primele ferestre ce apar după compilarea programului. În partea stângă avem
prezentate tastele ce trebuiesc apăsate pentru a se începe prelucrarea cadrelor, iar în imaginea din
partea dreaptă avem un cadru din clipul video original ………………………….. ………………………….. ……….. 60
Figura 34 Imaginile obținute în urma apăsării tastei “d”. Imagini după care se face detectarea de
mișcare în cadru ………………………….. ………………………….. ………………………….. ………………………….. …….61
Figura 35 : Urmărirea obiectelor ce se deplasează în scenă. În partea dreaptă avem obiectul
urmărit, iar în partea stângă se pot vedea coordonate le punctului de urmărire în mai multe cadre ……… 61
Figura 36 : Exemplu de testare a algoritmilor prin utilizarea unor imagini ce provin de la o cameră
de filmat live ………………………….. ………………………….. ………………………….. ………………………….. ………… 62
Lista tabelelor
Tabelul 1: Numărul de camere de supraveghere instalate în decursul a 5 ani, sursa [ 5] …………………… 20
Tabelul 2: Istoricul versiunilor Visual Studio ………………………….. ………………………….. ……………………. 46
Tabelul 3: Cele patru moduri de recuperare a conturului [ 30] ………………………….. …………………………. 52
Tabelul 4: Metodele de aproximare ale conturului [ 30] ………………………….. ………………………….. ……… 52
Tabelul 5: Enumerarea tipurilor de prag, sau ultimul parametru al funcție “threshold" …………………… 53
Lista acronimelor
AGC „Automatic Gain Control”, tradus în rom ână reprezintă controlul automat al câștigului ;
ATM Bancomat, prescurtare a sintagmei engleze “Automat ed Teller Machine ” – literal casier
automat;
AWB Balansul automat de alb, prescurtare a sintagmei “A uto White Balance ”;
BCPL “Basic Combined Programming Language ”, tradus în română reprezintă limbaj de
programare de baz ă;
BLC “Black Light Compensation ”, tradus în română reprezintă compensarea luminii;
BS “Background subtraction ”, tradus în română reprezintă extragerea fundalului;
BSD “Berkeley Software Distribution”, tradus în română reprezintă numele unei distribuții
UNIX ;
CCTV “Closed -circuit television ”, tradus în română reprezintă televiziunea cu circuit închis
(TVCI) ;
CSV “Comma -separated values ”, tradus în română reprezintă valori separate prin virgulă ;
DCS Dispozitiv ce prezint ă cuplaj d e sarcin ă. “Charge -Coupled Device” (CCD);
DNR “Digital Noise Reduction”, tradus în română reprezintă reducerea zgomotului;
DoG “Difference of Gaussians ”;
DWDR “Digital Wide Dynamic Range ”, tradus în română reprezintă o gam ă largă digitală;
HSV Provine de la nuanță (“hue”), saturație (“saturation”) și strălucire (“brightness” sau
“value”) ;
IDE “Integrated development environment ”, tradus în română reprezintă mediu integrat de
dezvoltare ;
IEC Comis ia Electrotehnica Internationala ;
IP “Internet Protocol ”;
LAN “Local Area Network ”, tradus în română reprezintă rețea locală ;
LoG “Laplacian of Gaussian”;
OSD “On Screen Display”, tradus în română re prezintă expunerea pe ecran;
P2P Punct la punct;
PTZ “Pan-tilt-zoom”, tradus în română reprezintă camere video ce își pot schimba direcția
de filmat și care, de asemenea au zoom automat ;
RGB “red-green -blue”, repre zinta un model aditiv de culoare;
ROI “Region of Interest”, tradus în română reprezintă o regiune de interes;
RVA Model cromatic, prescurtare ce provine de la cele trei culori primare, roșu-verde –
albastru ;
STL “Stand ard Template Library ”, tradus în română reprezintă o bibliotec ă standard;
TVL “Television lines ”, tradus în română reprezintă linii de televiziune, ce este o unitate de
masura a rezolutiei;
VCA “Video content analysis”, reprez intă capacitatea sistemului de a analiza automat
fișierele video;
WDR “Wide Dynamic Range”, reprezintă capacitatea sistemului de a echilibra orice imagine
video primită de la device -ul utilizat ;
15
INTRODUCERE
În ziua de azi problema cu care ne confruntăm nu este lipsă de informație, ci imposibilitatea de a
selecta din volumul imens de informație disponibil, informația utilă. Acest lucru se aplică și în cazul
supravegherii video. Este greu de det ectat un obiect sau o persoană de interes prin analizarea capturilor
returnate de o cameră de supraveghere. Filmările returnate pot avea durate de timp foarte mari sau în
cadru pot apărea și alte obiecte sau persoane, astfel îngreunându -se detectarea obiec tului de interes.
În ultimii ani s -au făcut investiții în dezvoltarea sistemelor de supraveghere video inteligente.
Astfel că în prezent se pot găsi o multitudine de programe ce au ca rol detectarea mișcării sau
recunoașterea facială, acestea pot fi găsite atât gratuit cât și cu plată. De asemenea complexitatea și
performanțele diferă de la o aplicație la alta. Dar diferă și în funcție de scopul pe care îl au sau de locul
unde sunt folosite. Pentru zonele unde este nevoie de o protecție crescută, programele pentru sistemele
video pot realiza funcții din cele mai complexe, cum ar fi recunoașterea anumitor persoane, acționarea
automată a unor dispozitive în urma detectării unui anumit obiect de interes. Sau acestea pot fi mai simple
și mai ușor de folosit și d e către un utilizator fără experiență.
Conținutul lucrării va prezenta algoritmii existenți până în acest moment pe piață și îi va compara
pentru a se putea alege un mod de a analiza informația ce provine de la o cameră video de supraveghere.
Deasemenea ac eștia vor fi testați pentru diferite caracteristici ale lor, astfel se va putea vedea modul de
funcționare, avantajele și dezavantajele folosirii fiecărui mod ales.
16
17
1. SISTEME DE SUPRAVEGHERE VIDEO
Comparativ cu televiziunea comercială, TVCI diferă prin faptul că semnalul nu se transmite prim
mod deschis ci se pot folosi metode precum punct la punct (P2P), punct la multipunct, mesh sau link -uri
wireless, altfel spus CCTV are un ca racter privat sau limitat și pot fi accesate doar de persoanele ce
dispun de datele de acces necesare. Termenul de televiziune cu circuit închis este în majoritatea timpului
folosit pentru camerele de supraveghere sau monitorizare a zonelor în care ar pute a fi necesare, cum ar
fi bănci, instituții de stat, aeroporturi, clădiri militare, zone rezidențiale sau zone comerciale.
1.1. Istoria sistemelor de supraveghere video
Inventatorii Thomas Edison și William Dickson au fost primii ce s -au apropiat de conceptul de
cameră video, dar aceștia au abordat problema în două moduri diferite. În timp ce Edison s -a concentrate
pe kinetofon, Dickson s -a axat pe problema kinetografului. Astfel, în anul 1893 cei doi au făcut prima
demonstrație publică a unei proiecții cinemat ografice. În următorii ani în toată America au fost puse la
dispoziție și distribuite astfel de imagini, punându -se bazele sistemelor de supraveghere video [1].
Se spune că un fermier din Londra, în jurul anului 1933 ar fi creeat primul sistem de supraveghere
video. Acesta ar fi droit să își apere animalele de hoți, astfel că a folosit o cameră simplă, ce era
poziționată cu fața în jos spre zona unde se aflau animalele. Dacă un hoț se apropia de animale, camera
se declanșa. Sistemul, pe lângă camer ă, mai era alcătuit și din saci, tub de metal și fire.
Primul sistem CCTV a fost folosit de Germania nazistă, în anul 1942, pentru a observa lansarea
rachetelor V -2. Sistemul a fost instalat de cei de la Siemens, iar responsabil atât de instalare cât și de
proiectare a fost inginerul Walter Bruch. După câțiva ani, acest sistem de supravegere video a fost folosit
de către Statele Unite în tipul testării bombelor atomice.
Înregistrarea pe benzi magnetice apare pentru prima dată în anul 1951, prin utilizarea a cestei
metode s -au înregistrat imagini live de la o cameră de televiziune. Cinci ani mai târziu, această tehnologie
devine disponibilă publicului larg, iar în cele din urmă a fost îmbinată cu CCTV -ul pentru a salva
imaginile provenite de la acesta, astfel putând fi vizionate ulterior.
În anul 1960, o dată cu vizita familiei regale a Thailandei în Londra, poliția a folosit camere de
supraveghere temporar e ce au fost plasate în piața Trafalgar. Această decizie a fost luată pentru a se putea
asigura o mai bună protecție a familiei regale față de mulțimea venită în piață.
Ziarele din jurul anului 1965 arată un interes crescut al autorităților față de camerele de
supraveghere, astfel acestea sunt amplasate în diverse locuri publice.
Marie Van Brittan Brown împreu nă cu soțul ei Albert L. Brown au creeat, în anul 1969 primul
sistem de securitate video la domiciliu pentru care au primit un brevet pe data de 2 Decembrie a aceluiași
an. În ziarul The New York Times, pe data de 6 Decembrie 1969, apare un articol dedicat noii invenții.
Schițele din brevet prezentau un receptor ce semăna cu un televizor de mici dimensiuni ce avea rolul de
a afișa o imagine video a vizitatorului. Pe lângă receptor, sistemul mai era dotat cu un microfon și un
difuzor ce permiteau comunicare cu persoana aflată pe partea cealaltă a ușii, iar pe lângă acestea mai
apăreau două butoane, unul dintre ele deschidea ușa, celălalt suna o alarmă. Deși cei doi nu au avut de la
început un produs finit, și -au propus să instaleze un astfel de sistem chiar l a ei acasă [ 2].
18
Între anii 1970 și 1990 sistemele CCTV devin din ce în ce mai populare, astfel că nu mai sunt
folosite doar de către instituțiile guvernamentale, acestea încep să se extindă și pentru bănci sau
magazine, adăugându -se o nouă măsură de protecție împotriva hoților .
Dispozitivul ce prezintă cuplaj de sarcină (DCS) sau în engleză "Charge -Coupled Device"
(CCD), ce permite transportul semnalelor analogice prin mai multe etape succesive sub controlul unui
semnal de ceas, a apărut în anul 1976 și a condus la crearea camerelor de filmat ce pot fi folosite atunci
când în încăpere nu este lumină. Dispozitivul DCS este de fapt un registru de deplasare analogic și este
format dintr -un tablou de diode fotosensibile ce au rol de captare a imaginii și u n tablou de memorare ce
preia imaginile atunci când este cuplat la tabloul diodelor.
Din anii ’90 ATM -urile sunt dotate cu camere video, iar în anul 1992 apare primul dispozitiv de
tip “Nanny Cam” cu o rezoluție scăzută ce este folosit de către părinți pen tru a -și putea superviza copii
aflați în alte camere.
În anul 1996 începe declinul sistemelor CCTV, acest lucru datorându -se apariției camerelor IP,
acestea fiind un tip de camere video digitale ce spre deosebire de camerele analogice, pot trimite și
recep ționa date prin intermediul unei rețele de calculatoare sau prin internet.
După atacurile asupra World Trade Center toate statele și -au îndreptat atenția asupra montării de
dispozitive de supraveghere video pentru toate zonele importante sau zonele unde au loc evenimente ce
puteau deveni ținte pentru atacurile teroriste. De asemenea după acest eveniment nefericit s -a investit și
în dezvoltarea programelor de recunoaștere facial și de asemenea toate progresele digitale au devenit o
prioritate mare.
1.2. Utilizare
De la apariție până în prezent sistemele CCTV au avut mai multe moduri în care puteau fi folosite,
dar în principal rămâne supravegherea clădirilor atât private cât și de stat. Unele din modurile în care au
fost utilizate camerele de supravegher e vor fi expuse în cele ce urmează.
1.2.1. Prevenirea crimelor
Universitățile Northeastern și Cambridge au elaborate în anul 2009 o analiză numită
“Public Area CCTV and Crime Prevention: An Updated Systematic Review and Meta -Analysis”
(“CCTV din zona publică și prevenirea criminalității: o analiză sistematică actualizată și meta -analiză”).
Prin această analiză s -a constatat că sistemele de supraveghere au fost cel mai eficiente în parcări, unde
au condus la o scădere a ratei criminalității de 51%. De asemenea au fost eficiente și în mijloacele de
transport în comun, unde s -a constatat o scădere de 23% a ratei criminalității. Cea mai mică scădere a
ratei criminalității, de doar 7% s -a observat în instituțiile publice, restul de zone au avut o scădere
nesemnificati vă. Din punct de vedere al țărilor, în Regatul Unit al Marii Britanii s -a constatat o scădere
semnificativă a criminalității în zonele supravegheat cu sisteme video [ 3].
19
1.2.2. Procese industriale
Procesele industriale ce au loc în condiții periculoase pentru oameni sunt astăzi adesea
supravegheate de sisteme CCTV. Procesele ce au nevoie de supraveghere video pot fi procesele din
industria chimică, cum ar fi interiorul reactoarelor sau interiorul instalațiilor pentru fabricarea
combustibilului nuclear. Î n astfel de condiții pe lângă camerele obișnuite se mai folosesc și camere
termografice ce au rolul de a le arăta operatorilor temperatura proceselor. În unele cazuri este cerut prin
lege utilizarea de astfel de sisteme CCTV, condițiile din acele încăperi fiind mult prea periculoase pentru
oameni.
1.2.3. Monitorizarea traficului
Supravegherea traficului cu ajutorul camerelor video poate fi întâlnit atât în orașe cât și
pe autostrăzi, acest sistem fiind folosit pentru a se putea intervenii mai prompt în cazul accidentelor sau
pentru a se putea lua măsuri mai rapide în cazul ambuteiajelor. Multe dintre aceste camere sunt deținute
de companii private, astfel că informațiile sunt trimise către șoferi prin diverse aplicații.
În Marea Britanie autostrăzile sunt dota te cu peste 3000 de camere PTZ (pan -tilt-zoom),
camere video ce își pot schimba direcția de filmat și care, de asemenea au zoom monitorizat [ 4]. Camerele
de monitorizare a traficului au evoluat de la an la an, de asemenea din ce în ce mai multe state recur g la
monitorizarea video, în principal a autostrăzilor dar și a intersecțiilor foarte aglomerate. Acestea au
tehnologia necesară de a putea filma la o calitate superioară și de a citii automat plăcuțele de
înmatriculare. Astfel se pot detecta mai ușor mași nile căutate sau mașinile ce nu au taxele plătite.
Unele orașe sunt dotate cu camere de supraveghere în intersecții, acestea au rolul de face
o fotografie mașinilor și șoferilor ce trec pe culoarea roșie a semaforului, de asemenea camera poate
analiza și l ua o decizie în funcție de viteza pe care o are șoferul atunci când trece pe lângă ea. Dacă
autoturismul depășește viteza maximă permisă pe acel tronson de drum, camera se declanșează făcând o
poză mașinii, în special plăcuțelor de înmatriculare. Aceste ca mere au de asemenea posibilitatea de a
detecta șoferii ce folosesc telefoanele mobile în timp ce conduc. În unele orașe o persoană autorizată
monitorizează camerele și înregistrează toate abaterile semnalate de camerele de supraveghere video din
intersecți i.
1.2.4. Alte utilizări ale sistemelor CCTV
Companiile mari, instituțiile de stat și băncile preferă să își monitorizeze acțiunile
angajaților atât pentru protecția celor din urmă, dar și pentru a asigura un nivel crescut de securitate, mai
ales atunci când se lucrează cu bani sau acte importante și confidențiale.
Sistemele CCTV mai sunt folosite și în monitorizarea interiorului mijloacelor de transport
în comun, astfel se pot preveni infracțiunile, de asemenea camerele de supraveghere au un important rol
și în școli, unde se previne vandalismul, se pot monitoriza vizitatorii, astfel incintele devin mai ferite de
atacurile teroriste și de asemenea se poate preveni hărțuirea elevilor.
20
Pentru evenimentele ce adună foarte multă lume în același loc, cum ar fi concer te,
festivaluri, evenimente sportive și proteste, camerele de supraveghere au un dublu rol. Atât pentru a
asigura protecția oamenilor veniți, cât și pentru a putea transmite către alte ecrane de dimensiuni mari
evenimentul respective, astfel făcându -l vizi bil pentru toți cei adunați. În cel de -al doilea caz se pot folosi
și camere de filmat normale, ne fiind nevoie neapărat de camere de supraveghere.
Un alt mod de a utiliza camerele de supraveghere este în scopuri nelegale, de exemplu se
pot monta camere as cunse în ATM -uri, acestea având rolul de a înregistra codurile PIN, atunci când o
persoană folosește bancomatul respectiv, codul fiind transmis către o altă persoană, cea din urmă putând
să utilizeze cardul fără știrea proprietarului. Camerele ce se utiliz ează în aceste scopuri au dimensiuni
mici, fiind astfel greu de observat.
1.3. CCTV în lume
Numărul de camere existente la nivel mondial s -a dublat în doar 4 ani, astfel că în anul 2012
existau aproximativ 160 de milioane de camera de supraveghere, iar 4 ani mai târziu, în 2016 s -au
înregistrat 350 de milioane de astfel de camere. Cel mai mare număr de camere au fost instalate în Asia,
aici se găsesc 65% din numărul total de sisteme CCTV. Dar în ultimii ani creșterea nu a mai fost atât de
bruscă.
Tabelul 1: Numărul de camere de supraveghere instalate în decursul a 5 ani, sursa [ 5].
Tipuri de
camere 2012 2013 2014 2015 2016 Diferența
Camere
Wirless 19,316.90 31,794.70 51,606.10 80,156.70 117,812.10 98,495.20
64.60% 62.30% 55.30% 47%
Camere
Analogice 137,230 164,888.50 187,668 204,641.00 208,736.50 71,506.50
20.20% 13.80% 9% 2%
Sisteme
CCTV HD 243.3 1,416.00 5,267.50 12,572.10 23,299.40 23,056.10
482.00% 272% 138.07% 85.30%
TOTAL 156,790.20 198,099.20 244,542.00 297,369.80 349,848.00 193,057.80
26.30% 23.40% 21.60% 17.60%
În anul 2011 s -au înregistrat aproximativ 30 de milioane de camere de supraveghere în Statele
Unite ale Americii, acestea devenind populare încă din anii ’90. Costul redus și instalarea ușoară au făcut
ca numărul de camere de supraveghere pentru domiciliu să crească semnificativ la începutul secolului
21. După atacurile de la 11 Septembrie, a avut loc o creștere simțitoare în amplasarea de camere de
supraveghere în locurile publice, de teama unor noi atacuri teroriste guvernul a inițiat programe, precum
“Homeland Security Grant Program” (“Programul de Securitate Națională”) introdus în anul 2003 ce
21
asigură subvenții de la stat pentru ca orașele să își amplaseze camere în zonele imp ortante și în cele
aglomerate [4 ].
Deși în Marea Britanie se înregistrează un număr mare de sisteme CCTV, majoritatea sunt
deținute de firme private ce asigură monitorizarea și pază marilor companii și a magazinelor. Conform
statisticilor prezentate prin “Freedom of Information Act”, ce reprezintă o lege dată de parlament, prin
care populația are acces la informațiile deținute de autoritățile publice, în anul 2011 statul deținea 52.000
de sisteme CCTV operabile. Iar în Scoția s -au înregistrat aproximativ 2.200 de camere amplasate în
spațiile publice.
Serviciu de poliție regională Halton din Canada a creat un program numit S.C.R.A.M., Resursele
și Maparea Camerelor de Securitate (“Security Camera Resource and Mapping”), prin acesta autoritățile
înregistrau toate camerele și ajutau utilizatorii să înțeleagă problemele complexe impuse de instalarea
unei camere de supraveghere. Programul SCRAM permite membrilor comunității să identifice și să
înregistreze în mod voluntar echipamentele lor de supraveghere video într -o platformă online simplă,
sigură și confidențială [ 6].
În Africa de Sud , deși rata criminalității era crescută, implementarea noilor tehnologii a fost lentă.
Prima cameră IP a fost lansată în anul 1996 de cei de la Axis Communications, iar în Africa de Sud prima
cameră IP a fost folosită în 2008. În prezent supravegherea cu a jutorul camerelor de securitate este
răspândită pe scară largă.
Datorită creșterii numărului de spargeri de locuințe, în America Latină piața de sisteme de
securitate video s -a dezvoltat rapid. Iar în Asia sistemele CCTV au fost acaparate în diverse activi tăți
umane, cum ar fi în afaceri, transport, sporturi și protecția mediului.
1.4. Clasificare sisteme CCTV
1.4.1. După perioada de funcționare a camerelor de supraveghere
Există camere ce pot înregistra atât ziua cât și noaptea, acestea oferind imagini de bună
calitate indiferent de intensitatea luminii din mediul înconjurător, având capacitatea să se adapteze
automat.
De asemenea există și camere ce au rolul de a înregist ra doar noaptea, acestea combină
imaginea alb -negru cu cea în infraroșu.
22
1.4.2. După rezoluția și calitatea imaginii
Nu cu mult timp în urmă, unitatea de măsură pentru rezoluția camerelor de supraveghere
analogice era reprezentată de liniile TV. Astfel că un video monocrom are o rezoluție medie pentru valori
cuprinse în intervalul 380 – 420 TVL și rezoluție înaltă pentru valori de 500 – 600 TVL. Pentru camerele
de supraveghere video color avem rezoluție mică (mai puțin de 420 TVL), rezoluție medie (pentr u valori
cuprinse între 420 – 800 TVL) și rezoluție înaltă (800 – 1000 TVL).
Figura 1 : În imagine se poate observa diferența dintre 4 camere cu rezoluții diferite.
În prezent, unitatea de măsură a rezoluției este dată de către numărul de pixeli, aceasta
este reprezentată de un număr de puncte ce alcătuiesc imaginea pe care noi o putem vedea. Concluzia
este că atunci când avem un număr mai mare de puncte, calitatea este mai bună, imaginea devenind astfel
mai bogată în detalii. Pentru suprafețe mici, de max im 100 mp putem folosi camere de 1 megapixel.
Dacă se dorește recunoașterea de detalii pe distanțe liniare de aproximativ 14 -25 de metrii față de
cameră, atunci se folosește o cameră cu o rezoluție de 2 megapixeli sau de 3 megapixeli. Rezoluțiile de
4 și 5 megapixeli sunt foarte mari pentru camerele de supraveghere, dar rezultă și o calitate superioară a
imaginii, în general acestea sunt folosite atunci când se dorește să se monitorizeze spații foarte mari.
23
Figura 2 : Diferențele dintre o cameră analogică și două camere digitale cu rezoluții diferite.
1.4.3. După modul de conectivitate
Există două tipuri de camere de supraveghere, camere cu fir și camere fără fir. Camerele
fără fir pot fi camere IP sau camere wireless.
Camerele IP reprezintă o ramură în creștere a sistemelor CCTV. Acest tip de cameră
folosește internet protocol, utilizat de majoritatea rețelelor locale (LAN) pentru a transmite datele video
sub formă digitală în rețea. Astfel că imaginile pot fi accesate de către utilizator de oriunde p rin
intermediul unui calculator sau telefon conectat la internet, acest lucru se numește și acces la distanță.
Atunci când se dorește ca videoclipurile realizate de către camerele de supraveghere să fie private,
acestea pot fi restricționate într -o rețea p rivate sau pot fi salvate de la distanță pe un server.
Ca și camerele de supraveghere IP, camerele wireless transmit doar datele fără fir, pentru
alimentare în general este nevoie de un cablu, deși există și câteva variante ce pot fi alimentate cu baterii.
Generațiile anterioare ale camerelor de securitate wireless s -au bazat pe tehnologia analogică, acestea
transmițând semnalul video și audio folosind frecvențe radio, cea mai des întâlnită frecvență fiind cea de
2.4GHz, dar camerele wireless moderne folose sc tehnologia digitală care oferă imagini mai clare, video
mai clare și un semnal securizat și fără interferențe, folosind frecvențe radio înalte, cel mai frecvent
utilizându -se un router wireless sau un "acces point".
1.4.4. După nivelul de vizibilitate
Și în acest caz avem două tipuri de camere de supraveghere. Camere de supraveghere
false și camere de supraveghere ascunse. Camerele false sunt o alternativă ieftină a camerelor de
supraveghere clasice, acestea având doar efect vizual, neputând capta semnal vide o sau audio.
Camerele ascunse mai sunt cunoscute și sub denumirea de “nanny cams”, acestea au
dimensiuni foarte mici, putând fi amplasate în orice obiect. În general sunt puse în locul său alături de
senzorii de fum sau alarme. Toate au o lentilă de tip pinhole, astfel că dimensiunile lentilelor pot fi
24
comparate cu vârful unui creion, la aceasta se poate adăuga și un microfon pentru a se putea înregistra și
audio.
1.4.5. După modul de prelucrare al semnalului
În acest caz avem două mari categorii, camere de supraveghere anal ogice, clasice și
camerele de supraveghere digitale. Principala diferență între cele două este rezoluția. Dar prin utilizarea
unui convertor analog digital se poate convertii semnalul analogic rezultat de la o cameră analogică în
semnal digital. De asemene a costul este mult mai redus pentru varianta analogică.
1.4.6. După nivelul de rezistență la interperii
Din această categorie fac parte camerele de supraveghere "indoor" (interior), acestea în
general sunt de tip dom. În funcție de necesitate și de plaja vizuală, camerele au lentila fixa sau varifocală.
Acestea sunt proiectate special pentru interior, astfel fiind sensibile la temperaturi scăzute sau ridicate,
dar și la apă. Datorită dezvoltărilor tehnologice din ultimii ani s -au introdus pe piață camerele ce pot
rezista și la condiții nefavorabile de mediu, astfel trecem la cea de a două categorie și anume c amerele
de supraveghere "outdoor" (exterior). Cel de -al doilea țip de camere de supraveghere prezintă aceleași
proprietăți că și cele indoor, singură diferența fiind făcută de către carcasă special concepută pentru a
proteja sistemul electronic și lentilel e de variațiile bruște de temperatură, cât și de umiditate.
O altă proprietate importantă pentru camerele de supraveghere este zgomotul emis, acesta
trebuie să fie cât mai scăzut sau chiar inexistent, atât pentru a nu deranja persoanele ce se află în
apropierea camerei, cât și pentru a -și face nesimțită prezența în cazul unei eventuale infracțiuni.
1.5. Funcțiile sistemelor CCTV
O caracteristică importantă a camerelor de supraveghere este reprezentată de meniul OSD ("on
screen display"), acesta permite utilizatorilor să seteze anumiți parametrii ai camerei, astfel încât
imaginea capturată să fie cât mai clară. Meniul este alcătuit din următoarele funcții, parametrii de
expunere, parametrii ai imaginii, filtre pentru condițiile de luminozitate scăzută și funcții special, cum ar
fi detecție de mișcare sau titlu cameră. Pentru a accesa meniul se folosește un joystick ce este amplasat
pe firul camerei, acesta este bine izolat, rezistând la orice condiții meteo.
WDR ("Wide Dynamic Range") este o altă caracteri stică a sistemelor CCTV, are rolul de a
echilibra orice imagine video primită de la device -ul utilizat. O altă proprietate introdusă destul de recent
pentru camere este DWDR, funcție ce se folosește pentru a reda o imagine cât mai clară, acest proces
combi nă două imagini succesive, una subexpusă și cealaltă supraexpusă într -o imagine de calitate
superioară. Procesul de combinare se numește “interlace”. DNR ("digital noise reduction") este o
proprietate ce are rolul de a reduce zgomotul de fundal al unei ima gini, la fel ca și funcțiile amintite mai
sus, rolul acesteia este de a crea imagini de o calitate cât mai bună. Camerele de supraveghere folosesc
în general filtre 2D și filtre 3D pentru a reduce zgomotul. În zilele noastre, funcția DNR nu mai este o
alegere opțională ci o necesitate și se întâlnește pe majoritatea camerelor existente pe piață. BLC ("black
light compensation"), reprezintă proprietatea camerelor de a ajusta luminozitatea dintr -o imagine ce
25
conține mai multe zone cu iluminare diferită, acest a funcție este folosită în general pentru camerele ce
sunt poziționate spre o intrare puternic luminată, într -o încăpere slab luminată, cum ar fi intrarea într -o
parcare, astfel ca persoanele sau mașinile ce vor intra în încăpere nu se vor vedea întunecat ci se vor
putea vedea clar. O altă funcție ce a devenit indispensabilă sistemelor CCTV, este balansul automat de
alb (AWB), rolul acesteia este de a ajusta automat culoarea albă și de a o reproduce corect, după care se
vor afișa și restul de culori. Aceast ă proprietate a fost necesară deoarece camera nu are capacitatea de a
se adapta la temperaturi de culoare diferite. O altă funcție des întâlnită pe camerele de supraveghere este
funcția AGC ("Automatic Gain Control"), aceasta are rolul de a amplifica semna lul video, astfel
optimizând luminozitatea imaginii.
Figura 3 : Diferențele dintre două cadre ale aceleiași camere, în primul cadru (stânga) camera are
activată funcția WDR, iar în al doilea cadru (dreapta) camera are funcția WDR oprită.
Alte două funcții ale camerelor de supraveghere ce au fost dezvoltate destul de recent sunt VCA
("video content analysis") și recunoaștere facial. VCA reprezintă capacitatea sistemului de a analiza
automat filmările, astfel putând să detecteze evenimente t emporar e ce nu se pot observa prin analizarea
unei singure imagini. Sistemele dotate cu această funcție pot să compare automat un obiect detectat cu
alte imagini din baza de date asociată, comparând după dimensiune, culoare, formă și uneori viteză.
Acest s istem are în general atașat o alarmă ce se activează atunci când se detectează anumite schimbări
neobișnuite, cum ar fi blocarea lentilei, dispariția unui anumit obiect din cadru sau apariția fumului și a
focului. Acest sistem permite utilizatorilor să urm ărească un anumit obiect, alocându -i o adresă pe baza
imaginilor, astfel se poate trece de la o cameră la alta automat în funcție de direcția de deplasare a
obiectului, în acest mod se scutesc ore întregi de analiză a clipurilor video. Există două locuri u nde se
analizează datele, în camerele de supraveghere sau într -un server dedicate. Metodele au diferențe
semnificative, ambele având avantaje și dezavantaje. Recunoașterea facială este o aplicație ce are rolul
de a asocia unei persoane dintr -o poză sau din tr-o filmare un nume sau un id. Acest lucru se realizează
prin compararea imaginii feței decupată din noua poză, cu imaginile dintr -o bază de date specială.
În anul 2003, în Marea Britanie a fost pus în aplicare un proiect pilot cunoscut sub numele de
“Talking CCTV” (sistem CCTV vorbitor). Prin acest proiect sistemele CCTV erau dotate cu difuzoare
26
prin care operatorii puteau să comunice cu cei aflați în raza vizuală a camerei sau în jurul camerei,
comunicându -le diferite ordine, ca de exemplu să atenționeze pietonii ce traversau pe culoarea roșie, să
ceară persanelor să își arunce gunoaiele la coș sau să ceară grupurilor de vandali să elibereze zona. Până
în anul 2007 mai multe orașe au adaptat această metodă.
1.6. Legislația camerelor de supraveghere video
Atunci când o persoană fizică sau o companie dorește să își monteze camere de supraveghere
video pe proprietatea private trebuie să respecte anumite reguli. O persoană fizică, ce deține o casă pe
pământ își poate monta camere de filmat dacă unghiul pe care îl supraveghează nu aparține spațiului
public și dacă are acordul vecinilor în cazul în care camera înregistrează zone din proprietatea acestora.
Iar dacă persoana fizică locuiește la bloc și dorește să își monteze camere de filmat la intrarea în
apartame nt trebuie să aibă acordul tuturor vecinilor ce trec frecvent prin fața acesteia. În momentul în
care comitetul asociației de proprietari dorește instalarea camerelor de filmat la intrarea în bloc, aceștia
au nevoie de aprobarea tuturor locatarilor pentru a putea supraveghea în mod legal .
“Art. 5 (1) Orice prelucrare de date cu caracter personal, cu excepția prelucrărilor care vizează
date din categoriile menționate la art. 7 alin. (1), art. 8 și 10, poate fi efectuată numai dacă persoana vizată
și-a dat c onsimțământul în mod expres și neechivoc pentru acea prelucrare.
(6) Prezenta lege nu se aplică prelucrărilor de date cu caracter personal, efectuate de persoane
fizice exclusiv pentru uzul lor personal, dacă datele în cauză nu sunt destinate a fi dezvăluite.
Alineatul (6) se aplică și persoanelor care achiziționează camere ascunse. Dacă doriți să folosiți
camere de supraveghere spion sau ascunse și nu vreți să mergeți cu ele la poliție sau să le faceți publice,
puteți să supravegheați liniștiți.” [ 7]
De asemenea prin lege se interzice supravegherea și publicarea fără acordul persoanei în cauză,
de fotografii, de înregistrări video și de capturi audio. Prin viață private se înțelege atât locuința personală
cât și holuri, cameră și căi de acces comune .
Angajatorul dacă dorește să își supravegheze prin sisteme CCTV angajații trebuie să specifice în
contractul de muncă faptul că urmează ca aceștia să fie supervizați video și audio. În momentul în care
angajatul semnează contractul de muncă își dă acordul pentru ca firma să aibă dreptul de a folosi după
bunul plac datele captate.
“(1) Atingerea adusă vieții private, fără drept, prin fotografierea, captarea sau înregistrarea de
imagini, ascultarea cu mijloace tehnice sau înregistrarea audio a unei persoane aflate într -o locuință sau
încăpere ori dependință ținând de aceasta sau a unei convorbiri private se pedepsește cu închisoare de la
o lună la 6 luni sau cu amendă.
(2) Divulgarea, difuzarea, prezentarea sau transmiterea, fără drept, a sunetelor, convorbir ilor ori
a imaginilor prevăzute în alin. (1), către o altă persoană sau către public, se pedepsește cu închisoare de
la 3 luni la 2 ani sau cu amendă.
(3) Acțiunea penală se pune în mișcare la plângerea prealabilă a persoanei vătămate.
(4) Nu constituie in fracțiune fapta săvârșită:
A) de către cel care a participat la întâlnirea cu persoana vătămată în cadrul căreia au fost
surprinse sunetele, convorbirile sau imaginile, dacă justifică un interes legitim;
B) dacă persoana vătămată a acționat explicit cu intenția de a fi văzută ori auzită de făptuitor;
27
C) dacă făptuitorul surprinde săvârșirea unei infracțiuni sau contribuie la dovedirea săvârșirii unei
infracțiuni;
D) dacă surprinde fapte de interes public, care au semnificație pentru viața comunității și a căror
divulgare prezintă avantaje publice mai mari decât prejudiciul produs persoanei vătămate.
(5) Plasarea, fără drept, de mijloace tehnice de înregistrare audio sau video, în scopul săvârșirii
faptelor prevăzute în alin. (1) și alin. (2), se pedepseșt e cu închisoarea de la unu la 5 ani.” [ 8]
Un alt lucru important pe care o persoană trebuie să o cunoască atunci când dorește să își
supravegheze video locuința sau afacerea, este că legea interzice să se înregistreze și audio și video în
același timp. Se permite doar una din cele două, iar dacă se dorește să se prezinte la poliție ca dovadă o
înregistrare făcută și video și audio, persoana respective urmează să fie sancționată.
1.7. Costuri
Costurile pentru o cameră de supraveghere video variază foarte mult în funcție de performanțele
și de tipul de cameră ales. Costul pentru o cameră "indoor" este mult mai redus ca cel al unei camere
pentru exterior. Acest lucru se datorează faptului că o cameră de exterior este mult mai stabilă, fiind
nevoie să aibă ca rcasa suficient de rezistență pentru a nu fi distruse ușor atât de condițiile meteo cât și de
mâna omului.
Dacă o cameră video de exterior se încadrează în clasa de protecție IP 66 (standard de protecție
internațională dat de Comisia Electrotehnică Interna țională sau prescurtat IEC) aceasta este de calitate,
fiind mult mai rezistente în fața intemperiilor [ 9]. Aproape toate camerele pentru interior sunt dotate cu
proprietatea anti vandal, iar toate camerele de exterior sunt rezistente la apă. Dar diferențel e de preț sunt
date și de alte caracteristici. Aceste difere nțe pot fi date și de senzorul de imagine, chipsetul folosit, în
unele cazuri chiar și de firma producătoare, funcțiile special ale camerei, rezoluție, tipul lentilei, sistemul
infraroșu și distan ța pe care camera o poate acoperi atât pe timp de zi, dar mai ales pe timp de noapte.
Un aspect important pe care un nou utilizatorul trebuie să îl ia în calcul atunci când își caută un
sistem CCTV nou este adaptarea acestuia la cerințele personale. Nu este nevoie să se cheltuiască o sumă
exagerată, dacă nevoile sunt minime. Dar acest lucru poate fi aplicat și invers, dacă este nevoie să se
protejeze o locație sau date importante sistemul ales trebuie să fie suficient de performant pentru a păstra
în sig uranță zona respectivă, dar exponențial cu performanța vor crește și costurile.
28
29
2. INFORMAȚIA DE INTERES ÎN IMAGINI ȘI VIDEO
O regiune de interes, adesea abreviată ROI, abreviere ce provine de la “Region of Interest”,
reprezintă un subset de eșantioane prelevate dintr -un set de date inițial ce a fost recoltat pentru un anumit
scop. Acest concept este folosit în mai multe domenii de aplicare. De exemplu, poate fi folosit în
imagistică medicală pentru a determi na zonele unde se află tumorile. În multe aplicații, la ROI se adăugă
etichete simbolice pentru a descrie conținutul într -un mod cât mai precis. În cadrul unui ROI se pot situa
puncte de interes individuale.
Detectarea punctelor de interes poate fi conside rată o terminologie recentă, acesta se referă la
identificarea punctelor de interes pentru a fi procesate ulterior. Un punct de interes este un punct din
imagine, în general, ce are o definiție matematică clară, bine fundamentată. Sau are o poziție bine de finită
în spațial imaginii, de asemenea un punct de interes mai poate fi înconjurat de o structură locală a imaginii
bogată în conținutul informațiilor semnificative. Un punct de interes trebuie să fie stabil, atât local cât și
global la perturbațiile din imagine, cum ar fi luminozitatea, acest lucru este necesar pentru că punctul să
aibă un grad de repetabilitate ridicat.
2.1. Detectarea colțurilor
Această abordare este utilizată în prelucrarea imaginilor pentru a extrage anumite caracteristici și
pentru a deduce conținutul imaginii. Această metodă este în general folosită pentru detectarea mișcării,
mozaicarea imaginilor, modelarea 3D și recunoașterea obiectelor.
Un colț poate fi definit ca intersecția a două margini. De asemenea, acesta mai poate fi definit ca
un punct pentru care există două direcții dominante și două margini diferite, într -un plan local al
punctului. Un colț poate reprezenta un punct de interes, dar punctul de interes mai poate fi reprezentat și
de un punct de intensitate maximă sau minimă, de sfârșitul unei linii sau de un punct de pe o curbă unde
aceasta este maximă. Dacă se dorește să se detecteze doar colțuri este necesară efectuarea unei analize
locale a punctelor de interes obținute pentru a se determina care dintre acestea sun t colțuri reale. Pentru
acest lucru se folosește operatorul Kirsch și setul de mascare Frei -Chen [ 10].
Există mai multe detectoare de pete ce sunt denumite “operatori de punct de interes”, aceștia mai
sunt eronat numiți și “detector de colț”. De asemenea există și o noțiune de detectare a crestei, aceasta
fiind folosită pentru a recunoaște prezența obiectelor alungite. De obicei, detectoarele de colț, nu sunt
foarte puternice și astfel necesită un surplus de informație introdus pentru a prevenii ca erorile individuale
să predomine în aplicarea metodei de recunoaștere. Pentru a analiza calitatea unui detector de colț se
observă capacitatea acestuia de a detecta același colț în mai multe imagini similare, în condițiile în care
imaginea a suferit diferite tipu ri de transformări, cum ar fi rotație, iluminare sau transpunere.
O simplă abordare a detectării de colțuri în imagini este utilizarea colerației, dar acest lucru este
foarte scump și sub optimal. O altă alternativă ce se folosește frecvent se bazează pe m etoda propusă de
Harris și Stephens, care reprezintă o îmbunătățire a unei metode create de către Moravec.
30
2.1.1. Algoritmul lui Moravec
Algoritmul creat de Moravec, reprezintă un algoritm mai vechi de detectare a colțurilor,
de asemenea acesta definește un colț ca fiind un punct cu auto -similitudine scăzută. Algoritmul testează
fiecare pixel din imagine pentru a vedea dacă există un colț, acest lucru se face prin analizarea asemănării
unui patch centrat pe pixel cu cele mai apropiate patch -uri. Decizia este luată prin aflarea valorii sumei
diferențelor pătrate între doi pixeli corespunzători a două patch -uri. Cu cât valoarea este mai mică cu atât
asemănarea între cei doi pixeli este mai mare. Dacă pixelul se află într -o regiune cu o intensitate
uniformă, atunci patch -urile din apropiere vor arăta similar. Dacă pixelul se află pe o margine a imaginii,
atunci patch -urile din apropiere pe o direcție perpendiculară pe muchie vor arăta destul de diferit, dar
patch -urile pe o direcție paralelă cu muchia vor fi destul de asemănătoare. Dacă pixelul se află pe o
caracteristică cu variație foarte mare, atunci niciunul dintre patch -urile din apropiere nu va arăta similar.
Puterea detecției colțului este definite ca fiind cea mai mică valoare a sumei diferențe lor pătrate între
patch și vecini. Dacă această valoare este mare rezultă că toate patch -urile din apropiere sunt diferite.
Principala problemă a acestui algoritm este subliniată chiar de Moravec, aceasta constă în faptul că dacă
există o margine care nu e ste în direcția vecinilor (orizontală, verticală sau diagonală), atunci valoarea
puterii va fi mare și marginea va fi aleasă incorect ca punct de interes.
2.1.2. Algoritmul creat de Harris și Stephens
Harris și Stephens au luat în considerare diferența dintre valoarea colțurilor, în loc să
utilizeze patch -uri deplasate. Valoare colțurilor mai este denumită și autocorelatie. Cei doi au presupus
utilizarea unei imagini 2D, aceasta fiind dată de I. Au luat un patch al imaginii peste aria (u, v) și au
mutat -o cu (x,y), astfel că valoarea sumei diferențelor pătrate dintre cele două patch -uri, notate cu S este
:
𝑆(𝑥,𝑦)= ∑∑𝑤(𝑢,𝑣)(𝐼(𝑢+𝑥,𝑣+𝑦)−𝐼(𝑢,𝑣))2
𝑣 𝑢 (1)
Unde w(u,v) reprezintă nucleul Gaussian.
𝐼(𝑢+𝑥,𝑣+𝑦) poate fi aproxim ată folosind serii Taylor, astfel obținem derivatele
parțiale ale lui I, acesta fiind Ix și Iy. Astfel rezultă:
𝐼(𝑢+𝑥,𝑣+𝑦)≈𝐼(𝑢,𝑣)+𝐼𝑥 (𝑢,𝑣)𝑥+ 𝐼𝑦 (𝑢,𝑣)𝑦 (2)
Din (1) și (2) rezultă:
𝑆(𝑥,𝑦)= ∑∑𝑤(𝑢,𝑣)(𝐼𝑥 (𝑢,𝑣)𝑥+ 𝐼𝑦 (𝑢,𝑣)𝑦)2
𝑣 𝑢 (3)
Iar ecuația (3) poate fi scrisă sub forma matriceală astfel:
𝑆(𝑥,𝑦)=(𝑥𝑦)𝐴(𝑥
𝑦) (4)
Unde A este un tensor de forma:
𝐴= ∑∑𝑤(𝑢,𝑣)[𝐼𝑥2𝐼𝑋𝐼𝑦
𝐼𝑋𝐼𝑦 𝐼𝑦2]=[〈𝐼𝑥2〉 〈𝐼𝑋𝐼𝑦〉
〈𝐼𝑋𝐼𝑦〉 〈𝐼𝑥2〉]𝑣 𝑢 (5)
Matricea (5) mai este cunoscută și c a matricea lui Harris.
31
Dacă se va folosi un filtru Box, răspunsul va fi anizotrop, dar dacă se folosește un filtru
Gauss ian răspunsul va fi izotrop.
Un colț (sau, în general, un punct de interes) se caracterizează printr -o variație mare a
valorii lui S în toate direcțiile vectorului (𝑥𝑦). Analizând valorile proprii ale lui A, această
caracteristică poate fi exprimată în fel ul următor: A ar trebui să aibă două valori proprii mari pentru un
punct de interes. Pe baza magnitudinilor valorilor proprii, se pot face următoarele conclu zii:
• Dacă 𝜆1≈0 și 𝜆2≈0 atunci pixelul (x, y) nu are puncte de interes;
• Dacă 𝜆1≈0, iar 𝜆2 are o valoare pozitivă mare, atunci a fost găsită o margine, sau o
muchie;
• Dacă 𝜆1 și 𝜆2 au valori pozitive mari, atunci a fost găsit un colț.
Harris și Stephens au observat că un calcul exact al valorilor proprii este ineficient
deoarece necesită calculul u nei rădăcini pătrate și au sugerat în schimb funcția Mc.
𝑀𝑐= 𝜆1𝜆2−𝜅(𝜆1+𝜆2)2=det(𝐴)−𝜅 𝑡𝑟𝑎𝑐𝑒2(𝐴) (6)
Unde κ este un parametru reglabil de senzitivitate. Astfel algoritmul nu trebuie să
calculeze efectiv descompunerea valorilor proprii ale mătricii A. Dar în schimb evaluează matricea A
pentru a găsi colțurile, sau mai corect spus, punctele de interes.
Detectorul de colț Shi – Tomasi, cunoscut și cu numele de detectorul Kanade – Tomasi,
calculează direct minimul dintre 𝜆1 și 𝜆2, deoarece colțurile sunt mai stabile pentru urmărire în anumite
ipoteze [ 11]. Valoarea lui κ trebuie determinată empiric, în general acesta ia valori între [0,04; 0,15]. Se
poate evita folosirea parametrului de senzitivitate, dacă se folosește valoarea de colț a lui Noble, 𝑀𝑐′, care
este egală cu media armonică a valorilor proprii.
𝑀𝑐′=2det (𝐴)
𝑡𝑟𝑎𝑐𝑒 (𝐴)+𝑒 (7)
Unde "e" este o constantă pozitivă de valoare mică.
Pentru a calcula matricea de covarianță pentru poziția colțului, se calculează matricea A-
1:
𝐴−1=1
〈𝐼𝑥2〉〈𝐼𝑦2〉−〈𝐼𝑥𝐼𝑦〉2[〈𝐼𝑦2〉 −〈𝐼𝑥𝐼𝑦〉
−〈𝐼𝑥𝐼𝑦〉 〈𝐼𝑥2〉] (8)
2.1.3. Detectorul de colț Förstner
În unele cazuri se dorește calcularea locației unui colț cu o precizie sub -pixel. Algoritmul
lui Förstner se bazează pe principiul că pentru un colț ideal liniile tangente se traversează într -un singur
punct.
32
Figura 4 : Detecția unui colț, folosind algoritmul lui Förstner.
O metodologie de efectuare a selecției scalei automate pentru această metodă de localizare
a colțurilor a fost prezentată de Lindeberg prin minimizarea reziduului normalizat [ 12].
Metoda are astfel capacitatea de a își adapta automat nivelul de scalare pentru calculul
gradientului în funcție de nivelul de zgomot din imagine, astfel nivelul de scalare este mai mare pentru
imaginile în care zgomotul este puternic și este mic pentru imagini ce sunt apropiate de cele considerate
ideale.
Figura 5 : În imaginea de mai sus se pot vedea 12 respectiv 13 colțuri găsite într -o imagine
din baza de date SCOUTER, alături de coordonatele acestora. Codul folosit pentru testarea acestei
metode provine de la sursă [13].
33
2.1.4. Operatorul Harris
Acesta se bazează p e utilizarea funcției de auto corelație. Algoritmul lui Harris este
alcătuit din două etape. Prima etapă constă în calculul valorilor funcțiilor de auto corelație pentru fiecare
pixel din imagine, iar cea de -a doua în determinarea valorii de maxim local a acestor funcții într -o
vecinătate definită de utilizator.
Figura 6: Principiul funcției de auto -corelație
Conform algoritmului propus de Harris, pentru fiecare pixel din imagine se calculează
valoarea de colț, aceasta are forma [ 14]:
𝑐𝑣=𝑡𝑟𝑎𝑐𝑒 (𝐴)
det (𝐴)=〈𝐼𝑥2〉+〈𝐼𝑦2〉
〈𝐼𝑥2〉〈𝐼𝑦2〉−〈𝐼𝑥𝐼𝑦〉2 (9)
În ecuația (9), 〈𝐼𝑥〉 și 〈𝐼𝑦〉 reprezintă gradienții funcției imagine pe direcțiile x și y filtrați
cu un nucleu Gaussian.
Comparând valoarea lui cv cu valoarea pragului se poate controla numărul de puncte de
interes găsite. În comparație cu alți operatori, putem afirma că performanțele (repetabilitate, stabilitate,
precizie) operatorului Harris sunt destul de ridicate.
2.1.5. Sinteza automată a dete ctoarelor
Trujillo și Olague au introdus o metodă prin care programarea genetică este utilizată
pentru a sintetiza automat operatorii ce au rolul de a detecta punctele de interes. Terminalele și seturile
de funcții conțin operații primitive care sunt comune în multe modele propuse anterior. Stabilitatea
fiecărui operator este dată prin rata de repetabilitate și promovează o dispersie uniformă a punctelor
detectate în planul imaginii. Performanța operatorilor a fost confirmată experimental folosind secv ențe
de pregătire și testare a imaginilor progresiv transformate. Prin urmare, algoritmul propus este considerat
a fi competitiv pentru problema detectării punctelor de interes.
34
În funcție de valoarea aleasă de noi pentru nivelul de scalare, vom obține ur mătoarele
contururi:
Figura 7 : Exemplu de rezultat al extragerii conturului unei imagini, codul sursă a fost preluat de la
sursă [ 15] și a fost adaptată pentru o imagine din baza de date SCOUTER. Pentru acest exemplu s -a
ales o valoare a pragului de detec tare a colțurilor de 100.
Figura 8 : Exemplu de rezultat al extragerii conturului unei imagini, codul sur să a fost preluat de la
sursă [ 15] și a fost adaptată pentru o imagine din baza de date SCOUTER. Pentru acest exemplu s -a
ales o valoare a prag de detectare al colturilor foarte mic, aproximativ 0.
35
Figura 9 : Exemplu de rezultat al extragerii conturului unei imagini, codul sursă a fost preluat de la
sursă [ 15] și a fost adaptată pentru o imagine din baza de date SCOUTER. Pentru acest exemplu s -a
ales o valoare a prag de detectare al colțurilor foarte mare, aproximativ 255. În acest exemplu se pot
vedea și coordonatele contururilor extrase.
Din aceste exemple se poate vedea cum nivelul de scalare influențează detectarea
colțurilor, astfel că o dată cu creșterea acestei valori scade și numărul de contururi detectate. Pentru a se
observa cel mai bine conturul detaliilor din imagine trebuie aleasă o valoare medie.
2.2. Detectarea marginilor
Detecția marginilor include o varietate de metode matematice care vizează identificarea punctelor
într-o imagine digitală la care luminozitatea imaginii se schimbă brusc sau, mai formal, are
discontinuități. Punctele la care se schimbă intensitatea luminozității imaginii sunt de obicei organizate
într-un set de segmente de linie curbate numite margini. Aceeași problemă a găsirii discontinuităților în
semnalele unidimensionale este cunoscută sub denumirea de detector pas, iar problema găsirii
discontinuităților semnalului în timp este cunoscută sub denumirea de detectare a modificărilor. Detecția
marginilor este un instrument fundamental în procesarea imaginilor.
Scopul de a detecta schimbări clare în luminozitatea imaginii este de a capta evenimente
importante și schimbări în proprietățile imaginii. Se poate demonstra că discontinuitățile în luminozitatea
imaginii pot fi discontinuități în profunzime, discontinuități în orientarea suprafeței și variații ale
iluminării scenei.
În cazul ideal, rezultatul aplicării unui detector de margine la o imagine poate conduce la un set
de curbe conectate care indică limitele obiectelor, limitele marcajelor suprafeței, precum și curbele care
corespund discontinuităților în orientarea suprafeței. Astfel, aplicarea unui algoritm de detectare a
marginilor unei imagini poate reduce în mod se mnificativ cantitatea de date care trebuie prelucrată și,
36
prin urmare, poate filtra informațiile care pot fi considerate ca fiind mai puțin relevante, păstrând în
același timp proprietățile structurale importante ale unei imagini. Dacă etapa de detectare a muchiilor
este reușită, sarcina ulterioară de a interpreta conținutul informațiilor în imaginea originală poate fi, prin
urmare, substanțial simplificată. Cu toate acestea, nu este întotdeauna posibil să se obțină astfel de
margini ideale din imagini real e cu o complexitate moderată.
Detecția marginilor este unul dintre pașii fundamentali în procesarea imaginilor, analiza
imaginilor, recunoașterea modelului de imagine și tehnicile viziunii pe computer.
Marginile extrase dintr -o imagine bidimensională pot fi clasificate fie din punct de vedere
dependent, fie independent. O margine clasificată din punct de vedere independent reflectă în mod tipic
proprietățile inerente ale obiectelor tridimensionale, cum ar fi marcajele de suprafață și forma suprafeței.
O ma rgine dependentă se poate modifica pe măsură ce punctul se modifică și reflectă de obicei geometria
scenei
O margine tipică ar putea fi, de exemplu, granița dintre un bloc de culoare roșie și un bloc de
culoare galbenă. Iar o linie poate reprezenta un numă r redus de pixeli de altă culoare pe un fundal altfel
neschimbat. Pentru o linie, poate exista de obicei o margine pe fiecare parte a acesteia.
2.1.1. Un model simplu de extragere al marginilor
Deși în anumite articole de specialitate se consideră că detectarea marginilor este ideală
pentru a identifica obiecte de interes dintr -o imagine, marginile obținute din imaginile natural nu sunt, în
general, avantajoase. S -a constatat că folosind o trecere netedă Gaussiană, funcție ce are rolul de a elimina
eroarea, este cea mai simplă metodă de extragere a marginilor, fără neclarități. Dacă se consideră o
imagine unidimensională f, care are o margine plasată la x=0, aceasta va fi scrisă astfel [ 16]:
𝑓(𝑥)=𝐼𝑟−𝐼𝑙
2(erf(𝑥
√2𝜎)+1)+𝐼𝑙 (10)
Il reprezintă intensitatea și este egal cu:
𝐼𝑙=lim
𝑥→−∞𝑓(𝑥) (11)
𝐼𝑟= lim
𝑥→∞𝑓(𝑥) (12)
Parametrul 𝜎 se numește scală de estompare a muchiei, iar în mod ideal, acest parametru
trebuie ajustat în funcție de calitatea imaginii pentru a se evita dis trugerea marginilor reale.
2.2.2. Detector de margini Canny
John Canny a analizat problemă matematică pentru obținerea unui filtru cât mai optim
ținând cont de criteriile de detectare, localizare și minimizare a răspunsurilor multiple la o singură
margine [ 17]. El a demonstrat că pentru a se obține un filtrul optim, trebuie să calculăm o sumă de patru
termini exponențial. De asemenea el a demonstrat că acest filtru poate fi bine aproximat și prin derivate
gaussiene de ordinal întâi. Canny a introdus și noțiunea că punctele de margine sunt definite ca puncte
în care magnitudinea de gradient presupune un maxim local. Deși detectorul de margine Canny a apărut
la începutul anilor ’90, acesta este un detector foarte folosit și în prezent. Cu excepția câto rva cazuri, este
dificil să găsești un detector de margini mai bun ca acesta.
Detectorul Canny -Deriche a apărut ca o dezvoltate matematică a detectorului de margini
Canny, deși primul a avut la bază un set de filtre recursive pentru netezirea imaginii în loc de filtre
exponențiale sau de filtre gaussiene [ 18].
37
2.2.3. Binarizarea imaginii
După ce se calculează o caracteristică a rezistenței marginilor, în general aceasta este
reprezentată de mărimea gradientului, următoarea etapă este aplicarea unui prag, cu rolul de a se decide
dacă există sau nu margine într -un punct al imaginii. Dacă val oarea pragului este mică, atunci se vor
detecta mult mai multe muchii, iar rezultatul va putea fi influențat mai ușor de către zgomot, iar marginile
caracteristicilor irelevante din imagine vor apărea. Iar dacă pragul este mult prea ridicat se pot pierde d in
marginile subtile, sau poate duce la margini fragmentate.
Pentru a se rezolva problema pragului potrivit pentru binarizarea imaginii s -a introdus
metoda de binarizare cu ajutorul pragului de histerezis. Această metodă presupune utilizarea mai multor
praguri pentru a se găsi muchiile dorite. Se folosește un prag de valoare mare pentru a se găsi începutul
unei margini, după care se parcurge imaginea pixel cu pixel și se marchează o margine de fiecare dată
când se depășește pragul inferior, după care ne oprim în momentul în care valoarea noastră scade sub
pragul minim. Cu toate acestea, detectarea parametrilor de prag potriviți este dificilă, deoarece pot diferi
de la imagine la imagine, astfel valorile de prag pot varia foarte mult.
Dacă în imagine apar puncte nedorite pe margini, atunci pentru a le elimina se folosește
metoda de extragere a marginilor sau subțiere a acestora. Această metodă se poate folosi numai după ce
imaginea a fost filtrată de zgomot, folosindu -se de exemplu filtru median sau filtru Gaussian. Utilizând
metoda de subțiere a marginilor se elimină toate punctele nedorite, astfel dacă este aplicată cu atenție,
are ca rezultat o margine de grosimea unui pixel.
Avantajele acestei metode sunt obținerea de margini clare ce conduc la o mai bun ă
eficiență în recunoașterea obiectelor de interes. Există mai multe metode de a detecta dacă un punct poate
fi eliminat sau nu, o metodă determină vecinii unui punct, iar dacă acesta este izolat, adică nu are vecini,
se deduce că punctul nu face parte din linia unei margini, deci poate fi șters. Pentru a obține rezultate
mai bune la subțierea marginii este de dorit să se utilizeze transformările Hough pentru a se detecta linii
și elipse.
2.2.4. Exemplu de extragere a muchiei
Pentru a se prezenta un model de ext ragere a marginilor unei imagini s -a folosit codul
sursă creat de Ana Huamán [ 19], acesta a fost adaptat pentru o imagine extrasă din baza de date
SCOUTER. Primul pas în extragerea marginilor pentru imaginea noastră a fost filtrarea zgomotului, acest
lucru a fost realizat prin aplicarea unui filtru Gaussian, după care s -a găsit gradi entul intensității și
direcția, pentru care valoarea a fost rotunjită la una din cele patru unghiuri posibile, acestea sunt 0, 45°,
90° și 135°. Se elimină pixelii ce se consideră că nu fac parte dintr -o margine, astfel aceasta rămâne o
linie subțire. Ulti mul pas este reprezentat prin aplicarea metodei Canny și se folosesc astfel două praguri
de histerezis, unul superior și altul inferior. Astfel fiecare pixel din imagine este parcurs și pentru fiecare
se ia o decizie, dacă un gradient al unui pixel este ma i mare comparative cu pragul superior, atunci pixelul
va fi considerat margine. Dacă valoarea gradientului este sub pragul inferior, atunci pixelul va fi respins,
ne făcând astfel parte din margine, iar pentru o valoare a gradientului ce se află între cele două praguri,
38
se va analiza dacă pixelul are pixeli veci ce fac parte din muchie, dacă se găsesc astfel de pixeli, și acesta
va fi considerat margine, dacă nu va fi respins.
Figura 10 : Extragerea muchiilor dintr -o imagine, folosindu -se un prag foarte mi c, egal cu 0.
Figura 11 : Extragerea muchiilor dintr -o imagine, folosindu -se un prag foarte mare, egal cu 100.
Prin cele două figuri se poate vedea extragerea de muchii folosind praguri diferite, aflate
la poli diferiți. În figură 10 s -a ales un prag de val oare foarte mare, astfel se vede cum numărul de muchii
este foarte mare, în concluzie nu se pot vedea detaliile foarte bine, iar în figură 11 s -a ales o valoare de
prag foarte mare, astfel că și muchiile sunt limitate și nu creează un contur complet.
39
Figura 12 : Extragerea muchiilor pentru o imagine, în acest caz pragul a fost ales la jumătate, de
valoare aproximativ 50, astfel se poate observa conturul persoanei complet, se poate observa, mașina și
conturul prsoanei din fundal.
2.3. Detecția petelor
Metodele de detectare a petelor sau a regiunilor, urmăresc detectarea regiunilor într -o imagine
digitală care diferă în funcție de proprietăți, de exemplu poate diferii strălucirea, luminoz itatea sau
culoarea, comparativ cu o regiune învecinată. Altfel spu s o pată reprezintă acea regiune a unei imagini
în care anumite proprietăți sunt constante sau aproape constante. Toate punctele dintr -o pată pot fi
considerate într -un anumit sens ca fiind similare unul cu celălalt. Metoda cea mai comună pentru
detectarea petelor este convoluția.
Ținând cont de anumite proprietăți ale unei imagini de test există două tipuri de detectoare, prima
este metoda diferențială, care se bazează derivate ale funcției în raport cu poziția, iar cea de a doua
metodă se bazează pe local izarea extremelor locale, adică este nevoie să se găsească maximele și
minimele locale ale funcției, aceste detectoare mai sunt cunoscute și ca operatori de puncte de interes sau
operatori de regiuni de interes.
Principalul motiv pentru care se folosește a cest tip de detector este pentru a furniza anumite
informații complementare despre regiuni, aceste informații ne putând fi obținute prin utilizarea
detectoarelor de colțuri sau de margini. La început, această metodă a fost folosită doar pentru a detecta
anumite regiuni de interes pentru o procesare ulterioară. Regiunile rezultate semnalează prezența unui
anumit obiect sau a unor fragmente de obiect și pot fi folosite pentru a recunoaște obiectul sau pentru a
îl urmări. De asemenea se pot semnala și obiecte alungite prin detectarea crestei.
2.3.1. Operatorul LoG
Unul dintre primele și de asemenea cel mai întâlnit detector de pete se bazează pe
operatorul LoG (“Laplacian of Gaussian”). Acest tip de operator mai este numit și “Marr edge detector”
sau “Zero Crossing detector”.
40
Operatorul Laplace este sensibil la zgomot, astfel că pentru a îi reduce efectul, înainte de
aplicarea operatorului Laplacian este nevoie să se folosească asupra imaginii un filtru de netezire pentru
a fi reduse componentele de înaltă frecvență din imagine. În operatorul LoG se găsesc trei operații,
acestea sunt, filtrarea realizată prin folosirea unui filtru Gaussian, îmbunătățirea imaginii prin utilizarea
operatorului Laplacian, iar ultima operație este detecția fronturilor, ca puncte de trecer e prin ze ro a
Laplacianului [20 ].
Se consideră o imagine de intrare f (x, y), acesteia fiindu -i aplicat un filtru Gaussian:
𝑔(𝑥,𝑦,𝑡)= 1
2𝜋𝑡𝑒− 𝑥2+𝑦2
2𝑡 (13)
Unde t este o reprezentare spațială a scării dorite.
𝐿(𝑥,𝑦,𝑡)=𝑔(𝑥,𝑦,𝑡)∗𝑓(𝑥,𝑦) (14)
Funcția L reprezintă convoluția discretă a celor două funcții, f și g.
După aplicarea operatorului L aplacian asupra ecuației (14) se obține:
𝛻2𝐿=𝐿𝑥𝑥+𝐿𝑦𝑦 (15)
Cei doi operatori de convoluție, în loc să fie aplicați succesiv, sunt înlocuiți cu un singur
operator, numit “Laplacian of Gaussian”, care poate fi calculat astfel:
𝐿𝑜𝐺 (𝑥,𝑦)=𝛻2(𝑔(𝑥,𝑦,𝑡)) (16)
𝐿𝑜𝐺 (𝑥,𝑦)= − 1
𝜋𝑡2(1− 𝑥2+𝑦2
2𝑡)𝑒− 𝑥2+𝑦2
2𝑡 (17)
Figura 13 : Funcția “Laplacian of Gaussian” (LoG) 2D
LoG poate fi folosit și pentru îmbunătățirea frontierelor. Dacă ieșirea obținută în urma
aplicării operatorului LoG se adună la imaginea originală, se va obține o imagine în care zgomotul a fost
redus, iar marginile din imaginea originală sunt evidențiate, au mai mult contrast. Pentru evidențierea
frontierelor ne interesează punctele (x, y) care reprezintă trecerea prin zero a Laplacian -ului. Dar acest
lucru este îngreunat de anumite aspecte, de exemplu prin aplicarea acestui operator, punctele izolate de
41
zgomot și structurile mici sunt eliminate, în unele imagini punctele ce alcătuiesc muchia sunt împrăștiate,
astfel că procesul de detecție este îngreunat. Un alt aspect ce îngreunează procesul de extragere a
marginilor, este faptul că operatorul LoG calcule ază derivate de ordinul doi al imaginii, astfel că zonele
în care imaginea are intensitate constantă, răspunsul obținut va fi zero, asta datorită faptului că gradientul
intensității este zero. Atunci când avem o schimbare de intensitate în imagine, răspuns ul obținut în urma
aplicării operatorului va avea valoare pozitivă în partea întunecată și valoare negativă în partea
luminoasă.
2.3.2. Algoritmul DoG
Algoritmul DoG (“Difference of Gaussians”) are rolul de a îmbunătății calitatea unei
imagini, eliminând astfel neclaritatea din aceasta. Altfel spus DoG este un filtru de bandă ce are rolul de
a elimina o parte din frecvențele spațiale prezente în imaginea originală. În esență acesta este similar cu
operatorul Laplacian și poate fi văzută ca o aproximare a acestu ia. Această abordare este în principal
folosită în algoritmul de transformare a caracteristicilor invariante de scală (SHIFT).
Operatorul DoG poate fi utilizat pentru a crește vizibilitatea marginilor și a altor detalii
prezente într -o imagine ce se doreș te a fi analizată. Acesta îndepărtează detaliile de înaltă frecvență care
adesea includ zgomotul aleator, ceea ce face ca această abordare să fie una dintre cele mai potrivite pentru
prelucrarea imaginilor cu un grad ridicat de zgomot. Un dezavantaj major al aplicării algoritmului este o
reducere inerentă a contrastului total al imaginii produs de operație [ 21].
Figura 14 : Funcția Difference of Gaussians (DoG) și funcția aferentă acestui operator.
42
2.3.3. Nivel de gri în pete
O abordare pentru a detecta petele este de a asocia o pată luminoasă cu fiecare maxim
local sau o pată întunecată cu fiecare minim local. Principala problemă cu această metodă de detectare
este faptul că extremele locale sunt sensibile la zgomot. Pentru a se rezolva această problemă s -a studiat
problema detectării maximelor locale [ 22]. O regiune cu întindere spațială a fost asociată cu fiecare
maxim local, precum și cu un contrast local definit dintr -un așa numit punct de așezare delimitator. Un
extrem loc al cu o întindere definită în acest fel a fost denumit ca o pată de culoare gri. Lindeberg a
elaborat un algoritm bazat pe presortarea pixelilor, în mod alternativ conectate la aceleași intensități, în
ordinea descrescătoare a valorilor acestora. Apoi, s -au făcut comparații între cei mai apropiați vecini ai
fiecărui pixel sau ai regiunilor conectate. Regulile de clasificarea a pixelilor în fiecare etapă a
algoritmului sunt:
• Dacă o regiune nu are nici un vecin cu valoare mai mare ca a sa, atunci este un max im
local și va deveni un punct pentru pată .
• Dacă există cel puțin un vecin de valoare mai mare, care face parte din fundal, atunci
pixelul va fi considerat tot ca parte a fundalului.
• Dacă există vecini de valori mai mari, iar aceștia fac parte din diferit e pete, atunci
punctul testat nu va face parte din nici o pată ci va fi considerat fundal.
• Dacă are unul sau mai mulți vecini mai mari, ce fac parte din aceeași pată, automat și
pixelul testat va fi considerat ca făcând parte din pată.
Regiunile extreme c e sunt stabile pot fi văzute ca făcând parte dintr -un subset specific al
petei cu nivel de gri explicit pentru o prelucrare ulterioară.
2.3.4. Exemplu de aplicare a metodei de detecție a petelor
S-a folosit un cod sursă creat de Satya Mallick, la care s -a adăugat o poză de test preluată
din baza de date SCOUTER.
Figura 15 : Exemplu de utilizare a metodei de detecție a petelor, folosind parametrii inițiali, și
anume pragul minim egal cu 0, pragul maxim egal cu 256. Filtrarea după zonă a fost activată, cu o
valoare minimă egală cu 1500. De asemenea filtrarea prin convexitate este activată. Astfel se poate
vedea cum s -a detectat o singură pată ce este evidențiată printr -un cerc de culoare roșie.
43
Figura 16 : Exemplu de utilizare a metodei de detecție a petelor. În acest caz a fost dezactivat filtru
după zonă pentru imaginea din partea stângă, iar pentru imaginea din partea dreaptă s -a ales o valoare
minimă pentru arie mult mai mică, de aproximativ 15. Astfel se poate vedea că pentru imaginea din
stânga sunt evid ențiate mult mai multe pete de dimensiuni mai mici, iar în imaginea din dreapta petele
sunt mai puține, dar cu dimensiuni puțin mai mari.
Figura 17 : Exemplu de utilizare a metodei de detecție a petelor. Pentru acest exemplu cele două filtre
au fost dezactivate, astfel se poate vedea influența zgomotului, apar foarte multe pete evidențiate de
diverse dimensiuni care se suprapun între ele, în acest mod nu se poate observa nimic clar în imagine,
nici un obiect de interes nu poate fi detectat
44
Figura 18 : Exemplu de utilizare a metodei de detecție a petelor. În ambele imagini filtrarea după zonă
a fost activată. Și a fost variat parametrul de convexitate.
În figură 18, în imaginea din dreapta, valoarea minimă pentru convexitate a fost aleasă
foarte mare, peste 1, iar în imaginea din stânga a fost dezactivat filtrul după convexitate. Dacă am scădea
valoare minimă pentru convexitate am obține același efect ca în cazul dezactivării acestuia. În ambele
cazuri detecția petelor nu poate fi folosită, în nici una din imagini nu se pot identifica obiectele de interes.
În imaginea din stânga apar foarte multe pete evidențiate de dimensiuni diferite și suprapuse, iar în
imaginea din dreaptă nu mai este nici o pată evidențiată.
Din exemplele de mai sus se poate ved ea modul de aplicare a algoritmului de detecție al
petelor. Fiecare filtru în parte are rolul lui, iar valorile parametrilor acestora influențează și ele la rândul
lor detecția petelor. Se poate vedea cum acest algoritm este mai exact dacă este utilizat do ar alături de
altă metodă de detecție a obiectelor de interes.
45
3. TEHNOLOGIA FOLOSIT Ă
3.1. Limbajul de programare C++
Limbajul de programare face parte din categoria limbajelor artificiale, deoarece este utilizat în
procesul de comunicare om -calculator, sau mai corect spus între programator și calculator. Limbajul de
programare C++ este un limbaj multi -paradigmă, adică su portă mai multe stiluri fundamentale de
programare, de asemenea suportă o verificare statică a tipului variabilelor. Acesta mai suportă și
programare procedurală, abstractizarea datelor și programarea orientată pe obiect. C++ a devenit unul
dintre cele mai utilizate și populare limbaje de programare comerciale, încă de începutul anilor ’90 și a
rămas așa până în prezent.
În anul 1980, Bjarne Stroustrup a dezvoltat C++, inițial denumind -o C cu clase, printr -o serie de
îmbunătățiri aduse limbajului de progra mare C [ 22]. Prima și cea mai importantă îmbunătățire a fost
adăugarea noțiunii de clase.
În momentul în care a dorit să își pregătească lucrarea de doctorat, i -a venit ideea de a crea un
nou limbaj de programare. Acesta a descoperit că prin utilizarea li mbajului de programare Simula putea
crea cu ușurință proiecte mari, dar compilarea era lentă, iar BCPL deși era rapid nu putea fi folosit pentru
proiecte mari. La începutul colaborării cu “Bell Labs” a avut sarcina de a analiza nucleul UNIX referitor
la ca lcul distribuit. Ținând cont de experiența căpătată în timpul elaborării lucrării sale de doctorat,
Stroustrup a ales să îmbunătățească limbajul C prin adăugarea de facilități asemănătoare Simula. Acesta
a folosit ca bază limbajul de programare C deoarece este rapid și portabil. Prima facilitate adăugată a fost
conceptul de clase, la care s -au adăugat clasele derivate, verificarea tipului și argumente cu valori
implicite.
O dată cu crearea limbajului C cu clase, în anul 1982 fiind redenumit C++, Stroustrup a scris și
Cfront, acesta era un compilator ce avea rolul de a genera cod sursă C din cod C++. Prima lansare oficială
pe piața comercială a fost în anul 1985, iar versiunea 2.0 a fost lansată în anul 1989. Tot în anul 1985 a
apărut și prima carte ce avea rolul de a descrie informațiile importante despre acesta, numele cărții era
"The C++ Programming Language" (Limbajul de programare C++). Ultimele adăugări au fost includerea
template -urilor , excepțiile și tipul boolean.
O dată cu evoluția limbajului C++ s -a dezvoltat și biblioteca standard. Prima adăugare la
biblioteca standard a fost biblioteca de intrări/ieșiri (“iostream”), care oferea facilități pentru a înlocui
funcțiile tradiționale C cum ar fi “printf” și “scanf”.
46
Figura 19 : Exemplu de cod scris în limbajul de programare C++ (imaginea din partea
stânga), iar în imaginea din partea dreaptă avem ceea ce codul nostru a returnat după compilare. Codul
are rolul de a afișa două imagini în ferestre de dimensiuni diferite. Imaginile sunt extrase din baza de
date SCOUTER.
3.2. Visual Studio
Microsoft Visual Studio include un set complet de instrumente de dezvoltare pentru generarea de
aplicații ASP.NET, Servicii Web XML, aplicații desktop și aplicații mobile. Visual Basic, Visual C++,
Visual C# și Visual J# toate folosesc același mediu de dezvoltare integrat (IDE) care le permite partajarea
instrumentelor și facilitează crearea de soluții folosind mai multe limbaje de programare.
Tabelul 2 : Istoricul versiunilor Visual Studio
Primele versiuni de Visual Studio, anterior versiunii Visual Studio 4.0 au fost versiunile Visual Basic 3,
Visual C++, Visual FoxPro și Source Safe ca și produse independente. De asemenea acest produs a fost
creat în mai multe variante: Express, Professional, Premium, Ultimat e și Test Professional.
47
Figura 20 : Interfața cu utilizatorul a programului Microsoft Visual Studio
3.3. Librăria OpenCV
OpenCV ("Open Source Computer Vision Library") este o librărie open -source pentru calculator
și o bibliotecă de software pentru învățarea asistată de calculator. OpenCV a fost construit pentru a oferi
o infrastructură comună pentru aplicațiile de prelucrare de imagini și/sau video pe calculator și pentru a
accelera utilizarea percepției mașinilor în produsele comerciale. Fiind un produs cu l icență BSD,
OpenCV facilitează utilizarea și modificarea codului de către companii [ 24].
Biblioteca are mai mult de 2500 de algoritmi optimizați, care include un set cuprinzător de
algoritmi de vizionare clasică și de ultimă generație, precum și de algoritmi de învățare a mașinilor.
Acești algoritmi pot fi utilizați pentru a detecta și a recunoaște fețele, a identifica obiecte, a clasifica
acțiunile umane în videoclipuri, a urmări mișcările camerei, a urmări obiectele în mișcare, a extrage
modele 3D de obiecte, găsirea unor imagini similare dintr -o bază de date cu imagini, eliminarea ochilor
roșii din imaginile realizate cu ajutorul blitz -ului, urmărirea mișcărilor ochilor, recunoașterea peisajelor
și stabilirea marcatorilor pentru a suprapune cu real itatea augmentată etc. OpenCV are mai mult de 47
mii de utilizatori și numărul estimat de descărcări depășește 14 milioane. Biblioteca este utilizată în
companii, grupuri de cercetare și organizații guvernamentale.
Ultima versiune a acestei librării este O penCV 3.2.0 apărută la data de 23.12.2016, de asemenea
această versiune a fost folosită și în aplicațiile realizate pentru partea practică a acestei lucrări
3.4. Baza de date SCOUTER
Proiectul este dezvoltat de UTI Grup în parteneriat cu Universitatea Politeh nică București și
Laboratorul de Analiză și Prelucrarea Imaginilor, în cadrul programului Național de Cercetare –
Dezvoltare, secțiunea Inovare, Subsecțiunea Dezvoltare Produse – Sisteme – Tehnologii, proiectul a fost
demarat în luna august 2013 și a avut o durată de 27 de luni [ 25].
48
Baza de date conține imaginile realizate cu ajutorul mai multor camere de supraveghere, în
imagini apar cele două persoane, iar cu ajutorul fișierelor CSV sunt marcate, adnotările sunt făcute pentru
două scenarii diferite, pentru cele două persoane ce apar în toate filmările, numite Scenariu 1 și Scenariu
2.
Tabelele ce alcătuiesc fișierele CSV au coloanele denumite astfel: numărul cadrului
(“Frame_number”), numele cadrului (“Frame_name”), lățimea imaginii (“Img_width”), înălțime
imaginii (“Img_height”), d acă există obiect (“hâș_object”) dacă există obiect avem valoarea 1, dacă omul
nu apare vom avea valoarea 0, numărul de obiecte (“number_of_objects”), numele obiectului
(“name_of_objects”) și coordonatele obiectului (“coordonates”) , coordonatele reprezint ă două puncte
aflate în colțuri opuse (x1, x2, y1, y2) ce unite creează un dreptunghi ce încadrează personajul.
Baza de date SCOUTER este alcătuiră din 30 de fișiere video, grupate în 3 seturi cu denumirile
18.06.13, 25.11.13 și 29.07.13.
Figura 21 : Pre zentarea unei imagini preluată din baza de date SCOUTER, pentru care s -a făcut
legătura cu fișierul CSV corespunzător, astfel persoana 1 sau scenariul 1 este înconjurat de un
dreptunghi de culoare neagră, codul sursă se găsește în Anexa 1.
49
4. DETECȚIA MIȘCĂRII ÎN FIȘIERELE VIDEO
Detecția mișcării este procesul de localizare a unui obiect sau a mai multor obiecte aflate în
mișcare, folosind o cameră video. Acest proces are o varietate de utilizări, dintre care cele mai importante
sunt interacțiunea om -mașină, om -calculator, securitatea sau supravegherea video, comunicarea video,
controlul traficului, imagistica medicală și editarea video. Urmărirea video este un proces ce poate
consum foarte mult timp, acest lucru se datorează cantității enorme de informa ție ce rezultă din toate
înregistrările efectuate atât cu camera de supraveghere cât și cu aparate de filmat de uz personal. Din
această cauză s -a dezvoltat procesul de detective de obiecte atât în mișcare cât și statice. Pentru a detecta
mișcare într -un v ideoclip se vor analiza cadre consecutive, iar dacă poziția obiectului sau obiectelor de
interes diferă de la un cadru la altul, atunci acesta sau acestea se află în mișcare. Detecția poate devenii
deosebit de dificilă dacă obiectele se mișcă rapid în rapo rt cu rata cadrelor. O altă situație care crește
complexitatea problemei este atunci când obiectul urmărit își schimbă orientarea în timp. Pentru aceste
situații, sistemele de urmărire video folosesc de obicei un model de mișcare ce descrie modul în care
imaginea țintei s -ar putea schimba pentru diferite posibile mișcări ale obiectului.
Pentru a realiza urmărirea video se folosește un algoritm ce analizează cadre video secvențiale și
returnează la ieșire mișcarea obiectelor între cadre. Există o varietate de tipuri de algoritmi, fiecare având
atât puncte forte cât și puncte slabe. Atunci când se alege un algoritm trebuie ținut cont de scopul pentru
care vrem sa îl folosim. Există două componente majore ale unui sistem de urmărire vizuală: marcarea
țintei și localizarea acesteia, precum și filtrarea și asocierea datelor.
4.1. Algoritmul de extragere al fundalului
Extragerea fundalului (“Background subtraction” sau prescurtat BS) este o tehnică comună, ce
se folosește pe scară largă pentru a genera măști (“foreground mask”) și anume pentru a genera o imagine
binară ce conține pixelii ce aparțin obiectelor aflate în mișcare. După cum sugerează și numele algoritmul
efectuează o scădere între cadrul actual și un model de fundal ce conține partea static a scen ei, sau mai
corect spus tot ceea ce poate fi considerat ca făcând parte din fundal, având în vedere caracteristicile
scenei observate.
Figura 22 : Modul de lucru al algoritmului BS (“Background subtraction”), poza a fost
preluată de la sursă [ 26].
50
Modelarea de fundal constă în doi pași principali, aceștia sunt: inițializarea fundalului și
actualizarea acestuia. În prima etapă, se calculează un model inițial al fundalului, în timp ce în al doilea
pas acest model este actualizat pentru a se adapta eventualelor modificări ale scenei.
Acest algoritm folosește funcția “createBackgroundSubtractorMOG2()” pentru a genera un
contur, funcție implicită ce aparține librăriei OpenCV. Această funcție are trei componente. Primul
parametru numit durata istoriei (“history”), reprezintă un parametru întreg. Cel de al doilea
(“varThreshold”) reprezintă distanța dintre pixeli și model pentru a se putea lua o decizie dacă un pixel
este bine descris de modelul de fundal și este de tip real (“double”). Acest parametru nu afectează
actualizarea imaginii de fundal. Ultimul parametru (“detectShadows”), ce este de tip boolean, decide
dacă se vor detecta și umbrele, astfel că dacă acesta este setat cu valoarea adevărat (“true”) algoritmul va
detecta umbrele și le va marca, dar viteza de p relucrare va fi mai mică, astfel că dacă nu este necesară
această caracteristică este bine să fie setat negativ (“false”).
4.2. Algoritmul de detecție a mișcării folosind filtre de culoare și detectarea conturului
Acest algoritm constă în două etape. Prima etapă este reprezentată prin aplicarea unui filtru de
culoare ce are rolul de a convertii imaginea din modelul de culori BGR în sistem de culori HSV.
Modelul cromatic RVA, prescurtare ce provine de la roșu – verde – albastru, în general folosindu –
se abrevi erea în limba engleză “RGB” (“red -green -blue”) reprezintă un model aditiv de culoare, în care
pentru a se obține o gamă cât mai largă de culori se folosesc cele trei culori primare, roșu, albastru și
verde. Această paletă de culori este folosită pentru a r eprezenta imaginile în sistem electronic, cum ar fi
pentru televizoare și pentru calculatoare. Acest sistem este dependent de dispozitiv, deoarece două
dispozitive diferite vor reprezenta aceeași valoare RVA în moduri diferite, asta datorându -se faptului c ă
elementul chimic ce provoacă culoarea diferă de la producător la producător sau chiar la același
dispozitiv, odată cu trecerea timpului. Astfel o valoare RVA nu definește aceeași culoare pe toate
dispozitivele fără un fel de gestiune a culorilor [ 27].
HSV este reprezentarea cea mai comună a punctelor ce alcătuiesc modelul de culoare RGB într –
un sistem de coordonate cilindrice. Această metodă de reprezentare încearcă să rearanjeze geometria
RGB pentru a deveni mai intuitivă. Sistemul HSV a fost dezvoltat î n anii 1970 și este folosit pentru
aplicațiile de colorare, în programele ce au rolul de a edita imagini și mai puțin folosit în analiza
imaginilor. HSV provine de la nuanța (“hue”), saturație (“saturation”) și strălucire (“brightness” sau
“value”). Nuanța reprezintă un parametru principal de aspect al culorii. Se poate afirma că nuanța mai
poate fi definită din punct de vedere tehnic ca fiind “gradul în care un stimul poate fi descris ca fiind
similar sau diferit de stimulii descriși ca roșii, verzi, albaș trii și galbeni” [ 28]. Saturația reprezintă
culoarea unei zone din punct de vedere al luminozității sale. De asemenea se consideră că un obiect ce
este caracterizat de o anumită reflectantă spectrală prezintă o saturație constantă pentru toate nivelele de
iluminare, făcând excepție zonele în care se regăsesc porțiuni ce au o luminozitate puternică. Strălucirea
este percepția provocată de luminanța unei ținte vizuale. Acesta este un atribut / proprietate subiectivă a
unui obiect și unul dintre parametrii de aspect al modelului de culoare. Strălucirea se referă la un termen
absolut și nu trebuie confundată cu luminozitatea.
Pentru a se elimina zgomotul din imagini, astfel acestea devenind mai clare, iar obiectul ce se
deplasează în cadru fiind mai bine evidenț iat se folosesc operații morfologice. Pentru a putea fi folosite
51
aceste operații, imaginile trebuiesc să fie mai întâi binarizate. Operatorii morfologici folosiți vor fi
erodarea și dilatarea.
Erodarea reprezintă un filtru ce operează asupra unei mulțimi sau vecinătăți de pixeli definită de
elementul structural.
A Θ B = {x | B x ⸦ A} (18)
Erodarea morfologică a mulțimii A prin elementul structurant B se definește ca mulțimea
punctelor sau elementelor cu care se poate translata elementul structurant astfel încât acesta să fie inclus
în mulțimea de prelucrat A [ 29].
Figura 2 3: Modul de funcționare al operației de erodare
Dilatarea reprezintă complementarul erodării, adică înlocuiește pixelul curent cu valoarea maximă
din mulțimea de pixeli intersectată de obiectul structural.
𝐴 ⊕ 𝐵={𝑥 |𝐵𝑥∩𝐴= ∅} (19)
Dilatarea morfologică a mulțimii A prin elementul structurant B se definește ca mulțimea
punctelor (elementelor) cu care (în care) se poate translata elementul structurant astfel încât acesta să
aibă puncte comune cu mulțimea de prelucrat A [ 29]
Figura 2 4: Modul de funcționare al operați ei de dilatare
52
Cea de a doua etapă a algoritmului constă în detectarea conturului obiectelor aflate în mișcare în
scenă. Pentru a se face acest lucru folosim funcția dată de OpenCV, “findContours”. Această funcție are
rolul de a detecta conturul în imagini le binare, iar aceasta nu ține cont de marginea de 1 pixel a imaginii,
margine ce este plină cu zero și are rolul de a ajuta la analiza vecinilor în algoritm, astfel că dacă avem
contur ce atinge marginea imaginii, acesta va fi ignorat. Funcția noastră are 6 parametrii. Primul
parametru este imaginea de intrare, funcția noastră va modifica această imagine în timp ce extrage
contururile. Cel de al doilea parametru este reprezentat de contur, și anume de vectorii ce au rolul de a
stoca fiecare contur. Cel de al treilea parametru reprezintă un vector de ieșire opțional ce are rolul de a
stoca informații despre topologia imaginii. Cel de al patrulea parametru ne spune modul de extragere a
conturului, există patru astfel de moduri. Cel de al cincilea parametru ar e rolul de a ne spune metoda de
aproximare a conturului, în acest caz există 2 metode. Ultimul parametru este opțional și reprezintă
deplasarea fiecărui punct din contur, acest lucru este util în cazul în care contururile sunt extrase din
imaginea ROI și a poi ar trebui analizate în contextul întregii imagini.
Tabelul 3 : Cele patru moduri de recuperare a conturului [ 30].
Nume Mod Descrierea modului de recuperare al conturului
RETR_EXTERNAL Se extrage doar conturul extrem al obiectului.
RETR_LIST Se preiau toate contururile fara a se stabilii o relatie ierarhica
RETR_CCOMP Se preiau toate contururile și s e organizează într -o ierarhie pe două nivele. La
nivelul superior, există limite externe ale componentelor. La al doilea nivel,
există limite ale gă urilor. Dacă există un alt contur în interiorul unei găuri a
unei componente conectate, aceasta va fi pus la nivel superior.
RETR_TREE Preia toate contururile și reconstruiește o ierarhie completă a contururilor
extrase.
Tabelul 4 : Metodele de aproximare ale conturului [ 30].
Nume Mod Descrierea modului de aproximare a conturului
CHAIN_APPROX_NONE Stochează absolut toate punctele de contur.
CHAIN_APPROX_SIMPLE Comprimă segmentele orizontale, verticale și diagonale și lasă
doar punctele lor finale. De exemplu, un contur dreptunghiular
sus-dreapta este codificat cu 4 puncte.
OpenCV ne mai pune la dispoziție o variantă de funcție pentru detectarea conturului, singura
diferență între cele două fiind făcută de argumentele fiecărei funcții, cea din urmă ne având vectorul ce
conține informații despre topologia imaginii .
53
4.3. Algoritm de detecție a obiectelor ce se deplasează în cadru fără a se folosi culorile acestora
Acest algoritm folosește metoda imaginilor secvențiale, și anume se citesc două cadre succesive
ce provin de la o cameră de supraveghere sau de la un fișier video, acestea fiind comparate între ele
pentru a se vedea ce pixeli s -au modificat de la un cadru la altul. Această diferență se face cu ajutorul
funcției “absdiff()” pusă la dispoziție de librăria OpenCV. Funcția “absdiff” calculează diferența
absolută, element cu element între două tablouri sau între un tablou și un scalar. Această funcție are trei
parametrii. Aceștia sunt reprezentați de cele două imagini între care se dorește să se facă diferența, iar
cel de al treilea parametru este reprezentat de matricea de ieșire, ce este de același tip și are aceeași
dimensiune ca cei doi parametrii de intrare. Cele două imagini ce sunt folosite ca parametrii de intrare
pentru funcție trebuiesc să fie în tonuri de gri. După acest pas, imaginile aflate acum în nuanțe de gri
trebuiesc să fie convertite în imagini binare, iar acest lucru se face folosind funcția “threshold”. Funcția
este de obicei utilizată pentru a obține o imagin e bi-nivel (binară) dintr -o imagine din tonuri de gri sau
pentru a elimina un zgomot, și anume, filtrarea pixelilor de valori prea mici sau prea mari. Cei cinci
parametrii ai imaginii sunt reprezentați de matricea de intrare ce aparține imagini binarizate, matricea ce
are rolul de a stoca valorile de la ieșire, această matrice trebuie să aibă același tip și aceleași dimensiuni
că matricea de la intrare, valoarea de prag a senzitivității, un parametru real ce va fi folosit alături de tipul
pragului, iar ulti mul element al funcției este tipul pragului [ 31].
Tabelul 5 : Enumerarea tipurilor de prag, sau ultimul parametru al funcție “threshold”
În continuare vom utiliza funcția “blur()” pentru a se elimina posibilele zgomote și pentru a se
mări dimensiunea obiectului pe care încercăm să îl urmărim, această funcție este asemănătoare cu
dilatarea și erodarea. Funcția netezește o imagine folosind nucleul (cunoscut sub numele de “kernel” sau
“ker”):
54
𝐾= 1
𝑘𝑠𝑖𝑧𝑒 .𝑙ăț𝑖𝑚𝑒 ∗𝑘𝑠𝑖𝑧𝑒 .î𝑛ă𝑙ț𝑖𝑚𝑒[1⋯ 1
⋮⋱ ⋮
1⋯ 1] (20)
Unde ksize reprezintă unul din parametrii funcției “blur” ce are rolul de a întoarce dimensiunile
nucleului.
Această funcție este echivalentă cu funcția “boxFilter”.
Ultimul pas al acestui algoritm constă în detectarea mișcării ce se face, la fel ca în cazul
algoritmului anterior, tot cu ajutorul funcție “findContours”.
55
5. REZULTATE EXPERIMENTALE
Pentru a se putea compara cele trei tipuri de algoritmi folosiți pentru detectarea mișcării în scenă
au fost testate pornind de la codurile sursă create de Kyle Hounslow. Acestea au fost testate atât împreună
cât și separat pentru a se putea alege ce algoritm ne returnează cele mai bune rezultate sau în ce cazuri
pot fi folos ite acestea, pentru a putea obține rezultate cât mai precise și clare.
Figura 2 5: Utilizând un cod sursă [ 26] ce are rolul de a demonstra aplicarea funcției
“createBackgroundSubtractorMOG2()” pentru cazul în care cei trei parametrii au fost setați cu valorile
implicite, astfel că history = 500, varThreshold = 16, detectShadows = este setat ca fiind adevărat
(“true”).
Pentru a vedea cum acești parametrii influențează detecția de mișcare în clipul video, vom
modifica valorile acestea cu valori extreme. Cel mai ușor de variat este ultimul parametru, astfel că am
păstrat intacte celelalte valori, doar am modificat valoarea acestuia pentru a observa diferențele. Singura
diferență notabilă, este faptul că nu mai avem zone de gri, imaginea devenind monocromă pentru
declararea celui de al treilea parametru ca fiind fals.
Am păstrat falsă valoarea de detectare a umbrelor, iar pentru parametrul “varThreshold” am
păstrat valoarea 16, dar am variat valorile pentru primul parametru și am observat că pentru o valoare
foarte mică, egală cu 1, numărul de pixeli ce apar în imaginea rezultată este foarte mare astfel că nu se
pot detecta foarte bine obiectele ce se mișcă în scenă. Dar o dată cu creșterea valorii, numărul de pixeli
de culoare albă, ce arată pixelii modifica ți de la un cadru la altul, scade, iar după o anumite valoare în
imagine nu se mai pot observa modificări.
Ultimul parametru ce îl putem varia este pragul (“varThreshold”), acesta este aplicat imaginii ce
a fost obținută în urma diferenței dintre cadrul cu rent și fundalul extras, având rolul de a îmbunătății
rezultatul sau altfel spus vom filtra imaginea obținută după scădere cu valoarea pragului. Alegerea valorii
se face în funcție de viteza de mișcare a scenei, astfel că pentru o viteză mai mare a scenei este nevoie
de o valoare mare a pragului.
56
Figura 26 : Modul in care se modifica imginile rezultate atunci cand variem cel de al treilea
parametru, si anume “detectShadows ”.
Figura 2 7: Exemplu de testare al algoritmului de modelare a fundalului, pentru care s -a variat
parametrul “history”. Se poate observa cum pentru valoare 1 apar foarte mulți pixeli albi, astfel că nu
se pot vedea obiectele de interes.
Pentru a observa cum modifică pragul detecția mișcării în clipul nostru video am păstrat falsă
valoa rea de detectare a umbrelor, iar pentru parametrul “history” am ales valoarea 500. Primul test a fost
efectuat pentru o valoare foarte mică a pragului, valoare egală cu 1, astfel că rezultatul a fost neclar, nu
s-a putut observa nimic în imaginea rezultată , existând foarte mult zgomot. Al doilea test a fost efectuat
pentru o valoare mare a pragului, egală cu 1000, în acest caz nu se mai putea face diferența dintre
imaginea de fundal și pixelii ce își modifică valoarea de la un cadru la celălalt, astfel că a proape tot ce
se afla în scenă este considerat ca făcând parte din fundal. În concluzie pentru a putea obține un rezultat
cât mai apropiat de realitate și anume să obținem o imagine cât mai clară a obiectelor ce se mișcă în
scenă trebuie să alegem o valoar e de prag medie, cât mai potrivită pentru viteza scenei. Astfel că am
observat că cel mai bine obținem conturul obiectelor în mișcare, în cazul nostru a celor două persoane
57
folosind un prag cu o valoare de 60, iar pentru “history” valoarea 100, păstrând în continuare oprită
proprietatea de a detecta umbre.
Figura 2 8: Imaginile obținute în urma testelor efectuate în cazul varierii pragului.
Pentru toate testele figura originală apare în Figură 25, imaginea din partea stângă, aceasta
reprezentând cadrul 9 a clipul video
În cazul metodei de modelare a fundalului, după testare s -a constatat faptul că este foarte precisă
pentru cadre controlate și anume filmări efectuate, în general, în interiorul clădirilor, deoarece aceasta
este sensibilă la schimbările ilumi nării de la un cadru la altul și la mișcările neimportante din fundal, cum
ar fi frunzele unui copac ce se mișcă datorită vântului sau reflexia luminii solare în mașini sau în apă. De
asemenea această metodă nu poate suporta mișcarea camerei. Prin această metodă obiectele ce s -au
mișcat la început, iar apoi s -au oprit nu mai sunt detectate. Cu toate acestea se detectează doar marginile
unui obiect ce se deplasează în scenă, astfel că se etichetează foarte puțini pixeli ce formează obiectul,
în concluzie obi ectele ce se deplasează spre cameră sau obiectele ce sunt aflate foarte departe de cameră
se detectează cu greu sau chiar de loc.
În cazul celorlalte două coduri, modul de detectare a mișcării în scenă este asemănător, dar diferă
prelucrarea cadrelor. De asemenea cele două au diverși parametrii ce pot varia, astfel că aceștia au fost
testați pe rând, după care s -a făcut o comparație generală între acești algoritmi.
Deoarece algoritmul detectare a mișcării urmărind culoarea obiectelor , urmărește culorile ce apar
în cadru, nu poate detecta o persoană întreagă, dar în schimb detectează părți ale acesteia. În exemplul
de mai sus se poate vedea cum este păstrată în imaginea binarizată doar bluza persoanei, astfel că detecția
mișcării persoanei se va face după de plasarea bluzei. În acest caz putem varia parametrii de culoare,
HSV. Parametrul “H” ce vine de la nuanța poate lua valori între 0 și 360, iar ceilalți doi parametrii,
saturația și strălucirea, deoarece reprezintă un procentaj, pot lua valori între 0 și 10 0. Variind acești
parametrii vom putea detecta alte obiecte ce au diferite nuanțe de culori.
58
Figura 29: Model de aplicare al algoritmul de de detecție a mișcării folosind filtre de culoare și
detectarea conturului, detectându -se culoarea neagră
Figura 3 0: Model de aplicare al algoritmul de detecție a mișcării folosind filtre de culoare și detectarea
conturului, detectându -se culoarea roșie
În exemplul de mai sus au fost afișate și valorile pentru cei trei parametrii de culoare. Programul
este capabil să ne anunțe dacă avem prea mult zgomot, acest lucru se face prin compararea numărului de
obiecte detectate cu numărul maxim de obiecte ce pot fi detectate, valoare ce este impusă de utilizator.
Acest algoritm poate prelucra și imagini ce provin de la o camer ă ce filmează în timp real.
59
Figura 3 1: Model de aplicare al algoritmul de detecție a mișcării folosind filtre de culoare și detectarea
conturului, folosind camera web pentru a se detecta un obiect ce se deplasează în scenă
Algoritmul testat mai sus, detecția mișcării folosind filtre de culoare și detectarea conturului, dă
cel mai bun randament în situațiile ce necesită detectarea unui obiect ce are o culoare uniformă, iar
fundalul are de asemenea o culoare uniformă și diferi tă de cea a obiectului. De asemenea luminozitatea
nu trebuie să modifice foarte mult culoarea obiectului sau a fundalului, În cazurile în care se dorește
urmărirea unui obiect ce are mai multe culori se va alege doar o culoare, în general acea culoare ce
predomină și obiectul va fi urmărit doar după aceea, în imaginea binară putându -se observa din obiectul
nostru doar porțiunea ce are culoarea aleasă anterior.
Figura 32 : Imaginile finale al contururilor extrase, obținute cu diverse valori ale parametrilor ce pot
varia (senzitivitatea și nivelul de netezire).
60
Pentru ultimul algoritm testat putem varia valorile pentru senzitivitate și valoare cu ajutorul
căreia vom netezii imaginea ce a fost convertită în nuanțe de gri. Astfel că dacă senzitivitatea are o
valoare mică nivelul de zgomot va fi foarte mare și nu se vor mai putea detecta obiectele ce se deplasează,
iar dacă valoarea este exagerat de mare, și pixeli ce fac parte din conturul obiectului ce se deplasează vor
fi ignorați, astfel nu se va mai detect a nimic. În același mod va afecta și valoarea de netezire .
Pentru imaginea din colțul stâng sus din Figura 32, senzitivitatea a fost aleasă cu o valoare egală
cu 10, iar nivelul de netezire egal cu 60. Astfel se poate observa cum cele două siluete sunt legate între
ele, lucru ce se datorează valorii mari alese pentru netezire. În imaginea din partea stânga jos, ambii
parametrii au fost aleși cu valori mici, egali cu 10. În acest caz se poate vedea cum nivelul de zgomot
este foarte mare, făcând imposibilă observarea doar a celor două siluete ce se deplasează în scenă. Pentru
imaginea aflată în partea dreaptă jos, parametrii au fost aleși mari, de valoare egală cu 60. În acest caz se
poate distinge silueta unei persoane ce trece prin cadru, dar conturul est e destul de mare, iar în unele
cadre devine insesizabil și conturul celei de a două persoane, ce acum este reprezentat printr -o singură
pată dispare cu totul. Dintre toate valorile extreme testate cel mai bine se pot observa contururile celor
două persoane în imaginea din dreapta sus, în acest caz senzitivitatea a fost aleasă relativ mare, egală cu
60, iar netezirea a primit o valoare mică egală cu 10. Astfel se poate deduce că pentru valori mici
imaginea va fi acoperită de pete albe ce reprezintă zgomotul, iar pentru valori mari petele albe vor fi
lipite una de cealaltă, în cele din urmă se va obține doar o pată mare de culoare albă, ne putând să se
distingă obiectele ce se deplasează în cadru.
Pentru cazul nostru cele mai bune valori pentru cei doi parame trii ce îi putem varia sunt 40 și 20.
În urma compilării programului vom obține conturul persoanelor ce se deplasează în cadru .
Figura 33 : Primele ferestre ce apar după compilarea programului. În partea stângă avem prezentate
tastele ce trebuiesc apăsate p entru a se începe prelucrarea cadrelor, iar în imaginea din partea dreaptă
avem un cadru din clipul video original.
61
În modul “debug” se vor afișa imaginile obținute în urma efectuării diferenței absolute între două cadre
consecutive și imaginea finală în care nuanțele de gri au fost convertite în valori binare și au fost aplicate
și operațiile morfologice.
Figura 34 : Imaginile obținute în urma apăsării tastei “d”. Imagini după care se face detectarea de
mișcare în cadru.
În acest exemplu se poate vedea rolul funcției de netezire, acesta trebuind să unească cele două
contururi ale obiectului aflat în mișcare, mai ales dacă mișcarea acestuia este rapidă.
Figura 35 : Urmărirea obiectelor ce se deplasează în scenă. În partea dreaptă avem obiectul urmărit, ia r
în partea stângă se pot vedea coordonatele punctului de urmărire în mai multe cadre.
62
Acest algoritm este cel mai optim pentru a fi utilizat în filmări ce conțin zgomot, putând identifica
mișcarea obiectelor cu o precizie bună. Dezavantajul acestuia este că depinde de valorile parametrilor de
filtrare, dacă aceștia nu sunt aleși corespunzător se pot detecta și umbrele obiectelor, comparative cu
algoritmul de modelare a fundalului ce ne oferă posibilitatea de a ignora umbrele. Dezavantaj ce este
întâlnit l a ambele metode de detecție este reprezentat de detecția schimbărilor de iluminare din cadru.
Un alt dezavantaj ar putea fi și faptul că se compară cadru cu cadru, iar dacă un obiect încetează din
mișcare de la un cadru la altul, algoritmul îl va considera din fundal și îl va ignora, astfel că acesta nu
este bun în cazurile în care se dorește să se observe tot ce s -a mișcat în cadru la un moment dat.
Comparativ cu algoritmul de detectare a mișcării după culoare, algoritmul testat anterior va
detecta mai bin e mișcarea obiectului în ansamblu, asta datorită faptului că nu depinde de culoarea
acestuia, ci de diferența de la un cadru la altul între matricele celor două imagini consecutive. Dar și
primul algoritm are avantajele sale în funcție de domeniul de aplic are, un prim avantaj față de celelalte
două metode testate ar fi faptul că prin detecția culorii nu vom fi derutați de detecția umbrelor, aceasta
ne detectându -le indiferent de parametrii setați.
La aceste moduri de detectarea a imaginii se poate adăuga și un algoritm ce ne poate spune ce
persoană s -a deplasat în cadru în acel moment. Acest algoritm va căuta după numele cadrului ales în
fișierele CSV și astfel vom afla poziția exactă a persoanei în imagine.
Toate cele trei metode pot fi utilizate în analiz a imaginilor în direct. În acest caz detecția depinde
și de viteză de redare a cadrelor. În cazul detecției de obiecte fără a se utiliza culoarea acestora, detectarea
utilizând o cameră ce transmite live este destul de precisă, putând urmării traseul unui obiect prin scenă
mult mai precis comparativ cu celelalte două metode. Dacă în cazul metodei prin care detecția de mișcare
se face cu ajutorul culorilor se pot observa obiectele ce se deplasează în cadru dacă acestea au culori
diferite, culori ce nu se pot amesteca între ele, în cazul metodei de extragere de fundal, zgomotul din
imagine este foarte ridicat astfel că detectarea obiectelor ce se deplasează poate fi îngreunată, în unele
cazuri dacă avem două obiecte ce se deplasează prin scenă, iar la un momen t dat se suprapun, contururile
acestora se vor suprapune și ele, chiar dacă obiectul cel mai apropiat de cameră acoperă în totalitate
obiectul din fundal .
Figura 3 6: Exemplu de testare a algoritmilor prin utilizarea unor imagini ce provin de la o cameră de
filmat live.
În imaginea din partea stângă se poate distinge conturul obiectului din cadru, dar se poate vedea
și cum există în continuare zgomot pe fundal. Iar în imaginea din partea dreaptă am folosit ultimul
63
algoritm testat, ce ne -a oferit o locație a obiectului, după cum se poate observa în imaginea din mijloc,
acesta a fost urmărit prin scenă.
64
65
CONCLUZII
Necesitatea unor sisteme de supraveghere video cât mai dezvoltate a apărut în urma creșterii
populației pe glob, dar și datorită creșterii numărului de acte criminale ce duc la moartea unui număr
foarte mare de oamenii. Astfel că pe lângă nevoia de a supraveghea video zonele de risc a apărut și nevoia
de prelucrare a acest or date, pentru a se ușura munca oamenilor atunci când doresc să obțină o informație
de interes. Analiza manuală a datelor ar putea dura exagerat de mult, mai ales dacă cantitatea de
informație este foarte mare. Astfel oamenii au introdus noțiunea de detec tare a mișcării, algoritmi ce au
rolul de a detecta mișcarea în scenă, sau de a identifica un anumit obiect din cadru.
Există numeroase tipuri de detecție a informației de interes din imagini și de asemenea există
aproximativ la fel de multe metode de dete cție a mișcării în scenă. Pe parcursul acestei lucrări am ales
trei metode de detecție a mișcării, fiecare având avantajele și dezavantajele sale. Astfel s -a observat că
pentru a putea compara un astfel de sistem de analiză a datelor trebuie să se țină con t, în primul rând de
scopul acestuia, dar și de fundalul pentru care va fi folosit.
Metoda de modelare a fundalului și metoda de extragere a conturului în funcție de culoarea
obiectului sunt potrivite pentru supravegherea zonelor închise, în timp ce prima metodă este sensibilă la
mișcările nesemnificative din fundal, cea de a doua este sensibilă la culorile ce apar, astfel că într -un
cadru închis vor putea da randamentul dorit. Iar ultima metodă de testare, metoda de detecție a mișcării
prin compararea a do uă cadre consecutive poate fi folosită atât în zone ce apar modificări bruște și
neimportante pe fundal, cum ar fi supravegherea în afara clădirilor, dar este la fel de bună și pentru
supravegherea în interior.
Cel mai important aspect constă în faptul că imaginea este percepută de către calculator ca o
matrice, fiecare pixel fiind localizat în aceasta, parcurgând -o se pot analiza imaginile prin intermediul
calculatorului. În toate cazurile este nevoie să se aplice filtre ce au rol ul de a diminua zgomotul , astfel
făcându -se posibila observarea unui contur clar și cât mai apropiat de realitate. De asemenea pentru
analizarea imaginilor, în orice metodă aleasă este nevoie, ca un prim pas, ca acestea să fie binarizate,
altfel nu se poate face prelucrarea.
În continuarea proiectului se mai pot aduce, ca ulterioare dezvoltări recunoașterea automată de
obiecte ce apar în cadru. Astfel se pot urmării modurile prin care un sistem poate căuta și identifică
obiecte de interes în capturile realizate cu ajutorul camere lor de supraveghere, sistemul putând să
recunoască semen distinctive și caracteristici distinctive ce apar înregistrate video. Prin utilizarea
clasificatorilor, calculatorul poate recunoaște astfel un anumit obiect în alte imagini, chiar dacă pot diferii
parametrii de prezentare ai acestuia, cum ar fi luminozitatea, dimensiunea sau lipsa unei porțiuni din
acesta.
66
67
BIBLIOGRAFIE
1. Documente disponibile exclusiv online:
[1] From Edison to Internet: A History of Video Surveillance ,
http://www.business2community.com/tech -gadgets/from -edison -to-internet -a-history -of-
video -surve llance -0578308#KsAh1HX8Gu1RvbQH.97, 05.06.2017
2. Documente disponibile exclusiv online:
[2] Marie Van Brittan Brown: Home Security System Inventor ,
http://americacomesalive.com/2015/02/13/marie -van-brittan -brown -home -security -system –
inventor, 05.06.2017
3. Documente disponibile exclusiv online:
[3] Leighton Walter Kille, Martin Maximino: “The effect of CCTV on public safety: Research
roundup”, Journalist’s Resource, 06.02.2014
4. Documente disponibile exclusiv online:
[4] Closed -circuit television , https://en.wikipedia.org/wiki/Closed –
circuit_television#cite_note -Public -20, 06.06.2017
5. Documente disponibile exclusiv online:
[5] Rise of Surveillance Camera Installed Base Slows
http://www.sdmmag.com/articles/92407 -rise-of-surveillance -camera -installed -base-slows,
06.06.2017
6. Documente disponibile exclusiv online:
[6] http://haltonpolice.ca/CommunityPolicing/Pages/securitycameraregistration .aspx,
07.06.2017
7. [7] Legea nr. 677 /2001
8. [8] Legea nr. 286/2009
9. Documente disponibile exclusiv online:
[9] http://supravegherevideo.com/new/cel -mai-lung-articol -despre -camere -supraveghere –
video, 07.06.2017
10. Carte:
[10] Linda G. Shapiro, George C. Stockman, “ Computer Vision”, 2001
68
11. Documente disponibile exclusiv online:
[11] C. Tomasi, T. Kanad e, “Detection and Tracking of Point Features”, 1991
12. Documente disponibile exclusiv online:
[12] Tony Lindeberg, "Feature detection with automatic scale selection",
http://ftp.nada.kth.se/CVAP/reports/cvap198.pdf, 07.06.2016
13. Documente disponibile exclusiv online:
[13] http://docs.opencv.org/2.4/doc/tutorials/features2d/trackingmotion/corner_subpixeles/
corcor_subpixeles.html, 11.06.2017
14. Documente disponibile exclusiv online:
[14] COPOȚ Cosmin, “Tehnici de control pentru sistemele servoing vizuale”,
http://www12.tuiasi.ro/users/103/Rezumat_teza%20CosminCopot.pdf, 11.06.2017
15. Documente disponibile exclusiv online:
[15] http://docs.opencv.org/3.2.0/d f/d0d/tutorial_find_contours.html, 11.06.2017
16. Articol dintr -o revistă sau din volumele unei conferințe:
[16] W. Zhang, F. Bergholm, "Multi -scale blur estimation and edge type classification for
scene analysis" , Septembrie 1997, Volum 24, pag 219 – 250
17. Articol dintr -o revistă sau din volumele unei conferințe:
[17] J. Canny, "A computational approach to edge detection", Publicat în “IEEE Transactions
on Pattern Analysis and Machine Intelligence ”, Noiembrie 1986 , pag 679 – 698
18. Documente disponibile exclusiv online:
[18] R. Deriche, “Using Canny's criteria to derive an optimal edge detector recursively
implemented”, https://link.springer.com/article/10.1007/BF00123164, 12.06.2017
19. Documente disponibile exclusiv online:
[19] http://docs.op encv.org/3.2.0/da/d5c/tutorial_canny_detector.html, 12.06.2017
20. Documente disponibile exclusiv online:
[20] http://andrei.clubcisco.ro/cursuri/4spg/9.detectia.frontierelor.in.imagini.PDF, 12.06.2017
21. Documente disponibile exclusiv online:
[21] Difference of Gaussians Edge Enhancement ,
http://micro.magnet.fsu.edu/primer/java/digitalimaging /processing/diffgaussians/index .html,
12.06.2017
69
22. Articol dintr -o revistă sau din volumele unei conferințe:
[22] Tony Lindeberg, “Scale -space theory: A basic tool for analyzing strucures at different
scales”, in Journal of Applied Statistics, vol. 21/1994, pag. 225 – 270
23. Carte:
[23] Doina Logofatu, “Algoritmi Fundamentali In C++. Aplicatii”, Editura POLIROM, 2007
24. Documente disponibile exclusiv online:
[24] http://open cv.org/about.html, 13.06.2017
25. Documente disponibile exclusiv online:
[25] SCOUTER , http://uti.eu.com/pncd -scouter/index.html, 13.06.2017
26. Documente disponibile exclusiv online:
[26] http://docs.opencv.org/3.2.0/d1/dc5/tutorial_background_subtraction.html, 14.06.2017
27. Documente disponibile exclusiv online:
[27] Modelul de culoare roșu -verde -albastru,
https://ro.wikipedia.org/wiki/Modelul_de_culoare_ro%C8%99u -verde -albastru, 14.06.2017
28. Documente disponibile exclusiv online:
[28] The CIECAM02 Color Appearance Model , http://rit -mcsl.org/fairchild/PDFs/PRO19.pdf,
14.06.2017
29. Documente disponibile exclusiv online:
[29] ELEMENTE DE MORFOLOGIE MATEMATIC Ă,
http://imag.pub.ro/ro/cursuri/archive/08.pdf, 14.06.2017
30. Documente disponibile exclusiv online:
[30] http://docs.opencv.org/3.1.0/d3/dc0/group__imgproc__shape.html#ga17ed9f5d79
ae97bd4c7cf18403e1689a, 15.06.2017
31. Documente disponibile exclusiv online:
[31] http://docs.opencv.org/master/d7/d1b/group__imgproc__misc.html#gaa9e58d2860
d4afa658ef70a9b1115576, 15.06.2017
70
ANEXA 1
71
#include <iostream>
#include <cstdio>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include "opencv2/video/background_segm.hpp"
#include <fstream>
#include <conio.h>
using namespace cv;
using namespace std;
// Citire fișiere CSV
ifstream A("D: \\Pentru
licenta \\CSV_files \\WS00_Cam0001_2013_07_25_
10_53_16 (1)(SCENARIO -1).csv");
string As =
"WS00_C am0001_2013_07_25_10_53_16(1)(SCE
NARIO -1";
string Ass =
"WS00_Cam0001_2013_07_25_10_53_16(1)(SCE
NARIO -1";
ifstream B("D: \\Pentru
licenta \\CSV_files \\WS00_Cam0001_2013_07_25_
10_53_16(2)(SCENARIO -2).csv");
string Bs =
"WS00_Cam0001_2013_07_25_10_53_16(2)(SC E
NARIO -2";
string Bss =
"WS00_Cam0001_2013_07_25_10_53_16(2)(SCE
NARIO -2";
ifstream C("D: \\Pentru
licenta \\CSV_files \\WS00_Cam0001_2013_07_29_
16_05_13(1)(SCENARIO -1).csv");
string Cs =
"WS00_Cam0001_2013_07_29_16_05_13(1)(SCE
NARIO -1";
string Css =
"WS00_Cam0001_2013_07_29_16_05_13(1)(SCE
NARIO -1"; ifstream D("D: \\Pentru
licenta \\CSV_files \\WS00_Cam0001_2013_07_29_
16_05_13(2)(SCENARIO -2).csv");
string Ds =
"WS00_Cam0001_2013_07_29_16_05_13(2)(SCE
NARIO -2";
string Dss =
"WS00_Cam0001_2013_07_29_16_0 5_13(2)(SCE
NARIO -2";
ifstream E("D: \\Pentru
licenta \\CSV_files \\WS00_Cam0001_2013_11_25_
12_43_07(1)(SCENARIO -1).csv");
string Es =
"WS00_Cam0001_2013_11_25_12_43_07(1)(SCE
NARIO -1";
string Ess =
"WS00_Cam0001_2013_11_25_12_43_07(1)(SCE
NARIO -1";
ifstream F ("D:\\Pentru
licenta \\CSV_files \\WS00_Cam0001_2013_11_25_
12_43_07(2)(SCENARIO -2).csv");
string Fs =
"WS00_Cam0001_2013_11_25_12_43_07(2)(SCE
NARIO -2";
string Fss =
"WS00_Cam0001_2013_11_25_12_43_07(2)(SCE
NARIO -2";
ifstream G("D: \\Pentru
licenta \\CSV_files \\WS00_Cam0002_2013_07_25_
10_53_07(1)(SCENARIO -1).csv");
string Gs =
"WS00_Cam0002_2013_07_25_10_53_07(1)(SCE
NARIO -1";
string Gss =
"WS00_Cam0002_2013_07_25_10_53_07(1)(SCE
NARIO -1";
ifstream H("D: \\Pentru
licenta \\CSV_files \\WS00_Cam0002_2013_07_25_
10_53_0 7(2)(SCENARIO -2).csv");
72
string Hs =
"WS00_Cam0002_2013_07_25_10_53_07(2)(SCE
NARIO -2";
string Hss =
"WS00_Cam0002_2013_07_25_10_53_07(2)(SCE
NARIO -2";
ifstream I("D: \\Pentru
licenta \\CSV_files \\WS00_Cam0002_2013_07_29_
15_58_24(1)(SCENARIO -1).csv");
string I s =
"WS00_Cam0002_2013_07_29_15_58_24(1)(SCE
NARIO -1";
string Iss =
"WS00_Cam0002_2013_07_29_15_58_24(1)(SCE
NARIO -1";
ifstream J("D: \\Pentru
licenta \\CSV_files \\WS00_Cam0002_2013_07_29_
15_58_24(2)(SCENARIO -2).csv");
string Js =
"WS00_Cam0002_2013_07_29_15_ 58_24(2)(SCE
NARIO -2";
string Jss =
"WS00_Cam0002_2013_07_29_15_58_24(2)(SCE
NARIO -2";
ifstream K("D: \\Pentru
licenta \\CSV_files \\WS00_Cam0002_2013_11_25_
12_46_09(1)(SCENARIO -1).csv");
string Ks =
"WS00_Cam0002_2013_11_25_12_46_09(1)(SCE
NARIO -1";
string K ss =
"WS00_Cam0002_2013_11_25_12_46_09(1)(SCE
NARIO -1";
ifstream L("D: \\Pentru
licenta \\CSV_files \\WS00_Cam0002_2013_11_25_
12_46_09(2)(SCENARIO -2).csv");
string Ls =
"WS00_Cam0002_2013_11_25_12_46_09(2)(SCE
NARIO -2"; string Lss =
"WS00_Cam0002_2013_11_25_12 _46_09(2)(SCE
NARIO -2";
ifstream M("D: \\Pentru
licenta \\CSV_files \\WS00_Cam0005_2013_07_25_
11_05_38(1)(SCENARIO -1).csv");
string Ms =
"WS00_Cam0005_2013_07_25_11_05_38(1)(SCE
NARIO -1";
string Mss =
"WS00_Cam0005_2013_07_25_11_05_38(1)(SCE
NARIO -1";
ifstream N("D: \\Pentru
licenta \\CSV_files \\WS00_Cam0005_2013_07_25_
11_05_38(2)(SCENARIO -2).csv");
string Ns =
"WS00_Cam0005_2013_07_25_11_05_38(2)(SCE
NARIO -2";
string Nss =
"WS00_Cam0005_2013_07_25_11_05_38(2)(SCE
NARIO -2";
ifstream O("D: \\Pentru
licenta \\CSV_fil es\\WS00_Cam0005_2013_07_29_
16_09_14(1)(SCENARIO -1).csv");
string Os =
"WS00_Cam0005_2013_07_29_16_09_14(1)(SCE
NARIO -1";
string Oss =
"WS00_Cam0005_2013_07_29_16_09_14(1)(SCE
NARIO -1";
ifstream P("D: \\Pentru
licenta \\CSV_files \\WS00_Cam0005_2013_07_29_
16_0 9_14(2)(SCENARIO -2).csv");
string Ps =
"WS00_Cam0005_2013_07_29_16_09_14(2)(SCE
NARIO -2";
string Pss =
"WS00_Cam0005_2013_07_29_16_09_14(2)(SCE
NARIO -2";
73
ifstream Q("D: \\Pentru
licenta \\CSV_files \\WS00_Cam0005_2013_11_25_
17_32_20(1)(SCENARIO -1).csv");
string Qs =
"WS00_Cam0005_2013_11_25_17_32_20(1)(SCE
NARIO -1";
string Qss =
"WS00_Cam0005_2013_11_25_17_32_20(1)(SCE
NARIO -1";
ifstream R("D: \\Pentru
licenta \\CSV_files \\WS00_Cam0005_2013_11_25_
17_32_20(2)(SCENARIO -2).csv");
string Rs =
"WS00_Cam0005_2013_11_25_ 17_32_20(2)(SCE
NARIO -2";
string Rss =
"WS00_Cam0005_2013_11_25_17_32_20(2)(SCE
NARIO -2";
ifstream S("D: \\Pentru
licenta \\CSV_files \\WS00_Cam0007_2013_07_25_
10_53_09(1)(SCENARIO -1).csv");
string Ss =
"WS00_Cam0007_2013_07_25_10_53_09(1)(SCE
NARIO -1";
string Sss =
"WS00_Cam0007_2013_07_25_10_53_09(1)(SCE
NARIO -1";
ifstream T("D: \\Pentru
licenta \\CSV_files \\WS00_Cam0007_2013_07_25_
10_53_09(2)(SCENARIO -2).csv");
string Ts =
"WS00_Cam0007_2013_07_25_10_53_09(2)(SCE
NARIO -2";
string Tss =
"WS00_Cam0007_2013_07_25_1 0_53_09(2)(SCE
NARIO -2";
ifstream V("D: \\Pentru
licenta \\CSV_files \\WS00_Cam0007_2013_07_29_
15_58_27(1)(SCENARIO -1).csv"); string Vs =
"WS00_Cam0007_2013_07_29_15_58_27(1)(SCE
NARIO -1";
string Vss =
"WS00_Cam0007_2013_07_29_15_58_27(1)(SCE
NARIO -1";
ifstream Z("D: \\Pentru
licenta \\CSV_files \\WS00_Cam0007_2013_07_29_
15_58_27(2)(SCENARIO -2).csv");
string Zs =
"WS00_Cam0007_2013_07_29_15_58_27(2)(SCE
NARIO -2";
string Zss =
"WS00_Cam0007_2013_07_29_15_58_27(2)(SCE
NARIO -2";
ifstream X("D: \\Pentru
licenta \\CSV_files \\WS00_Cam0007_2013_11_25_
12_56_13(1)(SCENARIO -1).csv");
string Xs =
"WS00_Cam0007_2013_11_25_12_56_13(1)(SCE
NARIO -1";
string Xss =
"WS00_Cam0007_2013_11_25_12_56_13(1)(SCE
NARIO -1";
ifstream W("D: \\Pentru
licenta \\CSV_files \\WS00_Cam0007 _2013_11_25_
12_56_13(2)(SCENARIO -2).csv");
string Ws =
"WS00_Cam0007_2013_11_25_12_56_13(2)(SCE
NARIO -2";
string Wss =
"WS00_Cam0007_2013_11_25_12_56_13(2)(SCE
NARIO -2";
ifstream Y("D: \\Pentru
licenta \\CSV_files \\WS00_Cam0008_2013_07_25_
10_56_50(1)(SCENARIO -1).csv");
string Ys =
"WS00_Cam0008_2013_07_25_10_56_50(1)(SCE
NARIO -1";
74
string Yss =
"WS00_Cam0008_2013_07_25_10_56_50(1)(SCE
NARIO -1";
ifstream AA("D: \\Pentru
licenta \\CSV_files \\WS00_Cam0008_2013_07_25_
10_56_50(2)(SCENARIO -2).csv");
string AAs =
"WS00_C am0008_2013_07_25_10_56_50(2)(SCE
NARIO -2";
string AAss =
"WS00_Cam0008_2013_07_25_10_56_50(2)(SCE
NARIO -2";
ifstream AB("D: \\Pentru
licenta \\CSV_files \\WS00_Cam0008_2013_07_29_
16_04_59(1)(SCENARIO -1).csv");
string ABs =
"WS00_Cam0008_2013_07_29_16_04_59(1) (SCE
NARIO -1";
string ABss =
"WS00_Cam0008_2013_07_29_16_04_59(1)(SCE
NARIO -1";
ifstream AC("D: \\Pentru
licenta \\CSV_files \\WS00_Cam0008_2013_07_29_
16_04_59(2)(SCENARIO -2).csv");
string ACs =
"WS00_Cam0008_2013_07_29_16_04_59(2)(SCE
NARIO -2";
string ACss =
"WS00_Cam0008_2013_07_29_16_04_59(2)(SCE
NARIO -2";
ifstream AD("D: \\Pentru
licenta \\CSV_files \\WS00_Cam0008_2013_11_25_
17_21_10(1)(SCENARIO -1).csv");
string ADs =
"WS00_Cam0008_2013_11_25_17_21_10(1)(SCE
NARIO -1";
string ADss =
"WS00_Cam0008_2013_11_25_17_21 _10(1)(SCE
NARIO -1"; ifstream AE("D: \\Pentru
licenta \\CSV_files \\WS00_Cam0008_2013_11_25_
17_21_10(2)(SCENARIO -2).csv");
string AEs =
"WS00_Cam0008_2013_11_25_17_21_10(2)(SCE
NARIO -2";
string AEss =
"WS00_Cam0008_2013_11_25_17_21_10(2)(SCE
NARIO -2";
ifstream AF("D: \\Pentru
licenta \\CSV_files \\WS00_Cam0010_2013_07_25_
10_56_54(1)(SCENARIO -1).csv");
string AFs =
"WS00_Cam0010_2013_07_25_10_56_54(1)(SCE
NARIO -1";
string AFss =
"WS00_Cam0010_2013_07_25_10_56_54(1)(SCE
NARIO -1";
ifstream AG("D: \\Pentru
licenta \\CSV_ files\\WS00_Cam0010_2013_07_25_
10_56_54(2)(SCENARIO -2).csv");
string AGs =
"WS00_Cam0010_2013_07_25_10_56_54(2)(SCE
NARIO -2";
string AGss =
"WS00_Cam0010_2013_07_25_10_56_54(2)(SCE
NARIO -2";
ifstream AH("D: \\Pentru
licenta \\CSV_files \\WS00_Cam0010_2013_07_29_
16_05_05(1)(SCENARIO -1).csv");
string AHs =
"WS00_Cam0010_2013_07_29_16_05_05(1)(SCE
NARIO -1";
string AHss =
"WS00_Cam0010_2013_07_29_16_05_05(1)(SCE
NARIO -1";
ifstream AI("D: \\Pentru
licenta \\CSV_files \\WS00_Cam0 010_2013_07_29_
16_05_05(2)(SCENARIO -2).csv");
75
string AIs =
"WS00_Cam0010_2013_07_29_16_05_05(2)(SCE
NARIO -2";
string AIss =
"WS00_Cam0010_2013_07_29_16_05_05(2)(SCE
NARIO -2";
ifstream AJ("D: \\Pentru
licenta \\CSV_files \\WS00_Cam0010_2013_11_25_
17_18_12(1)(SC ENARIO -1).csv");
string AJs =
"WS00_Cam0010_2013_11_25_17_18_12(1)(SCE
NARIO -1";
string AJss =
"WS00_Cam0010_2013_11_25_17_18_12(1)(SCE
NARIO -1";
ifstream AK("D: \\Pentru
licenta \\CSV_files \\WS00_Cam0010_2013_11_25_
17_18_12(2)(SCENARIO -2).csv");
string AKs =
"WS00_Cam0010_2013_11_25_17_18_12(2)(SCE
NARIO -2";
string AKss =
"WS00_Cam0010_2013_11_25_17_18_12(2)(SCE
NARIO -2";
ifstream AL("D: \\Pentru
licenta \\CSV_files \\WS00_Cam0011_2013_07_25_
11_05_41(1)(SCENARIO -1).csv");
string ALs =
"WS00_Cam0011_2013_07_25_11_ 05_41(1)(SCE
NARIO -1";
string ALss =
"WS00_Cam0011_2013_07_25_11_05_41(1)(SCE
NARIO -1";
ifstream AM("D: \\Pentru
licenta \\CSV_files \\WS00_Cam0011_2013_07_25_
11_05_41(2)(SCENARIO -2).csv");
string AMs =
"WS00_Cam0011_2013_07_25_11_05_41(2)(SCE
NARIO -2"; string AMss =
"WS00_Cam0011_2013_07_25_11_05_41(2)(SCE
NARIO -2";
ifstream AN("D: \\Pentru
licenta \\CSV_files \\WS00_Cam0011_2013_07_29_
16_14_10(1)(SCENARIO -1).csv");
string ANs =
"WS00_Cam0011_2013_07_29_16_14_10(1)(SCE
NARIO -1";
string ANss =
"WS00_Cam0011_2013_07_ 29_16_14_10(1)(SCE
NARIO -1";
ifstream AO("D: \\Pentru
licenta \\CSV_files \\WS00_Cam0011_2013_07_29_
16_14_10(2)(SCENARIO -2).csv");
string AOs =
"WS00_Cam0011_2013_07_29_16_14_10(2)(SCE
NARIO -2";
string AOss =
"WS00_Cam0011_2013_07_29_16_14_10(2)(SCE
NARIO -2";
ifstream AP("D: \\Pentru
licenta \\CSV_files \\WS00_Cam0011_2013_11_25_
17_28_08(1)(SCENARIO -1).csv");
string APs =
"WS00_Cam0011_2013_11_25_17_28_08(1)(SCE
NARIO -1";
string APss =
"WS00_Cam0011_2013_11_25_17_28_08(1)(SCE
NARIO -1";
ifstream AQ("D: \\Pentru
licenta \\CSV_files \\WS00_Cam0011_2013_11_25_
17_28_08(2)(SCENARIO -2).csv");
string AQs =
"WS00_Cam0011_2013_11_25_17_28_08(2)(SCE
NARIO -2";
string AQss =
"WS00_Cam0011_2013_11_25_17_28_08(2)(SCE
NARIO -2";
76
ifstream AR("D: \\Pentru
licenta \\CSV_files \\WS00_Cam0 014_2013_07_25_
11_05_44(1)(SCENARIO -1).csv");
string ARs =
"WS00_Cam0014_2013_07_25_11_05_44(1)(SCE
NARIO -1";
string ARss =
"WS00_Cam0014_2013_07_25_11_05_44(1)(SCE
NARIO -1";
ifstream AS("D: \\Pentru
licenta \\CSV_files \\WS00_Cam0014_2013_07_25_
11_05_44(2)(SC ENARIO -2).csv");
string ASs =
"WS00_Cam0014_2013_07_25_11_05_44(2)(SCE
NARIO -2";
string ASss =
"WS00_Cam0014_2013_07_25_11_05_44(2)(SCE
NARIO -2";
ifstream AT("D: \\Pentru
licenta \\CSV_files \\WS00_Cam0014_2013_07_29_
16_09_11(1)(SCENARIO -1).csv");
string ATs =
"WS00_Cam0014_2013_07_29_16_09_11(1)(SCE
NARIO -1";
string ATss =
"WS00_Cam0014_2013_07_29_16_09_11(1)(SCE
NARIO -1";
ifstream AU("D: \\Pentru
licenta \\CSV_files \\WS00_Cam0014_2013_07_29_
16_09_11(2)(SCENARIO -2).csv");
string AUs =
"WS00_Cam0014_2013_07_29_16_ 09_11(2)(SCE
NARIO -2";
string AUss =
"WS00_Cam0014_2013_07_29_16_09_11(2)(SCE
NARIO -2";
ifstream AV("D: \\Pentru
licenta \\CSV_files \\WS00_Cam0014_2013_11_25_
17_30_08(1)(SCENARIO -1).csv"); string AVs =
"WS00_Cam0014_2013_11_25_17_30_08(1)(SCE
NARIO -1";
string AVss =
"WS00_Cam0014_2013_11_25_17_30_08(1)(SCE
NARIO -1";
ifstream AW("D: \\Pentru
licenta \\CSV_files \\WS00_Cam0014_2013_11_25_
17_30_08(2)(SCENARIO -2).csv");
string AWs =
"WS00_Cam0014_2013_11_25_17_30_08(2)(SCE
NARIO -2";
string AWss =
"WS00_Cam0014_2013_11_ 25_17_30_08(2)(SCE
NARIO -2";
ifstream AX("D: \\Pentru
licenta \\CSV_files \\WS00_Cam0015_2013_07_25_
11_10_39(1)(SCENARIO -1).csv");
string AXs =
"WS00_Cam0015_2013_07_25_11_10_39(1)(SCE
NARIO -1";
string AXss =
"WS00_Cam0015_2013_07_25_11_10_39(1)(SCE
NARIO -1";
ifstream AY("D: \\Pentru
licenta \\CSV_files \\WS00_Cam0015_2013_07_25_
11_10_39(2)(SCENARIO -2).csv");
string AYs =
"WS00_Cam0015_2013_07_25_11_10_39(2)(SCE
NARIO -2";
string AYss =
"WS00_Cam0015_2013_07_25_11_10_39(2)(SCE
NARIO -2";
ifstream AZ("D: \\Pentru
licenta\\CSV_files \\WS00_Cam0015_2013_07_29_
15_58_21(1)(SCENARIO -1).csv");
string AZs =
"WS00_Cam0015_2013_07_29_15_58_21(1)(SCE
NARIO -1";
77
string AZss =
"WS00_Cam0015_2013_07_29_15_58_21(1)(SCE
NARIO -1";
ifstream BA("D: \\Pentru
licenta \\CSV_files \\WS00_Cam0015_2013_07_29_
15_58_21(2)(SCENARIO -2).csv");
string BAs =
"WS00_Cam0015_2013_07_29_15_58_21(2)(SCE
NARIO -2";
string BAss =
"WS00_Cam0015_2013_07_29_15_58_21(2)(SCE
NARIO -2";
ifstream BB("D: \\Pentru
licenta \\CSV_files \\WS00_Cam0 015_2013_11_25_
12_55_32(1)(SCENARIO -1).csv");
string BBs =
"WS00_Cam0015_2013_11_25_12_55_32(1)(SCE
NARIO -1";
string BBss =
"WS00_Cam0015_2013_11_25_12_55_32(1)(SCE
NARIO -1";
ifstream BC("D: \\Pentru
licenta \\CSV_files \\WS00_Cam0015_2013_11_25_
12_55_32(2)(SC ENARIO -2).csv");
string BCs =
"WS00_Cam0015_2013_11_25_12_55_32(2)(SCE
NARIO -2";
string BCss =
"WS00_Cam0015_2013_11_25_12_55_32(2)(SCE
NARIO -2";
ifstream BD("D: \\Pentru
licenta \\CSV_files \\WS00_Cam0016_2013_07_25_
11_02_02(1)(SCENARIO -1).csv");
string BDs =
"WS00_Cam0016_2013_07_25_11_02_02(1)(SCE
NARIO -1";
string BDss =
"WS00_Cam0016_2013_07_25_11_02_02(1)(SCE
NARIO -1"; ifstream BE("D: \\Pentru
licenta \\CSV_files \\WS00_Cam0016_2013_07_25_
11_02_02(2)(SCENARIO -2).csv");
string BEs =
"WS00_Cam0016_2013_07_25_11_ 02_02(2)(SCE
NARIO -2";
string BEss =
"WS00_Cam0016_2013_07_25_11_02_02(2)(SCE
NARIO -2";
ifstream BF("D: \\Pentru
licenta \\CSV_files \\WS00_Cam0016_2013_07_29_
16_09_05(1)(SCENARIO -1).csv");
string BFs =
"WS00_Cam0016_2013_07_29_16_09_05(1)(SCE
NARIO -1";
string BFss =
"WS00_Cam0016_2013_07_29_16_09_05(1)(SCE
NARIO -1";
ifstream BH("D: \\Pentru
licenta \\CSV_files \\WS00_Cam0016_2013_07_29_
16_09_05(2)(SCENARIO -2).csv");
string BHs =
"WS00_Cam0016_2013_07_29_16_09_05(2)(SCE
NARIO -2";
string BHss =
"WS00_Cam0016_2013_07_ 29_16_09_05(2)(SCE
NARIO -2";
ifstream BI("D: \\Pentru
licenta \\CSV_files \\WS00_Cam0016_2013_11_25_
17_33_27(1)(SCENARIO -1).csv");
string BIs =
"WS00_Cam0016_2013_11_25_17_33_27(1)(SCE
NARIO -1";
string BIss =
"WS00_Cam0016_2013_11_25_17_33_27(1)(SCE
NARIO -1";
ifstream BJ("D: \\Pentru
licenta \\CSV_files \\WS00_Cam0016_2013_11_25_
17_33_27(2)(SCENARIO -2).csv");
78
string BJs =
"WS00_Cam0016_2013_11_25_17_33_27(2)(SCE
NARIO -2";
string BJss =
"WS00_Cam0016_2013 _11_25_17_33_27(2)(SCE
NARIO -2";
int Afis_poza(ifstream& file, string files, string
nume_poza_ales, string Cadru);
int Cauta_imagine(string nume_poza_ales, string
Cadru);
int main() {
string poza0 = "WS00_Cam0011
2013_11_25_17_28_08(1) 260.jpg";
Cauta_imagine(poza0, "Imagine");
system("PAUSE");
return 0;
}
int Afis_poza(ifstream& file,string files, string
nume_poza_ales, string Cadru) {
//prelucrare nume poza
string underscore = "_";
nume_poza_ales.replace(12, 1, underscore);
nume_poza_a les.replace(35, 1, underscore);
//Variabile locale
string space;
string poza_c;
string poza;
string id;
string nume_poza;
string coordonate_poza_y;
string coordonate_poza_x;
string APSN;
string p;
string q; string P1_y;
string P1_x;
string P2_y;
string P2_x;
int a;
int b;
int c;
int d;
space = " ";
poza = "D: \\Pentru
licenta \\Poze_baza_de_date_scouter \\";
string line;
int lineNumber;
if (file.is_open()) {
while (getline(file, line)) {
for (lineNumber = 0; lineNumber < 3000;
++lineNumber) {
getline(file, id, ',');
if (id.empty()) {
break; }
getline(file, nume_poza, ',');
if (nume_poza.empty()) {
cout << "Persoana nu apare in cadru!" << endl;
break;}
if (nume_poza == nume_poza_ales) {
nume_poza.replace(12, 1, space);
nume_poza.replace(35, 1, space);
nume_poza.replace(33, 1, "1");
poza_c = poza + nume_poza;
Mat img_bun = imread(poza_c);
cout << " poza afisare = " << poza_c << endl;
if (img_bun.empty()) {
79
cout << "error: image not read from file \n\n";
_getch();
return(0 ); }
getline(file, coordonate_poza_y, ',');
getline(file, coordonate_poza_x, ',');
getline(file, APSN, ',');
if (APSN == "1") {
int marime = files.length();
string pers = files.erase(0, marime – 1);
cout << " Coordonatele la care apare persoana \t "
<< pers << " \t sunt: " << " \t";
getline(file, p, ',');
getline(file, q, ',');
getline(file, P1_y, ',');
a = atoi(P1_y.c_str());;
cout << P1_y << " \t";
getline(file, P1_x, ',');
b = atoi(P1_x.c_str());
cout << P1_x << "\t";
getline(file, P2_y, ',');
c = atoi(P2_y.c_str());
cout << P2_y << " \t";
getline(file, P2_x, ',');
d = atoi(P2_x.c_str());
cout << P2_x << " \t";
namedWindow(Cadru,
CV_WINDOW_AUTOSIZE);
Rect P(a, b, c, d);
rectangle(img_bun, P.tl(), P.br(), Scalar(0,
0, 0), 4, 4, 0);
imshow(Cadru, img_bun);
waitKey(0); } else
cout << "Persoana nu apare in cadru!!" <<
endl; } } }
file.close(); }
return 0;
}
int Cauta_imagine(string nume_poza_ales, string
Cadru) {
//prelucrare nume poza
string underscore = "_";
nume_poza_ales.replace(12, 1, underscore);
nume_poza_a les.replace(35, 1, underscore);
string nume_poza = nume_poza_ales;
string nume_poza_ales_dv = nume_poza.erase(35,
9);
string Asdv = As.erase(35, 11);
if (Asdv == nu me_poza_ales_dv) {
Afis_poza (A,Ass, nume_poza_ales, Cadru); }
else { string Bsdv = Bs.erase(35, 11);
if (Bsdv == nume_poza_ales_dv) {
Afis_poza (B,Bss, nume_poza_ales, Cadru); }
else { string Csdv = Cs.erase(35, 11);
if (Csdv == nume_poza_ales_dv) {
Afis_poza (C,Css, nume_poza_ales, Cadru);}
else { string Dsdv = Ds.erase(35, 11);
if (Dsdv == nume_poza_ales_dv) {
Afis_poza(D,Dss, nume_poza_ales, Cadru);}
else {string Esdv = Es.erase(35, 11);
if (Esdv == nume_poza_ales_dv) {
Afis_poza(E,Ess, nume_poza_ales, Cadru) ;}
else {string Fsdv = Fs.erase(35, 11);
if (Fsdv == nume_poza_ales_dv) {
80
Afis_poza(F,Fss, nume_poza_ales, Cadru);}
else {string Gsdv = Gs.erase(35, 11);
if (Gsdv == nume_poza_ales_dv) {
Afis_poza(G,Gss, nume_poza_ales, Cadru);}
else {string Hsdv = Hs.erase(35, 11);
if (Hsdv == nume_poza_ales_dv) {
Afis_poza(H,Hss, nume_poza_ales, Cadru);}
else { string Isdv = Is.erase(35, 11);
if (Isdv == nume_poza_ales_dv) {
Afis_poza(I,Iss, nume_poza_ales, Cadru);}
else {string Jsdv = Js.erase(35, 11);
if (Jsdv == nume_poza_ales_dv) {
Afis_poza(J,Jss, nume_poza_ales, Cadru);}
else {string Ksdv = Ks.erase(35, 11);
(Ksdv == nume_poza_ales_dv) {
Afis_poza(K,Kss, nume_poza_ales, Cadru);}
else {string Lsdv = Ls.erase(35, 11);
if (Lsdv == nume_poza_ales_dv) {
Afis_poza(L ,Lss, nume_poza_ales, Cadru);}
else {string Msdv = Ms.erase(35, 11);
if (Msdv == nume_poza_ales_dv) {
Afis_poza(M,Mss, nume_poza_ales, Cadru);}
else {string Nsdv = Ns.erase(35, 11);
if (Nsdv == nume_poza_ales_dv) {
Afis_poza(N,Nss, nume_poza_ales, Cadru);}
else {string Osdv = Os.erase(35, 11);
if (Osdv == nume_poza_ales_dv) {
Afis_poza(O,Oss, nume_poza_ales, Cadru);}
else {string Psdv = Ps.erase(35, 11);
if (Psdv == nume_poza_ales_dv) {
Afis_poza(P,Pss, nume_poza_ales, Cadru);} else {string Qsdv = Qs.erase( 35, 11);
if (Qsdv == nume_poza_ales_dv) {
Afis_poza(Q,Qss, nume_poza_ales, Cadru);}
else {string Rsdv = Rs.erase(35, 11);
if (Rsdv == nume_poza_ales_dv) {
Afis_poza(R,Rss, nume_poza_ales, Cadru);}
else {string Ssdv = Ss.erase(35, 11);
if (Ssdv == nume_poza_ales_dv) {
Afis_poza(S,Sss, nume_poza_ales, Cadru);}
else {string Tsdv = Ts.erase(35, 11);
if (Tsdv == nume_poza_ales_dv) {
Afis_poza(T,Tss, nume_poza_ales, Cadru);}
else {string Vsdv = Vs.erase(35, 11);
if (Vsdv == nume_poza_ales_dv) {
Afis_poza (V,Vss, nume_poza_ales, Cadru);}
else {string Zsdv = Zs.erase(35, 11);
if (Zsdv == nume_poza_ales_dv) {
Afis_poza(Z,Zss, nume_poza_ales, Cadru);}
else {string Xsdv = Xs.erase(35, 11);
if (Xsdv == nume_poza_ales_dv) {
Afis_poza(X,Xss, nume_poza_ales, Cadru) ;}
else {string Wsdv = Ws.erase(35, 11);
if (Wsdv == nume_poza_ales_dv) {
Afis_poza(W,Wss, nume_poza_ales, Cadru);}
else {string Ysdv = Ys.erase(35, 11);
if (Ysdv == nume_poza_ales_dv) {
Afis_poza(Y,Yss, nume_poza_ales, Cadru);}
else {string AAsdv = AAs.er ase(35, 11);
if (AAsdv == nume_poza_ales_dv) {
Afis_poza(A A,AAss, nume_poza_ales, Cadru); }
else {string ABsdv = ABs.erase(35, 11);
81
if (ABsdv == nume_poza_ales_dv) {
Afis_poza(AB,ABss, nume_poza_ales, Cadru);}
else {string ACsdv = ACs.erase(35, 11);
if (ACsdv == nume_poza_ales_dv) {
Afis_poza(A C,ACss, nume_poza_ales, Cadru); }
else { string ADsdv = ADs.erase(35, 11);
if (ADsdv == nume_poza_ales_dv) {
Afis_poza(A D,ADss, nume_poza_ales, Cadru); }
else { string AEsdv = AEs.erase(35, 11);
if (AEsdv == nume_poza_a les_dv) {
Afis_poza(A E,AEss, nume_poza_ales, Cadru); }
else { string AFsdv = AFs.erase(35, 11);
if (AFsdv == nume_poza_ales_dv) {
Afis_poza(A F,AFss, nume_poza_ales, Cadru); }
else { string AGsdv = AGs.erase(35, 11);
if (AGsdv == nume_poza_ales_dv) {
Afis_poza( AG,AGss, n ume_poza_ales, Cadru); }
else { string AHsdv = AHs.erase(35, 11);
if (AHsdv == nume_poza_ales_dv) {
Afis_poza(A H,AHss, nume_poza_ales, Cadru); }
else { string AIsdv = AIs.erase(35, 11);
if (AIsdv == nume_poza_ales_dv) {
Afis_poza(A I,AIss, nume_poza_a les, Cadru); }
else {string AJsdv = AJs.erase(35, 11);
if (AJsdv == nume_poza_ales_dv) {
Afis_poza(A J,AJss, nume_poza_ales, Cadru); }
else { string AKsdv = AKs.erase(35, 11);
if (AKsdv == nume_poza_ales_dv) {
Afis_poza(A K,AKss, nume_poza_ales, Cadru); }
else { string ALsdv = ALs.erase(35, 11);
if (ALsdv == nume_poza_ales_dv) { Afis_poza(A L,ALss, nume_poza_ales, Cadru); }
else { string AMsdv = AMs.erase(35, 11);
if (AMsdv == nume_poza_ales_dv) {
Afis_poza(A M,AMss, nume_poza_ales, Cadru); }
else { string ANsdv = ANs.erase(35, 11);
if (ANsdv == nume_poza_ales_dv) {
Afis_poza(A N,ANss, nume_poza_ales, Cadru); }
else { string AOsdv = AOs.erase(35, 11);
if (AOsdv == nume_poza_ales_dv) {
Afis_poza(A O,AOss, nume_poza_ales, Cadru); }
else { string APsdv = APs.erase(35, 11);
if (APsdv == nume_poza_ales_dv) {
Afis_poza(A P,APss, nume_poza_ales, Cadru); }
else { string AQsdv = AQs.erase(35, 11);
if (AQsdv == nume_poza_ales_dv) {
Afis_poza(A Q,AQss, nume_poza_ales, Cadru); }
else { string ARsdv = ARs.erase(35, 11);
if (ARsdv == nume_poz a_ales_dv) {
Afis_poza(AR,ARss, nume_poza_ales, Cadru);}
else { string ASsdv = ASs.erase(35, 11);
if (ASsdv == nume_poza_ales_dv) {
Afis_poza(A S,ASss, nume_poza_ales, Cadru); }
else { string ATsdv = ATs.erase(35, 11);
if (ATsdv == nume_poza_ales_dv) {
Afis_po za(A T,ATss, nume_poza_ales, Cadru); }
else { string AUsdv = AUs.erase(35, 11);
if (AUsdv == nume_poza_ales_dv) {
Afis_poza(A U,AUss, nume_poza_ales, Cadru); }
else { string AVsdv = AVs.erase(35, 11);
if (AVsdv == nume_poza_ales_dv) {
Afis_poza(A V,AVss, nume_poza_ales, Cadru); }
82
else { string AWsdv = AWs.erase(35, 11);
if (AWsdv == nume_poza_ales_dv) {
Afis_poza(A W,AWss, nume_poza_ales, Cadru); }
else { string AXsdv = AXs.erase(35, 11);
if (AXsdv == nume_poza_ales_dv) {
Afis_poza(A X,AXss, nume_poza_ales, Cadr u);}
else { string AYsdv = AYs.erase(35, 11);
if (AYsdv == nume_poza_ales_dv) {
Afis_poza(A Y,AYss, nume_poza_ales, Cadru); }
else { string AZsdv = AZs.erase(35, 11);
if (AZsdv == nume_poza_ales_dv) {
Afis_poza(A Z,AZss, nume_poza_ales, Cadru); }
else { string BA sdv = BAs.erase(35, 11);
if (BAsdv == nume_poza_ales_dv) {
Afis_poza(B A,BAss, nume_poza_ales, Cadru); }
else { string BBsdv = BBs.erase(35, 11);
if (BBsdv == nume_poza_ales_dv) {
Afis_poza(B B,BBss, nume_poza_ales, Cadru); }
else { string BCsdv = BCs.erase(35, 11);
if (BCsdv == nume_poza_ales_dv) {
Afis_poza(B C,BCss, nume_poza_ales, Cadru); }
else { string BDsdv = BDs.erase(35, 11);
if (BDsdv == nume_poza_ales_dv) {
Afis_poza(B D,BDss, nume_poza_ales, Cadru); }
else { string BEsdv = BEs.erase(35, 11);
if (BEsdv == nume_poza_ales_dv) {
Afis_poza(B E,BEss, nume_poza_ales, Cadru); }
else { string BFsdv = BFs.erase(35, 11);
if (BFsdv == nume_poza_ales_dv) {
Afis_poza(BF,BFss, nume_p oza_ales, Cadru); }
else { string BHsdv = BHs.erase(35, 11); if (BHsdv == nume_poza_ales_dv) {
Afis_poza(B H,BHss, nume_poza_ales, Cadru); }
else { string BIsdv = BIs.erase(35, 11);
if (BIsdv == nume_poza_ales_dv) {
Afis_poza(BI,BIss, nume_poza_ales, Cadru);}
else { string BJsdv = BJs.erase(35, 11);
if (BJsdv == nume_poza_ales_dv) {
Afis_poza(BJ,BJss, nume_poza_ales, Cadru);
}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
}}}}}}}}}}}}}}}}}
return 0;
}
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Sisteme de Supraveghere Video cu Căutarea Informației de Intere s [631160] (ID: 631160)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
