Microsoft Word - UNI_GROSEK_KLEMEN_1986_ docx

Podobni dokumenti
Protokoli v računalniškem komuniciranju TCP, IP, nivojski model, paket informacij.

Microsoft PowerPoint - ads

Delavnica Načrtovanje digitalnih vezij

Navodila za uporabo Mini prenosna HD kamera s snemalnikom

Microsoft Word - ELEKTROTEHNIKA2_ junij 2013_pola1 in 2

Področje uporabe

DCS-2330L_A1_QIG_v1.00(EU).indd

DES11_realno

Microsoft Word - avd_vaje_ars1_1.doc

Vostro 430 Informacijski tehnični list o namestitvi in funkcijah

DES

innbox_f60_navodila.indd

Poročilo za 1. del seminarske naloge- igrica Kača Opis igrice Kača (Snake) je klasična igrica, pogosto prednaložena na malce starejših mobilnih telefo

Vaja 2 Virtualizacija fizičnih strežnikov in virtualni PC A. Strežnik Vmware ESX Namestitev strežnika VMware ESX 3.5 na fizični strežnik 2. Nas

Slide 1

Microsoft Word - CNC obdelava kazalo vsebine.doc

Navodila za uporabo Mini snemalnik

RAM stroj Nataša Naglič 4. junij RAM RAM - random access machine Bralno pisalni, eno akumulatorski računalnik. Sestavljajo ga bralni in pisalni

Sistemi Daljinskega Vodenja Vaja 1 Matej Kristan Laboratorij za Strojni Vid Fakulteta za elektrotehniko, Univerza v Ljubljani

INFORMATOR BIROKRAT 1/2011

Microsoft Word - ELEKTROTEHNIKA2_11. junij 2104

Analiza vpliva materiala, maziva in aktuatorja na dinamiko pnevmatičnega ventila

Navodila za programsko opremo FeriX Namestitev na trdi disk Avtor navodil: Martin Terbuc Datum: December 2007 Center odprte kode Slovenije Spletna str

ISOFT , računalniški inženiring

NAVODILA ZA UPORABO K01-WIFI Hvala, ker ste se odločili za nakup našega izdelka. Pred uporabo enote skrbno preberite ta Navodila za uporabo in jih shr

10. Meritev šumnega števila ojačevalnika Vsako radijsko zvezo načrtujemo za zahtevano razmerje signal/šum. Šum ima vsaj dva izvora: naravni šum T A, k

Univerza v Ljubljani FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Tržaška c. 25, 1000 Ljubljana Realizacija n-bitnega polnega seštevalnika z uporabo kvan

Base NET.cdr

NEVTRIN d.o.o. Podjetje za razvoj elektronike, Podgorje 42a, 1241 Kamnik, Slovenia Telefon: Faks.: in

Microsoft Word - NAVODILA ZA UPORABO.docx

LABORATORIJSKE VAJE IZ FIZIKE

Microsoft Word - A-3-Dezelak-SLO.doc

Na podlagi 24. in 25. člena Zakona o varstvu osebnih podatkov (Ur. list RS, št. 94/07), sprejema ravnatelj javnega zavoda Dijaški dom Nova Gorica nasl

Elektronska pošta

PRILOGA 2 Minimalni standardi kakovosti oskrbe za izbrane dimenzije kakovosti oskrbe in raven opazovanja posameznih parametrov kakovosti oskrbe 1. NEP

Spoznajmo PowerPoint 2013

Slikovne transformacije_2017_18_DKT

Vaja 3 Kopiranje VM in namestitev aplikacij - strežnik SQL 2000 SP3a A. Lokalni strežnik Vmware ESX Dodajanje uporabnikov vajexx v skupino Vaje

Zbornica zdravstvene in babiške nege Slovenije Zveza strokovnih društev medicinskih sester, babic in zdravstvenih tehnikov Slovenije Stanje:

Document ID / Revision : 0519/1.3 ID Issuer System (sistem izdajatelja identifikacijskih oznak) Navodila za registracijo gospodarskih subjektov

Osnove matematicne analize 2018/19

Microsoft Word - Avditorne.docx

Turingov stroj in programiranje Barbara Strniša Opis in definicija Definirajmo nekaj oznak: Σ abeceda... končna neprazna množica simbolo

Slide 1

Modem in krajevno omrežje Uporabniški priročnik

Orodje za izvoz podatkov

N

Navodila za pripravo oglasov na strani Med.Over.Net v 2.2 Statistično najboljši odziv uporabnikov je na oglase, ki hitro in neposredno prenesejo osnov

(Microsoft Word - U\350enje telegrafije po Kochovi metodi.doc)

Diapozitiv 1

Microsoft Word - M docx

ŠTEVCI PROMETA IN NJIHOVA UPORABA ZA NAMENE STATISTIK ČRT GRAHONJA

Delavnica Načrtovanje digitalnih vezij

Poročilo projekta : Učinkovita raba energije Primerjava klasične sončne elektrarne z sončno elektrarno ki sledi soncu. Cilj projekta: Cilj našega proj

Microsoft PowerPoint - CIGER - SK 3-15 Izkusnje nadzora distribucijskih transformatorjev s pomo... [Read-Only]

BDV-N890W/BDV-N790W

Strojna oprema

Microsoft Word - CNR-BTU3_Bluetooth_vmesnik

4.Racionalna števila Ulomek je zapis oblike. Sestavljen je iz števila a (a ), ki ga imenujemo števec, in iz števila b (b, b 0), ki ga imenujemo imenov

Besedilo naloge:

BYOB Žogica v vesolju Besedilo naloge Glavna ideja igre je paziti, da žoga ne pade na tla igralne površine, pri tem pa zbrati čim več točk. Podobno ig

STAVKI _5_

Zadeva: Ponudba

Diapozitiv 1

Microsoft Word - CN-BTU4 Quick Guide_SI

Vzpostavitev več nivojske varnostne infrastrukture S pomočjo Elektro Maribor, McAfee SIEM, CISCO ISE, NGFW Zorna Varga, Sfera IT d.o.o in Klemen Bačak

UPS naprave Socomec Netys PL (Plug in) UPS naprava Socomec Netys PL moč: 600VA/360W; tehnologija: off-line delovanje; vhod: 1-fazni šuko 230VAC; izhod

NASLOVKA.cdr

No Slide Title

Diapozitiv 1

Chapter 1

Microsoft Word - Analiza rezultatov NPZ matematika 2018.docx

ACAD-BAU-Analiza-prostorov

Postavka Naziv storitve Enota mere Cenik velja od dalje. Cena v EUR brez davka z davkom Stopnja davka 1. Poslovni paketi in dodatne storitv

Laboratorij za strojni vid, Fakulteta za elektrotehniko, Univerza v Ljubljani Komunikacije v Avtomatiki Vaje, Ura 8 Matej Kristan

Microsoft Word - rosus2006.doc

NAVODILA AVTORJEM PRISPEVKOV

seminarska_naloga_za_ev

PowerPointova predstavitev

Sistemi Daljinskega Vodenja Vaja 3 Matej Kristan Laboratorij za Strojni Vid Fakulteta za elektrotehniko, Univerza v Ljubl

_ _BDA_CapitalSports_CS-Timer.indd

7. VAJA A. ENAČBA ZBIRALNE LEČE

VHF1-VHF2

(Microsoft PowerPoint _IZS_izobraevanje ZK_1_del.ppt [Zdru\236ljivostni na\350in])

Microsoft Word - vaje2_ora.doc

Uradni list RS - 12(71)/2005, Mednarodne pogodbe

NETGEAR R6100 WiFi Router Installation Guide

Excel 2016

Univerza v Ljubljani Naravoslovnotehniška fakulteta Oddelek za tekstilstvo Sledenje pogledu (Eye tracking) Seminarska naloga pri predmetu Interaktivni

3. Metode, ki temeljijo na minimalnem ostanku Denimo, da smo z Arnoldijevim algoritmom zgenerirali ON bazo podprostora Krilova K k (A, r 0 ) in velja

Vedno pod nadzorom, kjerkoli že ste

IR termometer testo 830 testo 830 hiter, za brezkontaktno merjenje površinske temperature Merjenje z laserskim pointerjem za natančno merjenje tudi na

PowerPointova predstavitev

KRMILNA OMARICA KO-0

Microsoft Word Navodila za povezavo naprave v oblak_SLO

Ime in priimek

SLO - NAVODILO ZA NAMESTITEV IN UPORABO Št. izd. : HD AKCIJSKA KAMERA MIDLAND XTREME XTC 200 Št. izdelka:

Microsoft Word - Astronomija-Projekt19fin

Transkripcija:

Klemen Grosek ŠTETJE PEŠCEV S POMOČJO RAČUNALNIŠKEGA VIDA Diplomsko delo Rogatec, marec 2011

