Za´padoˇceska´ univerzita v Plzni Fakulta aplikovany´ch vˇed Katedra informatiky a vy´poˇcetn´ı techniky
Bakal´ aˇ rsk´ a pr´ ace Odhadov´ an´ı a predikce poˇ ctu lid´ı v menze na z´ akladˇ e anal´ yzy obrazu z kamer
Plzeˇ n 2012
ˇ Radek Smol´ ık
Prohl´ aˇ sen´ı Prohlaˇsuji, ˇze jsem bakal´aˇrskou pr´aci vypracoval samostatnˇe a v´ yhradnˇe s pouˇzit´ım citovan´ ych pramen˚ u. V Plzni dne 8. kvˇetna 2012 ˇ Radek Smol´ ık
Abstract Estimation and prediction of number of people in the university cafeteria based on analysis of camera pictures. The aim of this work is to create a program that handles images from cameras located on the premises of the university canteen. The program will then be able to estimate the current number of people inside. Results of the program should be used to obtain information about the movement of the people in the canteen. The work shows the possibilities of processing images by different methods and describes basic methods of working with pictures, you can find more details about described methods and also other methods in the cited literature. My solution is based on using thresholding method. Objects are separated from the background and then human figures are recognized. People are marked in the picture and the number of people is stored in the data field. Chart uses these values and shows information about the number of people in the canteen during the day. The program provides well results in case that people are not gathered in large groups, it works better for separated human figures. Large groups are splitted automatically in attempt to recognize people according their expected size, but results are not exact, as human shapes are overlaped.
Obsah ´ 1 Uvod 2 Zpracov´ an´ı obrazu 2.1 Pˇredzpracov´an´ı obrazu . . . . . . 2.1.1 Filtrace . . . . . . . . . . 2.1.2 Jasov´e transformace . . . 2.1.3 Geometrick´e transformace 2.2 Segmentace . . . . . . . . . . . . 2.2.1 Prahov´an´ı . . . . . . . . . 2.2.2 Detekce hran . . . . . . . 2.2.3 Nar˚ ust´an´ı oblast´ı . . . . . 2.2.4 Srovn´av´an´ı se vzorem . . .
1
. . . . . . . . .
. . . . . . . . .
3 Popis a identifikace objekt˚ u 3.1 Hranice objektu . . . . . . . . . . . . 3.1.1 Popis posloupnost´ı segment˚ u. 3.1.2 Freemanovy ˇretˇezov´e k´ody . . 3.2 Popisy jednoduch´ ych objekt˚ u . . . . 4 Klasifikace objekt˚ u 4.1 Pˇr´ıznakov´e rozpozn´av´an´ı . . . . . . . 4.1.1 Metoda nejbliˇzˇs´ıho souseda . 4.1.2 Metoda minim´aln´ı vzd´alenosti 4.2 Struktur´aln´ı rozpozn´av´an´ı . . . . . .
. . . . . . . . .
. . . .
. . . .
. . . . . . . . .
. . . .
. . . .
. . . . . . . . .
. . . .
. . . .
. . . . . . . . .
. . . .
. . . .
. . . . . . . . .
. . . .
. . . .
. . . . . . . . .
. . . .
. . . .
. . . . . . . . .
. . . .
. . . .
. . . . . . . . .
. . . .
. . . .
. . . . . . . . .
. . . .
. . . .
. . . . . . . . .
. . . .
. . . .
. . . . . . . . .
. . . .
. . . .
. . . . . . . . .
. . . .
. . . .
. . . . . . . . .
. . . .
. . . .
. . . . . . . . .
2 3 3 4 5 7 7 9 9 10
. . . .
11 11 11 12 13
. . . .
14 14 14 14 15
5 Praktick´ aˇ c´ ast 5.1 Stahov´an´ı dat . . . . . . . . . . 5.1.1 Struktura programu . . 5.2 Hled´an´ı objekt˚ u . . . . . . . . . 5.3 Identifikace nalezen´ ych objekt˚ u 5.3.1 Pˇrekryv postav . . . . . 5.4 Ladˇen´ı programu . . . . . . . . ˇ 5.5 Casy v´ ypoˇctu . . . . . . . . . . 5.6 V´ ysledky . . . . . . . . . . . . . 5.7 Vizualizace v´ ysledku . . . . . . 5.8 Z´avˇer . . . . . . . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
16 16 16 18 21 23 26 28 29 31 33
´ 1 Uvod C´ılem t´eto pr´ace je vytvoˇrit program, kter´ y zpracuje sn´ımky z kamer, um´ıstˇen´ ych v prostor´ach univerzitn´ı menzy tak, ˇze je schopen odhadnout aktu´aln´ı poˇcet str´avn´ık˚ u. V´ ysledky programu slouˇz´ı k z´ısk´an´ı pˇredstavy o pohybu str´avn´ık˚ u v prostor´ach menzy. Bude moˇzn´e urˇcit, v jak´ y den a v jakou denn´ı dobu menzu navˇstˇevuje nejv´ıce/nejm´enˇe lid´ı a podle v´ ysledk˚ u si zvolit, kdy je nejvhodnˇejˇs´ı menzu navˇst´ıvit, aniˇz by bylo nutn´e ˇcekat ve front´ach na v´ ydej j´ıdel. K vytvoˇren´ı programu je pouˇzit jazyk JAVA. Program nejprve z´ısk´av´a sn´ımky z kamer, kter´e ukl´ad´a na disk. Na sn´ımky se aplikuj´ı metody pro zpracov´an´ı a u ´pravu digit´aln´ıho obrazu, aby byla koneˇcn´a identifikace lidsk´ ych postav v obraze co nejpˇresnˇejˇs´ı. V´ ysledky programu jsou k dispozici ve formˇe grafu.
1
2 Zpracov´an´ı obrazu Obraz lze ch´apat jako obrazovou funkci f (x, y), kde (x, y) jsou souˇradnice pixelu. Hodnota f (x, y) ud´av´a informaci o barvˇe v dan´em bodˇe, kter´a m˚ uˇze nab´ yvat r˚ uzn´ ych hodnot v z´avislosti na bitov´e hloubce obrazu. Bitov´a hloubka obrazu ud´av´a mnoˇzstv´ı barev, kter´e jsou k dispozici pro kaˇzd´ y pixel. Napˇr. pro 1 bitovou hloubku jsou k dispozici dvˇe moˇzn´e hodnoty – b´ıl´a a ˇcern´a. Se vzr˚ ustaj´ıc´ım poˇctem bit˚ u roste jejich mnoˇzstv´ı. Pro barevn´e obrazy se pouˇz´ıvaj´ı barevn´e modely. Pro RGB model je kaˇzd´ y bod obrazu tvoˇren tˇremi hodnotami (barevn´ ymi kan´aly). Tzn., ˇze pˇri 8 bitov´e hloubce na kaˇzd´ y kan´al RGB je potˇreba 8 ∗ 3 = 24bit˚ u. Pˇr´ıklady bitov´ ych hloubek pro 3 kan´aly RGB (tab. 2.1): Bit˚ u na kan´al Barev na kan´al Bit˚ u na pixel Barev pixelu 4 4 16(2 ) 3 ∗ 4 = 12 4096(212 ) 8 256(28 ) 3 ∗ 8 = 24 16777216(224 ) 16 65536(216 ) 3 ∗ 16 = 48 248 Tabulka 2.1: Bitov´e hloubky obrazu (RGB) Barevn´e modely (RGB, CMYK, HSV a dalˇs´ı) reprezentuj´ı barvu pixelu:
• RGB – hodnota se skl´ad´a ze tˇr´ı sloˇzek, kan´al˚ u (R – ˇcerven´a, G – zelen´a, B – modr´a barva) • CMYK – ˇctyˇri sloˇzky (C – azurov´a, M – purpurov´a, Y – ˇzlut´a, K – ˇcern´a barva) • HSV – tˇri sloˇzky (H – odst´ın barvy, S – sytost barvy, V – hodnota jasu)
2
Zpracov´an´ı obrazu
2.1
Pˇredzpracov´an´ı obrazu
Pˇ redzpracov´ an´ı obrazu
C´ılem pˇredzpracov´an´ı je pˇripravit obraz tak, aby byl poˇzadovan´ y v´ ysledek zpracov´an´ı co nejlepˇs´ı. Metody se dˇel´ı do nˇekolika skupin viz obr. 2.1, v z´avislosti na okol´ı aktua´ln´ıho bodu (pixelu): • bodov´e – bod je urˇcen na z´akladˇe jednoho bodu p˚ uvodn´ıho obrazu. • lok´aln´ı – bod je z´avisl´ y na mal´em okol´ı bodu p˚ uvodn´ıho obrazu. • glob´aln´ı – v´ ysledn´ y bod se urˇcuje na z´akladˇe cel´eho p˚ uvodn´ıho obrazu.
Obr´azek 2.1: Moˇznosti pˇredzpracov´an´ı obrazu
2.1.1
Filtrace
Kromˇe samotn´e informace o obrazu se m˚ uˇze v obraze vyskytovat faleˇsn´a informace nahodil´eho p˚ uvodu [5]. Obraz vypad´a jako zrnit´ y. Tato informace ˇ se naz´ yv´a ˇsum a je neˇz´adouc´ı. Sum je pˇrid´an do obrazu bˇehem jeho sn´ım´an´ı. Je vˇetˇsinou zp˚ usoben sn´ımac´ım zaˇr´ızen´ım nebo pˇr´ıtomnost´ı prachu na sc´enˇe. Jeho pˇr´ıtomnost ztˇeˇzuje dalˇs´ı zpracov´av´an´ı obrazu a ˇcasto je nutn´e ho potlaˇcit. K tomu se pouˇz´ıvaj´ı r˚ uzn´e filtry. Filtrace, neboli vyhlazov´an´ı, pracuje vˇzdy s vˇetˇs´ım mnoˇzstv´ım sn´ımk˚ u nebo s okol´ım bodu.
3
Zpracov´an´ı obrazu
Pˇredzpracov´an´ı obrazu
Metoda pr˚ umˇerov´an´ı pˇres v´ıce sn´ımk˚ u je zaloˇzena na porovn´av´an´ı pixel˚ u jednotliv´ ych obr´azk˚ u a jako v´ ysledn´a hodnota se vezme jejich pr˚ umˇern´a nebo nejˇcastˇeji se vyskytuj´ıc´ı hodnota. Druh´a metoda pracuj´ıc´ı s okol´ım bodu, zpracov´av´a sousedn´ı hodnoty pixel˚ u, kter´e mohou m´ıt pˇredem zvolenou v´ahu a urˇcuje v´ yslednou hodnotu pixelu jako pr˚ umˇer nebo medi´an okol´ı. Filtrace s sebou nese nˇekolik nev´ yhod. Pˇri filtraci v´ıce sn´ımk˚ u roste v´ ypoˇcetn´ı n´aroˇcnost. Filtrac´ı se tak´e ztr´ac´ı ˇca´st informace z obrazu, doch´az´ı ke sn´ıˇzen´ı ostrosti hran a obraz se jev´ı jako rozmazan´ y. Podrobnˇejˇs´ı informace o tˇechto metod´ach a dalˇs´ıch zp˚ usobech filtrov´an´ı viz [2].
2.1.2
Jasov´ e transformace
Pokud je obraz nerovnomˇernˇe nebo nevhodnˇe osvˇetlen, je moˇzn´e vyuˇz´ıt jasov´e transformace. Hodnota jasu kaˇzd´eho bodu se nahrad´ı novou hodnotou, v z´avislosti na prov´adˇen´e operaci (viz obr. 2.2).
Obr´azek 2.2: Jasov´e transformace: a) p˚ uvodn´ı obraz [8], b) u ´prava jasu, c) u ´prava kontrastu, d) negativ obrazu. Pˇri transformaci m˚ uˇze doj´ıt ke ztr´atˇe informace, napˇr. pˇri extr´emn´ım zv´ yˇsen´ı jasu se ztrat´ı ˇca´st obrazov´ ych dat a zpˇet je jiˇz nelze z´ıskat.
4
Zpracov´an´ı obrazu
Pˇredzpracov´an´ı obrazu
Na obr. 2.3 je vidˇet, jak transformace jasu prob´ıh´a. Napˇr. p˚ uvodn´ı hodnota jasu 100 se nahrad´ı vˇetˇs´ı hodnotou 200.
Obr´azek 2.3: Funkce jasov´e transformace: zv´ yˇsen´ı jasu
2.1.3
Geometrick´ e transformace
Mnohdy je potˇreba obraz vhodnˇe pootoˇcit, zmenˇsit, posunout, apod. K tomu slouˇz´ı geometrick´e transformace, kter´e mohou b´ yt ztr´atov´e. Napˇr. zmˇena velikosti obrazu se prov´ad´ı interpolac´ı obrazu a existuj´ı r˚ uzn´e stupnˇe. (Pro 1.stupeˇ n interpolace se pˇri zvˇetˇsov´an´ı obr´azku pˇrid´av´a mezi kaˇzd´e dva sousedn´ı pixely jeden nov´ y (obr. 2.4), tzn. ˇze z p˚ uvodnˇe jednoho pixelu se udˇelaj´ı ˇctyˇri. Pro 2. stupeˇ n se pak pˇrid´avaj´ı dva nov´e pixely, apod.) Nov´e pixely se poˇc´ıtaj´ı na z´akladˇe zvolen´ ych metod interpolace:
• Nejbliˇzˇs´ı soused – nov´ y bod je dopoˇc´ıt´an podle nejbliˇzˇs´ıho bodu p˚ uvodn´ıho obrazu. • Biline´arn´ı interpolace – nov´ y bod je dopoˇc´ıt´an podle 2 nejbliˇzˇs´ıch bod˚ u. • Bikubick´a interpolace – nov´ y bod je dopoˇc´ıt´an podle 4 nejbliˇzˇs´ıch bod˚ u.
V´ıce o interpolaci obrazu [6]. 5
Zpracov´an´ı obrazu
Pˇredzpracov´an´ı obrazu
Pˇr´ıklad interpolace 1.stupnˇe pro zvˇetˇsen´ı obrazu viz obr. 2.4. Mezi kaˇzd´e dva sousedn´ı body se pˇrid´a jeden nov´ y – na obr. 2.4b) ˇsed´e body.
Obr´azek 2.4: Interpolace 1.stupnˇe, zvˇetˇsen´ı: a) p˚ uvodn´ı obraz, b) postup zvˇetˇsen´ı, c) v´ ysledek Zmenˇsen´ım se ztr´ac´ı informace a dojde ke ztr´atˇe detail˚ u a rozostˇren´ı obrazu. Na obr. 2.5 je vidˇet ztr´ata informace obrazu po jeho zmenˇsen´ı.
Obr´azek 2.5: Ztr´ata informace obrazu
6
Zpracov´an´ı obrazu
2.2
Segmentace
Segmentace
C´ılem segmentace je nalezen´ı objekt˚ u v obraze. Obraz je rozdˇelen na ˇc´asti, kde kaˇzd´a ˇc´ast pˇredstavuje jeden objekt obrazu. Nev´ yhodou segmentace obrazu je nutnost ˇc´asteˇcnˇe zn´at obsah zobrazovan´e sc´eny, aby v˚ ubec bylo moˇzn´e naj´ıt jednotliv´e objekty. Proto se m´ısto jednotliv´ ych objekt˚ u v obraze hledaj´ı jen souvisl´e oblasti s podobn´ ymi vlastnostmi a ty se d´ale zpracov´avaj´ı.
Hlavn´ı skupiny segmentace: • Prahov´an´ı • Segmentace zaloˇzen´a na detekci hran • Segmentace zaloˇzen´a na hled´an´ı oblast´ı
2.2.1
Prahov´ an´ı
Jedn´a se o nejjednoduˇsˇs´ı metodu segmentace. C´ılem t´eto metody je oddˇelit objekty od pozad´ı. Vyuˇz´ıv´a se histogramu (obr. 2.6), kter´ y ud´av´a, kolik pixel˚ u z obrazu m´a jak´ y jas. Oddˇelen´ı objekt˚ u od pozad´ı je urˇceno volbou prahu v histogramu (obr. 2.7). Pixely leˇz´ıc´ı pod prahem dostanou hodnotu 0, tj. jedn´a se o pozad´ı, pixely nad prahem dostanou 1, jde o objekty. Z toho je jasn´e, ˇze vznikne obraz pouze se dvˇema hodnotami pixel˚ u, tedy obraz bin´arn´ı. Tato metoda nem´a pˇr´ıliˇs v´ yznam pro objekty, kter´e maj´ı jasem velice bl´ızko k pozad´ı. Zde nen´ı moˇzn´e urˇcit takov´ y pr´ah, kter´ y by objekty dok´azal rozumnˇe segmentovat. Je nˇekolik zp˚ usob˚ u prahov´an´ı. Glob´aln´ı prahov´an´ı vyuˇz´ıv´a jeden pr´ah pro cel´ y obraz. Dalˇs´ım prahov´an´ı je tzv. adaptivn´ı prahov´an´ı, kter´e pouˇz´ıv´a v´ıce prah˚ u pro r˚ uzn´e oblasti obrazu. V pˇr´ıpadˇe, ˇze nechceme jen bin´arn´ı obraz, lze volit vˇetˇs´ı poˇcet prah˚ u. Pak napˇr. pro dva prahy dostaneme obraz se tˇremi hodnotami pixel˚ u, apod. 7
Zpracov´an´ı obrazu
Segmentace
Obr´azek 2.6: Histogram pro obr. 2.7 a) V nˇekter´ ych pˇr´ıpadech je uˇziteˇcn´e pouˇz´ıvat poloprahov´an´ı. Vˇsechny pixely pozad´ı maj´ı stejnou hodnotu (napˇr. b´ıl´a nebo ˇcern´a barva), zat´ımco pixely objekt˚ u si zachovaj´ı sv´e p˚ uvodn´ı hodnoty.
Obr´azek 2.7: Volba prahu: a) p˚ uvodn´ı sn´ımek [9], b) n´ızk´ y, b) vhodn´ y, c) vysok´ y pr´ah. 8
Zpracov´an´ı obrazu
2.2.2
Segmentace
Detekce hran
Hrana v obraze je m´ısto, kde doch´az´ı k v´ yrazn´e zmˇenˇe intenzity jasu (obr. 2.8). Pro jej´ı nalezen´ı se pouˇz´ıvaj´ı gradientn´ı metody, vyuˇz´ıvaj´ıc´ı hranov´e oper´atory [2]. Hranov´e oper´atory lze pouˇz´ıt pro detekci ˇcar a bod˚ u v obraze.
Obr´azek 2.8: Nalezen´ı hran v obraze 2.2 a)
2.2.3
Nar˚ ust´ an´ı oblast´ı
Metoda se d´a uplatnit v obraze, kde je pˇr´ıtomn´ y ˇsum a obt´ıˇznˇe se hledaj´ı hranice objekt˚ u. Vyuˇz´ıv´a vlastnosti homogenity, tj. rozdˇel´ı obraz do co nejvˇetˇs´ıch souvisl´ ych oblast´ı, kter´e jsou homogenn´ı. Vˇetˇsinou se jako krit´erium homogenity povaˇzuje jasov´a sloˇzka nebo barva. Hled´an´ı oblast´ı prob´ıh´a tak, ˇze v prvn´ım kroku se povaˇzuje kaˇzd´ y bod obrazu za samostatnou oblast. Okolo bodu se hledaj´ı sousedn´ı oblasti, kter´e spln ˇuj´ı krit´erium homogenity. Pokud podm´ınku splˇ nuj´ı, tyto oblasti se spoj´ı a vystupuj´ı jako jedna oblast. Takto se pokraˇcuje, dokud nenalezneme vˇsechny maxim´aln´ı oblasti. P˚ uvodn´ı rozdˇelen´ı obrazu nemus´ı b´ yt vˇzdy v pomˇeru jeden bod je jedna oblast, ale lze zvolit poˇca´teˇcn´ı segmentaci obrazu na oblasti o velikosti 2x2, 4x4 pixel˚ u apod. T´ımto se d´a dobˇre eliminovat pˇr´ıtomnost ˇsumu. 9
Zpracov´an´ı obrazu
2.2.4
Segmentace
Srovn´ av´ an´ı se vzorem
Pro aplikaci t´eto metody mus´ıme pˇredem pˇresnˇe zn´at, jak hledan´ y objekt vypad´a. Vytvoˇren´ y vzor objektu hled´ame v obraze. Testuje se m´ıra souhlasu obrazu se vzorem. Test se prov´ad´ı pro kaˇzd´ y bod obrazu, proto je metoda velmi ˇcasovˇe n´aroˇcn´a. Dalˇs´ı komplikac´ı je moˇznost natoˇcen´ı, ˇci zkreslen´ı objektu v obraze. V tomto pˇr´ıpadˇe by bylo nutn´e testovat m´ıru souhlasu pro vˇsechny moˇznosti geometrick´e transformace. To m´a za n´asledek dalˇs´ı zv´ yˇsen´ı ˇcasov´e ˇ n´aroˇcnosti. Sum pˇr´ıtomn´ y v obraze ovlivˇ nuje m´ıru souhlasu se vzorem. To lze ˇc´asteˇcnˇe vyˇreˇsit pouˇzit´ım filtr˚ u. V´ıce o metod´ach segmentace [2].
10
3 Popis a identifikace objekt˚ u Objekt lze popsat oblast´ı nebo hranic´ı v obraze. Jsou dva druhy popisu objektu. Z prvn´ıho lze zpˇetnˇe rekonstruovat tvar objektu, tzn. popis zachov´av´a informace. Druh´ y zp˚ usob pop´ıˇse objekt, ale zpˇetnˇe jiˇz nelze z´ıskat informaci o jeho tvaru.
3.1 3.1.1
Hranice objektu Popis posloupnost´ı segment˚ u
Hranice objekt˚ u se nahrazuj´ı r˚ uzn´ ymi typy segment˚ u, kter´e se mus´ı pˇredem definovat a oˇc´ıslovat (obr. 3.1). V´ yslednou hranici reprezentuje posloupnost ˇc´ısel segment˚ u.
Obr´azek 3.1: Segmenty hranice
11
Popis a identifikace objekt˚ u
3.1.2
Hranice objektu
Freemanovy ˇ retˇ ezov´ e k´ ody
Popisuje objekty na z´akladˇe smˇeru hranice (obr. 3.2). Pro kaˇzd´ y bod hranice urˇc´ı zmˇenu oproti pˇredchoz´ımu a pop´ıˇse hranici odpov´ıdaj´ıc´ım ˇc´ıslem. Popis lze volit pro tzv. 4-okol´ı nebo 8-okol´ı. Podle typu okol´ı je dosaˇzena pˇresnost popisu hranice. Popis je nez´avisl´ y na otoˇcen´ı objektu.
Obr´azek 3.2: Typy okol´ı: a) 4-okol´ı, b) 8-okol´ı Pˇr´ıklad popisu obr´azku pro 8-okol´ı (obr. 3.3):
Obr´azek 3.3: Pˇr´ıklad 8-okol´ı Freeman˚ uv k´od: 076553221
12
Popis a identifikace objekt˚ u
Popisy jednoduch´ych objekt˚ u
Geometrick´ e popisy Vyuˇz´ıvaj´ı se ˇca´steˇcnˇe Freemanovy ˇretˇezov´e k´ody. U metody pˇr´ımost hranice se urˇcuje pomˇer mezi celkov´ ym poˇctem bod˚ u v hranici a poˇctem bod˚ u, ve kter´ ych hranice nen´ı pˇr´ım´a, tzn. kde mˇen´ı smˇer. Metoda d´elka hranice pˇriˇrazuje d´elku o hodnotˇe 1 horizont´aln´ım a vertik´aln´ım posuv˚ um, pro diagon´aln´ı posuv je d´ana hodnota odmocniny 2. Takto se urˇc´ı d´elka hranice, kter´a je vlastnˇe obvodem objektu.
3.2
Popisy jednoduch´ ych objekt˚ u
Metoda m´a vyuˇzit´ı pouze pro velmi jednoduch´e tvary objekt˚ u. Popisuje se cel´a oblast objektu. Vyuˇz´ıvaj´ı se k tomu napˇr. n´asleduj´ıc´ı vlastnosti:
• Podlouhlost: pomˇer mezi d´elkou a ˇs´ıˇrkou nejmenˇs´ıho opsan´eho obd´eln´ıku • V´ ystˇrednost: pomˇer dvou nejdelˇs´ıch na sebe kolm´ ych tˇetiv • Velikost: poˇcet bod˚ u v objektu • Nekompaktnost: delka hranice2 velikost • Eulerovo ˇc´ıslo: poˇcet souvisl´ych oblast´ı - poˇcet dˇer (obr. 3.4) • V´ yˇska, ˇs´ıˇrka
Obr´azek 3.4: Eulerovo ˇc´ıslo: 1 souvisl´a oblast, 2 d´ıry. 13
4 Klasifikace objekt˚ u Klasifikace je posledn´ım krokem pˇri zpracov´an´ı obrazu. Klasifikac´ı se rozum´ı zaˇrazov´an´ı nalezen´ ych objekt˚ u do tˇr´ıd, kter´e jsou pˇredem zn´amy.
4.1
Pˇ r´ıznakov´ e rozpozn´ av´ an´ı
Metoda je zaloˇzena na vyuˇzit´ı pˇr´ıznak˚ u. Hodnoty jednotliv´ ych pˇr´ıznak˚ u vytvoˇr´ı vektor, kter´ ym je pak obraz charakterizov´an.
Zp˚ usob zaˇ razen´ı objekt˚ u do tˇ r´ıd se prov´ ad´ı pomoc´ı n´ asleduj´ıc´ıch klasifik´ ator˚ u:
4.1.1
Metoda nejbliˇ zˇ s´ıho souseda
Tˇr´ıdˇen´ı objekt˚ u prob´ıh´a tak, ˇze se urˇcuje vzd´alenost od vˇsech objekt˚ u, kter´e jsou jiˇz zaˇrazeny a objektu, kter´ y se zaˇrazuje. Tˇr´ıda nejbliˇzˇs´ıho objektu je pˇriˇrazena nov´emu objektu. Pro hled´an´ı vzd´alenosti se pouˇz´ıv´a napˇr. Euklidovsk´a metrika [7] a je poˇc´ıt´ana z pˇr´ıznakov´ ych vektor˚ u objekt˚ u, tj. jak jsou si objekty podobn´e.
4.1.2
Metoda minim´ aln´ı vzd´ alenosti
Jednotliv´e tˇr´ıdy zde zastupuje pouze jeden hlavn´ı objekt. Ten m´a souˇradnice tˇeˇziˇstˇe vˇsech objekt˚ u dan´e tˇr´ıdy. Pˇriˇrazen´ı tˇr´ıd prob´ıh´a podobnˇe jako u pˇredchoz´ı metody nejbliˇzˇs´ı soused, tj. na z´akladˇe minim´aln´ı vzd´alenosti od hlavn´ıho a vkl´adan´eho objektu.
14
Klasifikace objekt˚ u
4.2
Struktur´aln´ı rozpozn´av´an´ı
Struktur´ aln´ı rozpozn´ av´ an´ı
Objekt se pop´ıˇse jeho element´arn´ımi vlastnostmi, kter´ ym se ˇr´ık´a primitiva. Primitiva maj´ı mezi sebou vz´ajemn´ y vztah (obr. 4.1).
Obr´azek 4.1: Struktur´aln´ı rozpozn´av´an´ı: primitiva
15
5 Praktick´a ˇc´ast D˚ uleˇzitou ˇc´ast´ı k naps´an´ı programu jsou zdrojov´a data. Ty lze z´ıskat z univerzitn´ıch kamer, um´ıstˇen´ ych v prostor´ach menzy. Pro sbˇer dat jsem vytvoˇril aplikaci (obr. 5.1), napsanou v jazyce JAVA, kter´a sb´ır´a data ze vˇsech kamer menzy.
Obr´azek 5.1: Aplikace pro stahov´an´ı obrazu kamer
5.1
Stahov´ an´ı dat
Data jsou z´ısk´av´ana ze tˇr´ı kamer, um´ıstˇen´ ych v prostor´ach budovy univerzitn´ı menzy. Jejich obraz je dostupn´ y na webov´ ych str´ank´ach [http://skm.zcu.cz], odkud je aplikace stahuje. Obrazy kamer se vˇzdy mˇen´ı ve stanoven´em intervalu, pˇri kter´em se ukl´adaj´ı na disk. Kamery funguj´ı pouze v provozn´ı dobu menzy, tj. 4,5 hodiny dennˇe. Testovac´ı data jsem sb´ıral ze vˇsech kamer po dobu jednoho t´ ydne.
5.1.1
Struktura programu
Program mus´ı po spuˇstˇen´ı nepˇretrˇzitˇe stahovat sn´ımky z kamer. Ty ale bˇeˇz´ı pouze v pracovn´ı dny a v provozn´ı dobˇe menzy. Pozoroval jsem, ˇze ˇcasto nˇekter´a kamera nebˇeˇz´ı a neposkytuje potˇrebn´ y obraz nebo nen´ı dostupn´ y na webov´ ych str´ank´ach z d˚ uvodu v´ ypadku internetov´eho pˇripojen´ı.
16
Praktick´a ˇc´ast
Stahov´an´ı dat
Cel´ y program je zaloˇzen na syst´emov´em ˇcase (tˇr´ıda Hodiny.java). Program kontroluje ˇcas a bˇehem otev´ırac´ı doby stahuje (StahniObrazek.java) data z kamer. Stahov´an´ı prob´ıh´a v intervalu zmˇeny sn´ımk˚ u kamer. Mimo provozn´ı dobu menzy program pouze ˇcek´a na jej´ı otevˇren´ı. Aby neprob´ıhalo zbyteˇcnˇe stahov´an´ı dat i pˇres v´ıkendy, program kontroluje syst´emov´ y datum a z´ısk´av´a data pouze v pracovn´ı dny. Pˇred samotn´ ym stahov´an´ım sn´ımk˚ u se prov´ad´ı test dostupnosti URL (ExistenceURL.java). To ˇreˇs´ı probl´emy v´ ypadk˚ u stahov´an´ı, kter´e mohou vzniknout nedostupnost´ı webov´ ych str´anek, nefunkˇcn´ıho internetov´eho pˇripojen´ı nebo nedostupnosti nˇekter´e z kamer. V tomto pˇr´ıpadˇe se program st´ale snaˇz´ı v intervalu obnovy sn´ımk˚ u stahovat dalˇs´ı data. Pokud jsou splnˇeny vˇsechny podm´ınky v programu, tj. menza je otevˇren´a, je pracovn´ı den a jsou dostupn´a data z kamer, dojde k jejich uloˇzen´ı na disk (UlozObrazek.java). V uˇzivatelsk´em rozhran´ı (OknoOvladani.java) je uˇzivatel informov´an o aktu´aln´ım ˇcase a datu (obr. 5.1). Zobrazuje se dostupnost kamer a informace, zda je aktu´alnˇe menza otevˇrena.
Pamˇ et’ov´ e n´ aroky Velikost jednoho uloˇzen´eho sn´ımku se pohybuje od 30 do 50 kB. Pro sn´ımky jednoho dne ze tˇr´ı kamer (3 ∗ 1607 = 4821) je potˇrebn´e m´ısto na disku kolem 240 MB. Dalˇs´ım u ´kolem bylo vhodnˇe navrhnout algoritmus, kter´ y na z´ıskan´ ych sn´ımc´ıch identifikuje osoby. K tomu je potˇreba jednotliv´e sn´ımky pˇredem pˇredzpracovat. Jelikoˇz zpracov´an´ı obrazu je z´avisl´e na mnoha faktorech, napˇr. osvˇetlen´ı sn´ıman´e sc´eny, ˇsumu v obraze, bylo nutn´e navrhnout takov´ y algoritmus, kter´ y by co moˇzn´a nejv´ıce eliminoval tyto neˇz´adouc´ı vlastnosti.
17
Praktick´a ˇc´ast
5.2
Hled´an´ı objekt˚ u
Hled´ an´ı objekt˚ u
Prvn´ım krokem pˇri hled´an´ı lidsk´ ych postav je oddˇelen´ı pozad´ı od popˇred´ı sn´ımku, tj. lidsk´ ych postav. Z toho plyne, ˇze je vhodn´e zaˇc´ıt upravovat sn´ımky metodou prahov´an´ı (tˇr´ıda Prahovani.java), kter´a pˇresnˇe toto spln ˇuje. Aby bylo moˇzn´e pouˇz´ıt prahov´an´ı, je nejdˇr´ıve nutn´e pˇrev´est barevn´ y sn´ımek na ˇsedot´onov´ y (PrevodDoCB.java). Ztrat´ı se tak informace o barvˇe, ale to dalˇs´ımu zpracov´an´ı nevad´ı, nebot’ pouˇzit´ y algoritmus je navrˇzen tak, aby pracoval pouze s bin´arn´ım obrazem. Hledan´e objekty (postavy) v obraze se odliˇsuj´ı od pozad´ı (jsou tmavˇs´ı), tj. ide´aln´ı pro vyuˇzit´ı metody prahov´an´ı. Proto nen´ı nutn´e d´ale vyuˇz´ıvat informaci o barvˇe a staˇc´ı pouze bin´arn´ı obraz (obr. 5.3). B´ıl´a – objekty, ˇcern´a – pozad´ı. Pˇr´ıklady pˇredzpracov´an´ı budu ukazovat na n´asleduj´ıc´ım obr. 5.2 z prvn´ı kamery, nicm´enˇe metody funguj´ı i pro ostatn´ı kamery.
Obr´azek 5.2: Vzorov´ y obr´azek Jak je vidˇet na obr´azc´ıch 5.2 a 5.3, doˇslo k oddˇelen´ı pozad´ı od popˇred´ı a z˚ ustaly zv´ yraznˇeny pouze objekty. 18
Praktick´a ˇc´ast
Hled´an´ı objekt˚ u
Obr´azek 5.3: Obr´azek 5.2 po prahov´an´ı Bohuˇzel mezi objekty se nenal´ezaj´ı jen lidsk´e postavy. Jsou zde napˇr. r˚ uzn´e stojany, ˇc´ast televizoru a spousta dalˇs´ıho ˇsumu. ˇ ast objekt˚ C´ u by se mohla odstranit vhodnˇejˇs´ı volbou prahu pˇri prahov´an´ı, ale mus´ıme br´at ohled na to, ˇze nejsou vˇsechny sn´ımky stejnˇe osvˇetleny. Tzn., ˇze bychom se mohli v jednom sn´ımku zbavit ˇsumu a neˇza´douc´ıch objekt˚ u, ale jiˇz v dalˇs´ım sn´ımku by se mohlo st´at, ˇze d´ıky ˇspatn´emu osvˇetlen´ı ztrat´ıme i nˇekter´e lidsk´e postavy. Proto je nutn´e zvolit hodnotu prahu takovou, aby prahov´an´ı bylo efektivn´ı pro vˇsechny sn´ımky a neztr´aceli jsme informace o lidsk´ ych postav´ach. Vice informac´ı o vhodn´e volbˇe prahu v kapitole 5.4. Neˇza´douc´ıch objekt˚ u se kompletnˇe po prahov´an´ı nezbav´ıme. Proto je nutn´e dalˇs´ı zpracov´an´ı obrazu. Uv´aˇz´ıme-li, ˇze se postavy pohybuj´ı vˇzdy jen v urˇcit´e ˇca´sti sn´ımku, je moˇzn´e m´ısta, kde se osoby nemohou vyskytnou, d´ale vynechat ze zpracov´an´ı (OriznutiObrazu.java). Pro kaˇzdou kameru se jedn´a o jin´a m´ısta, viz n´asleduj´ıc´ı uk´azky obr. 5.4, 5.5, 5.6. M´ısta jsou oznaˇcena ˇcervenou barvou. V t´eto ˇca´sti programu se odstran´ı i liˇsta v doln´ı ˇca´sti sn´ımku, informuj´ıc´ı o aktu´aln´ım datu a ˇcase.
19
Praktick´a ˇc´ast
Hled´an´ı objekt˚ u
Obr´azek 5.4: Oˇr´ıznut´ı 1.kamera
Obr´azek 5.5: Oˇr´ıznut´ı 2.kamera
Obr´azek 5.6: Oˇr´ıznut´ı 3.kamera
20
Praktick´a ˇc´ast
Identifikace nalezen´ych objekt˚ u
Odstranˇen´ı tˇechto oblast´ı eliminuje ˇca´st neˇz´adouc´ıch objekt˚ u v obraze a t´ım se usnadn´ı identifikace postav.
5.3
Identifikace nalezen´ ych objekt˚ u
Aktu´alnˇe jsou k dispozici sn´ımky z kamer, kter´e jsou upraveny tak, ˇze by mˇely obsahovat pouze poˇzadovan´e objekty, tj. lidsk´e postavy. Jak je vidˇet napˇr. na obr. 5.4, jsou na sn´ımku vidˇet i dalˇs´ı objekty, kter´e jsou nadbyteˇcn´e. Proto je nutn´e navrhnout takov´ y algoritmus, kter´ y je schopen rozeznat lidskou postavu od ostatn´ıch objekt˚ u v obraze. Uv´aˇz´ıme-li, ˇze lidsk´a postava se ve sn´ımc´ıch jev´ı jako pln´ y, vˇetˇs´ı, podlouhl´ y a vysok´ y objekt, usnadn´ı se t´ım jeho odliˇsen´ı od ostatn´ıch. Bohuˇzel objekty v zadn´ıch ˇca´st´ı sn´ıman´eho prostoru se jev´ı jako menˇs´ı, proto bude obt´ıˇznˇejˇs´ı je identifikovat, viz prav´ y horn´ı roh obr. 5.4. Aby bylo moˇzn´e splnit zad´an´ı pr´ace, je potˇreba dostat ze sn´ımku u ´daj o poˇctu vyskytuj´ıc´ıch se osob. Nestaˇc´ı tedy jen vizu´aln´ı informace. Proto je cel´ y sn´ımek prohled´av´an a hledaj´ı se objekty jiˇz zmiˇ novan´ ych vlastnost´ı (souvisl´a, vysok´a oblast), (OznacPostavu.java). Prohled´av´an´ı sn´ımku je ˇreˇseno dvˇema cykly for. Sn´ımek je tedy matice bod˚ u, kter´a se prohled´av´a [1]. Aby proch´azen´ı sn´ımku netrvalo pˇr´ıliˇs dlouho, zvolil jsem zpracov´av´an´ı pixel˚ u ze sn´ımku s urˇcit´ ym rozestupem. T´ım mysl´ım, ˇze nezpracov´av´am pixel po pixelu a ˇr´adku po ˇra´dce, ale vˇzdy kaˇzd´ y x-t´y pixel a kaˇzdou x-tou ˇra´dku (viz obr. 5.7 ). T´ım se ˇca´steˇcnˇe eliminuj´ı i chyby oblast´ı, kter´e nemus´ı b´ yt nutnˇe v cel´e ˇra´dce souvisl´e, napˇr. pˇri nevhodn´e volbˇe hodnoty prahu, m˚ uˇze vzniknou v souvisl´e oblasti pr´azdn´e m´ısto. Body na obr. 5.7 vznikly tak, ˇze pˇri prohled´av´an´ı sn´ımku po ˇra´dc´ıch se nalezla v ˇradˇe souvisl´a oblast bod˚ u. Geometricky si to lze pˇredstavit, ´ cka vznikne tak, ˇze vezmu pixel v obraze a jeho ˇze v ˇra´dce je u ´seˇcka. Useˇ n´asleduj´ıc´ıch x pixel˚ u, na z´akladˇe zvolen´eho rozliˇsen´ı.
21
Praktick´a ˇc´ast
Identifikace nalezen´ych objekt˚ u
Obr´azek 5.7: Rozliˇsen´ı s hodnotou 7 pro obr. 5.2 Pokud tyto pixely tvoˇr´ı plnou ˇc´aru, na m´ıstˇe prvn´ıho pixelu vytvoˇr´ım bod. Aby se eliminovaly chyby po prahov´an´ı, je zde moˇznost tolerovat urˇcitou chybu, kdy nalezen´a u ´seˇcka m˚ uˇze b´ yt pˇreruˇsena. V´ıce v kapitole 5.4. T´ımto postupem nalezneme v obraze body, jejichˇz poˇcet v ˇra´dce symbolizuje ˇs´ıˇrku objektu. Na obr. 5.7 je st´ale vidˇet pˇr´ıtomn´ y ˇsum, tj. osamocen´e body nebo mal´e skupinky bod˚ u. Tyto body se odstran´ı velice snadno a to tak, ˇze pokud se najde ve sn´ımku jak´ ykoliv bod, kter´ y nem´a alespoˇ n jeden sousedn´ı bod, je smaz´an (OznacPostavu.java). Dalˇs´ım krokem je zjiˇstˇen´ı pro kaˇzdou skupinu bod˚ u, zda se opravdu jedn´a o lidskou postavu, nikoli napˇr. chladniˇcku apod. Zjist´ı se ˇs´ıˇrka a v´ yˇska kaˇzd´e skupiny podle poˇctu bod˚ u v ˇra´dce a ve sloupci. Pokud zjiˇstˇen´e hodnoty odpov´ıdaj´ı nastaven´ ym parametr˚ um pro postavu (kapitola 5.4), je oblast prohl´aˇsena za postavu. Bˇehem zjiˇst’ov´an´ı ˇs´ıˇrky a v´ yˇsky oblasti se zjiˇst’uj´ı krajn´ı body oblasti, kter´e v pˇr´ıpadˇe prohl´aˇsen´ı oblasti za postavu slouˇz´ı k vizu´aln´ımu oznaˇcen´ı oblasti do p˚ uvodn´ıho sn´ımku (obr. 5.8, 5.9, 5.14).
22
Praktick´a ˇc´ast
Identifikace nalezen´ych objekt˚ u
Obr´azek 5.8: Oznaˇcen´ı postav: 1.kamera
Obr´azek 5.9: Oznaˇcen´ı postav: 2.kamera
5.3.1
Pˇ rekryv postav
Pˇresnou identifikaci jednotliv´ ych osob ztˇeˇzuje velmi ˇcast´ y pˇrekryv postav. Doposud popsan´ y algoritmus identifikuje shluk postav pouze jako jedinou, proto je tˇreba ho d´ale upravit.
23
Praktick´a ˇc´ast
Identifikace nalezen´ych objekt˚ u
Vyuˇzil jsem k tomu znalosti pˇribliˇzn´e velikosti postav vzhledem k pozici na sn´ımku. Tzn., ˇze bliˇzˇs´ı postava ke kameˇre je na sn´ımku vˇetˇs´ı, neˇzli postava v d´ali. Objev´ı-li se v bl´ızkosti kamery objekt velikosti, kter´ y neodpov´ıd´a pˇredpokl´adan´ ym rozmˇer˚ um lidsk´e postavy, bud’to ˇsirˇs´ı nebo vyˇsˇs´ı, bude tento objekt rozdˇelen na ˇca´sti, opˇet v z´avislosti na poloze od kamery (OznacPostavu.java). Rozdˇelen´ı ˇsirˇs´ıho objektu je vidˇet na obr. 5.10, kde rozdˇelen´ı symbolizuje b´ıl´a svisl´a ˇca´ra. Dˇelen´ı vysok´ ych objekt˚ u viz obr. 5.11.
Obr´azek 5.10: Rozdˇelen´ı ˇsirok´eho objektu
Obr´azek 5.11: Rozdˇelen´ı vysok´eho objektu 24
Praktick´a ˇc´ast
Identifikace nalezen´ych objekt˚ u
Pseudok´ od algoritmu pro rozdˇ elov´ an´ı objekt˚ u:
Zvolen´e hraniˇcn´ı hodnoty pixel˚ u se jev´ı po prozkouˇsen´ı r˚ uzn´eho nastaven´ı jako rozumn´e. Pro lepˇs´ı u ´spˇeˇsnost algoritmu by bylo vhodn´e rozdˇelit obraz do v´ıce ˇca´st´ı. Rozdˇelen´ı obrazu pro lepˇs´ı pˇredstavu na obr. 5.12.
25
Praktick´a ˇc´ast
Ladˇen´ı programu
Obr´azek 5.12: Rozdˇelen´ı obrazu na ˇca´sti Pln´ a menza Probl´em je v pˇr´ıpadˇe plnˇe zabran´eho prostoru str´avn´ıky. Vznikne jeden velk´ y objekt, kter´ y lze jen tˇeˇzko separovat na jednotliv´e postavy. Proto se v tomto pˇr´ıpadˇe urˇc´ı poˇcet osob na sn´ımku pevnou hodnotou a to konkr´etnˇe ˇc´ıslem 18. Tuto hodnotu jsem zvolil po sledov´an´ı mnoˇzstv´ı zaplnˇen´ ych sn´ımk˚ u a jev´ı se jako dobr´ y kompromis. Pˇres obr´azek se nakresl´ı kˇr´ıˇz, jako symbol pln´e menzy. Bohuˇzel sn´ımky z kamer jsou v n´ızk´em rozliˇsen´ı, proto oblasti v zadn´ıch ˇc´astech sn´ımku je velice obt´ıˇzn´e zpracov´avat, proto m˚ uˇze doch´azet k faleˇsn´ ym detekc´ım lidsk´ ych postav nebo k nenalezen´ı vzd´alen´ ych postav.
5.4
Ladˇ en´ı programu
Jelikoˇz je algoritmus z´avisl´ y na nˇekolika parametrech:
• Volba hodnoty prahu pro prahov´an´ı obrazu • Rozliˇsen´ı pro prohled´av´an´ı obrazu • Volba minim´aln´ı velikosti postavy
26
Praktick´a ˇc´ast
Ladˇen´ı programu
Vytvoˇril jsem aplikaci (KonfigUI.java) pro ladˇen´ı tˇechto parametr˚ u (obr. 5.13). C´ılem je nalezen´ı optim´aln´ıho nastaven´ı jednotliv´ ych parametr˚ u, aby byly v´ ysledky identifikace lidsk´ ych postav co moˇzn´a nejlepˇs´ı.
Obr´azek 5.13: Konfigur´ator parametr˚ u Aplikace je schopn´a nastavovat vˇsechny potˇrebn´e parametry, kter´e jsou pouˇzit´e pˇri zpracov´an´ı sn´ımku. Pro rychlejˇs´ı ladˇen´ı algoritmu je nutn´e pˇredem pˇripravit sn´ımky, na kter´ ych je potˇreba manu´alnˇe urˇcit mnoˇzstv´ı lidsk´ ych postav.
27
ˇ Casy v´ypoˇctu
Praktick´a ˇc´ast
ˇ ıslo, ud´avaj´ıc´ı poˇcet postav na sn´ımku se pˇrid´a za n´azev sn´ımku: C´
hh-mm-ss_x.jpg
• hh-mm-ss – form´at n´azvu sn´ımku (hodiny-minuty-sekundy) • x – ˇc´ıslo ud´avaj´ıc´ı poˇcet osob na sn´ımku
Aplikace po dokonˇcen´ı zpracov´an´ı vˇsech vybran´ ych dat vyhodnot´ı mnoˇzstv´ı identifikovan´ ych postav. To se poˇc´ıt´a na z´akladˇe spr´avn´eho poˇctu lidsk´ ych postav na sn´ımku a poˇctu postav nalezen´ ych programem. Hodnoty nastaven´ ych parametr˚ u a v´ ysledek hled´an´ı se ukl´adaj´ı do XML souboru parametry.xml, kter´ y nalezneme ve zvolen´e sloˇzce pro v´ ystup. V´ıce o XML v [3]. Tento v´ ystup slouˇz´ı k pˇredstavˇe, s jak´ ymi parametry nastaven´ı m´a program jakou u ´spˇeˇsnost. Pouze tato informace ale nestaˇc´ı, je potˇreba nav´ıc prov´adˇet vizu´aln´ı kontrolu na sn´ımc´ıch, zda nedoch´az´ı k chybn´emu oznaˇcov´an´ı jin´ ych objekt˚ u.
5.5
ˇ Casy v´ ypoˇ ctu
Celkov´ y poˇcet sn´ımk˚ u z jedn´e kamery za provozn´ı dobu menzy je 1607. Na tˇechto datech se prov´ad´ı anal´ yza pr˚ ubˇehu jednoho dne chov´an´ı str´avn´ık˚ u v menze. Celkov´ y ˇcas v´ ypoˇctu se pohybuje kolem 250 sekund, tj. kolem 4 minut . Testov´ano na Intel Core i3 (2.53 GHz), 4GB RAM, Windows 7 Home Premium. Na zpracov´an´ı jednoho sn´ımku tak pˇripad´a pˇribliˇznˇe 156 milisekund.
28
Praktick´a ˇc´ast
5.6
V´ysledky
V´ ysledky
Poˇcet nalezen´ ych osob se poˇc´ıt´a, jak je jiˇz naps´ano v kap. 5.4, z pˇripraven´ ych sn´ımk˚ u, kde je pˇredem urˇcen pˇr´ıtomn´ y poˇcet lid´ı. N´asleduj´ıc´ı tab. 5.1, 5.2, 5.3 ukazuj´ı pˇr´ıklady v´ ystupu programu pˇri r˚ uzn´em nastaven´ı parametr˚ u. Pr´ah Rozliˇsen´ı Chyba Postava Poˇc. 80 10 2 4 118 10 2 4 55 10 2 4 80 7 2 4 80 13 2 4 80 10 2 17 80 10 2 10 80 10 2 2
dat Osob [%] 46 64 46 28 46 70 46 39 46 73 46 47 46 69 46 69
Tabulka 5.1: Nastaven´ı parametr˚ u, kamera ˇc.1 Pr´ah Rozliˇsen´ı Chyba Postava Poˇc. 80 10 2 4 118 10 2 4 55 10 2 4 80 7 2 4 80 13 2 4 80 10 2 17 80 10 2 10 80 10 2 2
dat Osob [%] 54 42 54 45 54 71 54 24 54 62 54 42 54 63 54 38
Tabulka 5.2: Nastaven´ı parametr˚ u, kamera ˇc.2 Hodnoty z tabulky nejsou moc vypov´ıdaj´ıc´ı o u ´spˇeˇsnosti detekce. Proto je nutn´a vizu´aln´ı kontrola oznaˇcen´ ych sn´ımk˚ u, zda nedoch´az´ı s dan´ ymi parametry k faleˇsn´ ym detekc´ım a neoznaˇcuj´ı se jin´e objekty, neˇz lidsk´e postavy. Jako optim´aln´ı nastaven´ı (pro kameru ˇc.1), kter´e m´a dobrou u ´spˇeˇsnost a doch´az´ı k mal´emu poˇctu faleˇsn´ ych detekc´ı, je nastaven´ı parametr˚ u viz 1.ˇra´dka tab. 5.1.
29
Praktick´a ˇc´ast
V´ysledky
Pr´ah Rozliˇsen´ı Chyba Postava Poˇc. 80 10 2 4 118 10 2 4 55 10 2 4 64 11 2 5 70 13 2 5 70 11 2 5 64 11 2 10 64 11 2 2
dat Osob [%] 42 38 42 49 42 49 42 33 42 31 42 21 42 51 42 17
Tabulka 5.3: Nastaven´ı parametr˚ u, kamera ˇc.3 To sam´e se d´a ˇr´ıci i pro druhou kameru, kde testov´an´ı prob´ıhalo stejn´ ym zp˚ usobem a koneˇcn´e nastaven´ı parametr˚ u se shoduje s parametry prvn´ı kamery. Pouze pro tˇret´ı kameru je potˇreba nastavit parametry na hodnoty 4.ˇra´dky tab. 5.3 a to z d˚ uvodu pˇr´ıtomn´ ych stojan˚ u a mraz´aku v obraze (obr. 5.14), kter´e by s parametry prvn´ıch dvou kamer zp˚ usobovaly ˇcast´e faleˇsn´e detekce.
Obr´azek 5.14: Oznaˇcen´ı postav: 3.kamera 30
Praktick´a ˇc´ast
Vizualizace v´ysledku
Hodnoty z tabulek 5.1, 5.2, 5.3 jsou ale m´ırnˇe zav´adˇej´ıc´ı, protoˇze pro ladˇen´ı algoritmu byly vybr´any vhodn´e sn´ımky, na kter´ ych doch´azelo k mal´emu pˇrekryvu osob, aby bylo dobˇre vidˇet, jak algoritmus pracuje a ˇsel l´epe odladit. Proto jsou v´ ysledn´a ˇc´ısla pro vˇsechny druhy sn´ımk˚ u niˇzˇs´ı, neˇz uv´ad´ı tabulka.
5.7
Vizualizace v´ ysledku
Program v pr˚ ubˇehu anal´ yzy jednotliv´ ych sn´ımk˚ u ukl´ad´a hodnoty o poˇctu nalezen´ ych osob do grafu (Vizualizace.java). Je zde pouˇzita knihovna JFreeChart, kter´a vytv´aˇr´ı a zobrazuje grafy. V´ıce o knihovnˇe [4]. Pˇr´ıklad pr˚ ubˇehu jednoho dne viz obr. pro jednotliv´e kamery 5.15, 5.16, 5.17.
Obr´azek 5.15: Vizualizace pr˚ ubˇehu dne, 1.kamera Z v´ ystupu je vidˇet, ˇze v absolutn´ı vˇetˇsinˇe pˇr´ıpad˚ u je vyˇsˇs´ı n´avˇstˇevnost z poˇca´tku otevˇren´ı menzy. To sam´e plat´ı o ˇcasech, kdy konˇc´ı vyuˇcovac´ı hodiny a studenti jdou do menzy na obˇed. Ke konci otev´ırac´ı doby menzy n´avˇstˇevnost kles´a a nedosahuje jiˇz takov´ ych extr´em˚ u, jako v dˇr´ıvˇejˇs´ıch ˇcasech. 31
Praktick´a ˇc´ast
Vizualizace v´ysledku
Obr´azek 5.16: Vizualizace pr˚ ubˇehu dne, 2.kamera
Obr´azek 5.17: Vizualizace pr˚ ubˇehu dne, 3.kamera
32
Praktick´a ˇc´ast
5.8
Z´avˇer
Z´ avˇ er
C´ılem pr´ace bylo vytvoˇrit si pˇredstavu o chov´an´ı str´avn´ık˚ u v prostor´ach univerzitn´ı menzy v pr˚ ubˇehu dne. Vytvoˇren´ y program je schopen vizualizovat pr˚ ubˇehy jednotliv´ ych dn˚ u formou grafu, ze kter´eho lze vidˇet, jak provoz menzy prob´ıh´a. Program oznaˇcuje v kaˇzd´em sn´ımku nalezen´e osoby. Z toho lze snadno vidˇet, jak je algoritmus u ´spˇeˇsn´ y. Pokud uˇzivatel vhodnˇe zvol´ı jeho parametry, je identifikace lidsk´ ych postav velmi u ´spˇeˇsn´a pro oddˇelen´e objekty (lidsk´e postavy). Z d˚ uvodu niˇzˇs´ıho rozliˇsen´ı dostupn´ ych sn´ımk˚ u z kamer, je moˇznost identifikace vzd´alen´ ych postav sloˇzit´a, a proto se st´av´a, ˇze postavy nejsou nalezeny nebo naopak jsou nalezeny jin´e objekty a prohl´aˇseny za lidskou postavu. Vz´ajemn´e pˇrekryvy postav na sn´ımku se program snaˇz´ı ˇc´asteˇcnˇe eliminovat na z´akladˇe velikosti objektu a jeho pozici na sn´ımk˚ u (v˚ uˇci vzd´alenosti od kamery). D´ıky tomu m˚ uˇze z jednoho nalezen´eho objektu identifikovat v´ıce postav. Pochopitelnˇe postavy, kter´e stoj´ı z velk´e ˇca´sti sv´e plochy za sebou, nen´ı moˇzn´e rozeznat a program je identifikuje jako jedinou. V pˇr´ıpadˇe zaplnˇen´ı cel´eho prostoru vˇetˇs´ım poˇctem osob a jejich pˇrekryvu, vznikne jeden velk´ y objekt a program prohl´as´ı menzu za plnˇe obsazenou a o konkr´etn´ı zjiˇst’ov´an´ı poˇctu lidsk´ ych postav se nesnaˇz´ı, nebot’ by to nebylo s t´ımto algoritmem moˇzn´e. Program je schopen odhadovat mnoˇzstv´ı lid´ı v univerzitn´ı menze. Zat´ım nen´ı schopen prov´adˇet predikci chov´an´ı str´avn´ık˚ u na z´akladˇe jiˇz z´ıskan´ ych dat. To je jedna z vˇec´ı, kterou bych pˇri pokraˇcov´an´ı v t´eto pr´aci dokonˇcil. Jako dalˇs´ı zlepˇsen´ı by bylo dobr´e l´epe navrhnout identifikaci pˇrekryvu osob nebo alespoˇ n prov´est lepˇs´ı odladˇen´ı st´avaj´ıc´ıho zp˚ usobu identifikace na z´akladˇe vzd´alenosti postav od kamer.
33
Seznam obr´ azk˚ u
2.1
Moˇznosti pˇredzpracov´an´ı obrazu . . . . . . . . . . . . . . . . .
3
2.2
Jasov´e transformace: a) p˚ uvodn´ı obraz [8], b) u ´prava jasu, c) u ´prava kontrastu, d) negativ obrazu. . . . . . . . . . . . . .
4
2.3
Funkce jasov´e transformace: zv´ yˇsen´ı jasu . . . . . . . . . . . .
5
2.4
Interpolace 1.stupnˇe, zvˇetˇsen´ı: a) p˚ uvodn´ı obraz, b) postup zvˇetˇsen´ı, c) v´ ysledek . . . . . . . . . . . . . . . . . . . . . . .
6
2.5
Ztr´ata informace obrazu . . . . . . . . . . . . . . . . . . . . .
6
2.6
Histogram pro obr. 2.7 a) . . . . . . . . . . . . . . . . . . . .
8
2.7
Volba prahu: a) p˚ uvodn´ı sn´ımek [9], b) n´ızk´ y, b) vhodn´ y, c) vysok´ y pr´ah. . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
2.8
Nalezen´ı hran v obraze 2.2 a) . . . . . . . . . . . . . . . . . .
9
3.1
Segmenty hranice . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.2
Typy okol´ı: a) 4-okol´ı, b) 8-okol´ı . . . . . . . . . . . . . . . . . 12
3.3
Pˇr´ıklad 8-okol´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.4
Eulerovo ˇc´ıslo: 1 souvisl´a oblast, 2 d´ıry. . . . . . . . . . . . . . 13 34
´ ˚ SEZNAM OBRAZK U
´ ˚ SEZNAM OBRAZK U
4.1
Struktur´aln´ı rozpozn´av´an´ı: primitiva . . . . . . . . . . . . . . 15
5.1
Aplikace pro stahov´an´ı obrazu kamer . . . . . . . . . . . . . . 16
5.2
Vzorov´ y obr´azek . . . . . . . . . . . . . . . . . . . . . . . . . 18
5.3
Obr´azek 5.2 po prahov´an´ı . . . . . . . . . . . . . . . . . . . . 19
5.4
Oˇr´ıznut´ı 1.kamera . . . . . . . . . . . . . . . . . . . . . . . . . 20
5.5
Oˇr´ıznut´ı 2.kamera . . . . . . . . . . . . . . . . . . . . . . . . . 20
5.6
Oˇr´ıznut´ı 3.kamera . . . . . . . . . . . . . . . . . . . . . . . . . 20
5.7
Rozliˇsen´ı s hodnotou 7 pro obr. 5.2 . . . . . . . . . . . . . . . 22
5.8
Oznaˇcen´ı postav: 1.kamera . . . . . . . . . . . . . . . . . . . . 23
5.9
Oznaˇcen´ı postav: 2.kamera . . . . . . . . . . . . . . . . . . . . 23
5.10 Rozdˇelen´ı ˇsirok´eho objektu . . . . . . . . . . . . . . . . . . . . 24 5.11 Rozdˇelen´ı vysok´eho objektu . . . . . . . . . . . . . . . . . . . 24 5.12 Rozdˇelen´ı obrazu na ˇc´asti . . . . . . . . . . . . . . . . . . . . 26 5.13 Konfigur´ator parametr˚ u . . . . . . . . . . . . . . . . . . . . . 27 5.14 Oznaˇcen´ı postav: 3.kamera . . . . . . . . . . . . . . . . . . . . 30 5.15 Vizualizace pr˚ ubˇehu dne, 1.kamera . . . . . . . . . . . . . . . 31 5.16 Vizualizace pr˚ ubˇehu dne, 2.kamera . . . . . . . . . . . . . . . 32 5.17 Vizualizace pr˚ ubˇehu dne, 3.kamera . . . . . . . . . . . . . . . 32 5.18 V´ ybˇer cesty pro ukl´ad´an´ı . . . . . . . . . . . . . . . . . . . . . 39 5.19 Adres´aˇrov´a struktura pro ukl´ad´an´ı dat . . . . . . . . . . . . . 40 35
Seznam tabulek
2.1
Bitov´e hloubky obrazu (RGB) . . . . . . . . . . . . . . . . . .
5.1
Nastaven´ı parametr˚ u, kamera ˇc.1 . . . . . . . . . . . . . . . . 29
5.2
Nastaven´ı parametr˚ u, kamera ˇc.2 . . . . . . . . . . . . . . . . 29
5.3
Nastaven´ı parametr˚ u, kamera ˇc.3 . . . . . . . . . . . . . . . . 30
36
2
Literatura [1] Bogdan Kiszka, 1001 tip˚ u a trik˚ u pro jazyk JAVA, Computer press, 2009. [2] Jiˇr´ı Laˇzansk´ y Umˇel´a inteligence, Academia, 2001. [3] Pavel Herout, Java a XML, Koop, 2007, ISBN: 978-80-7262-307-4. [4] David Gilbert, JFreeChart, 2011, [cit. 6.5.2012]. Dostupn´e z WWW: http://www.jfree.org/jfreechart. [5] Ondˇrej Neff, Co je to ˇsum, 2010, [cit. 6.5.2012]. Dostupn´e z WWW: http://www.digineff.cz/cojeto/ruzne/sum.html. [6] IDL Online Help, Interpolation methods, 2007, [cit. 6.5.2012]. Dostupn´e z WWW: http://idlastro.gsfc.nasa.gov/idl\_html\ _help/Interpolation\_Methods.html. [7] Eric Weisstein, Euclidean Metric, 2012, [cit. 6.5.2012]. Dostupn´e z WWW: http://mathworld.wolfram.com/EuclideanMetric.html. [8] Rubiks cube by keqs.jpg, [cit. 6.5.2012]. Dostupn´e z WWW: http://upload.wikimedia.org/wikipedia/commons/b/bb/Rubiks_ cube_by_keqs.jpg. [9] socha-svobody-3.jpg, [cit. 6.5.2012]. Dostupn´e z WWW: http://www.usa24.cz/wp-content/gallery/socha-svobody/ socha-svobody-3.jpg.
37
A Seznam pˇ r´ıloh A.1 N´ apovˇ eda k aplikaci pro stahov´ an´ı dat A.2 N´ apovˇ eda k aplikaci pro nastavov´ an´ı parametr˚ u A.3 N´ apovˇ eda pro spuˇ stˇ en´ı programu
38
LITERATURA
LITERATURA
A.1 N´ apovˇ eda k aplikaci pro stahov´ an´ı dat Pˇ reloˇ zen´ı programu Program je naps´an v jazyce JAVA s vyuˇzit´ım v´ yvojov´eho prostˇred´ı Eclipse. Obsahuje soubor build.xml, kter´ y zdrojov´e soubory pˇreloˇz´ı a je um´ıstˇen ve sloˇzce projektu programu. Pˇreloˇzen´ı se provede pˇr´ıkazem ant distjar v pˇr´ıkazov´em ˇra´dku (je nutn´e m´ıt nainstalov´an Ant, potˇrebn´ y pro pˇreklad) nebo se soubor spust´ı pˇr´ımo v prostˇred´ı Eclipse. Pˇreloˇzen´ım vznikne spustiteln´ y soubor s n´azvem StahovaniDat.jar v podadres´aˇri jar. Pro u ´spˇeˇsn´ y pˇreklad je nutn´e, aby byla zachov´ana adres´aˇrov´a struktura projektu.
Spuˇ stˇ en´ı programu Aplikaci pro stahov´an´ı dat spust´ıme souborem StahovaniDat.jar. V oknˇe (obr. 5.1) je aktivn´ı pouze jedno tlaˇc´ıtko Vyber cestu. Tlaˇc´ıtkem vybereme cestu, kam se budou ukl´adat stahovan´e sn´ımky z kamer (obr. 5.18).
Obr´azek 5.18: V´ ybˇer cesty pro ukl´ad´an´ı 39
LITERATURA
LITERATURA
Po vybr´an´ı cesty je aktivn´ı tlaˇc´ıtko Spust, kter´e spust´ı stahov´an´ı dat do zvolen´eho adres´aˇre s n´asleduj´ıc´ı strukturou (obr. 5.19):
Obr´azek 5.19: Adres´aˇrov´a struktura pro ukl´ad´an´ı dat
• rrrr–mm–dd – form´at: rok–mˇes´ıc–den • hh–mm–ss – form´at: hodina–minuta–sekunda
40
LITERATURA
LITERATURA
A.2 N´ apovˇ eda k aplikaci pro nastavov´ an´ı parametr˚ u Pˇ reloˇ zen´ı programu Program je naps´an v jazyce JAVA s vyuˇzit´ım v´ yvojov´eho prostˇred´ı NetBeans. Obsahuje soubor build.xml, kter´ y zdrojov´e soubory pˇreloˇz´ı a je um´ıstˇen ve sloˇzce projektu programu. (Vyuˇz´ıv´a souboru nbproject/build-impl.xml, bez nˇehoˇz pˇreklad neprobˇehne.) Pˇreloˇzen´ı se provede pˇr´ıkazem ant jar v pˇr´ıkazov´em ˇra´dku, (je nutn´e m´ıt nainstalov´an Ant, potˇrebn´ y pro pˇreklad). Spustiteln´ y soubor je tak´e moˇzno automaticky generovat z NetBeans. Pˇreloˇzen´ım programu vznikne spustiteln´ y soubor s n´azvem ZpracovaniDat.jar v podadres´aˇri dist. Pro u ´spˇeˇsn´ y pˇreklad je nutn´e, aby byla zachov´ana adres´aˇrov´a struktura projektu.
Spuˇ stˇ en´ı programu Aplikaci pro nastaven´ı parametr˚ u spust´ıme souborem ZpracovaniDat.jar. Otevˇre se okno (obr.5.13), kde je nˇekolik moˇznost´ı nastaven´ı:
• Tlaˇc´ıtko Zdroj dat – cesta ke zpracov´avan´ ym sn´ımk˚ um • Tlaˇc´ıtko V´ystup – cesta k uloˇzen´ı v´ ysledk˚ u programu • Tlaˇc´ıtko Spust’ – spust´ı zpracov´av´an´ı sn´ımk˚ u • Tlaˇc´ıtko Stop – okamˇzit´e ukonˇcen´ı zpracov´av´an´ı • Pˇrep´ınaˇc Kamera – data z jak´e kamery jsou vyuˇz´ıv´ana • Posuvn´ık Hodnota prahu – nastaven´ı hodnoty prahu pro prahov´an´ı • Posuvn´ık Hodnota rozliˇsen´ı – nastaven´ı rozliˇsen´ı pˇri hled´an´ı objekt˚ u 41
LITERATURA
LITERATURA
• Posuvn´ık Tolerance chyby – kolikr´at m˚ uˇze b´ yt pˇreruˇsen hledan´ y objekt • Posuvn´ık Poˇcet bod˚ u postavy – minim´aln´ı velikost postavy • Pˇrep´ınaˇc Prahov´an´ı – uloˇzen´ı prahovan´ ych sn´ımk˚ u • Pˇrep´ınaˇc Rozliˇsen´ı – uloˇzen´ı sn´ımk˚ u po hled´an´ı objekt˚ u • Pˇrep´ınaˇc Oznaˇcen´ı – uloˇzen´ı sn´ımk˚ u s oznaˇcen´ ymi osobami • Pˇrep´ınaˇc Ladˇen´ı – pro ladˇen´ı algoritmu, nutn´e m´ıt pˇripraveny sn´ımky a zn´at poˇcet postav
Ukazatel ve spodn´ı ˇca´sti okna ukazuje aktu´aln´ı mnoˇzstv´ı zpracovan´ ych dat.
A.3 N´ apovˇ eda pro spuˇ stˇ en´ı programu Program spust´ıme souborem ZpracovaniDat.jar. Nastaven´ı parametr˚ u je jiˇz vhodnˇe pˇrednastaveno, proto je potˇreba pouze vybrat cestu k dat˚ um, v´ ystupn´ı cestu a spustit program tlaˇc´ıtkem Spust’
42