Upload
nguyentuong
View
216
Download
0
Embed Size (px)
Citation preview
ŠTETJE RAČ
Klemen Grosek
ŠTETJE PEŠCEV S POMOČJO RAČUNALNIŠKEGA VIDA
Diplomsko delo
Rogatec, marec 2011
ČJO
I
Diplomsko delo univerzitetnega študijskega programa
ŠTETJE PEŠCEV S POMOČJO RAČUNALNIŠKEGA VIDA
Študent: Klemen Grosek
Študijski program: UN ŠP, Elektrotehnika
Smer: Elektronika
Mentor: doc. dr. Iztok Kramberger
Lektorica: 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
piksel skupne slike
piksel trenutne slike
č piksel povprečne slike
piksel slike razlik
minimalna razlika pikslov za zaznavo spremembe
, P piksel slike
, , , barvni odtenki
, , ! množitelj barvnih odtenkov
"# intenziteta sivinskega piksla
, $, % rdeči, zeleni ter modri sub-piksel
XIV
UPORABLJENE KRATICE
IP Internet Protocol. Internetni protokol.
HD High Definition. Visoka ločljivost 1920x1080 slikovnih točk.
VGA Video Graphics Array. Grafični standard, za prikaz slike v ločljivosti
640 x 380 slikovnih točk.
fps Frame Per Second. Slik na sekundo.
TCP Transport Control Protocol. Protokol za nadzor prenosa podatkov.
UDP User Diagram Protocol. Nepovezovalni protokol za prenašanje
paketov.
HTTP HyperText Transfer Protocol.
HTTPS HyperText Transfer Protocol Secure.
SMTP Simple Mail Transfer Protocol.
NTP Network Time Protocol.
DHCP Dynamic Host Configuration Protocol.
FTP File Transfer Protocol.
RTP Real Time Protocol.
JPEG Joint Photographic Expert Group. Format digitalne slike.
MJPEG Motion JPEG.
dpi Dots Per Inch. Točk na palec.
CCL Connected Component Labeling.
ID Identification number. Identifikacijska številka.
SQL Structured Query Language. Standardni poizvedbeni jezik za delo z
bazami.
MSSQL Microsoft SQL.
XV
MSAccess Microsoft Office Access.
MySQL 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.
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.
Slika 2.3: Grafični vmesnik termičnega števca Irisys
Slika 2.2: Termični števec
Š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 CMOS
Število pikslov 16:9; 1920x1080; 4:3; 2288x1712
Minimalna osvetlitev 1 lux
Video S/N razmerje 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 MJPEG/H.264
FPS Max. 30 slik na sekundo
Protokol 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
2.4.2 RGB barvni model
RGB barvni model je sestavljen iz treh osnovnih barv
treh osnovnih barv imenujem piksel (angl. Picture element) in se smatra kot najmanjši
element slike. Barve, ki sestavljajo piksel
piksel točko, ki nima oblike in dolo
(intenziteta, barva). V realnosti je piksel omejen z obliko in velikostjo zaslona
pikslov je predstavljena z
podatek nam pove gostoto pikslov na enoto
je resolucija zaslona.
Slika 2.7: Razp
Klemen Grosek, Diplomsko delo
RGB barvni model je sestavljen iz treh osnovnih barv – rdeče, zelene in modre.
treh osnovnih barv imenujem piksel (angl. Picture element) in se smatra kot najmanjši
ki sestavljajo piksel, imenujemo sub-piksli. Formalno predstavlja
ko, ki nima oblike in določene velikosti, ima pa informacijo o karakteri
(intenziteta, barva). V realnosti je piksel omejen z obliko in velikostjo zaslona
z mersko enoto dpi (angl. dots per inch ali pik na palec). Ta
pove gostoto pikslov na enoto 1 inch² (2,54 cm²). Večja je vrednost dpi, ve
Slika 2.6: RGB barvni model
: Razpored pikslov na različnih prikazovalnikih
Klemen Grosek, Diplomsko delo
e, zelene in modre. Skupek teh
treh osnovnih barv imenujem piksel (angl. Picture element) in se smatra kot najmanjši
piksli. Formalno predstavlja
ene velikosti, ima pa informacijo o karakteristiki slike
(intenziteta, barva). V realnosti je piksel omejen z obliko in velikostjo zaslona. Dimenzija
ali pik na palec). Ta
ja je vrednost dpi, večja
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:
)2, 3* & )2, 3* ' )2, 3* (3.1)
kjer je:
)2, 3* – piksel trenutna slike
)2, 3* – vrednost piksla v Skupni_sliki
Računanje povprečne vrednosti:
č)2, 3* &
)2, 3*
š456789:87; (3.2)
kjer je:
č)2, 3* – povprečna vrednost piksla
)2, 3* – vrednost piksla v Skupni_sliki
š456789:87; – š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.
)2, 3* & |)2, 3* = )2, 3*| (3.3)
kjer je:
)2, 3* – 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).
>? )2, 3* @ ABCD )2, 3* & 0
EFGE )2, 3* & 255 (3.4)
kjer je:
)2, 3* – 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
Filter deluje tako, da prebere vse podatke podanega okna ter
redu od najmanjšega do najve
v trenutni piksel.
Primer na sivinski sliki, Slika
Sosednje vrednosti (v vrstnem redu)
Median vrednost: 124
Slika 3.4: S
V naši aplikaciji smo filtrirali
podatkih, ki so lahko ali '0' ali pa '
Sosednje vrednosti (v vrstnem redu):
Median vrednost: 0
Slika 3.5: Črno
Klemen Grosek, Diplomsko delo
Filter deluje tako, da prebere vse podatke podanega okna ter jih nato razporedi po vrstnem
do največjega. Nato vzame sredinsko vrednost podatkov ter jo shrani
Slika 3.4:
(v vrstnem redu): 115, 119, 129, 123, 124, 125, 126, 127, 150
Sivinska slika pred (a) ter po median filtriranju (b)
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
rno-bela slika pred (a) ter po median filtriranju
Klemen Grosek, Diplomsko delo
razporedi po vrstnem
. Nato vzame sredinsko vrednost podatkov ter jo shrani
126, 127, 150
(b)
belo sliko. Postopek je povsem enak, razlika je le v
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
3.4 Dilatacijski filter (angl.
Dilatacijski filter se povečini uporablja na
površino objektov najdenih na sliki
prostore v objektih. Objekti, ki so dovolj blizu skupaj
objekte.
Slika 3.8: Črno-
Filter deluje tako, da se z okvirjem (matrika
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 s
objektov.
Primer:
Nahajamo se na pikslu s koordinatami x,y. Ugotovimo,
pripadata objektu. Zato vse piksle
Slika 3.9: Okvir slike pred
Klemen Grosek, Diplomsko delo
Dilatacijski filter (angl. Dilation filter)
čini uporablja na črno-belih slikah. Njegov efekt je
površino objektov najdenih na sliki, hkrati pa delno zmanjša oziroma
prostore v objektih. Objekti, ki so dovolj blizu skupaj, se tako lahko združijo v ve
-bela slika pred (a) ter po dilatacijskem filtriranju
Filter deluje tako, da se z okvirjem (matrika pikslov velikost 3x3, 5x5, 7x7
. Kadar v okvirju najdemo piksel, ki predstavlja del objekta, obarvamo
ostale piksle, ki so predstavljali ozadje, v barvo objekta. S tem smo pove
u s koordinatami x,y. Ugotovimo, da v okvirju obstajata dva piksla, ki
data objektu. Zato vse piksle spremenimo v piksle objekta.
kvir slike pred (a) ter po dilatacijskem filtriranju
Klemen Grosek, Diplomsko delo
belih slikah. Njegov efekt je ta, da poveča
zmanjša oziroma zapolni prazne
ako lahko združijo v večje
riranju (b)
pikslov velikost 3x3, 5x5, 7x7 …) sprehodimo
. Kadar v okvirju najdemo piksel, ki predstavlja del objekta, obarvamo
o povečali dimenzije
da v okvirju obstajata dva piksla, ki
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'.
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'.
1
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'.
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.
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.
1 1 2
1 1 2 2 2 3
Štetje pešcev s pomočjo računalniškega vida Stran 23
Dobimo naslednjo sliko:
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
1 1 2 2 2 3
1 1 2 2 3
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'.
Slika 3.24: Končana slika
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
Š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 (2I, 2, 3I, 3),
• centra objekta (težišče).
Štetje pešcev s pomočjo računalniškega vida Stran 29
Center objekta izračunamo z enačbama:
2J & 2 = 2I (3.5)
3J & 3 = 3I (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 2 (težišče 2),
• koordinata 3 (težišče 3).
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 23 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;
čas prehoda.
• Date;
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).
4K &
4J
1000 (4.1)
kjer je:
4K – čas procesiranja ene slike
4J – č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).
4J &
QueryPerformanceCounterYStop\ = QueryPerformanceCounterYStart\
QueryPerformanceFrequencyYFrequency\ (4.2)
kjer je:
QueryPerformanceCounterYStart\ – začetni čas časovnika
QueryPerformanceCounterYStop\ – končni čas časovnika
QueryPerformanceFrequencyYFrequency\ – frekvenca časovnika
4J – č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: [email protected]
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