I Diplomsko delo univerzitetnega študijskega programa ŠTETJE PEŠCEV S POMOČJO RAČUNALNIŠKEGA VIDA Študent: Študijski program: Smer: Mentor: Lektorica: Klemen Grosek UN ŠP, Elektrotehnika Elektronika doc. dr. Iztok Kramberger Petra Plavčak, prof. slovenščine Rogatec, marec 2011

III

V ZAHVALA Zahvaljujem se sodelavcem, še posebej Tadeju in Boštjanu, za pomoč in vložen trud tako med študijem kot med pripravo diplomskega dela. Prav tako se zahvaljujem mentorju doc. dr. Iztoku Krambergerju. Zahvaljujem se podjetju Tenzor d. o. o. za finančno pomoč med študijem. Posebna zahvala velja staršem, ki so mi omogočili študij.

VII ŠTETJE PEŠCEV S POMOČJO RAČUNALNIŠKEGA VIDA Ključne besede: digitalna obdelava slik, računalniški vid, štetje prehodov ljudi, IP kamera, prepoznava objektov UDK: 004.93:621.39(043.2) Povzetek: V tem diplomskem delu se ukvarjamo z razvojem števca prehodov ljudi, ki temelji na podlagi računalniškega vida. Na začetku predstavimo že obstoječe možne rešitve štetja, zatem pa razvijemo in implementiramo lasten algoritem. V diplomskem delu so opisane vse ključne funkcije potrebne za uspešno prepoznavo objektov na sekvenci slik ter sledenja njihovem gibanju. Z razvito aplikacijo smo dosegli natančnost štetja prehodov nad 80 %.

IX COMPUTER BASED PEDESTRIAN COUNTING Key words: digital image processing, computer vision, pedestrian counting, IP camera, object recognition UDK: 004.93:621.39(043.2) Abstract: In this thesis we deal with development of pedestrian counting system, based on computer vision. Firstly, exsisting methods of pedestrian counting are reviewed, afterwords we develop and implement our own computare vision based algorithm. In this thesis all the fundamental functions needed for object recognition and object tracking are described. With the developed application we acheaved accuracy of pedestrian counting more than 80 %.

XI VSEBINA 1 UVOD... 1 2 PREGLED MOŽNIH REŠITEV... 3 2.1 Pregled rešitev... 3 2.1.1 Infrardeči števci... 3 2.1.2 Termični števci... 4 2.1.3 Števci na podlagi video slike... 5 2.2 Programsko okolje Delphi... 5 2.3 Kamera... 6 2.3.1 Napajanje kamere preko PoE standarda... 6 2.3.2 Zajemanje slike... 7 2.3.3 Resolucija... 8 2.3.4 CMOS senzor... 8 2.4 Sestava slike... 9 2.4.1 Digitalna slika... 9 2.4.2 RGB barvni model... 10 2.4.3 Sivinska slika... 11 3 POSTOPKI, POTREBNI ZA PREPOZNAVO OBJEKTOV... 12 3.1 Slika ozadja... 12 3.2 Odštevanje slik... 13 3.3 Median filter... 15 3.4 Dilatacijski filter (angl. Dilation filter)... 18 3.5 Označevanje najdenih objektov... 19 3.6 Preverjanje velikosti objektov... 26 3.7 Spremljanje gibanja objekta... 27

XII 3.8 Določitev con štetja... 30 3.9 Podatkovna baza... 31 4 MERITVE IN REZULTATI... 34 4.1 Testna konfiguracija... 34 4.2 Hitrost algoritma... 35 4.3 Natančnost štetja... 37 4.3.1 Nastavitve velikosti zaznanih objektov... 37 4.3.2 Poizkus štetja z eno določeno cono... 37 4.3.3 Rezultati štetja z eno določeno cono... 42 4.3.4 Poizkus štetja z dvema določenima conama... 42 4.3.5 Rezultati štetja z dvema definiranima conama... 45 5 SKLEP... 47 6 LITERATURA... 49 7 PRILOGE... 51 7.1 Seznam slik... 51 7.2 Seznam tabel... 53 7.3 Naslov študenta... 53 7.4 Kratek življenjepis... 53

XIII UPORABLJENI SIMBOLI č, P,,,,,,, piksel skupne slike piksel trenutne slike piksel povprečne slike piksel slike razlik minimalna razlika pikslov za zaznavo spremembe piksel slike barvni odtenki množitelj barvnih odtenkov intenziteta sivinskega piksla rdeči, zeleni ter modri sub-piksel

XIV UPORABLJENE KRATICE IP HD VGA fps TCP UDP HTTP HTTPS SMTP NTP DHCP FTP RTP JPEG MJPEG dpi CCL ID SQL MSSQL Internet Protocol. Internetni protokol. High Definition. Visoka ločljivost 1920x1080 slikovnih točk. Video Graphics Array. Grafični standard, za prikaz slike v ločljivosti 640 x 380 slikovnih točk. Frame Per Second. Slik na sekundo. Transport Control Protocol. Protokol za nadzor prenosa podatkov. User Diagram Protocol. Nepovezovalni protokol za prenašanje paketov. HyperText Transfer Protocol. HyperText Transfer Protocol Secure. Simple Mail Transfer Protocol. Network Time Protocol. Dynamic Host Configuration Protocol. File Transfer Protocol. Real Time Protocol. Joint Photographic Expert Group. Format digitalne slike. Motion JPEG. Dots Per Inch. Točk na palec. Connected Component Labeling. Identification number. Identifikacijska številka. Structured Query Language. Standardni poizvedbeni jezik za delo z bazami. Microsoft SQL.

XV MSAccess MySQL Microsoft Office Access. Podatkovni upravljalni sistem.

Štetje pešcev s pomočjo računalniškega vida Stran 1 1 UVOD Za vsako podjetje, ki se ukvarja s prodajo, je izrednega pomena spremljanje obiska trgovine. Tako imamo popolni nadzor nad samim številom obiskovalcev v vsakem trenutku. S pomočjo statističnih podatkov lahko spremljamo zgodovino obiska, primerjamo obisk med različnimi obdobji, vremenskimi pogoji, merimo odziv na marketinške akcije, optimiziramo razpored zaposlenih, povečamo uspešnost prodajnega mesta ter povečamo konkurenčnost. Ker je računalniški vid v današnjem času že zelo dobro razvit, smo se odločili, da razvijemo števec prehodov, ki bo štel prehode s pomočjo le-tega. Na trgu je sicer že veliko podobnih produktov, vendar so vsi cenovno zelo neugodni. Ideja diplomskega dela je napisati aplikacijo, ki bo preko IP kamere štela objekte, ki vstopajo in izstopajo v določen prostor. Sam algoritem procesiranja slike se mora izvajati čim hitreje, saj je omejen s časom zajemanja slik iz kamere. Sama kamera je lahko slabše kvalitete, saj lahko za zaznavanje prehodov objektov uporabimo sliko manjše resolucije (npr. VGA) in s počasnejšim serviranjem slik (npr. 10 fps). Prostor zajemanja slik mora biti dovolj osvetljen, da lahko zaznamo razliko med objektom in okolico. Najmanjši možni zaznani objekt naj bo nastavljiv in odvisen od višine postavljene kamere. Cilj aplikacije je uspešna prepoznava gibajočih se objektov ter uspešnost štetja nad 70 %. V diplomskem delu najprej na kratko predstavimo obstoječe možne rešitve problema štetja prehodov. Nato opišemo programsko okolje Delphi, sestavo IP kamere ter zgradbo digitalne slike. V tretjem poglavju opišemo celotni postopek obdelave slike, ki je potreben za prepoznavo objektov na sliki.

Stran 2 Klemen Grosek, Diplomsko delo V četrtem poglavju predstavimo dobljene rezultate z razvito aplikacijo. Ugotavljamo hitrost in točnost razvitega algoritma. Peto poglavje je namenjeno zaključku diplomskega dela in sklepu.

Štetje pešcev s pomočjo računalniškega vida Stran 3 2 PREGLED MOŽNIH REŠITEV 2.1 Pregled rešitev Obstaja več tehnik, s katerimi lahko štejemo vhode in izhode ljudi v objekt. Najpreprostejša možna rešitev je ta, da zaposlimo študenta za določen čas, vendar je to dolgoročno slaba investicija, hkrati pa lahko pride do raznih človeških napak, katerih pa nočemo. Obstajajo več vrst števcev: 2.1.1 Infrardeči števci Infrardeči (v nadaljevanju IR) števci so sestavljeni iz sprejemnega in oddajnega modula. Oddajni modul oddaja IR signal točno določene valovne dolžine (850 nm), medtem ko na sprejemni strani merimo prisotnost signala. Kadar se žarek IR signala med sprejemnikom in oddajnikom prekine, vemo, da se je zgodil prehod. Pametnejši števci lahko tudi zaznavajo smer prehoda s tem, da imajo na sprejemni strani dve sprejemni diodi. Kadar sprejemnik zazna prehod, lahko ugotovi smer prehoda na podlagi tega, katera dioda je prej zaznala prekinitev IR žarka. Prednost teh vrst števcev je ta, da so izredno poceni, vendar imajo vrsto slabosti. Števec meri samo prekinitev žarka med moduloma, kar pomeni, da če žarek prečka istočasno več ljudi vzporedno, bo števec prepoznal samo en prehod. Tako lahko pride do velikih odstopanj med številom preštetih prehodov ter dejansko vrednostjo. Ti števci so primerni za štetje prehodov na krajših razdaljah, kjer je mala verjetnost, da bo žarek prečkalo več ljudi vzporedno.

Stran 4 Klemen Grosek, Diplomsko delo Slika 2.1: IR števec s prikazovalnikom prehodov 2.1.2 Termični števci Termični števci delujejo na principu zaznavanja spremembe temperature. Temperatura človeškega telesa je v večini primerov toplejša od okolice, zato ga je enostavno ločiti od okolice. Slika 2.2: Termični števec Slika 2.3: Grafični vmesnik termičnega števca Irisys Prednost termičnih števcev je ta, da so enostavni za instalacijo ter nemoteči za obiskovalce. Slaba stran je ta, da so dokaj dragi in imajo velike omejitve pri lokaciji montaže. Števci se ne smejo postaviti na razna območja, kjer lahko prihaja do večjih temperaturnih razlik, saj lahko vsak manjši valj toplega zraka zaznajo kot prehod človeka. Vemo, da se večino štetja ljudi opravlja ravno na vhodih v stavbe, kjer so lahko postavljene razne toplotne zavese.

Štetje pešcev s pomočjo računalniškega vida Stran 5 Tako prihaja pogosto do mešanja mrzlega in toplega zraka, zato lahko pride do zelo velikega odstopanja števca. 2.1.3 Števci na podlagi video slike Najnaprednejši števci temeljijo na podlagi zajemanja video slike ter zaznavanja objektov na sliki. Takšen števec je povsem imun na razne temperaturne spremembe, kot npr. termični števec. Za takšen števec potrebujemo samo video kamero, ki je dandanes že dokaj poceni, računalnik ter ustrezno programsko opremo. Programsko opremo smo razvili v diplomskem delu. 2.2 Programsko okolje Delphi Programski jezik Delphi so zasnovali pri podjetju Borland v letu 1995. Podlaga jezika je objektni pascal (programski jezik pascal z objektnimi dodatki). Prvotno je bil namenjen predvsem pisanju programov za vodenje evidenc, podatkovnih baz in podobnih opravil. Prva različica programa je bila narejena za 16-bitno Windows okolje, naslednja verzija je že podpirala 32-bitno Windows okolje, leta 2001 pa je prišel Kylix, ki je bil namenjen Linux platformi. Leta 2003 je z izidom Delphi 8 prišla podpora Microsoft.NET orodju [2]. Prednost Delphija pred drugimi jeziki je ta, da ima veliko že napisanih komponent, veliko podporo podatkovnim bazam ter prijazen razvoj komponent. Jezik je objektno orientiran, kar pomeni, da pri programiranju uporabljamo razne objekte (vizualne in nevizualne). Vizualni objekti so objekti z grafično podobo, kot so npr. gumbi, drsniki, tabele, slike Objekte kličemo po njihovem imenu in s tem dostopamo do njihovih lastnosti oziroma funkcij. Pri razvoju naše aplikacije smo uporabili Delphi 7. S programom lahko enostavno dostopamo do vseh elementov slike (pikslov, sub-pikslov), kar je ključno za razvoj naše aplikacije. Do določenega piksla slike lahko enostavno dostopamo z ukazom Image1.Picture.Bitmap.Canvas.Pixels[x,y], vendar je lociranje pikslov na ta način zelo počasno. Veliko hitrejši način je ta, da se s kazalcem postavimo na x vrstico slike ter se

Stran 6 Klemen Grosek, Diplomsko delo nato sprehodimo po celotni širini slike. Ukaz za postavitev na začetek x vrstice slike je Image1.Picture.Bitmap.ScanLine[x]. 2.3 Kamera IP kamere ne potrebujejo nobenih posebnih komponent za digitalizacijo slike, saj so te komponente že vgrajene v kamerah samih. Kamere se priključijo direktno na računalniško mrežo preko mrežnega stikala ali usmerjevalnika (angl. switch ali router). Posnetki se shranjujejo na strežniku s pomočjo ustrezne programske opreme. Za zajem slik smo v naši aplikaciji uporabili IP kamero Sanyo HD 2100P. Slika 2.4: IP kamera Sanyo HD 2100P 2.3.1 Napajanje kamere preko PoE standarda Kamera omogoča več vrst napajanj, med drugimi tudi direktno preko mrežnega priključka oziroma PoE (angl. Power ower Ethernet). PoE se je uvedel z uvedbo standarda IEEE 802.3af-2003 (kasneje preimenovan v IEEE 802.3-2005), zadnja nadgradnja je bila leta 2009 v IEEE 802.3at oziroma PoE+ [8]. Napajanje poteka preko komunikacijskih linij (RX+, RX-, TX+. TX-) RJ45 mrežnega priključka. To je mogoče zato, ker se komunikacija pretaka preko diferencialnih napetosti po parnih linijah. Enosmerna napetost se tako prišteje k podatkovnim napetostnim nivojem. Polariteta napajalne napetosti se lahko invertira kadar uporabljamo crossover kabel, zato mora biti na strani porabnika usmerniško vezje, ki v vsakem primeru pravilno usmeri napajalno napetost. Za napajalne linije se uporabljajo priključki 1-2 in 3-6 (RJ45 priključka), hkrati pa se kot rezervne napajalne linije uporabljajo priključki 4-5, 7-8.

Štetje pešcev s pomočjo računalniškega vida Stran 7 Začetni standard je omogočal do 15,4 W porabe po kanalu, najnovejši standard, PoE+, pa omogoča do 25,5 W porabe po kanalu. V prihodnosti naj bi preko PoE priključka bilo možno črpati do 51 W moči. Napajalna napetost se giblje nekje od 44 V do 57 V. Ta napetost je zbrana zaradi varnostnih razlogov, saj je to maksimalna napetost, ki je še neškodljiva za človeka, hkrati pa nam omogoča napajanje naprav na dolgih linijah. Tabela 2.1: Lastnosti PoE standarda Lastnost 802.3af (802.3at, tip 1) 802.3at, tip 2 Moč dostopna na PD 12,95 W 25,50 W Maksimalno odvedena moč od PSE 15,40 W 34,20 W Izhodna napetost (na PSE) 44,0 57,0 V 50,0 57,0 V Izhodna napetost (na PD) 37,0 57,0 V 42,5 57,0 V Maksimalni tok 350 ma 600 ma Maksimalna upornost kabla 20 Ω (kategorija 3) 12,5 Ω (kategorija 5) Podprti kabli Kategorija 3 in 5 Kategorija 5 Omogočeni načini delovanja Mode A, Mode B Mode A, Mode B, Mode A in Mode B hkrati PD (angl. Powered device) je naprava napajana iz PSE (angl. Power sourcing equipment oziroma naprava z napajalnim virom). 2.3.2 Zajemanje slike Kamera podpira različne vrste protokolov, kot so: TCP/IP, UDP, HTTP, HTTPS, SMTP, NTP, DHCP, FTP, RTP, RTSP. V naši aplikaciji smo uporabili protokol HTTP ter MJPEG format slike. Na kamero se povežemo preko njenega IP naslova ter ji pošljemo zahtevo za zajem MJPEG slike. Kamera nam nato servira sliko in jo nato z našim algoritmom obdelamo. Kamera je sposobna servirat do 30 slik na sekundo (30 fps), vendar za pravilno delovanje naše aplikacije zadostuje že samo 10 slik na sekundo (10 fps).

Stran 8 Klemen Grosek, Diplomsko delo 2.3.3 Resolucija Uporabili smo HD resolucijo 1920x1080, vendar to sliko nato zaradi povečanja hitrosti algoritma zmanjšamo na velikost 320x240. 2.3.4 CMOS senzor Kamera za zajem slike uporablja senzor v CMOS tehnologiji (complementary metal oxide semiconductor). Pri CMOS senzorju ima vsak piksel lastni pretvornik naboja (svetlobe) v napetost. Senzor vsebuje tudi razne ojačevalnike, filtre šuma ter vezje za digitalizacijo slike. Vsi ti sklopi povečujejo kompleksnost samega senzorja ter zmanjšujejo površino za zajem svetlobe. Prednost senzorja je, da za svoje delovanje ne potrebuje raznih dodatnih vezij, kar omogoča gradnjo manj kompleksnih sistemov, vgradnjo v zelo majhne naprave ter majhno porabo energije. Tabela 2.2: Tehnične lastnosti kamere Senzor Število pikslov Minimalna osvetlitev Video S/N razmerje CMOS 16:9; 1920x1080; 4:3; 2288x1712 1 lux 50 db Elektronska zaklopka 1/30, 1/60, 1/100, 1/250, 1/500, 1/1000, 1/4000, 1/10000; x1, x2, x4, x8, x16, x32 Kompresija slike FPS Protokol MJPEG/H.264 Max. 30 slik na sekundo TCP/IP, UDP, HTTP, HTTPS, SMTP, NTP, DHCP, FTP, DONS, RTP, RTSP Sposobnost hkratnega dostopanja Max. 20

Štetje pešcev s pomočjo računalniškega vida Stran 9 2.4 Sestava slike 2.4.1 Digitalna slika Digitalna slika predstavlja fiksno dvodimenzionalno polje bajtov velikosti dimenzij slike. Barvna digitalna slika je najpogostejši komunikacijski medij. Prikaz barv temelji na teoriji, ki sta jo razvila Thomas Young in Herman Helmholtz. Teza pravi, da se lahko vsaka barva ustvari z mešanjem treh osnovnih barv C1, C2 in C3 v različnih razmerjih [9]., (2.1) kjer je: barvni odtenek intenziteta prve osnovne barve intenziteta druge osnovne barve intenziteta tretje osnovne barve Teorija temelji na tem, da je človeško oko sestavljeno iz treh različnih tipov čepkov. Glede na (2.1) lahko vsako barvo predstavimo kot vektor,, v tridimenzionalnem prostoru (C1, C2, C3). V računalništvu to imenujemo RGB barvni model. Slika 2.5: 3D barvna kocka

Stran 10 Klemen Grosek, Diplomsko delo 2.4.2 RGB barvni model RGB barvni model je sestavljen iz treh osnovnih barv rdeče, zelene in modre. Skupek teh treh osnovnih barv imenujem piksel (angl. Picture element) in se smatra kot najmanjši element slike. Barve, ki sestavljajo piksel, imenujemo sub-piksli. Formalno predstavlja piksel točko, ki nima oblike in določene velikosti, ima pa informacijo o karakteristiki slike (intenziteta, barva). V realnosti je piksel omejen z obliko in velikostjo zaslona. Dimenzija pikslov je predstavljena z mersko enoto dpi (angl. dots per inch ali pik na palec). Ta podatek nam pove gostoto pikslov na enoto 1 inch² (2,54 cm²). Večja je vrednost dpi, večja je resolucija zaslona. Slika 2.6: RGB barvni model Slika 2.7: Razpored pikslov na različnih prikazovalnikih

Štetje pešcev s pomočjo računalniškega vida Stran 11 2.4.3 Sivinska slika V digitalni sivinski sliki vsak piksel predstavlja dejansko svetlost vsake posamezne slikovne točke. Sivinska slika se pogosto prikazuje kot rezultat merjenj intenzitete svetlobe v določenem spektru elektromagnetnega valovanja (vidna svetloba, infrardeča svetloba, ultravijolična svetloba ). Sivinsko sliko lahko s pomočjo (2.2) izračunamo iz dane barvne slike. 30% 59% 11%, (2.2) kjer je: intenziteta sivinskega piksla intenziteta rdečega sub-piksla barvne slike intenziteta zelenega sub-piksla barvne slike intenziteta modrega sub-piksla barvne slike Sivinsko sliko smo v naši aplikaciji uporabili izključno zaradi pridobitve na hitrosti in kompleksnosti implementacije algoritma. Slika 2.8: Pretvorba v sivinsko sliko

Stran 12 Klemen Grosek, Diplomsko delo 3 POSTOPKI, POTREBNI ZA PREPOZNAVO OBJEKTOV V tem poglavju bomo opisali vse najpomembnejše operacije, ki so potrebne za zaznavo objektov na sekvenci slik. 3.1 Slika ozadja Princip zaznave objekta temelji na odštevanju dveh slik, kar je opisano v naslednjem poglavju. Da lahko izločimo objekte iz slike, moramo imeti neko referenčno sliko (sliko ozadja), katera predstavlja samo okolico prostora ter trenutno sliko z objektom. Samo okolje je dinamični prostor, kjer neprestano prihaja do sprememb. Spremembe so lahko sprememba vremena, dan, noč, ipd. Vsem tem spremembam mora referenčna slika ozadja slediti, sicer bodo rezultati prepoznave objektov zelo slabi. V naši aplikaciji smo uporabili metodo računanja povprečja 200 zaporednih slik. Ker je računanje povprečja za 200 slik, vsaka slika je sestavljena iz 320x240 pikslov, zelo dolgotrajni postopek, smo uvedli postopek, ki naredi naše računanje hitrejše. Namesto, da si shranjujemo vseh 200 slik v pomnilnik in nato ob vsaki novi sliki izbrišemo najstarejšo sliko ter na novo izračunamo povprečje vseh slik, hranimo v pomnilniku samo eno sliko imenovano»skupna_slika«. Vse vhodne slike se samo prištevajo k Skupni_sliki, hkrati pa hranimo število slik, shranjenih v Skupni_sliki. Da dobimo povprečje vseh shranjenih slik, enostavno delimo Skupno_sliko s številom slik, shranjenih v njej. Ko število slik doseže maksimalno dovoljeno število slik (v našem primeru 200), odštejemo povprečno sliko od Skupne_slike in ji prištejemo novo vhodno sliko. S tem smo sicer poslabšali pravilno povprečno vrednost, vendar smo izredno veliko pridobili na hitrosti same aplikacije.

Štetje pešcev s pomočjo računalniškega vida Stran 13 Prištevanje slik k Skupni_sliki:,,, (3.1) kjer je:, piksel trenutna slike, vrednost piksla v Skupni_sliki Računanje povprečne vrednosti: č,, š (3.2) kjer je: č, povprečna vrednost piksla, vrednost piksla v Skupni_sliki š število slik shranjenih v Skupni_sliki 3.2 Odštevanje slik Glavna operacija za odkrivanje objektov na sliki je odštevanje dveh slik. Piksli, ki so na obeh slikah enaki, se enostavno odštejejo, na območjih, kjer je prišlo do razlik med slikama (gibanje), pa dobimo rezultat različen od 0.,,, (3.3) kjer je:, rezultat odštevanja piksel slike 1 piksel slike 2

Stran 14 Klemen Grosek, Diplomsko delo Slika 3.1: Slika ozadja Slika 3.2: Trenutna slika Slika 3.3: Slika razlik

Štetje pešcev s pomočjo računalniškega vida Stran 15 Ker že sama kamera ustvarja majhen šum na sami sliki, moramo to upoštevati tudi pri odštevanju slik. Tako moramo pri razliki slik upoštevati t. i. prag razlike (angl. offset). Prag razlike predstavlja mejno vrednost zaznanega objekta. Če je absolutna vrednost razlike pikslov trenutne slike in slike ozadja manjša od pragovne vrednosti, upoštevamo to razliko kot '0' (črna barva) oziroma piksla sta enaka, kadar je absolutna razlika večja od pragovne vrednosti, pa to upoštevamo kot zaznavo spremembe in vrnemo rezultat kot '255' (bela barva).,, 0, 255 (3.4) kjer je:, rezultat odštevanja slik pragovna vrednost Kot rezultat odštevanja dobimo črno-belo sliko, kjer beli piksli predstavljajo zaznano gibanje na sliki, črni pa nobene spremembe, Slika 3.3. 3.3 Median filter Median filter je nelinearna tehnika digitalnega filtriranja šuma na sliki. Zelo pogosto se uporablja v digitalnem procesiranju slik, saj nam povečini odstrani neželeni šum, hkrati pa ohrani veliko podrobnosti slike. Opis postopka filtriranja: Filter preleti vse vhodne podatke v tako imenovanih»oknih«, kjer skupaj s trenutnim podatkom opazuje tudi vrednosti sosednjih podatkov. Pri enodimenzionalnem signalu, je okno sestavljeno enostavno iz večjih zaporednih podatkov, kjer pri 2D ali več dimenzijskih signalih, kot npr. slika, okno predstavlja 2 ali več dimenzijski objekt. Pri sliki je okno 2D matrika sestavljena iz lihega števila elementov (3x3, 5x5, 7x7). Večje število podatkov kot zajamemo, večji je efekt filtriranja.

Stran 16 Klemen Grosek, Diplomsko delo Filter deluje tako, da prebere vse podatke podanega okna ter jih nato razporedi po vrstnem redu od najmanjšega do največjega. Nato vzame sredinsko vrednost podatkov ter jo shrani v trenutni piksel. Primer na sivinski sliki, Slika 3.4: Sosednje vrednosti (v vrstnem redu): 115, 119, 129, 123, 124, 125, 126, 127, 150 Median vrednost: 124 Slika 3.4: Sivinska slika pred (a) ter po median filtriranju (b) V naši aplikaciji smo filtrirali črno-belo sliko. Postopek je povsem enak, razlika je le v podatkih, ki so lahko ali '0' ali pa '1'. Sosednje vrednosti (v vrstnem redu): 0, 0, 0, 0, 0, 0 1, 1, 1 Median vrednost: 0 Slika 3.5: Črno-bela slika pred (a) ter po median filtriranju (b)

Štetje pešcev s pomočjo računalniškega vida Stran 17 Enostavno povedano, če se v okvirju nahaja več ničel kot enic, vpišemo v trenutni piksel '0', če pa se nahaja več enic, vpišemo '1'. S tem smo izbrisali vse osamljene piksle, ki predstavljajo razne neželene šume. Slika 3.6: Slika razlik Slika 3.7: Prečiščena slika

Stran 18 Klemen Grosek, Diplomsko delo 3.4 Dilatacijski filter (angl. Dilation filter) Dilatacijski filter se povečini uporablja na črno-belih slikah. Njegov efekt je ta, da poveča površino objektov najdenih na sliki, hkrati pa delno zmanjša oziroma zapolni prazne prostore v objektih. Objekti, ki so dovolj blizu skupaj, se tako lahko združijo v večje objekte. Slika 3.8: Črno-bela slika pred (a) ter po dilatacijskem filtriranju (b) Filter deluje tako, da se z okvirjem (matrika pikslov velikost 3x3, 5x5, 7x7 ) sprehodimo po vseh pikslih slike. Kadar v okvirju najdemo piksel, ki predstavlja del objekta, obarvamo vse ostale piksle, ki so predstavljali ozadje, v barvo objekta. S tem smo povečali dimenzije objektov. Primer: Nahajamo se na pikslu s koordinatami x,y. Ugotovimo, da v okvirju obstajata dva piksla, ki pripadata objektu. Zato vse piksle spremenimo v piksle objekta. Slika 3.9: Okvir slike pred (a) ter po dilatacijskem filtriranju (b)

Štetje pešcev s pomočjo računalniškega vida Stran 19 Slika 3.10: Pred dilatacijskim filtriranjem Slika 3.11: Po dilatacijskem filtriranju ter izločitvi manjših objektov 3.5 Označevanje najdenih objektov Naslednja funkcija, ki sledi, je označevanje objektov na sliki (angl. CCL»Connected Components Labeling«). Vsem pikslom, ki so povezani drug z drugim, določimo enake barvne intenzitete oziroma jim dodelimo enake identifikacijske številke (v nadaljevanju ID-je). S tem dobimo sliko, kjer ima vsak objekt lastno ID vrednost. Kot osnovo iskanja objektov smo uporabili klasični algoritem, ki sta ga je leta 1966 razvila Rosenfeld in Pfaltz [5].

Stran 20 Klemen Grosek, Diplomsko delo Algoritem je sestavljen iz dveh preletov slike. V prvem preletu se sprehodimo čez vsak piksel slike, hkrati pa preverjamo zgornji in levi sosednji piksel. Glede na oznake teh dveh pikslov, ki sta že bila označena, označimo trenutni piksel, hkrati pa si shranjujemo možne povezave med piksli različnih oznak. V drugem preletu pa popravimo piksle, ki dejansko spadajo pod enak objekt, vendar imajo različne oznake. Primer določitve objektov: Imamo črno-belo sliko. Vsak kvadrat predstavlja en piksel. Beli kvadrati predstavljajo objekte, črni pa ozadje. Poiskati in označiti želimo objekte na sliki. Slika 3.12: Primer slike z objekti Kot rezultat moramo na Slika 3.12 najti štiri ločene objekte. Kot rezultat moramo dobiti Slika 3.13.

Štetje pešcev s pomočjo računalniškega vida Stran 21 Slika 3.13: Slika z obarvanimi objekti Sliko začnemo pregledovati v zgornjem levem kotu. Ugotovimo, da piksel (1,1) pripada objektu. Pogledamo, ali obstajata zgornji ali levi sosednji piksel. Ker je piksel prvi element slike, nima nobenega sosednjega (levega in zgornjega) piksla. Dodelimo mu ID vrednost '1'. 1 Slika 3.14: CCL, korak 1 Nato pogledamo naslednji piksel (1,2). Ugotovimo, da ima piksel soseda na levi strani, zato prekopiramo sosedovo oznako v trenutni piksel. Naslednji piksel (1,3) je piksel ozadja. Ker nas ta piksel ne zanima, ga enostavno preskočimo in pustimo označenega z vrednostjo '0'.

Stran 22 Klemen Grosek, Diplomsko delo Naslednji piksel je piksel (1,4). Piksel je del objekta, vendar ker nima ne zgornjega ne levega sosednjega piksla, ki bi pripadal kateremu objektu, mu dodelimo novo ID vrednost '2'. 1 1 2 Slika 3.15: CCL, korak 2 Naslednja dva piksla, (1,5) in (1,6), imata označene piksle na levi strani, zato dobita oznake '2'. Piksel (1,7) preskočimo, ker je del ozadja, pikslu (1,8) pa določimo novo ID vrednost '3', saj nima nobenega sosednjega piksla. Po končanju prve vrstice dobimo Slika 3.16. 1 1 2 2 2 3 Slika 3.16: CCL, korak 3 Nato sledi piksel (2,1). Sosed trenutnega piksla je (1,1) z oznako '1', zato to oznako prekopiramo v piksel (2,1). Enako velja za piksel (2,2) in ostale piksle v tej vrstici.

Štetje pešcev s pomočjo računalniškega vida Stran 23 Dobimo naslednjo sliko: 1 1 2 2 2 3 1 1 2 2 3 Slika 3.17: CCL, korak 4 V tretji vrstici so piksli (3,1), (3,2) in (3,3) enostavni za določit. Vsi namreč dobijo oznako '1'. Pri pikslu (3,4) pa imata zgornji in levi piksel različne oznake. V tem primeru preverimo, kateri sosednji piksel ima manjšo vrednost. Ugotovimo, da ima piksel (3,3) manjšo vrednost kot (2,5), zato dodelimo trenutnemu pikslu oznako '1'. Kot dodatno lastnost si shranimo, da je piksel z oznako '2'»otrok«piksla z oznako '1'. To lastnost bomo uporabili pri drugem preletu slike, kjer bomo piksle»otroke«spreminjali v»starše«. Slika 3.18: CCL, korak 5

Stran 24 Klemen Grosek, Diplomsko delo Naslednji koraki so enaki prejšnjim. Pri pikslu (7,4) pride spet do srečanja dveh različnih oznak. Pikslu določimo manjšo vrednost '4'. Pikslom z oznako '6' določimo, da so»otroci«pikslov '4'. Slika 3.19: CCL, korak 9 Do zaznave dveh različnih sosednjih oznak pride tudi pri pikslu (8,8). Piksel dobi oznako '3', piksli z oznako '7' pa lastnost, da so»otroci«oznake '3'. Končna slika po prvem preletu zgleda takole: Slika 3.20: CCL, korak 10 Po prvem preletu skozi sliko dobimo sliko z večjim številom objektov, kot pa je dejanska vrednost. Zato moramo še enkrat preleteti sliko in spremeniti vse»otroke«v dejanske vrednosti.

Štetje pešcev s pomočjo računalniškega vida Stran 25 Sprehodimo se po vseh pikslih slike. Ko ugotovimo, da je trenutni piksel»otrok«, mu spremenimo oznako v»starša«. Slika 3.21: CCL, korak 11 Slika 3.22: CCL, korak 12 Po končanem drugem prehodu dobimo sliko objektov, kjer ima vsak objekt svojo lastno ID vrednost.

Stran 26 Klemen Grosek, Diplomsko delo Slika 3.23: CCL, korak 13 3.6 Preverjanje velikosti objektov Naslednji korak je ugotavljanje velikosti objektov. Pri štetju ljudi želimo izločiti manjše zaznane objekte, kot so npr. živali. Na sliki preštejemo piksle vsakega najdenega objekta ter to vrednost primerjamo z najnižjo možno»velikostjo«objektov. Če je objekt premajhen, ga izbrišemo iz slike. Po filtraciji premajhnih objektov sledi novo dodeljevanje ID-jev objektom, in sicer po vrstnem redu od 1 naprej ter od zgornjega desnega do spodnjega levega kota. Tako smo dobili sliko s tremi objekti z oznakami '1', '2', in '3'. 1 1 1 1 1 2 1 1 1 1 2 1 1 1 1 2 2 3 3 3 3 2 3 2 3 3 3 3 2 3 3 3 3 2 2 2 Slika 3.24: Končana slika

Štetje pešcev s pomočjo računalniškega vida Stran 27 3.7 Spremljanje gibanja objekta Z dosedanjimi postopki smo izločili objekte iz slike ter jim dodelili ID naslove. Objekti so vedno označeni po vrstnem redu od zgornjega levega do spodnjega desnega kota slike. Ker spremljamo gibajoče se objekte, moramo preveriti, kje so se ti objekti nahajali v prejšnji iteraciji. V ta namen si v pomnilnik shranjujemo sliko najdenih objektov, katero nato ob vsaki naslednji iteraciji primerjamo s trenutno sliko. Za vsak najden objekt preverimo, ali se prekriva s katerim od objektov najdenih na prejšnji sliki. Kadar ugotovimo prekrivanje, sledi ponovno dodeljevanje ID naslovov objektom. Slika 3.25: Slika objektov prejšnje iteracije (a), trenutna slika objektov (b) Slika 3.26 prikazuje primerjavo trenutne slike najdenih objektov s prejšnjo sliko objektov. Ugotovimo, da se objekt '2' prekriva z objektom '1' prejšnje slike ter objekt '1' z objektom '2'. Iz tega sklepamo, da je dejansko objekt '1' objekt '2' ter objekt '2' objekt '1'. Sledi postopek za spremembo ID-jev, in sicer iz '1' '2' ter iz '2' '1'.

Stran 28 Klemen Grosek, Diplomsko delo Slika 3.26: Prekrivanje objektov Kot rezultat dobimo Slika 3.27, ki prikazuje dejansko gibanje objektov. Slika 3.27: Slika objektov prejšnje iteracije (a), trenutna slika objektov s pravilno označenimi objekti (b) V Delphiju si za vsak najden objekt ustvarimo novo strukturo (class) objekta. Struktura OBJEKT je sestavljena iz: ID naslova objekta, trenutne koordinate objekta (,,, ), centra objekta (težišče).

Štetje pešcev s pomočjo računalniškega vida Stran 29 Center objekta izračunamo z enačbama: (3.5) (3.6) barve (barva objekta je dodeljena glede na vrednost ID naslova), strukture POT-i (v to strukturo je shranjena celotna pot objekta). Struktura POT je sestavljena iz: koordinata (težišče ), koordinata (težišče ). Kadar zaznamo nov objekt na naši sliki, ustvarimo novo strukturo OBJEKT. OBJEKTU določimo fiksne vrednosti za ID objekta (npr. 2) ter fiksno barvo. Shranimo mu trenutne koordinate ter ustvarimo novo»podstrukturo«pot, kamor shranimo trenutno težiščno lokacijo objekta. V naslednji iteraciji, ko najdemo naš objekt z ID-jem '2', spremenimo trenutne koordinate objekta, hkrati pa dodamo novo vrednost podstrukturi POT. S pomočjo trenutnih koordinat izrisujemo kvadrat na sliki, kje se zaznan objekt trenutno nahaja, s pomočjo podstrukture POT pa izrisujemo celotno pot, ki jo je opravil objekt. Slika 3.28: Sledenje objektu

Stran 30 Klemen Grosek, Diplomsko delo 3.8 Določitev con štetja Obstaja več metod, s katerimi lahko ugotovimo, ali je objekt prečkal zarisane meje na sliki. Ena možnost je ta, da s pomočjo matematičnih funkcij računamo spreminjanje lege objekta. Kadar se daljica poti seka z daljico cone, zaznamo to kot prehod objekta. V našem projektu smo uporabili zelo enostavno in procesorsko nezahtevno metodo. V Slikarju narišemo sliko z dvema debelejšima črtama, ki se po celotni dolžini dotikata druga druge. Slika 3.29: Cona štetja Sliko uvozimo v našo aplikacijo kot Sliko_con. V Delphiju definiramo novo strukturo CONE, ki je sestavljena iz: ID-ja cone, pozitivnega zaporedja prehoda, negativnega zaporedja prehoda, števila pozitivnih prehodov, števila negativnih prehodov. V aplikaciji nato določimo pravilno zaporedje prečkanja con. V našem primeru za pozitivno prečkanje cone določimo kombinacijo barv modra rdeča, za negativno pa kombinacijo rdeča modra.

Štetje pešcev s pomočjo računalniškega vida Stran 31 Za vsak objekt spremljamo težiščne xy koordinate trenutne lokacije. Ko s pomočjo teh koordinat zaznamo, da se objekt nahaja na kateri izmed barv v sliki con, se začne postopek prehoda. Da se prehod šteje, se mora izvesti točno določeno zaporedje barv, in sicer v našem primeru za pozitivno smer ozadje modra rdeča ozadje. Ko zaznamo, da je lokacija objekta spet izven naših barv na sliki con, se preveri pravilnost prehoda. Vrstni red prečkanja barv primerjamo z vsemi vpisanimi kombinacijami. Če najdemo katero cono s to kombinacijo, prištejemo tisti coni število prehodov v pozitivni ali negativni smeri, odvisno od zaporedja prehoda. Prednosti metode: procesorsko nezahtevna operacija, izredno hitra, enostavna za implementirati, narišemo lahko poljubno število con s poljubnimi oblikami. Slabost te metode je ta, da moramo narisati dve črti za eno cono štetja, ki se morata po celotni dolžini dotikati ena z drugo. Ti črti morata biti dovolj debeli, saj se lahko v nasprotnem primeru zgodi, da se objekt giblje prehitro in lahko preskoči katero definirano barvno črto. Prehod se v tem primeru ne bi prištel. 3.9 Podatkovna baza Podatkovna baza je sklop zbirke podatkov. Pojavila se je zaradi potrebe po hitrem dostopanju do informacij. Omogoča enostavno shranjevanje in dostopanje do podatkov. Podatkovni sistem je jedro podatkovne zbirke in vsebuje rutine za upravljanje s podatki. Obstaja več vrst podatkovnih baz in sistemov za upravljanje s podatkovnimi bazami. Najbolj znani so MS SQL, MS Access, MySQL, InterBase, Oracle, ipd. podatkovni sistemi. V naši aplikaciji smo uporabili interno bazo dxmemdata programa Delphi. Baza se samostojno tvori ob vsakem zagonu programa in ima določeno maksimalno možno število vnosov. Ob vsakem zaznanem prehodu cone si v bazo shranimo podatke:

Stran 32 Klemen Grosek, Diplomsko delo ZoneID; pove nam, na kateri coni je prišlo do prehoda. ValueIN; skupno število pozitivnih prehodov. ValueOUT; skupno število negativnih prehodov. Time; Date; čas prehoda. datum prehoda. Slika 3.30: Tabela podatkov Podatki se v bazo vpišejo z ukazom dxmemdata.insertrecord (x, IDZone, ValueIN, ValueOUT, Time, Date), kjer je x zaporedna številka vpisa. Podatke, vpisane v bazi, lahko nato poljubno izrišemo v graf. Za vsako definirano cono lahko izberemo ali dnevni ali mesečni izris prehodov.

Štetje pešcev s pomočjo računalniškega vida Stran 33 Slika 3.31: Graf prehodov

Stran 34 Klemen Grosek, Diplomsko delo 4 MERITVE IN REZULTATI V tem poglavju bomo opisali rezultate, ki smo jih dobili z algoritmom, opisanim v poglavju 3. V podpoglavju 4.1 bomo opisali konfiguracijo našega testnega računalniškega sistema. V poglavju 4.2 bomo predstavili rezultat hitrosti delovanja našega programa. V poglavju 4.3 pa bomo predstavili dejanske rezultate štetja prehodov. 4.1 Testna konfiguracija Algoritem smo testirali na namiznem računalniku HP Elite HPE-120-WC969 Procesor: IntelQuad Core i7 860, 2,8GHz Pomnilnik: 6GB PC3-10600 DDR3 Trdi disk: 1500GB SATA Grafična kartica: NVIDIA GeForce GT230 1,5GB Operacijski sistem: Windows XP SP3 Uporabili smo kamero Sanyo HD 2100P. Kamera snema parkirišče podjetja. Postavljena je na višini 5 m, pod kotom 30.

Štetje pešcev s pomočjo računalniškega vida Stran 35 Slika 4.1: Postavitev kamere 4.2 Hitrost algoritma Za pravilno prepoznavo in spremljanje objektov mora razvit algoritem ustrezati določenim časovnim zahtevam pri obdelavi slike. Hitrost algoritma smo izmerili tako, da smo si na disk shranili sekvenco 1000-ih zaporednih slik iz kamere. Te slike smo nato eno za drugo klicali iz programa brez vmesnih pavz. Hkrati smo merili čas, ki je bil potreben za procesiranje 1000-ih slik. Čas, ki ga porabi algoritem za procesiranje ene slike, smo izračunali s (4.1). 1000 (4.1) kjer je: čas procesiranja ene slike čas procesiranja 1000-ih slik Čas smo merili z visoko zmogljivim strojnim časovnikom, ki je dandanes vgrajen v vsakem računalniku. Omogoča nam merjenje časa procesiranja do več kot 1 mikrosekunde natančno.

Stran 36 Klemen Grosek, Diplomsko delo V Delphiju s funkcijo QueryPerformanceFrequency(Freq) dobimo vrednost frekvence časovnika. S funkcijo QueryPerformanceCounter(value) dobimo trenutno vrednost časovnika. Čas smo izračunali s (4.2). QueryPerformanceCounter Stop QueryPerformanceCounter Start QueryPerformanceFrequency Frequency (4.2) kjer je: QueryPerformanceCounter Start začetni čas časovnika QueryPerformanceCounter Stop končni čas časovnika QueryPerformanceFrequency Frequency frekvenca časovnika čas procesiranja 1000-ih slik Tabela 4.1: Rezultati analize hitrosti algoritma Številka poizkusa Čas procesiranja 1000-ih slik Čas procesiranja ene slike 1. 71,33 s 71,33 ms 2. 69,87 s 69,87 ms 3. 69,59 s 69,59 ms 4. 69,05 s 69,05 ms Povprečje: 69,95 s 69,95 ms Iz rezultata lahko vidimo, da je algoritem sposoben obdelati do 13 slik na sekundo. Sam algoritem nima nobene optimizacije, zato lahko z optimizacijo kode ta čas dramatično zmanjšano.

Štetje pešcev s pomočjo računalniškega vida Stran 37 4.3 Natančnost štetja Zaradi večje preglednosti smo algoritem štetja izvajali na vnaprej posnetem video posnetku. Video posnetek smo iz kamere izvozili v obliki JPEG slik. Slike smo nato eno za drugo uvažali v našo aplikacijo, kot da bi jih servirala kamera. S tem smo pridobili večji pregled nad samim napredkom aplikacije čez celotno obdobje razvoja. Za preizkus štetja smo izvedli dva poizkusa, enega z eno določeno cono ter drugega z dvema določenima conama. 4.3.1 Nastavitve velikosti zaznanih objektov Minimalne velikosti zaznanih objektov ter filtracijo šuma na sliki smo nastavili eksperimentalno. Najboljši rezultati so se pokazali, kadar smo minimalno velikost zaznanih objektov nastavili na 170 pikslov. Razlika med referenčno sliko ter trenutno sliko pa je morala presegati vrednost 25. Slika 4.2: Nastavitev parametrov v aplikaciji 4.3.2 Poizkus štetja z eno določeno cono V našo aplikacijo smo uvozili sliko z eno vrisano cono štetja, ki smo jo narisali v Slikarju. Cona štetja je sestavljena iz dveh barv, rdeče in zelene, na podlagi katerih določamo smer prehoda. Določili smo, da je pozitivna smer prehoda prečkanje najprej rdeče, nato pa zelene barve. V obratnem primeru smatramo prehod kot negativni. Cono štetja določimo tako, da v okvirček Zone ID vpišemo ID cone (v našem primeru 1) in pritisnemo gumb Dodaj cono. Nato moramo coni določiti pravilno zaporedje prehoda. V

Stran 38 Klemen Grosek, Diplomsko delo našem primeru kliknemo najprej na rdečo barvo na sliki ter stisnemo gumb Dodaj sekvenco, nato pa še na zeleno barvo ter pritisnemo gumb Dodaj sekvenco. Na sliki z objekti se definirane cone vidijo kot temne linije. Slika 4.3: Določitev cone štetja Na Slika 4.4 je primer enojnega prehoda cone. Algoritem je brez težav prepoznal gibajoči se objekt. Slika 4.4: Primer enojnega prehoda

Štetje pešcev s pomočjo računalniškega vida Stran 39 Primer prehoda dveh oseb: Slika 4.5: Primer dvojnega prehoda Na Slika 4.6 imamo primer napačne prepoznave. Ker so osebe na sliki preblizu skupaj (se dotikajo druga druge), algoritem prepozna vse štiri osebe kot en objekt. Slika 4.6: Napačna prepoznava Postopki prepoznave objektov so prikazani na Slika 4.7. Prva slika (levo zgoraj) prikazuje izvorno barvno sliko. Naslednja slika je sivinska slika izvorne slike. Tretja slika predstavlja sliko ozadja oziroma izračunano povprečje 200-tih zaporednih slik. Naslednja slika (levo spodaj) je razlika med sivinsko sliko in sliko ozadja. Slika 5 je prefiltrirana slika razlik z median filtrom. Zadnja slika predstavlja najdene objekte.

Stran 40 Klemen Grosek, Diplomsko delo Iz slike vidimo, da se vse štiri osebe vizualno dotikajo druga druge, kar povzroči, da jih algoritem prepozna kot en objekt. Slika 4.7: Proces prepoznave Prehod štirih oseb: Slika 4.8: Prehod štirih objektov Slika 4.9 prikazuje grafični prikaz vhodov in izhodov objektov čez cono. Rdeča črta predstavlja pozitivne prehode (vhode), zelena pa negativne prehode oziroma izhode.

Štetje pešcev s pomočjo računalniškega vida Stran 41 Čas na video posnetku se razlikuje od grafičnega prikaza prehodov, ker je bila analiza prehodov opravljena ob drugem času. Slika 4.9: Grafični prikaz prehodov Podatki, shranjeni v bazi, so prikazani na Slika 4.10. Stolpec ZoneID prestavlja cono, na kateri je bil zaznan prehod. V stolpcih ValueIN in ValueOUT je shranjena dejanska vrednost prehodov, stolpca Time in Date pa predstavljata čase prehodov. Slika 4.10: Baza podatkov

Stran 42 Klemen Grosek, Diplomsko delo 4.3.3 Rezultati štetja z eno določeno cono Tabela 4.2: Rezultati štetja prehodov pešcev preizkusa 1 Dejanska vrednost Alhoritem REZULTAT Vhodi Izhodi Vhodi Izhodi Vhodi Izhodi skupno Čas. obdobje 1 6 9 6 7 100 % 78 % 87 % Čas. obdobje 2 12 15 12 11 100 % 73 % 85 % Čas. obdobje 3 18 23 18 17 100 % 74 % 85 % Končno število 30 40 30 30 100 % 75 % 86 % Iz tabele z rezultati vidimo, da je algoritem preštel 100 % pravilno vse vhode in 75 % pravilno vse izhode, kar pomeni da je povprečna natančnost algoritma v tem primeru 86 %. 4.3.4 Poizkus štetja z dvema določenima conama V Slikarju smo narisali sliko z dvema conama. Sliko smo uvozili v našo aplikacijo kot sliko con. Cono 1 smo definirali kot prehod iz rdeče v zeleno barvo, cono 2 pa kot prehod iz vijolične v modro barvo. Slika 4.11: Dve definirani coni

Štetje pešcev s pomočjo računalniškega vida Stran 43 Analizirali smo enak posnetek kot v poizkusu 1. Kot rezultat bi morali dobiti enake rezultate kot v prejšnjem poizkusu. Primer enojnega prehoda je algoritem prepoznal 100 % uspešno za obe coni. Slika 4.12: Enojni prehod Slika 4.13 predstavlja primer dvojnega prehoda. Iz slike vidimo, da je algoritem 100 % uspešno prepoznal prehoda obeh con osebe 1, medtem ko je prehod osebe 2 prepoznal samo pri prehodu cone 2. Iz slike lahko vidimo, da je bila oseba 2 prepoznana komaj v coni 1, kar pomeni da ni izvedla popolni prehod (ozadje zelena rdeča ozadje). Slika 4.13: Dvojni prehod

Stran 44 Klemen Grosek, Diplomsko delo Na Slika 4.14 vidimo, da se osebe prekrivajo, kar vodi do napačnega štetja prehodov. Na sliki so dejansko štiri osebe, algoritem pa je zaznal 2 objekta. Slika 4.14: Grupiranje objektov Prepoznava štirih objektov. Slika 4.15: Prehod štirih objektov

Štetje pešcev s pomočjo računalniškega vida Stran 45 4.3.5 Rezultati štetja z dvema definiranima conama Slika 4.16 in Slika 4.17 grafično prikazujeta prehode con glede na čas. Slika 4.16: Graf prehodov cone 1 Slika 4.17: Graf prehodov cone 2 Tabela 4.3: Rezultati prehodov poizkusa 2 Dejanska vrednost Algoritem Cona 1 Cona 2 Vhodi Izhodi Vhodi Izhodi Vhodi Izhodi 18 24 18 12 14 24 Cona 1 Cona 2 Skupaj Vhodi Izhodi Vhodi Izhodi Vhodi Izhodi Skupno 100 % 50 % 78 % 100 % 89 % 75 % 81 %

Stran 46 Klemen Grosek, Diplomsko delo Iz rezultatov v Tabela 4.3 lahko vidimo, da je povprečna natančnost algoritma kar 81 %. Najslabše se je odrezalo štetje izhodov na coni 1, ki je doseglo 50 % dejanskih vrednosti izhodov. Razlog slabe prepoznave je postavitev cone preblizu roba slike.

Štetje pešcev s pomočjo računalniškega vida Stran 47 5 SKLEP V diplomskem delu smo se ukvarjali z razvojem lastne aplikacije za prepoznavo in štetje objektov na video sliki. Z osnovnimi funkcijami, kot so seštevanje, odštevanje, filtriranje ipd., smo prišli do zelo spodbudnih rezultatov, kot je uspešnost štetja nad 80 %. Pri razvoju smo naleteli na določene težave, ki jih je bilo treba uspešno obvladati. Referenčna slika ozadja je zelo pomemben faktor pri prepoznavi objektov, saj se vsi objekti iščejo kot razlika med trenutno sliko in referenčno sliko ozadja. Referenčno sliko smo računali s pomočjo povprečja zadnjih 200-tih slik. Razvili smo izredno hitro metodo računanja povprečja, kjer namesto 200-tih preletov slik naredimo samo en prelet slike. Povprečna hitrost obdelave ene slike je zadovoljivo hitra (69,95 ms), kar omogoča obdelavo do 13 slik na sekundo, vendar lahko z optimizacijo kode izredno izboljšamo ta čas. Vsak postopek na sliki se izvaja v ločeni funkciji, kar pomeni, da se od začetka procesiranja pa do konca procesiranja ene slike skozi njo sprehodimo 13 krat. Z združenjem večjih funkcij lahko ta čas zmanjšamo. Algoritem prepozna vse združene piksle kot eden objekt. Ker je bila testna kamera postavljena na višini 5 m pod kotom 30, se je velikokrat zgodilo, da so se osebe na parkirišču prekrivale ena z drugo, kar pa je povzročilo, da je algoritem več oseb prepoznal kot en sam objekt. Problemu se lahko izognemo tako, da kamero postavimo vertikalno glede na sneman prehod in se tako izognemo prekrivanju večih oseb. Druga možna rešitev pa je, da glede na višino postavljene kamere točno določimo, kakšno površino na sliki predstavlja človek. Nato ob prečkanju cone preverimo površino objekta. Če je površina večkratnik površine človeka, enostavno prištejemo to vrednost k vhodom/izhodom cone. Prednost razvitega sistema štetja prehodov je, da ga lahko brez dodatnih posegov v infrastrukturo objekta, kjer želimo izvajati štetje ljudi, implementiramo s pomočjo že obstoječih video nadzornih kamer. Potrebujemo samo dovolj zmogljiv računalnik ter dostop do kamer.

Stran 48 Klemen Grosek, Diplomsko delo Razvit sistem omogoča zelo veliko možnosti uporabe ter razširitev. Pri štetju prečkanja con bi si lahko v bazo podatkov shranjevali tudi slike ali video posnetke. Tako bi naš sistem deloval tudi kot nekakšen video nadzorni center, kjer bi imeli za vsak prehod sliko (ali video posnetek), na podlagi katere bi lahko prepoznavali razne nepridiprave. Aplikaciji bi lahko dodali funkcijo za spremljanje gostote gibanja. Tako bi lahko, npr. v trgovskem centru, ugotovili vzorec gibanja obiskovalcev. Na podlagi rezultatov bi lahko projektanti centra ugotavljali, ali je bil trgovski center sprojektiran za prinašanje največjega dobička. Trgovci bi si lahko tako izbrali lokacijo trgovine, kjer je največja gostota gibanja ter tako povečali svoj profit. Razvito aplikacijo lahko uporabimo ne samo za štetje ljudi, ampak tudi za štetje prometa, raznih predmetov na tekočem traku, skratka povsod, kjer lahko kaj štejemo.

Štetje pešcev s pomočjo računalniškega vida Stran 49 6 LITERATURA [1] Aurelio Campilho, Mohamed Kamel, Image Analysis and Recognition, 5th International Conference, ICIAR, 2008. [2] About Borland Delphi programming, http://delphi.about.com/ Navodila in primeri za razvojno orodje Delphi. [3] The Hypermedia Image Processing Reference, http://homepages.inf.ed.ac.uk/rbf/hipr2/hipr_top.htm Opisi in primeri operacij na digitalni sliki. [4] SANYO Electric Co., http://us.sanyo.com/dynamic/product/downloads/vcc-hd2xxxflyer_ntsc- 23657578.pdf Karakteristike kamere Sanyo HD 2100P. [5] Utkarsh Sinha, http://www.aishack.in/2010/03/labelling-connected-components-example/ Primer operacije CCL.

Stran 50 Klemen Grosek, Diplomsko delo [6] Irisys company, http://www.iaaf.uwa.edu.au/imageanalysis1.html Karakteristike termičnega števca Isisys. [7] Delphi Land, http://www.festra.com/wwwboard/messages/13154.html Primer merjenja časa procesiranja kode. [8] Wikipedia prosta enciklopedija, http://en.wikipedia.org/wiki/power_over_ethernet Opis delovanja PoE napajanja. [9] Wikipedia prosta enciklopedija, http://en.wikipedia.org/wiki/rgb_color_model Opis RGB barvnega modela.

Štetje pešcev s pomočjo računalniškega vida Stran 51 7 PRILOGE 7.1 Seznam slik Slika 2.1: IR števec s prikazovalnikom prehodov... 4 Slika 2.2: Termični števec... 4 Slika 2.3: Grafični vmesnik termičnega števca Irisys... 4 Slika 2.4: IP kamera Sanyo HD 2100P... 6 Slika 2.5: 3D barvna kocka... 9 Slika 2.6: RGB barvni model... 10 Slika 2.7: Razpored pikslov na različnih prikazovalnikih... 10 Slika 2.8: Pretvorba v sivinsko sliko... 11 Slika 3.1: Slika ozadja... 14 Slika 3.2: Trenutna slika... 14 Slika 3.3: Slika razlik... 14 Slika 3.4: Sivinska slika pred (a) ter po median filtriranju (b)... 16 Slika 3.5: Črno-bela slika pred (a) ter po median filtriranju (b)... 16 Slika 3.6: Slika razlik... 17 Slika 3.7: Prečiščena slika... 17 Slika 3.8: Črno-bela slika pred (a) ter po dilatacijskem filtriranju (b)... 18 Slika 3.9: Okvir slike pred (a) ter po dilatacijskem filtriranju (b)... 18 Slika 3.10: Pred dilatacijskim filtriranjem... 19 Slika 3.11: Po dilatacijskem filtriranju ter izločitvi manjših objektov... 19 Slika 3.12: Primer slike z objekti... 20 Slika 3.13: Slika z obarvanimi objekti... 21 Slika 3.14: CCL, korak 1... 21 Slika 3.15: CCL, korak 2... 22 Slika 3.16: CCL, korak 3... 22

Stran 52 Klemen Grosek, Diplomsko delo Slika 3.17: CCL, korak 4... 23 Slika 3.18: CCL, korak 5... 23 Slika 3.19: CCL, korak 9... 24 Slika 3.20: CCL, korak 10... 24 Slika 3.21: CCL, korak 11... 25 Slika 3.22: CCL, korak 12... 25 Slika 3.23: CCL, korak 13... 26 Slika 3.24: Končana slika... 26 Slika 3.25: Slika objektov prejšnje iteracije (a), trenutna slika objektov (b)... 27 Slika 3.26: Prekrivanje objektov... 28 Slika 3.27: Slika objektov prejšnje iteracije (a), trenutna slika objektov s pravilno označenimi objekti (b)... 28 Slika 3.28: Sledenje objektu... 29 Slika 3.29: Cona štetja... 30 Slika 3.30: Tabela podatkov... 32 Slika 3.31: Graf prehodov... 33 Slika 4.1: Postavitev kamere... 35 Slika 4.2: Nastavitev parametrov v aplikaciji... 37 Slika 4.3: Določitev cone štetja... 38 Slika 4.4: Primer enojnega prehoda... 38 Slika 4.5: Primer dvojnega prehoda... 39 Slika 4.6: Napačna prepoznava... 39 Slika 4.7: Proces prepoznave... 40 Slika 4.8: Prehod štirih objektov... 40 Slika 4.9: Grafični prikaz prehodov... 41 Slika 4.10: Baza podatkov... 41 Slika 4.11: Dve definirani coni... 42 Slika 4.12: Enojni prehod... 43 Slika 4.13: Dvojni prehod... 43 Slika 4.14: Grupiranje objektov... 44 Slika 4.15: Prehod štirih objektov... 44 Slika 4.16: Graf prehodov cone 1... 45

Štetje pešcev s pomočjo računalniškega vida Stran 53 Slika 4.17: Graf prehodov cone 2... 45 7.2 Seznam tabel Tabela 2.1: Lastnosti PoE standarda... 7 Tabela 2.2: Tehnične lastnosti kamere... 8 Tabela 4.1: Rezultati analize hitrosti algoritma... 36 Tabela 4.2: Rezultati štetja prehodov pešcev preizkusa 1... 42 Tabela 4.3: Rezultati prehodov poizkusa 2... 45 7.3 Naslov študenta Klemen Grosek Pot k ribniku 20 3252 Rogatec Tel.: 041 765 502 e-mail: klemen.grosek@gmail.com 7.4 Kratek življenjepis Rojen: 3. 10. 1986 v Celju Šolanje: 1993 2001 osnovna šola Rogatec 2001 2005 Šolski center Celje, Poklicna in tehniška elektro in kemijska šola 2005 2011 Fakulteta za elektrotehniko, računalništvo in informatiko Maribor 2008 Sabanci Universitesi, Istanbul Turčija, študentska izmenjava, zimski semester