ŽILINSKÁ UNIVERZITA V ŽILINE
-
Upload
khangminh22 -
Category
Documents
-
view
5 -
download
0
Transcript of ŽILINSKÁ UNIVERZITA V ŽILINE
ŽILINSKÁ UNIVERZITA V ŽILINE
FAKULTA RIADENIA A INFORMATIKY
SPRACOVANIE OBRAZU S VYUŽITÍM DOPYTOV
V PROSTREDÍ VANET
Dizertačná práca
Kód: 28360020133005
Študijný program: Aplikovaná informatika
Pracovisko: Katedra softvérových technológií
Fakulta riadenia a informatiky
Školiteľ: doc. Ing. Emil Kršák, PhD.
Žilina 2013 Ing. Štefan Toth
1
Poďakovanie
Moja veľká vďaka patrí môjmu školiteľovi doc. Ing. Emilovi Kršákovi, PhD. za jeho cenné
rady, myšlienky, vytrvalosť, ochotu vždy pomôcť a za poskytnutie vynikajúceho zázemia
a skvelého pracovného prostredia na Katedre softvérových technológií.
Veľká vďaka patrí tiež Ing. Jánovi Janechovi, PhD. za jeho cenné myšlienky, usmernenia,
plodné diskusie a predovšetkým povzbudenia v akomkoľvek čase.
Ďakujem aj ostatným členom katedry, ktorí mi akokoľvek pomohli a za vytvorenie
priateľskej a tvorivej atmosféry, ktorá vďaka nim panuje na katedre a vytvára tak
vynikajúce pracovisko.
V neposlednom rade ďakujem svojim rodičom a nebohej starej mame za všetko, čo mi
v živote poskytli a za povzbudenia počas môjho štúdia.
Ďakujem.
2
Abstrakt
VANET siete sú v súčasnosti perspektívnou oblasťou výskumu, v ktorej vozidlá môžu
bezdrôtovo komunikovať medzi sebou alebo s infraštruktúrou. Nasadenie tejto technológie
čoskoro ponúkne vo vozidlách mnohé aplikácie, či už z oblasti bezpečnosti alebo
komfortu. V tejto práci navrhujeme jednu novú aplikáciu, ktorá doposiaľ nemá obdobu a
spája niekoľko oblastí za účelom vytvorenia systému a jazyka na dopytovanie informácií
z obrazu. Práca v stručnosti popisuje v súčasnom stave aktuálne aplikácie zaoberajúce sa
spracovaním a analýzou obrazu vo VANET sieťach, so základnými i pokročilými
algoritmami a popisom obrazových dát MPEG-7 štandardu s využitím v QBIC / CBIR
systémoch, v ktorých sa dopyty vykonávajú na základe popisov alebo príznakov. Táto
práca je unikátna tým, že navrhuje systém a jazyk na dopytovanie požadovaných objektov
v obraze. Obraz je pritom získavaný z jednej alebo viacerých kamier snímajúcich dopravnú
scénu z vozidla v reálnom čase. Nejedná sa teda o dopyt do databázy, ale o dopyt, ktorý
definuje, čo, kde a ako sa má v obraze vyhľadať spolu s možnosťou vyjadrenia
komplexných priestorových relácií. Na základe toho sa budú rozpoznávať požadované
objekty v obraze a využívať algoritmy spracovania, analýzy obrazu a počítačového
videnia.
Kľúčové slová: VANET, spracovanie obrazu, analýza obrazu, dopyt, dopytovací jazyk
nad obrazom, obrazový objekt, strom obrazových objektov, LINQ to Images.
3
Abstract
Nowadays the VANET networks are the promising research area in which a vehicle can
communicate with other vehicles or infrastructure on a wireless basis. The deployment of
this technology will soon provide many safety or comfort applications in vehicles. One of
them is an interesting application which is proposed by this thesis. It combines a few fields
in order to create a new system and query language for obtaining data from an image in the
VANET environment. The thesis briefly describes the state-of-the-art of VANET
applications related to the image processing and analysis. It also describes the basic and
advanced image processing algorithms, MPEG-7 standard and QBIC / CBIR systems, in
which data are obtained by descriptions or image features. This work is unique in that it
proposes a novel system and language for querying objects in the image. The image is
captured by one or more cameras placed in a vehicle in real time. Thus it is not a standard
query to a database. The proposed query language defines what objects have to be
recognized in the image of traffic scene. The system can detect and recognize required
objects and their complex spatial relations in real-time using image processing, image
analysis and computer vision algorithms.
Keywords: VANET, image processing, image analysis, query, query language on image,
image object, tree of image object, LINQ to Images.
4
Obsah
Zoznam obrázkov ............................................................................................................................... 6
Zoznam tabuliek ................................................................................................................................. 9
Zoznam skratiek a značiek................................................................................................................ 10
1 Úvod ......................................................................................................................................... 13
2 Cieľ............................................................................................................................................ 15
3 Súčasný stav ............................................................................................................................. 16
3.1 VANET ............................................................................................................................... 16
3.1.1 Klasifikácia aplikácií .................................................................................................. 17
3.1.2 Aplikácie používajúce kamery .................................................................................. 18
3.1.3 Komunikačný štandard ............................................................................................. 19
3.2 Spracovanie a analýza obrazu .......................................................................................... 19
3.2.1 Všeobecný model rozpoznávania obrazu ................................................................ 20
3.2.2 Digitálna reprezentácia obrazu ................................................................................ 21
3.2.3 Farebné modely ....................................................................................................... 23
3.2.4 Základné algoritmy ................................................................................................... 26
3.2.5 Rozpoznávanie objektov .......................................................................................... 32
3.3 MPEG-7 ............................................................................................................................ 44
3.3.1 Vizuálne deskriptory................................................................................................. 47
3.3.2 MPQF ........................................................................................................................ 48
3.4 Zhodnotenie ..................................................................................................................... 49
4 Riešenie .................................................................................................................................... 51
4.1 Vymedzenie problému ..................................................................................................... 51
4.2 Obrazové objekty ............................................................................................................. 55
4.2.1 Objekty na dopravnej scéne ..................................................................................... 56
4.2.2 Nízkoúrovňové objekty ............................................................................................ 79
4.3 Systém na dopytovanie .................................................................................................... 81
4.3.1 Vstup ........................................................................................................................ 84
4.3.2 Výstup....................................................................................................................... 86
4.3.3 Dopyt ........................................................................................................................ 87
4.3.4 Príklady dopytov..................................................................................................... 103
5 Implementácia a overenie riešenia ........................................................................................ 111
5.1 Implementácia ............................................................................................................... 111
5
5.1.1 EmguCV a OpenCV ................................................................................................. 111
5.1.2 Systém LINQ to Images .......................................................................................... 112
5.1.3 Vlastné algoritmy ................................................................................................... 113
5.2 Overenie riešenia ........................................................................................................... 115
5.2.1 Porovnanie s klasickou tvorbou algoritmov ........................................................... 119
6 Záver ....................................................................................................................................... 123
6.1 Vedecký prínos ............................................................................................................... 124
6.2 Použitie navrhovaného riešenia ..................................................................................... 125
6.3 Ďalšie pokračovanie výskumu ........................................................................................ 126
Zoznam použitej literatúry ............................................................................................................. 127
Zoznam vlastných publikovaných prác .......................................................................................... 135
6
Zoznam obrázkov
Obr. 1 C2X komunikácia medzi vozidlami a infraštruktúrou, zdroj: [3] ........................................... 16
Obr. 2 Scenár križovatky, zdroj: [7] .................................................................................................. 18
Obr. 3 Scenár predbiehania veľkého vozidla, ktoré prenáša obraz z kamery pred ním, zdroj: [8] .. 18
Obr. 4 Všeobecný postup rozpoznávania objektov na príklade rozpoznávania počtu prstov [18] . 21
Obr. 5 Matica reprezentujúca časť obrázka z výrezu bočného zrkadla automobilu, zdroj: [22] ..... 23
Obr. 6 Miešanie farieb v RGB a jeho znázornenie pomocou RGB kocky ......................................... 24
Obr. 7 Grafické zobrazenie modelu HSV vľavo [27] a modelov HSL vpravo [28] ............................. 25
Obr. 8 Reprezentácia CIELAB modelu, zdroj: [29] ............................................................................ 26
Obr. 9 Princíp spracovania bodov bez ohľadu na okolie. Pixel na vstupom obrázku f(x,y) vľavo je spracovaný určitou operáciou, ktorej výsledok sa uloží na rovnakú pozíciu do výstupného obrázku g(x,y) vpravo [18] ............................................................................................................................. 27
Obr. 10 Princíp konvolúcie, zdroj: [18] a [30] .................................................................................. 28
Obr. 11 Histogramy farebného obrázka (tri kanály) a obrázka v odtieňoch sivej (jeden kanál) ...... 29
Obr. 12 Príklad Gaussovej masky o veľkosti 5x5 .............................................................................. 29
Obr. 13 Vľavo originálny obrázok, vpravo po aplikácii Gaussového filtra s maskou 9x9 ................. 29
Obr. 14 Vľavo originálny obrázok, vpravo po aplikácii Mediánového filtra s maskou 9x9 .............. 30
Obr. 15 Vľavo obrázok po aplikácii otvorenia s iteračným krokom 1, vpravo po aplikácii s iteračným krokom 2 .......................................................................................................................................... 31
Obr. 16 Vľavo originálny obrázok, vpravo po globálnom prahovaní červenej farby ....................... 31
Obr. 17 Vľavo originálny obrázok v odtieňoch sivej, vpravo po použití Cannyho hranového detektora .......................................................................................................................................... 32
Obr. 18 Vľavo originálny obrázok, vpravo po Houghovej transformácii úsečiek ............................. 32
Obr. 19 Horizontálna a vertikálna projekcia z uvedených obrázkov ................................................ 35
Obr. 20 Zľava vzor strán a princíp, podľa ktorého sú vypočítavané DtB, v strede binárny obrázok trojuholníka a vpravo jeho 4 DtB histogramy, zdroj: [33] ................................................................ 35
Obr. 21 Príklad jednoduchej neurónovej siete [37] ......................................................................... 36
Obr. 22 Princíp mechanizmu podporných vektorov na príklade dvoch tried .................................. 37
Obr. 23 Príklad silného klasifikátora vytvoreného z 3 slabých klasifikátorov .................................. 38
Obr. 24 Rozpoznanie objektu škatule pomocou SURF algoritmu s vyznačenými kľúčovými bodmi 39
Obr. 25 Reprezentácia obrázkov batohom vizuálnych slov, zdroj: [51] ........................................... 41
Obr. 26 Detegované kľúčové body Harrisovým detektorom ........................................................... 41
Obr. 27 Detegované oblasti vľavo Harris-Laplace a vpravo Harris-Affine detektorom ................... 42
Obr. 28 Detegované oblasti vľavo Hessian-Laplace a vpravo Hessian-Affine detektorom .............. 42
Obr. 29 Detegované regióny MSER detektorom .............................................................................. 43
Obr. 30 Testovací obrázok a jeho zodpovedajúci HOG, zdroj: [59] ................................................. 44
7
Obr. 31 Hlavné elementy MPEG-7, zdroj: [60] ................................................................................. 45
Obr. 32 Ukážka MPEG-7 dokumentu a jeho korešpondujúceho DOM stromu, zdroj: [61] ............. 46
Obr. 33 Elementy XML MPEG formátu na dopytovanie .................................................................. 48
Obr. 34 Globálny pohľad na postup spracovania obrazu definovaného dopytom .......................... 52
Obr. 35 Náčrt dopytovania od jeho definovania po vrátenie výstupu ............................................ 53
Obr. 36 Náčrt komunikácie žltého vozidla so zeleným vozidlom pre čiastkové spracovanie obrazového dopytu (červená čiara predstavuje V2V komunikáciu a svetlomodré lichobežníky pohľad kamier) ................................................................................................................................. 55
Obr. 37 Príklady objektov nachádzajúcich sa na dopravnej scéne pred vozidlom (obrázok získaný z kamery umiestnenej vo vozidle) ...................................................................................................... 56
Obr. 38 Detegovaná obloha vyznačená modrým šrafovaním .......................................................... 59
Obr. 39 Vyznačená oblasť hôr červenožltým šrafovaním ................................................................ 60
Obr. 40 Vyznačená oblasť vozovky červenožltým a chodníka žltým šrafovaním ............................. 61
Obr. 41 Príklady vodorovných dopravných značiek používaných na Slovensku [72] ...................... 62
Obr. 42 Príklady vodorovných dopravných značiek ......................................................................... 63
Obr. 43 Príklady zvislých dopravných značiek používaných na Slovensku [72] ............................... 63
Obr. 44 Príklady svetelných signalizačných zariadení ...................................................................... 65
Obr. 45 Príklady výskytov textov na dopravnej scéne ..................................................................... 66
Obr. 46 Pomenovanie častí vozidla z ľavoprednej strany (hore) a pravej strany (dole) .................. 68
Obr. 47 Časti vozidla pomenované pre identifikáciu z rôznych strán .............................................. 69
Obr. 48 Príklady ľudí vyskytujúcich sa na ceste ............................................................................... 69
Obr. 49 Symbol lebky s prekríženými kosťami ................................................................................. 77
Obr. 50 Žirafa ako deformovateľný objekt v rôznych pozíciách a pohľadoch predstavujúcich množinu šablón pre rozpoznávanie ................................................................................................. 77
Obr. 51 Obraz segmentovaný na základe červenej, modrej a žltej farby ........................................ 80
Obr. 52 Dopyt ako komplexná úloha zložená z postupnosti jednoduchých úloh ............................ 81
Obr. 53 Postup spracovania dopytu od jeho začiatku až po koniec ................................................ 82
Obr. 54 Príklad postupnosti spracovania úlohy hľadania vozidla s charakteristickými znakmi ....... 83
Obr. 55 Obrazový objekt z globálneho pohľadu .............................................................................. 88
Obr. 56 Obrazový objekt ako základná trieda pre iné obrazové objekty na príklade vozidla a farebného segmentu ..................................................................................................................... 89
Obr. 57 Strom obrazových objektov (oranžové obdĺžniky predstavujú obrazové objekty, biele obdĺžniky typy) ................................................................................................................................. 89
Obr. 58 Princíp spracovania elementárnej úlohy operáciou so vstupmi a výstupmi ...................... 90
Obr. 59 Možné rozmiestnenie kamier vo vozidle ............................................................................ 94
Obr. 60 Postupnosť hľadania červených vozidiel na príklade zistených troch vozidiel ................. 104
Obr. 61 Postupnosť hľadania červených vozidiel pomocou hľadania červených segmentov ....... 105
8
Obr. 62 Postupnosť hľadania červeného vozidla s vyobrazením lebky na príklade troch vozidiel, z ktorých jedno zodpovedá zadanému popisu ............................................................................... 107
Obr. 63 Postupnosť rozpoznania totemu čerpacej stanice na základe textu obsahujúceho čísla, príklad zobrazuje dve logá, z ktorých jedno bude zodpovedať zadanému dopytu ....................... 108
Obr. 64 Postupnosť hľadania značky zákazu zastavenia, vozidiel a oblohy pre odfiltrované vozidiel na bilbordoch a so zistením vozidla najbližšieho ku značke zákazu zastavenia ............................. 110
Obr. 65 Diagram niektorých významných tried navrhnutého systému ......................................... 112
Obr. 66 Navrhnutý postup rozpoznávania dopravných značiek .................................................... 114
Obr. 67 Kaskáda navrhnutých neurónových sietí určených na klasifikáciu ................................... 115
Obr. 68 Postupnosť krokov spracovania testovacieho obrázku dopravnej scény pomocou segmentácie červených oblastí s následným rozpoznaním vozidiel .............................................. 116
Obr. 69 Postupnosť krokov spracovania testovacieho obrázku dopravnej scény s cieľom vyhľadania totemu čerpacej stanice podľa šablóny loga mušle .................................................... 118
Obr. 70 Postupnosť krokov spracovania testovacieho obrázka dopravnej scény s cieľom vyhľadania dopravnej značky priechodu pre chodcov umiestnenej vpravo od chodca................................... 119
9
Zoznam tabuliek
Tab. 1 Porovnanie dopravných značiek používaných v rôznych krajinách ...................................... 64
Tab. 2 Porovnanie počtu riadkov a príkazov navrhovaného systému s klasicky písaným kódom . 121
Tab. 3 Porovnanie navrhovaného riešenia s klasickým riešením................................................... 122
10
Zoznam skratiek a značiek
ANN Artificial Neural Network (umelá neurónová sieť)
ASIFT Affine-SIFT (afinný SIFT)
BiM MPEG-7 Binary Format (binárny formát štandardu MPEG-7)
BoVW Bag-of-Visual-Words (batoh vizuálnych slov)
BoW Bag of Words (batoh slov)
BSD Berkeley Software Distribution
C2C Car to Car (komunikácia auto s autom)
C2C-CC CAR 2 CAR Communication Consortium (Konzorcium pre komunikáciu
auto – auto)
C2I Car to Infrastructure (komunikácia auto s infraštruktúrou)
C2X Car to X (komunikácia auto s autom alebo s infraštruktúrou)
CBIR Content Based Image Retrieval (vyhľadávanie obrazu podľa jeho obsahu)
CEN European Committee for Standardization (Európsky výbor pre
normalizáciu)
CIE Commission International de l’Éclairage (Medzinárodná komisia pre
osvetlenie)
CMY Cyan Magenta Yellow (modrozelená červenofialová žltá)
CMYK Cyan Magenta Yellow Black (modrozelená červenofialová žltá čierna)
CNN Convolutional Neural Network (konvolučná neurónová sieť)
CR/LF Carriage Return / Line Feed (znak nového riadku)
ČVUT České vysoké učení technické
DDL Description Definition Language (jazyk pre definíciu popisu)
DOM Document Object Model (objektový model dokumentu)
DS Description Schemes (popisné schémy)
EČV Evidenčné číslo vozidla
ETSI European Telecommunications Standards Institute (Európsky inštitút pre
telekomunikačné normy)
GLOH Gradient Location-Orientation Histogram (histogram pozične orientovaných
gradientov)
GPL GNU General Public License (všeobecná verejná licencia GNU)
GPS Global Positioning System (globálny pozičný systém)
11
HDR High Dynamic Range (vysoký dynamický rozsah)
HLS Hue Lightness Saturation (odtieň svetlosť sýtosť)
HMMD Hue-Max-Min-Diff
HOG Histogram of Oriented Gradients (histogram orientovaných gradientov)
HSB Hue Saturation Brightness (odtieň sýtosť jas)
HSI Hue Saturation Intensity (odtieň sýtosť intenzita)
HSL Hue Saturation Lightness (odtieň sýtosť svetlosť)
HSV Hue Saturation Value (odtieň sýtosť jasová hodnota)
IEC International Electrotechnical Commission (Medzinárodná elektrotechnická
komisia)
IEEE Institute of Electrical and Electronics Engineers (Inštitút pre
elektrotechnické a elektronické inžinierstvo)
ISO International Organization for Standardization (Medzinárodná organizácia
pre normalizáciu)
JSON JavaScript Object Notation (JavaScriptový objektový zápis)
LINQ Language Integrated Query (jazyk zjednocujúci dopytovanie)
LIOP Local Intensity Order Pattern
MAC Medium Access Control (riadenie prístupu k médiu)
MDS Multimedia Description Schemes (multimediálne popisné schémy)
MIME Multipurpose Internet Mail Extensions (viacúčelové rozšírenie internetovej
pošty)
MLP Multi-Layer Perceptron (viacvrstvový perceptrón)
MPEG Moving Picture Experts Group (expertná skupina pre pohyblivý obraz)
MPQF MPEG Query Format (MPEG dopytovací formát)
MSER Maximally Stable Extremal Regions (maximálne stabilné extremálne
oblasti)
MUTCD Manual on Uniform Traffic Control Devices for Street and Highways
(manuál o jednotných dopravných riadiacich zariadeniach pre ulice a
diaľnice)
PCA Principal Component Analysis (analýza hlavných komponent)
PHY Physical Layer (fyzická vrstva)
PNG Portable Network Graphics (formát prenosnej sieťovej grafiky)
QBIC Query by Image Content (dopyt podľa obsahu obrázka)
RANSAC Random Sample Consensus
12
RBF Radial Basis Function (radiálna základná funkcia)
RGB Red Green Blue (červená zelená modrá)
RGBA Red Green Blue Alpha (červená zelená modrá alfa kanál)
SIFT Scale Invariant Feature Transform
SQL Structured Query Language (štruktúrovaný dopytovací jazyk)
SURF Speeded Up Robust Features
SUSAN Smallest Univalue Segment Assimilating Nucleus
SVG Scalable Vector Graphics (značkovací jazyk škálovateľnej vektorovej
grafiky)
SVM Support Vector Machine (mechanizmus podporných vektorov)
UML Unified Modeling Language (unifikovaný modelovací jazyk)
USA United States of America (Spojené štáty americké)
V2I Vehicle to Infrastructure (komunikácia vozidlo s infraštruktúrou)
V2V Vehicle to Vehicle (komunikácia vozidlo s vozidlom)
V2X Vehicle to X (komunikácia vozidlo s vozidlom alebo s infraštruktúrou)
VANET Vehicular Ad hoc Network (automobilová ad hoc sieť)
VML Vector Markup Language (vektorový značkovací jazyk)
WAVE Wireless Access in Vehicular Environments (bezdrôtový prístup v prostredí
vozidiel)
WMF Windows Metafile (formát Windowsových metasúborov)
XML Extensible Markup Language (rozšíriteľný značkovací jazyk)
YCbCr Luminance Chroma blue Chroma red (jas modrá farba červená farba)
13
1 Úvod
Predstavme si, že sa stane banková lúpež a policajti dostanú informáciu o tom, že lupiči
unikli na červenom vozidle s evidenčným číslom začínajúcim na ZA a končiacim AB,
pričom vpravo od neho bola nálepka vyobrazujúca lebku s prekríženými kosťami.
V prípade VANET siete alebo distribuovanej siete zloženej z mobilných telefónov
s kamerami sledujúcimi okolie pred vozidlom by bolo možné využiť jazdiace automobily
na lokalizovanie vozidla. Požiadavka zadefinovaná na hľadanie červených vozidiel
s určitým charakteristickým popisom by sa mohla predať vozidlám jazdiacim v danom
okruhu od miesta lúpeže. Automobily by následne spracovávali obraz z kamery a hľadali
by zadefinovaný objekt určitý čas. Ak by nejaké vozidlo lokalizovalo hľadaný objekt,
vyslalo by o ňom správu so zistenou aktuálnou GPS polohou, smerom pohybu
a zachyteným obrázkom.
Iným zaujímavým príkladom môže byť aj zistenie aktuálnych cien pohonných hmôt určitej
čerpacej stanice. Vodič by chcel natankovať na nejakej stanici preferovanej značky a chcel
by preto zistiť, kde je napr. benzín v okolí najlacnejší. Informácie o cenách sa väčšinou
nachádzajú na totemoch čerpacích staníc, preto by bolo zaujímavé rozpoznať totem
čerpacej stanice a z jeho obsahu zistiť cenu benzínu. Vozidlo, ktoré by takúto informáciu
chcelo získať, by preto vytvorilo požiadavku, v ktorej by bolo definované, čo a ako sa má
hľadať (logo požadovanej čerpacej stanice s charakteristickými rysmi a pod ním textové
číselné informácie). Následne by sa vyslala požiadavka do siete a ak by nejaké vozidlo
zdetegovalo totem a rozpoznalo jeho obsah, mohlo by vrátiť naspäť odpoveď
s požadovanými informáciami ako je rozpoznaná cena pohonných hmôt, obrázok totemu
a jeho GPS poloha.
Aby sme mohli lokalizovať takéto hľadané objekty, musíme spracovať obraz získaný
jednou alebo viacerými kamerami pomocou algoritmov z oblasti analýzy, spracovania
obrazu a počítačového videnia. Úlohy je možné riešiť klasicky vytvorením komplexného
algoritmu skladajúceho sa z metód, v telách ktorých budú pomocné algoritmy
zabezpečujúce zadanú funkcionalitu rozpoznávania. Vytvorenie algoritmu hľadajúceho
určitý objekt pre daný účel ale nemusí vyhovovať v takom prostredí akým sú siete
VANET, pretože by sa vyžadovalo, aby bol v každom vozidle konkrétny algoritmus
nasadený a teda implementovaný. Ak by nebol, bolo by možné zaistiť prenos konkrétneho
14
kódu na koncové zariadenie a zabezpečiť tak jeho vykonanie. Vzniká ale otázka
bezpečnosti takéhoto riešenia (potrebný napr. sandbox). Problematická je okrem toho aj
heterogénnosť prostredí (rôzne operačné systémy), ďalej veľkosť kódu a s tým súvisiaci
čas potrebný na prenos, ktorý je potrebný vo VANET sieti zredukovať, nakoľko
komunikácia medzi vozidlami alebo vozidlami a infraštruktúrou je kvôli mobilite vozidiel
krátka. Jednoduchším riešením by preto bolo rozdeliť komplexnú úlohu hľadania určitého
objektu na menšie časti, t.j. implementovať potrebné základné algoritmy a využiť ich ako
stavebné kamene na vyriešenie komplexnej úlohy.
Využitím tejto myšlienky a pre realizovanie uvedených motivačných úloh je potrebné
presne špecifikovať, aké objekty, kde, v akej relácií a ako sa majú v obraze vyhľadávať.
Navyše, v obraze dopravnej scény sa môžu nachádzať aj netradičné objekty, na ktoré treba
brať zreteľ. Realizácia preto nie je taká jednoduchá. Potrebné je tiež vyriešiť, v akom
formáte a teda aj štruktúre bude úloha predaná, ako sa má rozdeliť na menšie časti, ako ich
vykonať, zlúčiť a transformovať na požadovaný výstup. To bude predmetom skúmania,
výsledkom ktorého je návrh systému a jazyka na dopytovanie ľubovoľných objektov
z obrázkov pre prostredie VANET. Navrhnutý systém nakoniec nemusí byť využitý len
v ňom, ale aj v iných oblastiach, ako bude v závere práce poukázané.
Štruktúra tejto práce je nasledovná. Kapitola 2 definuje cieľ práce, za ktorým nasleduje
v tretej kapitole analýza súčasného stavu. V nej sa zameriavame na stručný popis VANET
sietí, základných a aktuálnych algoritmov spracovania a analýzy obrazu zameraných na
dopravnú infraštruktúru a v závere tejto kapitoly na štandard MPEG-7. V kapitole 4
popisujeme navrhnuté riešenie, ktorého implementáciu a overenie uvádzame v
nasledujúcej piatej kapitole. Následne v záverečnej kapitole zhrnieme vedecký prínos
a načrtneme možné smery ďalšieho výskumu.
15
2 Cieľ
Hlavným cieľom tejto práce je navrhnúť systém a jazyk na dopytovanie ľubovoľných
objektov z obrazu získaného senzormi snímajúcimi dopravnú scénu pred vozidlom
v prostredí VANET. Požadované objekty sa budú v obraze automaticky detegovať
a rozpoznávať na základe vstupného dopytu.
Systém tak umožní spracovanie komplexných úloh z oblasti spracovania a analýzy obrazu
na cestnej sieti pomocou jednoduchých čiastkových úloh a bude definovať:
množinu základných a priestorových operácií nad obrazom,
nízkoúrovňové algoritmy spracovania a analýzy obrazu,
vysokoúrovňové algoritmy spracovania a analýzy obrazu,
jednotné rozhranie pre spracovávané vstupy a výstupy,
formát jazyka na dopytovanie.
16
3 Súčasný stav
3.1 VANET
Pojem VANET (Vehicular Ad hoc Network) predstavuje ad-hoc sieť určenú pre bezdrôtovú
komunikáciu vozidiel. Venuje sa jej mnoho výskumníkov a výrobcov automobilov
s cieľom vyvinúť štandard na prenos dát a aplikácie, od ktorých sa očakáva zvýšenie
bezpečnosti v doprave a to predovšetkým znížením dopravných nehôd a zápch, ušetrením
času cestovania a teda aj dosiahnutie zníženie znečistenia ovzdušia a spotreby energie [1].
V súčasnosti sa považuje za jednu z najdôležitejších technológií v oblasti inteligentných
dopravných systémov [2].
Obr. 1 C2X komunikácia medzi vozidlami a infraštruktúrou, zdroj: [3]
Komunikácia môže prebiehať medzi vozidlami (označovaná ako V2V – Vehicle to Vehicle
alebo tiež C2C – Car to Car) a vozidlami s infraštruktúrou (V2I – Vehicle to Infrastructure
alebo C2I – Car to Infrastructure). Spoločne sa potom označuje ako V2X, C2X alebo
Car2X komunikácia.
Typickým príkladom použitia je informovanie o dopravnej zápche, nehode a varovanie
pred možným nebezpečenstvom. Napríklad ak sa stala nejaká nehoda za zákrutou, za ktorú
vodič nemá výhľad a teda vďaka C2C komunikácií sa o nej dozvie včas. Ak by cesta bola
17
navyše neprejazdná, mohol by sa vodič možnej zápche vyhnúť preplánovaním trasy. Iným
príkladom pre C2I komunikáciu, teda komunikáciu vozidlo a infraštruktúra, je napríklad
svetelné signalizačné zariadenie – semafor, ktorý informuje o svojom aktuálnom stave.
Takto sa napríklad môže vodičovi dostať informácia o stave a dĺžke trvania svietenia
zelenej, prípadne červenej farby. Navyše, ak by si vodič červenú nevšimol a
nespomaľoval, je na nebezpečenstvo upozornený a rovnako sú varované aj ostatné vozidlá
prechádzajúce cez križovatku [4].
3.1.1 Klasifikácia aplikácií
Celkovo je možné aplikácie vo VANET sieti rozdeliť do troch hlavných oblastí [5] [6]:
bezpečnosť,
efektívna doprava,
infotainment, biznis a ostatné.
Do oblasti bezpečnosti môžeme zaradiť aplikácie, ktorých dôsledkom dôjde k zníženiu
počtu dopravných nehôd a to najmä vyvarovaním sa pred nimi ako napr. varovanie pri
zmene jazdného pruhu (informovanie okolitých vozidiel pre zamedzenie stretu s vozidlom
pri slepom uhle, či nevšímavosti vodiča) alebo upozornenie na nebezpečné miesta (miesta
dopravných nehôd alebo kde je povrch vozovky šmykľavý, s výtlkmi na ceste apod.).
Druhou kategóriou je efektívna doprava, kde je snaha o maximalizáciu kapacity ciest
a vyhnutiu sa tvorby dopravných zápch. Príkladom môžu byť navigačné systémy, ktoré
môžu preplánovať alternatívne trasy na základe zistenej aktuálnej situácie v doprave.
Ďalším príkladom je využitie zelenej vlny s vyhnutím sa zastavaniu vozidla vďaka
informáciám o časovaní semaforov. S touto informáciou môžu vozidlá vypočítať
optimálnu rýchlosť, po ktorej dodržaní nebudú musieť zastaviť a teda dôjde k zvýšeniu
plynulosti dopravy a tak aj k zníženiu spotreby paliva.
Poslednú oblasť predstavuje infotainment, ktorý ponúka aplikácie pre informovanie,
zábavu a komfort, do ktorých môžeme zaradiť napr. navigačný systém pre parkovanie
v reálnom čase k informovaniu o voľných parkovacích miestach, prenos súborov medzi
vozidlami, internetový prístup a mnohé iné pre zabezpečenie pohodlia pasažierov pri
cestovaní.
18
3.1.2 Aplikácie používajúce kamery
VANET sieť môže byť nápomocná aj pri križovatkách alebo pri predbiehaní vozidiel
s využitím kamier umiestnených v automobiloch ako uvádzajú autori v [7]. Na príklade
križovatky (obr. 2), v ktorej budovy zatieňujú výhľad vodiča v smere jeho odbočovania,
môže napomôcť druhé vozidlo, ktoré má výhľad na smer, do ktorého prvé vozidlo
odbočuje. Vďaka tomu je možné buď prenášať obraz z tohto druhého vozidla do prvého
alebo automaticky identifikovať určité potenciálne objekty ako sú chodci prechádzajúci
cez prechod pre chodcov a vďaka tomu upozorniť vodiča na zvýšenú opatrnosť.
Obr. 2 Scenár križovatky, zdroj: [7]
V prípade predbiehania vozidiel, ktoré sú veľké (obr. 3) alebo majú zatemnené zadné sklo,
cez ktoré nie je možné dobre vidieť situáciu pred vozidlom, autori v [8] navrhli protokol
pre prenos videa z kamery umiestnenej v predbiehanom vozidle. Vďaka tomu môže mať
vodič dokonalý prehľad o dianí pred vozidlom a podľa toho môže bezpečnejšie realizovať
úkon predbiehania.
Obr. 3 Scenár predbiehania veľkého vozidla, ktoré prenáša obraz z kamery pred ním, zdroj: [8]
Iným príkladom využitia kamier a spracovania obrazu vo VANET prostredí je
lokalizovanie automobilov. Autori Ferreira a kol. [9] navrhli protokol na vyhľadávanie
19
vozidiel s využitím rozpoznávania evidenčných čísiel, po ktorých pátra polícia. Po ich
vypátraní sa polícií odošle GPS poloha prostredníctvom zabezpečeného prenosu, aby ho
nebolo možné podvrhnúť.
3.1.3 Komunikačný štandard
Problematikou komunikácie vo VANET sa zaoberalo mnoho výskumných projektov
z rôznych krajín ako sa uvádza v [10]. Najväčšie aktivity pritom prináša USA, Japonsko
a Európa ako celok. V Európe zohráva hlavnú úlohu predovšetkým komunikačné
konzorcium C2C-CC, ktoré v súčinnosti s IEEE, ISO a CEN prispieva k štandardizovaniu
prostredníctvom Európskeho inštitútu pre telekomunikačné normy (ETSI). Konzorcium
bolo založené významnými európskymi výrobcami automobilov a ďalšími partnermi z
oblasti priemyslu a výskumu. Jeho hlavným cieľom je vytvoriť európsky štandard pre C2X
komunikáciu a harmonizovať výstupy z rôznych projektov v tejto oblasti.
Napriek tomu, že finálny štandard je stále v progrese, aktuálny vývoj sa zameriava na
štandard založený na technológií Wi-Fi. Najsľubnejším je v súčasnosti IEEE 802.11p [7],
ktorý definuje PHY a MAC vrstvy. Popri tom je definovaná rodina protokolov IEEE 1609,
ktoré tvoria vyššiu vrstvu nad 802.11p. Spolu sa označujú ako WAVE štandard [11]. Podľa
Gukhoola [12] by mal štandard umožňovať komunikáciu na dlhý dosah (do 1000 m)
s podporou vysokej mobility.
O budúcom nasadení tejto technológie svedčí aj fakt, že sa po návrhoch a simulačných
testoch vykonávajú reálne testy, ako uvádza napr. automobilka Daimler. Podľa správy [3]
sa testovala sieť tvorená so 120 vozidlami. Inými automobilkami, ktoré testujú
medzivozidlovú komunikáciu sú napr. Toyota [13], General Motors [14] alebo Ford [15].
3.2 Spracovanie a analýza obrazu
Pojmy spracovanie obrazu, analýza obrazu a počítačové videnie sú niekedy rôzne
interpretované. Rôzni autori používajú rôzne definície, pričom veľakrát sa ich význam
zamieňa. Podľa Hlaváča [16] a Pitasa [17] ich môžeme klasifikovať z hľadiska apriórnej
znalosti o tom, čo sa nachádza na obrázku, od nízkej k vyššej úrovni spracovania,
nasledovne:
Spracovanie obrazu (image processing) – nízka, až žiadna znalosť o obsahu v
obraze, obrazy sa teda neinterpretujú a preto sú postupy nezávislé na konkrétnej
aplikačnej oblasti. Samotné spracovanie obrazu pritom vychádza zo spracovania
20
signálov, príkladom môže byť napr. 2D Fourierová transformácia alebo aplikácia
Gaussového filtra pre tzv. vyhladzovanie obrazu, kde na vstup prichádza originálny
obrázok a výstupom je spracovaný obrázok pomocou tohto filtra. Vstupom
i výstupom v spracovaní obrazu je teda obrázok.
Analýza obrazu (image analysis) – stredná znalosť obrazu, interpretácia prináša
dôležitú dodatočnú znalosť umožňujúcu riešiť aj také úlohy, ktoré by sa inak riešiť
nedali. Hlavným cieľom je nájsť objekty záujmu a potom extrahovať niektoré
parametre z týchto objektov. Príkladom môže byť hľadanie pozície a veľkosti
objektov [18]. Zaoberá sa teda popisom a rozpoznávaním obsahu obrazu. Vstupom
je obrázok a výstupom jeho symbolický popis.
Počítačové videnie (computer vision) – vyššia znalosť obrazu, podľa Pitasa [17]
často ekvivalentné alebo ako nadmnožina analýzy obrazu. Podľa Hlaváča [16] sa
jedná o porozumenie obsahu 3D scény z obrazov a videí, ktoré sú zložité na
spracovanie. Využíva sa preto interpretácia, spätná väzba a techniky umelej
inteligencie pre pokročilé algoritmy, ktoré napodobujú ľudské vnímanie, ako je
napr. detekcia a rozpoznávanie tváre.
Napriek tomuto rozdeleniu je potrebné upozorniť, že analýza obrazu a počítačové videnie
sa používajú v mnohých literatúrach ako synonymá. Popri nich ešte existujú ďalšie
skupiny, ktoré sú buď podmnožinou uvedených kategórií alebo sa prelínajú, ako napr.
manipulácia obrazu (image manipulation), spracovanie videa (video processing), strojové
videnie (machine vision), video a obrazová kompresia (video and image compression)
apod. I keď neexistuje jednotná definícia týchto kategórií, Moeslund [18] sa ich pokusil
stručne popísať.
V nasledujúcich častiach budú predstavené niektoré konkrétne nízkoúrovňové
i vysokoúrovňové algoritmy.
3.2.1 Všeobecný model rozpoznávania obrazu
Rozpoznávanie akýchkoľvek objektov vo všeobecnosti môžeme vyjadriť nasledujúcou
postupnosťou krokov:
1. Získanie obrázka
2. Predspracovanie
3. Segmentácia
21
4. Reprezentácia
5. Klasifikácia
Uvedenú postupnosť krokov znázorňuje obr. 4.
Obr. 4 Všeobecný postup rozpoznávania objektov na príklade rozpoznávania počtu prstov [18]
Po získaní obrázka z nejakého zdroja (snímaním z kamery alebo z videa) nasleduje jeho
predspracovanie, čo znamená pripravenie obrázka do takej podoby, aby na ňom bolo
možné realizovať algoritmy pre ďalšie spracovanie. V tomto kroku sa môže jednať napr. o
konvertovanie farebného obrázka do obrázka v odtieňoch sivej (obr. 4), prípadne použitie
filtrov na odstránenie, resp. potlačenie šumu. Tu sa využívajú algoritmy spracovania
obrazu. Ďalším krokom je segmentácia, pomocou ktorej sa extrahujú objekty záujmu, čím
sa oddeľuje popredie (to, čo nás zaujíma) od pozadia (všetkého ostatného). Na uvedenom
obrázku sú objektmi záujmu prsty, avšak dostali sa tam aj neželané objekty (šum).
Následne sa všetky tieto objekty popíšu niekoľkými charakteristickými príznakmi, ktoré
ich budú reprezentovať. Táto časť býva riešená algoritmami z analýzy obrazu. Posledným
blokom je klasifikácia, ktorá popísané objekty identifikuje a tak aj určí, ktoré by mohli byť
objektmi záujmu alebo nie. Na ilustračnom príklade s rukou sa identifikovali tri prsty.
Tento model je všeobecný, čo znamená, že sa všetky bloky nemusia vždy dodržať,
prípadne sa môže zameniť ich poradie alebo je možné kroky úplne nahradiť inými
postupmi, či spájať do samostatných blokov.
3.2.2 Digitálna reprezentácia obrazu
Na prácu s obrázkami v počítači je nutné nejakým spôsobom obraz reprezentovať.
Definícia obrazu sa v rôznych aplikačných oblastiach a disciplínach líši. Intuitívne ho
možno definovať ako priemet reálneho sveta na sietnicu oka alebo obraz zachytený
kamerou, na obrazovke počítača, na papieri, či odraz v nehybnej vodnej hladine [19] [20].
Formálne môžeme obraz modelovať ako spojitú (obrazovú) funkciu dvoch premenných
, kde predstavuje hodnotu jasu a predstavujú súradnice na ploche.
Získanie obrázka Predspracovanie Segmentácia Reprezentácia Klasifikácia
„Nájdené
tri prsty“
Objekt č. 1
Objekt č. 2
...
Objekt č. 6
22
V prípade dynamického obrazu (videa) môžeme obraz vyjadriť aj ako funkciu troch
premenných , kde znamená čas.
Pretože u obrazu predpokladáme obmedzené rozmery, môžeme definičný obor obrazovej
funkcie zapísať ako karteziánsky súčin z oboru reálnych čísiel, ktoré vymedzujú rozsah
obrazu:
⟨ ⟩ ⟨ ⟩
Obor hodnôt H obrazovej funkcie tvorí množinu hodnôt jasu alebo farieb obrázka, čo je
možné vyjadriť množinou reálnych čísiel alebo v závislosti od reprezentácie farebnej
informácie, kde n vyjadruje počet kanálov, t.j. použitých farebných zložiek.
V počítači sa väčšinou pracuje s digitálnym obrazom, ktorý je reprezentovaný maticou
(mriežkou, rastrom). Predpokladajme, že obraz je vzorkovaný do výsledného
digitálneho obrazu o m riadkov a n stĺpcov. Funkčné hodnoty obrazovej funkcie, t.j.
hodnoty súradníc potom budú predstavovať diskrétne veličiny, ktoré sa najčastejšie
reprezentujú prirodzenými číslami. To nám umožní zapísať kompletný digitálny
obraz nasledujúcou kompaktnou maticou [21]:
(
)
Pravá strana tejto rovnice teda definuje digitálny obraz. Každý prvok matice predstavuje
obrazový bod, čo sa nazýva obrazový element alebo skrátene pixel (odvodený od
anglického picture element). Hodnotou pixelu môže byť jedno reálne číslo (napríklad jas,
intenzita jednej farby, atď.) alebo usporiadaná n-tica reálnych čísiel predstavujúca farbu
zloženú z n farebných komponentov (napr. pri RGB modeli trojica zložená z červenej,
zelenej a modrej zložky). To, aké hodnoty budú pixely nadobúdať, závisí od zvoleného
farebného modelu, o ktorom bude pojednávať nasledujúca časť.
Obr. 5 znázorňuje obrázok automobilu a maticu reprezentujúcu časť obrázka, ktorej
hodnoty predstavujú intenzity jasu odtieňa sivej farby. V tomto prípade je každý pixel
tvorený iba jednou hodnotou o veľkosti jedného bajtu, t.j. z rozsahu 0-255.
Popri rastrovej forme je možné reprezentovať obrázok aj vektorovým formátom, kde je
obraz zložený z vektorových elementov rôznych tvarov (bodov, úsečiek, kriviek, apod.), čo
23
má za výhodu to, že je možné obraz ľubovoľne zväčšovať bez straty kvality. Príkladmi
takýchto vektorových formátov sú napr. SVG (Scalable Vector Graphics), VML (Vector
Markup Language) alebo WMF (Windows Metafile).
Nakoľko z klasických kamier získavame rastrové obrázky, budeme sa v tejto práci venovať
spracovaniu a analýze obrazu iba z obrázkov rastrového formátu reprezentovaného
maticou s pevne stanovenou veľkosťou.
Obr. 5 Matica reprezentujúca časť obrázka z výrezu bočného zrkadla automobilu, zdroj: [22]
3.2.3 Farebné modely
Farba je jednou z vlastností, ktorej vnímanie dáva človeku rozlišovaciu schopnosť.
Rovnako sa preto využíva aj v spracovaní a analýze obrazu, kde je dôležité jej vyjadrenie a
reprezentácia.
Farebný model predstavuje matematickú abstrakciu umožňujúcu definovať farby ako
usporiadanú množinu čísiel, typicky ako trojicu alebo štvoricu hodnôt farebných zložiek
[23]. V súčasnosti existuje niekoľko modelov, ako napr. RGB, HSV, HSL, YCbCr, CMY,
CMYK, YUV, HMMD, CIELUV, CIECAM97, CIECAM02 a iné. [24] [25]. Niektoré
významné z nich, ktoré sa najčastejšie používajú v spracovaní a analýze obrazu si bližšie
predstavíme.
Ale kamera vidí toto:
24
RGB a RGBA
RGB (Red, Green, Blue – červená, zelená, modrá) je jedným z najznámejších a
najpoužívanejších farebných modelov, ktorý bol štandardizovaný medzinárodnou komisiou
CIE [26].
Obr. 6 Miešanie farieb v RGB a jeho znázornenie pomocou RGB kocky
Skladá sa z troch základných farebných zložiek – červenej (R), zelenej (G) a modrej (B).
Iné farby získame zmiešaním týchto troch farieb vo vhodnom pomere. Model je tzv.
aditívny, čo znamená, že sa základné farby miešajú sčítavaním. Čím vyššie hodnoty zložky
nadobudnú, tým získame svetlejšiu farbu.
Napriek tomu, že je model často používaný, má nevýhodu, že je závislý na zariadení
(rôzne zariadenia ako napr. monitory môžu zobrazovať farby odlišne) a okrem toho je v
ňom ťažké pre človeka definovať hranice požadovaného odtieňa farby (napr. množinu
odtieňov červenej farby).
Ak k modelu pridáme tzv. alfa kanál, ktorým vyjadríme priesvitnosť, vznikne nám model
RGBA (Red, Green, Blue, Alpha – červená, zelená, modrá a alfa kanál). V ňom môžeme
definovať pixely nielen s farebnou hodnotou, ale aj s veľkosťou transparentnosti, ktorá
udáva na koľko percent je pixel priesvitný. Alfa kanál sa využíva v niektorých obrázkoch
napr. pre odstránenie pozadia (príkladom môže byť formát PNG).
HSV a HSL
HSV (Hue, Saturation, Value – odtieň, sýtosť, jasová hodnota) označovaný tiež ako HSB
(B - Brightness – jas) spolu s HSL (Hue, Saturation, Lightness – odtieň, sýtosť, svetlosť),
ktorý sa označuje aj ako HLS alebo HSI (I - Intensity – intenzita) patria takisto medzi často
používané farebné modely v grafike i v spracovaní obrazu.
Obidva sú odvodené od RGB modelu a teda sú podmienené farebným priestorom
vytvoreným z tohto modelu. HSV sa často graficky znázorňuje farebným šesťbokým
ihlanom a HSL dvojicou kužeľov [20].
25
Obr. 7 Grafické zobrazenie modelu HSV vľavo [27] a modelov HSL vpravo [28]
Popis jednotlivých zložiek:
H (Hue) – odtieň (alebo farebný tón) – popisuje farbu v rozsahu 0 – 360, pričom
napríklad 0 (360) predstavuje červenú, 120 zelenú a 240 modrú farbu.
S (Saturation) – sýtosť – vyjadruje čistotu farby v rozsahu 0 – 100% (0,0 – 1,0),
pričom 0% znamená absenciu farby a 100% plne sýtu farbu.
V (Value) / B (Brightness) – jasová hodnota alebo L (Lightness) / I (Intensity) –
svetlosť určuje relatívnu svetlosť alebo tmavosť farby, udáva sa v rozsahu 0 – 100%
(0,0 – 1,0), pričom 0% predstavuje čiernu farbu a 100% v závislosti od modelu ako
je možné vidieť na obr. 7, kde sa biela farba nachádza v HSL pri L=100%, pričom
v HSV sa nachádza iba na jednom mieste a to pri minimálnej saturácií S (100%)
a maximálnom jase V (100%).
HSL je novší model, ktorý odstraňuje niektoré nedostatky HSV, ktoré síce nie sú
zásadného charakteru, ale môžu sťažovať prácu s presným určením farby [20]. Vo
všeobecnosti, i podľa uvedených vlastností sa javí HSL model lepší, záleží však od jeho
aplikácie.
CIELAB
Model CIELAB alebo CIE 1976 (L*, a*, b*) patrí v súčasnosti k významným modelov,
pretože je nezávislý na zariadení a bol vytvorený na základe farieb vnímaných ľudským
okom. Zistilo sa, že informácia o farbe prechádzajúca z oka cez optický nerv do mozgu je
vnímaná ako rozdiel medzi svetlou a tmavou, červenou a zelenou, a medzi modrou a žltou
farbou [26]. Vďaka tomuto zisteniu sa vytvoril model, ktorý môžeme reprezentovať
tvarom gule, na ktorej vertikálna os L predstavuje jas (čierna až biela farba), horizontálna
os a interval farieb od zelenej po červenú a os b interval od modrej po žltú.
26
Obr. 8 Reprezentácia CIELAB modelu, zdroj: [29]
Monochromatický a binárny obraz
Monochromatický (monochromatic) obraz je obraz zložený len z odtieňa jednej farby.
Označuje sa aj pojmom šedotónový (grayscale), v ktorom je odtieňom šedá (sivá) farba.
Do tohto tvaru môžeme previesť ľubovoľný farebný obrázok. Ak by sme chceli previesť
napr. farebný obrázok v RGB do odtieňov sivej, musíme transformovať a zlúčiť tri farebné
zložky do jednej. Na tento účel boli stanovené váhy jednotlivých zložiek podľa citlivosti
ich vnímania nasledovne [26]:
kde R reprezentuje červenú, G zelenú a B modrú zložku.
Špecifickým prípadom je tzv. binárny obraz, čo je obraz zložený len z dvoch jasových
úrovní – bielej a čiernej farby. Príkladom takéhoto obrazu je obr. 16 vpravo. V analýze
obrazu je takáto reprezentácia často používaná.
3.2.4 Základné algoritmy
Nasledujúce algoritmy pre úpravu obrazu používajú nízkoúrovňové metódy spracovania,
akými sú spracovanie bodov (pixelov) nezávisle na okolí alebo so závislosťou na okolí.
Bodové spracovania
Označme vstupný obraz, ktorý chceme upraviť a výstupný obraz
o rovnakom rozmere, ktorý bude výsledkom bodového spracovania. Bodové spracovanie
(point processing) nezávislé na okolí potom môžeme definovať ako operáciu nad
pixelom vstupného obrázka , ktorej výsledkom je nová hodnota pixelu na rovnakej
pozícií vo výstupnom obrázku . Táto transformácia sa zvykne označovať aj ako
bodový operátor (point operator).
27
Môžeme ho vyjadriť nasledujúcim zápisom:
Uvedenú operáciu znázorňuje tiež obr. 9.
Obr. 9 Princíp spracovania bodov bez ohľadu na okolie. Pixel na vstupom obrázku f(x,y) vľavo je
spracovaný určitou operáciou, ktorej výsledok sa uloží na rovnakú pozíciu do výstupného obrázku
g(x,y) vpravo [18]
Príkladom môžu byť rôzne transformácie pixelov pre úpravu jasu (brightness) a kontrastu
(contrast), gama korekcie (gamma correction), alfa miešanie (alpha blending), prahovanie
(thresholding) a iné.
Druhý spôsob spracovania predstavuje bodové spracovanie so závislosťou na okolí, inak
nazývaný operátor okolia (neighborhood operator) alebo lokálny operátor (local operator).
Pre získanie výstupnej hodnoty pixela vo výstupnom obrázku sa používa nielen hodnota
pixela, ale aj hodnoty jeho susedných pixelov. Najbežnejším typom takejto operácie je
lineárny filter (linear filter), v ktorom je výstupná hodnota pixela určená ako suma
vážených hodnôt vstupných pixelov [30]:
∑ ∑
kde sa nazýva jadro (kernel) alebo maska (mask) o veľkosti danej polomerom .
Maska obsahuje hodnoty váh, ktoré sa označujú ako koeficienty filtrovania (filter
coefficients). Tento typ operácie sa nazýva korelácia (correlation) alebo ho možno
jednoduchšie zapísať pomocou operátora korelácie ako:
Vstupný obrázok
f(x,y)
Výstupný obrázok
g(x,y)
28
Druhý variant tohto vzorca predstavuje konvolúcia (convolution), ktorý môžeme definovať
ako:
∑ ∑
a zjednodušene vyjadriť operátorom konvolúcie:
Obr. 10 znázorňuje použitie konvolúcie na jednoduchom príklade s maskou h o veľkosti
3x3.
Príkladom konvolúcie môže byť filtrovanie obrazu za účelom redukcie šumu ako je napr.
Gaussove vyhladzovanie (rozmazanie), zvýšenie ostrosti, detekcia hrán apod.
Obr. 10 Princíp konvolúcie, zdroj: [18] a [30]
Histogram
Histogram vyjadruje početnosť jednotlivých jasových úrovní v obrázku pre každý kanál
(napr. v RGB pre tri zložky, v odtieňoch sivej pre jednu zložku). Môžeme z neho zistiť, či
je obrázok príliš svetlý alebo tmavý a na základe neho vykonať príslušné úpravy, akými je
napr. ekvalizácia histogramu (histogram equalization), čo je metóda, ktorá sa používa pre
zlepšenie kontrastu v prípade nerovnomerného zastúpenia jasových zložiek [26]. Iným
príkladom môže byť voľba prahu pri segmentácií prahovaním.
Výstupný obraz g(x,y)
Vstupný obraz f(x,y)
Maska h(x,y)
29
Na nasledujúcom obrázku (obr. 11) sú zobrazené histogramy z farebného a toho istého, ale
transformovaného obrázka do odtieňov sivej.
Obr. 11 Histogramy farebného obrázka (tri kanály) a obrázka v odtieňoch sivej (jeden kanál)
Gaussov filter
Gaussov filter je jeden z najčastejšie používaných filtrov, ktorým sa vyhladzuje (smooth),
resp. rozmazáva (blur) obrázok. Vyhladenie sa realizuje pomocou konvolúcie na základe
masky, ktorej koeficienty sú dané Gaussovým rozložením, t.j. koeficienty blížiace sa
k stredu masky majú vyššiu váhu (obr. 12).
Obr. 12 Príklad Gaussovej masky o veľkosti 5x5
Obr. 13 Vľavo originálny obrázok, vpravo po aplikácii Gaussového filtra s maskou 9x9
30
Tento filter sa napríklad používa na odstránenie šumu spôsobeného nekvalitnou kamerou
alebo na potlačenie artefaktov vo videu spôsobených kompresiou. Príklad takéhoto
rozmazania zobrazuje obr. 13.
Vyhladzovanie priemerovaním
Vyhladzovanie priemerovaním je podobné Gaussovmu filtru, až na to, že všetky
koeficienty masky majú hodnotu 1 / (veľkosť masky). Je to jedna z najjednoduchších
metód vyhladenia.
Mediánový filter
Mediánový filter predstavuje nelineárnu metódu založenú na hľadaní mediánu, čo je
prostredný prvok v usporiadanej postupnosti hodnôt. Podobne, ako u Gaussa, i tu sa
používa maska určitej veľkosti, avšak neobsahuje koeficienty. Táto maska sa rovnako
posúva po obrázku, pričom sa zo všetkých hodnôt ležiacich pod ňou vyberá medián, ktorý
sa zapíše ako výsledná hodnota do výstupného obrázku. V istých prípadoch, ak je obraz
zašumený, dosahuje tento filter veľmi dobré výsledky.
Obr. 14 Vľavo originálny obrázok, vpravo po aplikácii Mediánového filtra s maskou 9x9
Morfologické transformácie
Základnými operáciami morfologickej transformácie sú erózia (erosion) a dilatácia
(dilation), z ktorých sa dajú odvodiť ďalšie transformácie ako je otvorenie (opening)
a uzavretie (closing). Ich využitie je široké. Používajú sa na odstránenie šumu, izolovanie
jednotlivých častí alebo na spájanie rôznorodých častí v obraze [22].
Erózia vo všeobecnosti stenčuje objekt a dilatácia ho zväčšuje o najbližšie body z jeho
okolia. Často sa používa zložená operácia z erózie a po nej dilatácie, čím dostaneme
operáciu zvanú otvorenie. Rovnako opačne v opačnom poradí, teda najskôr aplikácia
dilatácie a po nej erózie predstavuje zloženú operáciu nazývanú uzavretie.
31
Obr. 15 Vľavo obrázok po aplikácii otvorenia s iteračným krokom 1,
vpravo po aplikácii s iteračným krokom 2
Prahovanie
Prahovanie (thresholding) je jednou zo základných a najstarších techník segmentácie,
ktorou sa oddeľuje popredie od pozadia podľa stanovenej hodnoty prahu. Vo všeobecnosti
môžeme prahovanie definovať ako transformáciu vstupného obrázku na výstupný
(segmentovaný) binárny obraz nasledovne:
, ak ,
inak,
kde predstavuje pozíciu pixela v obrázku a hodnotu prahu, pričom
bude popredie a pozadie, prípadne naopak.
Prahovanie môže byť globálne alebo lokálne. Pri globálnom prahovaní aplikujeme rovnaký
prah na celý obrázok (bodové spracovanie nezávisle od okolia), zatiaľ čo pri lokálnom je
použitá rôzna hodnota prahu vypočítaná v lokálnych častiach obrázka. Hodnotu prahu si
môžeme stanoviť konštantou alebo ju zistiť automaticky, napr. pomocou Otsuovej metódy
hľadania optimálneho prahu [26].
Obr. 16 Vľavo originálny obrázok, vpravo po globálnom prahovaní červenej farby
Hranové detektory
Hranové detektory lokalizujú hrany, čo sú miesta na obraze, v ktorých dochádza k náhlym
a významným zmenám v intenzite jasu. V priebehu výskumu v tejto oblasti bolo
32
navrhnutých niekoľko detektorov, ktorých názvy predstavujú mená autorov, ako napr.
Roberts, Laplace, Prewwitt, Sobel a iné [19]. Podstata väčšiny z nich spočíva v hľadaní
prvej alebo druhej derivácie. V súčasnosti je jedným z najpoužívanejším detektorov
Cannyho hranový detektor, ktorý navrhol John F. Canny v roku 1986 [22].
Výsledkom Cannyho detektora je binárny obraz zvýrazňujúci hrany. Takto spracovaný,
výsledný obrázok sa väčšinou používa na zlepšenie ostrosti alebo v algoritmoch na
detekciu útvarov, akým je napr. Houghová transformácia, popísaná nižšie.
Obr. 17 Vľavo originálny obrázok v odtieňoch sivej, vpravo po použití Cannyho hranového detektora
Houghova transformácia
Houghová transformácia bola pôvodne vyvinutá pre detekciu čiar v obrázkoch a neskôr
rozšírená na všeobecnú detekciu iných jednoduchých útvarov (napr. kružníc), ktoré sa dajú
jednoducho vyjadriť pomocou parametrickej rovnice. Podstata potom spočíva v hľadaní
parametrov týchto útvarov v tzv. Houghovom alebo parametrickom priestore o rozmere
počtu parametrov, do ktorého sa transformuje pôvodný obraz.
Obr. 18 Vľavo originálny obrázok, vpravo po Houghovej transformácii úsečiek
3.2.5 Rozpoznávanie objektov
Rozpoznávanie je finálnym krokom v prístupe analýzy obrazu. Cieľom je nájsť, rozlíšiť a
identifikovať objekty v obraze na základe ich reprezentácie – popisu, ktorý je výsledkom
segmentácie. Pojem rozpoznávania môže byť tiež chápaný aj ako celková postupnosť
krokov, ktoré vedú k výsledku rozpoznania, t.j. detekcií a klasifikácií objektov.
33
Treba poznamenať, že sa v literatúre často používa výraz detekcia a chápe sa ako
synonymum pre rozpoznávanie. Pre rozlíšenie budeme v nasledujúcom texte pod detekciou
rozumieť nájdenie objektov záujmu a rozpoznanie ako komplexný problém identifikovania
(klasifikácie) objektov.
Rozpoznávanie objektov je väčšinou založené na priraďovaní tried objektom z vopred
známej množiny tried. Kategorizovanie sa realizuje pomocou klasifikátora, ktorý je
schopný rozlíšiť objekty na základe vstupných parametrov vlastností daného objektu –
napr. podľa jeho textúry, veľkosti, tvaru, váh atď. Na klasifikáciu sa používajú rôzne
prístupy a algoritmy. Najčastejšie sú používané algoritmy strojového učenia (machine
learning algorithms), ako sú neurónové siete (neural networks), podporné vektory (support
vector machines), boosting (AdaBoost, WaldBoost, RealBoost, ...), rozhodovacie stromy
(decision trees), náhodné stromy (random trees), naivný Bayesov klasifikátor (Naive Bayes
classifier) a iné. Ďalší spôsob je s využitím korelácie, kedy porovnávame vzory s objektom
a zisťujeme hodnotu korelačného koeficientu. Na tomto princípe je postavený jeden
z najpoužívanejších, i keď nie robustných algoritmov hľadania vzorov porovnávania
šablónou (template matching). Inou oblasťou je rozpoznávanie založené na lokálnych
príznakoch získaných z detektorov a popísaných deskriptormi, čo sa v súčasnosti považuje
za state-of-the-art riešenie medzi rozpoznávacími algoritmami [31].
Deskripcia nájdených objektov
Pre správne klasifikovanie ľubovoľných dát je potrebné venovať pozornosť vstupom
klasifikátora. Na vstup sa väčšinou privádza príznakový vektor (feature vector), ktorý
reprezentuje popis objektu, na základe ktorého sa klasifikátor rozhoduje. Môžu sa tiež
použiť aj hodnoty pixelov obrázka, avšak väčšinou len o malých rozmeroch kvôli
zložitosti.
Objekty majú rôzne vlastnosti, ktoré sa môžu využiť na ich základnú charakteristiku
(najčastejšie tvar, textúra, farby atď.). Objekty môžu byť ďalej deformovateľné, zakryté
inými objektmi (oklúzia), zachytené v rôznej mierke a pohľade, čo sťažuje ich rozpoznanie.
Preto, aby boli objekty identifikovateľné, je dôležité, aby aj ich popis bol invariantný
a robustný voči takýmto zmenám. Väčšinu týchto podmienok spĺňajú algoritmy založené
na príznakoch, ktoré budú popísané v časti Detektory a deskriptory kľúčových bodov.
V nasledujúcej časti si najskôr uvedieme niektoré z nízkoúrovňových charakteristík
popisov.
34
Obsah (area) je počet pixelov, ktoré obsahuje daný región objektu. Pokiaľ nemáme znalosť
o mierke, je ťažké využiť túto charakteristiku, preto sa skôr používa v kombinácií s inými
charakteristikami.
Pozdĺžnosť (elongatedness) je pomer strán najmenšieho opísaného obdĺžnika
ohraničujúceho objekt. Označme dlhšiu stranu tohto obdĺžnika , kratšiu . Potom
pozdĺžnosť môžeme vypočítať ako:
Pravouhlosť (rectangularity) je pomer obsahu plochy objektu ( ) k ploche najmenšieho
opísaného obdĺžnika ( ):
Kompaktnosť (compactness) alebo kruhovosť (circularity) [32] sa definuje ako podiel
umocneného obvodu objektu ( ) k jeho ploche ( ):
Hodnota kompaktnosti by mala byť pre ideálny kruhový objekt . Pre iné útvary je
vždy väčšia [26].
Konvexnosť (convexity) je vyjadrená pomerom obsahu plochy objektu ( ) k ploche
najmenšieho konvexného útvaru ( ) pokrývajúceho objekt:
Projekcia (projection) – popisuje početnosti nenulových pixelov v rôznych smeroch. Pri
vertikálnej projekcií sa jedná o početnosti nenulových hodnôt pixelov zo stĺpcov obrázka
( ) a pri horizontálnej ( ) z riadkov obrázka:
∑
∑
kde hodnota predstavuje hodnotu pixela na i-tom riadku a j-tom stĺpci. Príklad
horizontálnej a vertikálnej projekcie spolu s histogramami zobrazuje obr. 19.
35
Obr. 19 Horizontálna a vertikálna projekcia z uvedených obrázkov
Popri týchto histogramoch je možné použiť i modifikáciu akou sú histogramy vzdialeností
k okrajom (distance to borders, DtB), ktoré vo svojej práci uvádza Lafuente-Arroyo a kol.
[33]. Vyjadrujú vzdialenosti (početnosti nulových hodnôt pixelov) od jednotlivých okrajov
k vonkajším okrajom kontúry objektu na obrázku (obr. 20).
Obr. 20 Zľava vzor strán a princíp, podľa ktorého sú vypočítavané DtB, v strede binárny obrázok
trojuholníka a vpravo jeho 4 DtB histogramy, zdroj: [33]
Ďalšími spôsobmi, ako popísať objekt, sú napr. techniky podpisy objektov (signatures),
charakteristiky vyjadrené z histogramu, momentové invariantné charakteristiky, príznaky
získané z hrán, podobnosť vyjadrená korelačným koeficientom alebo pomocou vzájomnej
informácie a entropie [26] [19].
Neurónová sieť
Umelá neurónová sieť (artificial neural network, ANN) bola inšpirovaná biologickou
neurónovou sieťou zloženou z neurónov a synaptických spojov medzi neurónmi, ktoré
majú schopnosť uchovania informácie. V podstate sa jedná o špecifický typ grafu zložený
z vrcholov (neurónov) a hrán (synapsií). Existuje niekoľko typov neurónových sietí, ktoré
sa rozlišujú architektúrou (dopredné, rekurentné) a spôsobom učenia (s učiteľom alebo bez
0
50
1 6 11 16 21 26
Vertikálny histogram
0
20
40
1 6 11 16 21 26 31 36 41 46
Vertikálny histogram
0
50
1 6 11 16 21 26
Horizontálny histogram
0
20
40
1 6 11 16 21 26 31 36 41 46
Horizontálny histogram
36
učiteľa). Príkladmi neurónových sietí sú napr. perceptrón, viacvrstvový perceptrón,
Hopfieldová neurónová sieť, Kohonenove samoorganizujúce sa mapy, RBF siete [34],
konvolučné neurónové siete (CNN) [35] a iné. Z nich najbežnejšie používaným je
viacvrstvový perceptrón (MLP), skladajúci sa z neurónov usporiadaných do vrstiev, ktoré
obsahujú jednu vstupnú vrstvu (input layer), jednu výstupnú vrstvu (output layer) a jednu
alebo viacero skrytých vrstiev (hidden layers). Každý neurón pritom patrí práve do jednej
vrstvy. Sieť je dopredná, čo znamená, že výstup všetkých neurónov vstupnej a skrytých
vrstiev je privedený na vstup všetkých neurónov nasledujúcej vrstvy [36].
Na začiatku sa privedie na vstupnú vrstvu, t.j. vstupné neuróny nejaká informácia, ktorá sa
potom šíri po neurónoch ďalej až sa dostane na koniec, do výstupných neurónov.
V každom neuróne sa pritom realizujú operácie, ktoré buď aktivujú (budia) neurón alebo
ho utlmujú v závislosti od prahu a zvolenej aktivačnej funkcie. Od toho ďalej závisí, aké
hodnoty sa z neurónu získajú a privedú na vstup ďalšieho neurónu.
Obr. 21 Príklad jednoduchej neurónovej siete [37]
Na to, aby mohla byť neurónová sieť použitá, musí byť najskôr naučená. Učenie
predstavuje proces privádzania hodnôt na vstupné neuróny a nastavovanie všetkých váh
tak, aby neurónová sieť dávala správny výsledok. Existuje niekoľko algoritmov, ktorými je
možné neurónovú sieť učiť. V sieti typu MLP je najpoužívanejším algoritmus spätného
učenia (back propagation). To, ako dobre bude naučená neurónová sieť fungovať záleží od
veľkosti a kvality vstupných trénovacích dát, charakteru týchto dát a hlavne od návrhu
neurónovej siete (typu siete a zvoleného počtu neurónov na jednotlivých vrstvách).
Mechanizmus podporných vektorov
Support vector machine (SVM) je metóda strojového učenia, ktorá na rozdiel od
neurónovej siete poskytuje globálne a jedinečné riešenie s využitím algoritmov
Vstupná
vrstva Skrytá
vrstva Výstupná
vrstva
37
z optimalizačných teórií konvexného kvadratického programovania [34]. Je to metóda
založená na učení s učiteľom. Pôvodne bola vyvinutá ako binárny lineárny klasifikátor
rusko-americkým matematikom Vladimirom Vapnikom a neskôr bola vylepšená pomocou
tzv. jadrových funkcií (kernel function). Tie mapujú vektor príznakov (vstupné dáta) do
viacrozmerného priestoru za účelom vytvorenia optimálnej lineárnej diskriminačnej
nadroviny v tomto priestore. Inými slovami, umožňujú lineárne neseparovateľné dáta
v pôvodnom priestore transformovať do priestoru s vyššou dimenziou, v ktorom je už
možné ich lineárne oddeliť.
Obr. 22 Princíp mechanizmu podporných vektorov na príklade dvoch tried
Podstatou SVM je teda analýza a nájdenie takej optimálnej nadroviny (hyperplane, v 2-
rozmernom priestore je to priamka, v 3-rozmernom rovina, atď.), ktorá maximalizuje šírku
oddeľujúcej hranice medzi triedami. Polohu a smer tejto hranice určujú len okrajové body
v oboch triedach zvané podporné vektory (support vectors). Ostatné vektory na jej polohu,
ani smer nevplývajú [38].
V porovnaní s neurónovými sieťami je nielen klasifikácia, ale aj trénovanie extrémne
efektívne a to aj vďaka tomu, že na naučenie stačí použiť v SVM malé množstvo
trénovacích dát.
Boosting
Prvé algoritmy tohto typu sa objavili v roku 1988 [22]. Dnes je jeden z najznámejších
algoritmov AdaBoost (Adaptive Boosting) uvedený Freundom a Shapireom [39]. Podstatou
je využitie viacerých slabých klasifikátorov (weak classifiers) s relatívne malou
úspešnosťou za účelom vytvorenia jedného veľkého silného klasifikátora (strong
classifier).
38
Obr. 23 Príklad silného klasifikátora vytvoreného z 3 slabých klasifikátorov
Vytvorený výsledný klasifikátor sa tak stáva silným vďaka lineárnej kombinácii slabých.
Slabým klasifikátorom pritom môže byť ľubovoľný klasifikátor, ktorý dáva výsledky
lepšie než náhodné. Môže to byť napr. neurónová sieť, Bayesov klasifikátor, rozhodnutie
na základe nejakej vlastnosti apod. Vďaka takto vytvorenému silnému klasifikátoru
dosahuje algoritmus veľmi dobré výsledky. Navyše, oproti neurónovej sieti sa pri učení,
i veľkom počte vstupných dát tak ľahko nepretrénuje. Nevýhodou ale je, že je učenie
veľmi zdĺhavé, náročné na čas.
Detektory a deskriptory kľúčových bodov
V počítačovom videní je koncept kľúčových bodov (keypoints) alebo tiež nazývaných
bodov záujmu (interest points), príznakových bodov (feature points), či význačných
regiónov (distinguished regions) vo veľkom využívaný nielen v oblasti rozpoznávania
objektov, ale aj v registrácií obrazu, vizuálnom sledovaní a v 3D rekonštrukcií [40].
Základná myšlienka spočíva v tom, že sa pomocou detektora lokalizujú kľúčové body
alebo oblasti reprezentujúce významné miesta v obraze, ktoré sa deskriptorom následne
zakódujú spolu s ich okolím do tzv. príznakových vektorov. Takto získame množinu
lokálnych príznakov, ktoré dávajú lokálny pohľad na obrázok a teda ho celý reprezentujú.
Každý detektor by mal spĺňať minimálne vlastnosť opakovateľnosti (repeatibility), čo
znamená nájdenie kľúčových bodov alebo regiónov (závisí od detektora) na rovnakých
miestach v obraze bez ohľadu na zmenu osvetlenia a parametre kamery. Detektor by teda
mal byť invariantný voči zmene osvetlenia, posunu a ďalej mierke, rotácií, či zmenám
pohľadu (afinné alebo 3D projekcie). Nie všetky detektory spĺňajú všetky tieto vlastnosti,
no snaha je vytvoriť taký detektor, ktorý by spĺňal všetky. K základným vlastnostiam by
mala byť invariantnosť voči posunu a rotácií, takže detektory by mali byť schopné
vyhľadávať rovnaké kľúčové body objektov i keď bude obraz posunutý alebo natočený.
Lokalizujú sa pritom iba také body, ktoré sú významné a ľahko odlíšiteľné. Homogénne
časti v obraze bez textúry nemajú vysokú odlíšiteľnosť, preto by nemali byť kľúčovými
bodmi. Pre lepšie zachytenie a odolnosť voči afinným alebo projekčným transformáciám
39
pridávajú niektoré detektory k lokalizovaným bodom ešte aj okolie reprezentované
pomocou kruhov alebo elíps. Tie vyjadrujú mierku alebo transformáciu kľúčového bodu
a jeho okolia, čo sa používa pri ich deskripcií. Na detekciu a teda extrakciu kľúčových
bodov je možné použiť viacero prístupov, napr. Harrisov detektor rohov [41], Hessianov
detektor blobov [42], SUSAN (Smallest Univalue Segment Assimilating Nucleus) [43],
MSER [44] (Maximally Stable Extremal Regions) a iné.
Podobne ako detektor i deskriptor musí spĺňať určité vlastnosti, nakoľko vektory príznakov
sa budú za účelom rozpoznávania porovnávať s vektormi získanými z iných obrázkov.
Preto musí byť deskriptor invariantný voči transformáciám a mať vysokú diskriminativitu
popisu, čo znamená, že popis kľúčového bodu a jeho okolia, prípadne regiónu musí byť
jednoznačný a vždy odlišný pre rôzne kľúčové body. Naopak popis by mal byť takmer
rovnaký pre podobné miesta. Veľkosť vektora príznakov pre jeden kľúčový bod alebo
región závisí pritom od použitého deskriptora, napr. pri SIFT (Scale Invariant Feature
Transform) [45] deskriptore sa používa štandardne 128-rozmený vektor. Inými príkladmi
deskriptorov sú SURF (Speeded Up Robust Features) [46], Spin-Image [47], GLOH
(Gradient location-orientation histogram) [42], LIOP (Local Intensity Order Pattern) [48]
a iné [42].
Obr. 24 Rozpoznanie objektu škatule pomocou SURF algoritmu s vyznačenými kľúčovými bodmi
Po detekcií a deskripcií môžeme lokálne príznaky použiť na vyhľadávanie a rozpoznávanie
objektov (obr. 24). Stačí, aby sme uvedený postup detekcie a popísania bodov vykonali na
zdrojovom obrázku reprezentujúcom objekt záujmu a následne na ostatných obrázkoch, v
ktorých chceme objekt detegovať. Ak to máme, pristúpime k hľadaniu korešpondencií, t.j.
párovaniu získaných lokálnych príznakov v jednom obrázku s príznakmi v druhom
obrázku. Na tento účel existuje niekoľko spôsobov, ako párovať, najčastejšie sa používa
metrika pre Euklidovskú vzdialenosť pri porovnávaní dvoch príznakových vektorov
a párovanie pomocou vzájomne najbližších susedov, pomocou stabilného párovania alebo
40
metódou prvý/druhý najbližší, ktorú predstavil Lowe v [45]. Takto získame tzv. tentatívne
(predbežné) korešpondencie, z ktorých nie všetky sú správne spárované. Zbaviť sa
nekorešpondujúcich bodov je možné pomocou dopredu nájdenej transformačnej matice
scény medzi pohľadmi zdrojového a cieľového obrázku, ak takáto transformácia existuje.
Na to sa používa algoritmus RANSAC [49].
Výhodou celého prístupu detekcie a deskripcie je, že sa na obrázok pozerá vďaka
kľúčovým bodom alebo regiónom lokálne, t.j. iba na lokálne časti obrázka, ktoré sú
významné, takže v prípade oklúzie – prekrytí časti obrázka inými objektmi to nevadí,
keďže je stále šanca identifikovať objekt pomocou zvyšných bodov. Rovnako aj pri malej
zmene pohľadu (iná pozícia kamery zachytávajúca scénu alebo natočenie objektu) by mala
byť väčšina bodov identifikovateľných a podobne popísaných. Vyhodnotenie detektorov
a deskriptorov sa podrobne zaoberajú autori vo svojich prácach v [42] a [50].
Iným a rýchlejším spôsobom, najmä pre hľadanie vo viacerých kategóriách je použitie
prístupu pomocou batohu vizuálnych slov (Bag-of-Visual-Words, BoVW alebo len BoW).
Základná myšlienka spočíva v reprezentovaní každého obrázka v databáze počtom
výskytov tzv. vizuálnych slov (obr. 25). Vizuálne slová predstavujú stredy zhlukov
vektorov príznakov kľúčových bodov. Tie sa vytvárajú pri učení klastrovaním veľkého
počtu popísaných kľúčových bodov z obrázkov. Každý obrázok v databáze je tak
reprezentovaný vektorom (histogramom) početností výskytov vizuálnych slov [51].
Vyhľadávanie podobných obrázkov alebo len ich častí v obrázkoch, ktoré sa nachádzajú
v databáze, potom spočíva v porovnávaní vektorov vizuálnych slov. Inšpirácia tohto
algoritmu bola z vyhľadávania textov (text retrieval) metódou batohu slov (Bag-of-Words,
BoW) [52]. Metóda je dostatočne rýchla pre vyhľadávanie vo veľkých databázach
obrázkov (image retrieval), kde sa ešte vykonávajú dodatočné kroky ako je verifikácia
a pre lepšie výsledky aj expanzia dopytu (query expansion) [53] [54].
41
Obr. 25 Reprezentácia obrázkov batohom vizuálnych slov, zdroj: [51]
Obr. 26 Detegované kľúčové body Harrisovým detektorom
Detekcia kľúčových bodov
Klastrovanie kľúčových bodov
Priestor príznakov kľúčových bodov
Slovník vizuálnych slov (4 zobrazené slová)
Vektory vizuálnych slov
Batoh vizuálnych slov (Bag-of-Visual-Words)
42
Harrisov detektor
Harrisov (Harris) detektor [41] je rohový detektor, ktorý vyhľadáva na obraze miesta,
v ktorých sa mení gradient v dvoch ortogonálnych smeroch. Má vysokú presnosť detekcie,
je invariantný voči posunu a rotácií. Jeho vylepšená verzia Harris-Laplacian pridáva
invariantnosť voči mierke a Harris-Affine navyše aj voči afinným transformáciám.
Obr. 27 Detegované oblasti vľavo Harris-Laplace a vpravo Harris-Affine detektorom
Hessianov detektor
Hessianový (Hessian) detektor hľadá centrá tzv. blobov, čo sú oblasti v obraze, ktoré sa
líšia v jase alebo farbe v porovnaní s okolím. Detektor je založený na hľadaní lokálnych
extrémov determinantov Hessiánovej matice. Podobne ako pri Harrisovom detektore i tu
existuje vylepšenie v podobe Hessian-Laplace detektoru, ktorý je invariantný voči
rotáciám a mierke. Hessian-Affine k tomu pridáva ešte aj invariantnosť voči afinným
transformáciám [42].
Obr. 28 Detegované oblasti vľavo Hessian-Laplace a vpravo Hessian-Affine detektorom
MSER
MSER (Maximally Stable Extremal Regions) [44] je detektor, ktorý vyhľadáva v obraze
maximálne stabilné extremálne oblasti spojených komponent pomocou prahovania
intenzity jasu. Pri zvyšovaní prahu sa sleduje narastanie oblastí a ich štatistika (obsah
a dĺžka hranice). Hľadajú sa potom také rozsahy, pri ktorých sa pomer obsahu k dĺžke
hranice mení najmenej. Je to algoritmus podobný algoritmu rozvodia (watershed). Bol
43
navrhnutý Matasom a jeho výskumnou skupinou na ČVUT v Prahe. Je invariantný voči
afinným transformáciám.
Obr. 29 Detegované regióny MSER detektorom
SIFT
SIFT (Scale Invariant Feature Transform) je detektor a rovnako aj deskriptor, ktorý navrhol
Lowe [55] vo svojej práci. Je to jeden z najpoužívanejších state-of-the-art deskriptorov v
súčasnosti. Je invariantný k zmene mierky, osvetlenia a lokálnych afinných deformácií. Od
vzniku SIFT-u bolo mnoho pokusov o vylepšenie tohto algoritmu. Príkladom je SURF,
ktorý zrýchľuje výpočet s použitím integrálneho obrazu a Hessianovskej matice, PCA-
SIFT [56], ktorý používa analýzu hlavných komponent na normalizovanej gradientovej
oblasti namiesto váhových histogramov alebo Hue-SIFT [57] pridávajúci farebnú
informáciu. Možnosti SIFTu rozširuje tiež algoritmus ASIFT [58], ktorý simuluje viacero
pohľadov na obrázok, nad ktorými spúšťa klasický SIFT.
Histogram orientovaných gradientov
Histogram orientovaných gradientov (HOG, Histogram of Oriented Gradients) je
deskriptor, ktorý navrhli Dalal a Tiggs pôvodne pre detekciu ľudí [59]. Metóda je
založená, podobne ako SIFT deskriptor, na popise orientácií a veľkosti gradientov. Na
rozdiel od SIFT-u nepopisuje okolie kľúčových bodov, ale celý obsah určitého výseku
obrázka (okno určitej veľkosti). Vyhodnocuje tak normalizované lokálne histogramy
orientovaných gradientov v hustej pravidelnej mriežke rovnomerne rozdelených buniek
(obr. 30). Základná myšlienka je vo výskyte lokálnych objektov a tvaru, ktorý môže byť
vyjadrený skôr distribúciou gradientov lokálnych intenzít alebo smerov hrán, dokonca bez
presnej znalosti ich odpovedajúcich pozícií.
Bolo vytvorených niekoľko alternatívnych vylepšení tohto deskriptora a to nielen pre
detekciu chodcov, ale aj všeobecnú detekciu objektov, ako popisuje Szeliski [30].
44
Obr. 30 Testovací obrázok a jeho zodpovedajúci HOG, zdroj: [59]
3.3 MPEG-7
Ako začalo narastať množstvo audiovizuálneho materiálu (fotografie, zvukové nahrávky,
videá), vznikla potreba efektívneho vyhľadávania v týchto dátach. Expertná skupina
MPEG (Moving Picture Experts Group) preto vytvorila štandard MPEG-7, ktorý bol
štandardizovaný ako ISO/IEC 15938 s formálnym názvom Rozhranie pre popis
multimediálneho obsahu (Multimedia content description interface) [60]. Nejde o štandard
pre kódovanie videa ako v prípade úspešných štandardov MPEG-2 alebo MPEG-4, ale
skôr o ich doplnok (a nielen ich), ktorý popisuje formou metadát, čo sa na nich nachádza
(t.j. obsah ich obrazových a zvukových dát) pomocou štandardizovaných nástrojov. Okrem
popisu najnovšie definuje aj jazyk na dopytovanie, pomocou ktorého je možné tieto dáta
vyhľadávať.
Štandard sa vyvíja už od roku 1997, postupne podľa potreby k nemu pribúdali dodatky ako
i nové časti. V súčasnosti sa skladá z 13 častí (štandardov ISO/IEC 15938-1 až 15938-13),
z ktorých niektoré sú uzavreté a iné stále vo vývoji [24]:
1. Systémy (Systems) – špecifikuje systémovú vrstvu – základ, ktorý umožňuje
použitie štandardu v praktických prostrediach. Definuje mechanizmus podpory
synchronizácie medzi obsahom a jeho popismi. Okrem hlavného XML formátu
definuje aj alternatívnu verziu použitia binárneho formátu BiM.
2. Jazyk pre definíciu popisu (Description Definition Language, DDL) – špecifikuje
jazyk založený na jazyku schémy XML pre definovanie popisných schém
(description schemes, DS) a deskriptorov (descriptors, D). Umožňuje ich tvorbu,
rozširovanie a modifikáciu.
Definície:
Deskriptor je reprezentáciou nejakého príznaku, ktorý definuje jeho syntax
a sémantiku, môže to byť napr. rozlišovacia charakteristika audiovizuálnej
informácie ako sú nízkoúrovňové príznaky (farba, textúra, pohyb, sila
45
zvuku, atď.) alebo vysokoúrovňové sémantické príznaky objektov, udalostí
a abstraktných konceptov.
Popisná schéma špecifikuje štruktúru a sémantiku vzťahov medzi
komponentmi, ktorými môžu byť práve deskriptory a popisné schémy
(obr. 31).
Obr. 31 Hlavné elementy MPEG-7, zdroj: [60]
3. Obraz (Visual) – špecifikuje vizuálne deskriptory popisujúce obraz.
4. Zvuk (Audio) – špecifikuje zvukové deskriptory popisujúce zvuk.
5. Multimediálne popisné schémy (Multimedia Description Schemes, MDS) –
poskytujú základné štandardizované popisné schémy pre zvukové a vizuálne
deskriptory (spolu označované ako multimediálne deskriptory).
6. Referenčný softvér (Reference Software) – zahŕňa softvér implementujúci
relevantné časti štandardu.
7. Konformnosť (Conformance) – určuje postupy pre testovanie zhody implementácie
MPEG-7 štandardu.
8. Extrakcia a použitie MPEG-7 popisov (Extraction and Use of MPEG-7
Descriptions) – kolekcia informačných materiálov (technických správ), ako použiť
MPEG-7. Poskytuje informácie o extrakcií a použití niektorých popisných
nástrojov.
9. Profily (Profiles) – špecifikuje MPEG-7 profily.
10. Definícia schémy (Schema definition) – špecifikuje schémy s použitím jazyka DDL
naprieč všetkými časťami MPEG-7 štandardu.
11. Profilové schémy (Profile schemas) – definuje nové profilové schémy (základné a
zložené typy).
TagsTags
<scene id=1>
<time> ....
<camera>..
<annotation
</scene>
InstantiationInstantiation
TagsTags
<scene id=1>
<time> ....
<camera>..
<annotation
</scene>
InstantiationInstantiation
Descriptors:Descriptors:
(Syntax & semantic(Syntax & semantic
of feature representation)of feature representation)
D7
D2
D5
D6D4
D1
D9
D8
D10
101011 0
Encoding&
Delivery
101011 0
Encoding&
Delivery
D3
LanguageDescription Definition extensionextension
DefinitionDefinition
LanguageDescription Definition extensionextension
DefinitionDefinition
Description SchemesDescription Schemes
D1
D3D2
D5D4D6
DS2
DS3
DS1
DS4
StructuringStructuring
Description SchemesDescription Schemes
D1
D3D2
D5D4D6
DS2
DS3
DS1
DS4
Description SchemesDescription Schemes
D1
D3D2
D5D4D6
DS2
DS3
DS1
DS4
StructuringStructuring
46
12. Formát na dopytovanie (Query Format) – definuje dopytovací formát MPQF
založený na XML určený pre vyhľadávanie.
13. Kompaktné deskriptory pre vizuálne vyhľadávanie (Compact Descriptors for Visual
Search) – určený pre vyhľadávanie v multimediálnych databázach, snaha je
o kompaktnosť, nakoľko je inšpirovaný pre použitie mobilnými zariadeniami.
Multimediálny obsah je možné nielen anotovať ručne a pridávať napr. textové metadáta
(napr. XML značkou TextAnnotation), ale hlavne je ho možné popisovať automaticky
pomocou audiovizuálnych deskriptorov (určité charakteristiky vyjadrené koeficientmi
umiestnenými napr. v značke VisualDescriptor). Pri ich použití sa extrahujú určité
príznaky, ktoré sa zakódujú do vektora hodnôt a tie je potom možné použiť na
porovnávanie a vyhľadávanie. Z vizuálnych deskriptorov sú to napr. nízkoúrovňové
deskriptory popisujúcu farbu (napr. farebný histogram, dominantné farby), tvar, textúru a
pohyb alebo z vysokoúrovňových detekcia ľudských tvárí. Príklad XML dokumentu
štandardu MPEG-7 znázorňuje obr. 32. Ten popisuje obrázok s názvom goal.jpg, na
ktorom sa nachádza hráč menom Klose dávajúci gól (textová anotácia). Okrem toho sa
v ňom popisuje aj farba deskriptorom typu ScalableColor (vizuálny deskriptor).
Obr. 32 Ukážka MPEG-7 dokumentu a jeho korešpondujúceho DOM stromu, zdroj: [61]
47
3.3.1 Vizuálne deskriptory
Cieľom MPEG-7 štandardu časti 3 o vizuálnych deskriptoroch je poskytnúť popisy, ktoré
pomôžu používateľom alebo naprogramovaným aplikáciám identifikovať, kategorizovať
alebo filtrovať obrázky a video. Patria sem nasledujúce deskriptory [60]:
Deskriptory farby (Color descriptors) – popisujú farby, nakoľko farebné príznaky
sú robustné voči zmenám pohľadu, posunu a rotácií skúmanej časti obrázka.
Špecifikuje niekoľko farebných deskriptorov, ktoré reprezentujú priestorové
rozloženie, štruktúru, dominantné farby, škály atď.
Deskriptory tvaru (Shape descriptors) – popisujú tvar a kontúry vo forme oblastí,
ich zakrivení a rôznych charakteristík ako je kruhovosť, excentricita apod.
Deskriptory textúry (Texture descriptors) – popisuje štruktúru povrchu a jeho vzťah
k okolitému prostrediu zachytávajúc vzory homogénnych alebo nehomogénnych
vlastností. Napr. oblaky, skupina naukladaných tehál, vlasy a rôzne tkaniny so
vzormi majú špecifickú štruktúru. Z deskriptorov sem možno zaradiť deskriptor
homogénnosti, popisujúci pravidelnosť, hrubosť, smer alebo frekvenciu.
Deskriptory pohybu (Motion descriptors) – popisujú charakteristiky vo videu, ktoré
poskytujú informáciu o tom, čo sa deje v jeho obsahu. Patria sem deskriptory
zachytávajúce pohyb objektov, ich trajektórií a pohyb kamery.
Deskriptor rozpoznávania ľudských tvárí (Face descriptor) – vysokoúrovňové
detektory ľudských tvárí v obraze, schopné rozpoznávať a identifikovať tváre,
dokonca aj z rôznych póz.
Prvé štyri sa označujú aj ako nízkoúrovňové deskriptory, kým posledný ako
vysokoúrovňový. Výstupy z nízkoúrovňových deskriptorov je pritom možné použiť pre
porovnávanie, filtrovanie alebo prehliadanie obrázkov a videí v databázach. Vyhľadávanie
je možné nasledujúcimi vstupmi [24]:
Graficky nakreslením obrysu (query by sketch), na základe ktorého sa vráti
množina obrázkov s podobnou grafikou alebo logom.
Obrázkom (query by example alebo výstižnejšie query by image example), na
základe ktorého sa vrátia podobné obrázky (podobné vo farbe, tvare alebo textúre).
Videom, ktorý vráti výsledky na základe pohybu objektov, kamery vo videu alebo
vzťahov medzi objektmi.
48
Vyhľadávanie v rozsiahlych databázach pomocou takýchto nízkoúrovňových príznakov sa
používa v systémoch vyhľadávania obrazu založeného na obsahu (Content Based Image
Retrieval, CBIR), ktorého myšlienka pochádza už zo začiatku 90. rokov [62]. Príklady
implementácií MPEG-7 deskriptorov v CBIR možno nájsť v [62] [63] [64] [65] [66] [67] .
Navyše, objavili sa aj hardvérové implementácie MPEG-7 štandardu. Napr. firma
Eptascape vytvorila hardvérový enkodér ADS-200 [68], ktorý je schopný z obrazu kamery
(vstup) automaticky vytvárať XML anotácie (výstup) pre ich následné spracovanie.
3.3.2 MPQF
Uvedené CBIR systémy umožnili vyhľadávanie vo veľkých databázach, avšak navzájom si
neboli kompatibilné vo formáte, v akom si tieto dáta dopytovali. Aby sa umožnilo
dopytovanie multimediálneho obsahu bez ohľadu na konkrétnu implementáciu systému,
vznikla potreba unifikácie rozhrania vstupov a výstupov týchto systémov. Do MPEG-7
štandardu sa preto pridala 12. časť, ktorá priniesla v roku 2008 nový štandardizovaný
formát MPQF (MPEG Query Format) [69]. Je založený na XML a umožňuje
interoperabilitu a platformovú nezávislosť [70].
Obr. 33 Elementy XML MPEG formátu na dopytovanie
Každý MPQF XML dokument obsahuje MpegQuery koreňový element a pod ním
elementy Query alebo Management (obr. 33). Prvý z nich slúži na dopytovanie (vstupná
požiadavka, výstupná odpoveď s možnosťou asynchrónneho dopytovania). Druhý,
Management, predstavuje správy, ktorými je možné zisťovať poskytované služby,
konfiguračné a iné parametre súvisiace so službou.
Príklad vstupného dopytu s definovanou podmienkou vrátenia obrázkov všetkých
formátov, pri ktorých sa nachádza popis „Hong Kong“ a ktorých šírka je väčšia alebo
rovná než 1000 pixelov zobrazuje nasledujúci XML dokument:
49
<?xml version="1.0" encoding="utf-8"?> <MpegQuery> <Input> <OutputDescription thumbnailUse="true"> <ReqField typeName="MediaInformationType"> MediaProfile/MediaFormat/FileSize </ReqField> <ReqField typeName="CreationInformationType"> Creation </ReqField> </OutputDescription> <QueryCondition> <TargetMediaType>image/*</TargetMediaType> <Condition xsi:type="AND" preferenceValue="0.1"> <Condition xsi:type="QueryByFreeText"> <FreeText>Hong Kong</FreeText> </Condition> <Condition xsi:type="GreaterThanEqual"> <ArithmeticField typeName="MediaInformationType"> MediaProfile/MediaFormat/Frame@width </ArithmeticField> <LongValue>1000</LongValue> </Condition> </Condition> </QueryCondition> </Input> </MpegQuery>
3.4 Zhodnotenie
VANET siete sú perspektívnou budúcnosťou automobilového priemyslu, nakoľko
poskytujú obrovské možnosti, či už z hľadiska zvýšenia bezpečnosti alebo komfortnosti
používateľov. V oblasti spracovania a analýzy obrazu bolo navrhnutých niekoľko aplikácií,
ako bolo uvedené na začiatku tejto práce. Všetky aplikácie sú špecifické tým, že riešia
určitý problém presne vymedzenej oblasti, pre ktorú boli navrhnuté. Z nášho prieskumu
doposiaľ nebolo zistené žiadne existujúce riešenie, ktoré by bolo schopné vyhľadávať
všeobecné informácie – objekty nachádzajúce sa v obraze na požiadanie.
Vyhľadávanie obrazu pomocou CBIR / QBIC systémov je založené na vyhľadávaní
v databázach naplnených už existujúcimi dátami, čo sú príznaky získané z obrazu, ako sú
farebné, tvarové alebo textúrové informácie, či iné príznaky popisujúce lokálne alebo
globálne časti obrazu. Istá podobnosť je tu s našou úlohou, avšak jej cieľom nie je
vyhľadávať v databáze, ale na aktuálne získanom obrázku z kamery v reálnom čase.
Čiastočné riešenie by ponúkal štandard MPEG-7, ktorý najskôr popisuje to, čo sa nachádza
na obraze pomocou deskriptorov do dokumentu XML, v ktorom je následne možné
vyhľadávať. Napriek tomu, že je možné pomocou DDL a DS použiť vlastné deskriptory
s vlastnou definíciou a tak upraviť XML dokument na svoj vlastný obraz, nerieši sa
50
všeobecné vyhľadávanie presne toho, čo by sme v konkrétnom čase požadovali. MPEG-7
umožňuje totiž vyhľadávať len to, čo bolo už dopredu popísané.
Z tohto dôvodu sme sa rozhodli navrhnúť nový systém s jazykom na dopytovanie
akýchkoľvek informácií z obrazových dát získaných z jednej alebo viacerých kamier
umiestnených vo vozidle v reálnom čase s využitím algoritmov spracovania a analýzy
obrazu. Náš návrh, výsledky a závery predkladajú nasledujúce kapitoly.
51
4 Riešenie
Cieľom dizertačnej práce je návrh systému a jazyka na dopytovanie objektov a ich relácií
s inými objektmi nachádzajúcimi sa v obraze z kamery snímajúcej dopravnú scénu
z vozidla. Pre splnenie tohto cieľa si najskôr vymedzíme rozsah problému, analyzujeme
možné objekty a navrhneme riešenie v podobe dopytovacieho jazyka a systému pre jeho
spracovanie v prostredí VANET.
4.1 Vymedzenie problému
Keďže oblasť platnosti riešenia je prostredie VANET a obraz snímaný z pohybujúcich sa
vozidiel, zameriame sa hlavne na objekty v ňom nachádzajúce, t.j. objekty dopravnej
scény, ako sú účastníci cestnej premávky, infraštruktúra, prostredie atď. Dôležité je
identifikovať všetky elementárne a najčastejšie sa vyskytujúce objekty. Okrem nich sa na
dopravnej scéne môže objaviť čokoľvek vrátane objektov, ktoré nie je možné predpokladať
dopredu pri návrhu systému (napr. žirafa, lietadlo na ceste, atď.). Preto aj takéto objekty
budeme pri návrhu brať do úvahy.
Každý reálny objekt má svoje charakteristické vlastnosti. Vďaka nim je možné objekty
medzi sebou rozlišovať a porovnávať. Či už sú to konkrétne vlastnosti špecifické pre
reálny objekt alebo všeobecné (ako je rozmer, farba, tvar alebo textúra), ktoré sa radia
z pohľadu analýzy obrazu do kategórie nízkoúrovňových príznakov. Z určitého aspektu sa
aj na tieto vlastnosti môžeme pozerať ako na objekty, ktoré sa nachádzajú v obraze, napr.
objekt kruhového, trojuholníkového alebo všeobecného tvaru, či objekt určitej farby.
Niektoré objekty môžu mať medzi sebou určitý vzťah, či už priestorový (pozícia v obraze
globálne a relatívne k iným objektom) alebo aj časový (videosekvencia – postupnosť
obrazov, v ktorej je jednak vozidlo pohybujúci sa objekt medzi inými objektmi, ktoré sa
môžu tiež pohybovať).
Ak identifikujeme objekty, ich vlastnosti a vzťahy medzi nimi, môžeme ich využiť pri
tvorbe a návrhu jazyka na dopytovanie z obrazu snímajúceho dianie pred vozidlom.
Spracovávaný obraz pritom môže byť vo forme jedného snímku alebo videosekvencie.
V tejto práci sa obmedzíme len na spracovanie jedného snímku, avšak budeme môcť
použiť aj videosekvenciu bez časových závislostí.
52
Navrhnutý dopytovací jazyk by preto mal umožňovať nasledujúce operácie:
rozpoznávanie vysokoúrovňových objektov,
rozpoznávanie nízkoúrovňových objektov,
základné operácie nad objektmi a ich vlastnosťami,
priestorové operácie,
dĺžku a podmienku ukončenia vykonávania dopytu.
Nielen operácie, ale aj formát je pritom dôležitý, keďže je navrhovaný pre prostredie
VANET sietí, v ktorých komunikácia môže prebiehať v krátkom čase, nakoľko vozidlá sú
dynamické objekty rýchlo sa pohybujúce a míňajúce na dopravnej sieti. Dôležitá je preto
tiež minimalizácia veľkosti prenášaných dát. Definovanie formátu pre dopytovanie bude
hlavným predmetom výskumu, ktorého správny návrh umožní spracovanie vyššie
uvedených operácií. Formát by mal mať nasledujúce vlastnosti:
kompaktnosť formátu a minimalizácia jeho veľkosti na dopytovanie,
jednoduché vyjadrenie základných a komplexných operácií nad obrazom,
univerzálnosť a jednoduchá rozšíriteľnosť syntaxe (možnosť pridania nových
funkcií a rozšírení).
Formát by mal byť definovaný nielen pre dopyt (vstupný formát požiadavky), ale aj pre
možné odpovede (výstup). Preto je nutné definovať aj výstupný formát odpovede dopytu.
Obr. 34 Globálny pohľad na postup spracovania obrazu definovaného dopytom
Komunikácia, nadviazanie spojenia a prenos je mimo oblasť nášho skúmania. Avšak, pre
lepšiu predstavu, v akom prostredí a pre aký účel bude navrhované riešenie cielené,
uvedieme nasledujúci scenár použitia. Zadávateľ odošle svoj dopyt (vstupná požiadavka)
na jedno alebo viacero vozidiel (spracovateľov dopytov) napr. z infraštruktúry pomocou
V2I komunikácie. Vo vozidlách sa dopyt spracuje, vykoná a v závislosti od jeho
charakteru sa odošle zadávateľovi odpoveď (výstup). Ak sa pozrieme na motivačný príklad
uvedený v úvode tejto práce, policajti pátrajúci po vozidle s určitým neúplným popisom
vystupujú ako zadávatelia. Odošlú dopyt na vozidlá, napr. v určitej vymedzenej oblasti a
ak nejaké vozidlo, t.j. spracovateľ dopytu, identifikuje hľadaný objekt záujmu, odošle
Vstup (dopyt)
Spracovanie a vykonanie dopytu
nad obrazom
Výstup (odpoveď)
53
policajtom požadovanú odpoveď. Rozsah spracovania a jeho dĺžka vykonávania budú
definované v dopyte. Náčrt funkčnosti znázorňuje obr. 35.
Kladenou požiadavkou na vozidlá je, aby boli vybavené aspoň jednou kamerou snímajúcou
priestor pred vozidlom. Okrem kamery by bolo vhodné využiť aj ďalšie senzory, ktoré by
pomohli jednak rozpoznávacím algoritmom a hlavne k rozšíreniu možností dopytov, ako
napr. GPS senzor, akcelerometer, gyroskop atď. GPS senzor by mal byť vo vozidlách
v prostredí VANET vždy k dispozícií, takže predpokladáme jeho možné použitie, najmä
pre získanie takých informácií ako je pozícia, rýchlosť a smer pohybu.
Zadávateľpožiadavky
Dopyt
.
.
.
Definovaniedopytu
Odoslanie dopytu
Odoslanie výsledku
Spracovanie dopytu
Vozidlo 1
Spracovanie dopytu
Vozidlo 2
Spracovanie dopytu
Vozidlo N
Obr. 35 Náčrt dopytovania od jeho definovania po vrátenie výstupu
Pre zhrnutie celého princípu dopytov nad obrázkami uvádzame nasledovný postup v
krokoch znázornený aj na obr. 35 nasledovne:
Definovanie dopytu – vytvorenie dopytu zadávateľom (buď manuálne človekom
alebo automaticky aplikáciou). V dopyte je definovaný hľadaný objekt
záujmu, požadovaný výstup a možná dĺžka spracovania dopytu.
Odoslanie dopytu vozidlám – dopyt sa odošle na jedno alebo viacero vozidiel
(spracovateľov dopytov) v závislosti od definovanej cieľovej oblasti, v ktorej sa má
spracovávať obraz (oblasť je definovaná napr. geocastom).
Spracovanie dopytu a vrátenie výstupu – spracovanie je realizované vo vozidle buď
okamžite po prijatí požiadavky na aktuálnej snímke získanej z kamery alebo na
videosekvencií určitú dobu definovanú taktiež v dopyte. Dĺžka spracovania tak
54
môže byť ohraničená buď konkrétnym časom (napr. 15 minút), udalosťou (napr.
nájdenie požadovaného objektu, zastavenie chodu vozidla) alebo geolokačným
rozsahom v priestore (vymedzenie priestoru platnosti udanej GPS pozíciou).
Keďže je úloha riešená v prostredí VANET, bolo by zaujímavé využiť v spracovaní dopytu
i okolité vozidlá. Ak by sa napríklad časť dopytu nedokázala splniť jedným vozidlom –
spracovateľom, mohli by sa na dokončenie úlohy zapojiť ostatné vozidlá z okolia. Vozidlo
by tak predalo časť dopytu alebo vytvorilo úplne nový dopyt jednému alebo viacerým
vozidlám, čím by sa zo spracovateľa stal aj zadávateľ. Čiastkové dopyty by tak pomohli k
vykonaniu hlavného dopytu.
Predstavme si nasledujúci problém. Požadujme nájsť také červené vozidlo, ktoré nielenže
obsahuje určité neúplné znaky v evidenčnom čísle, ale navyše mu chýba aj puklica na
prednom kolese z ľavej strany, prípadne má nejakú inú charakteristickú vlastnosť (napr.
nálepku lebky s prekríženými kosťami z úvodného motivačného príkladu) na mieste, ktoré
nie je možné vidieť z jednej pozície pohľadu. Pre lepšiu predstavu sa pozrime na obr. 36,
na ktorom sa nachádzajú tri vozidlá červenej, žltej a zelenej farby. Žlté vozidlo spozoruje
pred sebou červené vozidlo, ktoré spĺňa časť dopytu – farbu vozidla i evidenčné číslo
obsahujúce požadované znaky, avšak treba ešte overiť poslednú časť z dopytu –
neprítomnosť puklice. Túto úlohu ale nie je možné spracovať, lebo kamera na predné
kolesá nevidí. Žlté vozidlo by preto muselo prejsť zo svojho jazdného pruhu do pravého
jazdného pruhu a pri predchádzaní červeného vozidla analyzovať jeho kolesá. Keďže žlté
vozidlo tento manéver nemusí uskutočniť, bolo by dobré pozrieť sa na okolité vozidlá,
ktoré na červené vozidlo majú výhľad. Takýmto vozidlom je na uvedenom obrázku zelené
vozidlo, ktoré prichádza v ľavom jazdnom pruhu a ktoré má dobrý výhľad na
predchádzané červené vozidlo. Žlté vozidlo by preto mohlo vytvoriť dopyt, v ktorom by sa
požadovalo zistenie chýbajúcej puklice. Ak by to následne zelené vozidlo spracovalo
a našlo by zhodu, vrátila by sa odpoveď aj s obrázkom červeného vozidla, ktorý by sa
mohol pribaliť do výsledného výstupu pre odoslanie naspäť zadávateľovi.
Dekomponuje sa tak problém hľadania objektu na menšie problémy za predpokladu, že je
úlohu možné rozdeliť. Časti úlohy sa potom podľa potreby môžu spracovávať vo viacerých
úrovniach. Prvú úroveň predstavuje prvé vozidlo, ktoré spracováva dopyt. Ak bude
potrebovať odoslať čiastkový dopyt, odošle ho druhému vozidlu, čím sa dostávame
na druhú úroveň. Počet týchto vnorení by mal byť obmedzený, pretože musíme počítať, že
55
prenos a hlavne samotné spracovanie zaberie určitý čas v závislosti od zložitosti dopytu.
Navyše si treba uvedomiť, že pracujeme v prostredí ad hoc siete, v ktorej sa infraštruktúra
mení veľmi rýchlo, keďže samotné vozidlá sú mobilné objekty, ktoré prichádzajú
a odchádzajú.
Obr. 36 Náčrt komunikácie žltého vozidla so zeleným vozidlom pre čiastkové spracovanie obrazového
dopytu (červená čiara predstavuje V2V komunikáciu a svetlomodré lichobežníky pohľad kamier)
Táto myšlienka načrtá možnosť vykonávať veľmi zložité dopyty, avšak problematická
bude jej realizovateľnosť, nakoľko je nutné presne lokalizovať vozidlo, od ktorého budeme
požadovať výsledok. Táto úloha môže byť predmetom ďalšieho výskumu a preto sa jej
v tejto práci nebudeme venovať.
4.2 Obrazové objekty
Základom práce s dopytmi budú objekty, nakoľko predstavujú predmet nášho záujmu.
Môžu to byť reálne objekty, ako sú budovy, cesty, ľudia, dopravné značky alebo objekty
v tvare segmentov predstavujúce časti obrazu podľa určitej charakteristiky, napr. oblasti
obsahujúce červenú farbu alebo oblasti majúce trojuholníkový, či iný tvar.
Na rozpoznávanie reálnych objektov musíme využiť pokročilé algoritmy z oblasti analýzy
obrazu a počítačového videnia. Jedná sa o vysokoúrovňové objekty a teda
o vysokoúrovňové vyhľadanie objektov. Naopak rozpoznávanie určitých segmentov patrí
do nízkej úrovne spracovania a analýzy obrazu, preto ich budeme nazývať
56
nízkoúrovňovými objektmi. V obidvoch prípadoch potom oba typy objektov budeme
označovať pojmom obrazové objekty.
V nasledujúcich častiach popíšeme niektoré z obrazových objektov, ktoré budú predmetom
záujmu.
4.2.1 Objekty na dopravnej scéne
Na dopravnej cestnej sieti je možné identifikovať množstvo reálnych objektov, z ktorých
najčastejšie sa vyskytujúce a zaujímavé pre spracovanie obrazu vyberáme a určujeme pri
nich atribúty, ktoré by algoritmy mali implementovať za účelom ich použitia v dopytoch.
Snaha je zachytiť čo najviac významných objektov a ich vlastností v obraze. Identifikácia
nám následne poskytne možnosť sémantického vyjadrenia objektov a okrem toho aj
optimálnej implementácie algoritmov na strane vozidiel vykonávajúcich dopyty.
Rozpoznávanie objektov je totiž možné realizovať buď špecifickými algoritmami, ktoré sa
hodia pre danú množinu problémov alebo univerzálnymi, ktoré nemusia byť optimálne pre
všetky úlohy (obmedzené úspešnosťou rozpoznávania alebo časovo). Napriek snahe
o určenie všetkých významných objektov predpokladáme, že budú v dopytoch požadované
aj iné objekty a ich vlastnosti. V závere preto pristupujeme k explicitnej definícií
všeobecného objektu, pomocou ktorého budeme môcť rozpoznávať ľubovoľné objekty
definované popísaným modelom.
Obr. 37 Príklady objektov nachádzajúcich sa na dopravnej scéne pred vozidlom
(obrázok získaný z kamery umiestnenej vo vozidle)
Cesta ( jazdný pruh priamy v smere jazdy)
Cesta (jazdný pruh
vpravo, odbočovací)
Cesta ( jazdný pruh
vľavo, protismer)
Obloha
Stromy
Vodorovná značka (šípka)
Zvislé dopravné značky
(daj prednosť, kruhový objazd)
Stĺp osvetlania
Tabuľa (bilbord)
Auto (zozadu, biele)
Zvislé dopravné
značky
Vodorovná značka
(šípka)
Auto
(spredu, šedé)
Auto (spredu, žlté)
57
Pozorované objekty na dopravnej scéne môžu byť podľa charakteru ich mobility statické
alebo dynamické. Statickým objektom budeme rozumieť taký objekt, ktorý sa nepohybuje,
napr. budova, strom, cesta atď. Ostatné objekty, ktoré budú mobilné, t.j. pohybujúce sa,
budeme označovať ako dynamické, napr. automobil, chodec, cyklista apod.
Dynamický objekt môže byť ale určitú dobu aj statický. Záleží od jeho aktuálneho stavu.
Napríklad automobil, ak bude parkovať alebo stáť na križovatke, bude z neho na chvíľu
statický objekt. Ak sa začne pohybovať, t.j. meniť svoju polohu, stane sa z neho objekt
dynamický. Pre túto nejednoznačnosť budeme preto pod pojmom statický objekt
rozlišovať len taký objekt, ktorý bude vždy nehybný. Dynamický potom bude objekt, ktorý
sa môže pohybovať, zastaviť i stáť.
Na samotnom obraze zachytávajúcom jeden snímok aktuálneho diania pred vozidlom sa
budú všetky objekty (či už statické alebo dynamické) javiť ako statické. Bez apriórnej
znalosti a predchádzajúcich obrázkoch scény to totiž nie je jednoduché rozlíšiť. Ak by sme
však pridali do obrazu ďalší rozmer v podobe času, dostali by sme video, v ktorom už stav
konkrétnych objektov možno rozpoznať. Napriek tomu, že sa v riešení práce obmedzujeme
len na samostatné snímky, popíšeme aj možnosť práce s touto informáciou. Spolu
s apriórnou znalosťou o objektoch by tak bolo možné využívať aj takéto informácie
v prospech dopytov.
Za účelom identifikácie čo najväčšieho možného počtu objektov sme vykonali niekoľko
desiatok jázd v okolí Žiliny, v ktorom sme mali namontovanú kameru a mobilný telefón
v plnom 1080p rozlíšení pred čelným sklom automobilu. Takto sme získali dáta v podobe
videí a GPS súradníc. Okrem získaných vlastných dát sa nám počas výskumu podarilo
nadviazať spoluprácu aj s externou holandskou firmou, ktorá nám poskytla veľké
množstvo obrazových dát získaných vo vysokom rozlíšení zo všesmerovej Ladybug
kamery. Na základe spracovaní a vyhodnotení týchto videonahrávok sme identifikovali
niektoré významné objekty, ktoré budeme môcť použiť v dopytoch:
1. Obloha a s tým súvisiace osvetlenie a stavy počasia
2. Hory
3. Cesta (vozovka, krajnica, jazdné pruhy, chodníky) a križovatky
4. Vodorovné dopravné značky na cestách
5. Zvislé dopravné značky
6. Svetelné signalizačné zariadenia – semafory
58
7. Texty
8. Vozidlá
9. Ľudia
10. Zvieratá
11. Budovy a stĺpy
12. Stromy, kríky
13. Voľné plochy
14. Vodné plochy
15. Pohybujúce sa objekty vo vzduchu
Každý z uvedených objektov môže mať niekoľko špecifických vlastností, ktoré môžu
nadobúdať rôzne hodnoty (číselné, textové, vymenované) a k ním aj tzv. nedefinovanú
hodnotu, pokiaľ nebude možné určiť ich stav. Okrem toho, každý obrazový objekt bude
obsahovať základné vlastnosti ako je pozícia (zadaná súradnicami x, y), ohraničujúci
obdĺžnik objektu a približnú GPS polohu, ktorá bude vypočítaná na základe aktuálnej GPS
pozície s posunutím o určité hodnoty podľa odhadu umiestnenia na obrázku. Všetky
hodnoty vlastností pritom nemusia byť vypočítané ihneď, ale až po ich požadovaní.
Radi by sme poznamenali, že sa na rozpoznávanie navrhovaných objektov nemusia použiť
len kamery (jedna alebo viacej), ale aj ďalšie pomocné senzory obsiahnuté vo vozidlách
(napr. dažďový senzor, akcelerometer, gyroskop, GPS, kompas, apod.) a takisto aj mapové
podklady poskytujúce informácie o objektoch v blízkosti pozície vozidla (cesty, zastavané
plochy, rieky, jazerá atď.).
Konkrétne algoritmy a použité metódy počítačového videnia budú závisieť od úlohy, ktorá
sa má riešiť (v závislosti od rozpoznávania špecifického objektu). Nakoľko pokroky a nové
metódy v tejto oblasti vznikajú neustále, nebudeme definovať presné algoritmy, aké sa
majú použiť, ale stanovíme požiadavku, aby sa spĺňal kontrakt a implementovalo sa
rozpoznávanie všetkých alebo aspoň určitej podmnožiny z vymenovaných objektov a ich
vlastností. Niektoré z nich preto budú popísané v nasledujúcich podkapitolách.
Obloha
Obloha sa vyskytuje v hornej časti získaného obrázka, pokiaľ nie je prekrytá inými
objektmi (napr. keď sa vozidlo nachádza v tuneli, pod mostom alebo pod stromami). Na
oblohe sa môžu vyskytovať oblaky, slnko, mesiac, lietajúce objekty atď. Svetelné
podmienky a slnko pritom bývajú najviac problematické v mnohých rozpoznávacích
59
úlohách, nakoľko kamere spôsobujú problémy. V prípade dňa a slnka bývajú problémom
v obraze viditeľné odrazy, odlesky alebo tiene, s ktorými si musí poradiť rozpoznávací
algoritmus [ST8]. Určité problémy môžu vyriešiť kvalitné kamery, napr. s technológiou
vysokého dynamického rozsahu (high-dynamic-range, HDR), pomocou ktorej je obraz
snímaný v rôznych expozíciách, čím je možné zachytávať kvalitný obraz ako v protisvetle,
tak i v šere.
Obr. 38 Detegovaná obloha vyznačená modrým šrafovaním
S oblohou súvisia aj stavy počasia. Môže byť jasno, polojasno, úplne zamračené, pršať,
snežiť alebo blýskať sa v prípade búrky. Meteorológovia poznajú oveľa viac kategórií,
avšak pre účel rozpoznávania nám budú stačiť tieto základné stavy. Informácie o počasí
potom môžu byť nápomocné pre spracovanie obrazu, v rozpoznávaní iných objektov alebo
využité pre zisťovanie mapy aktuálneho počasia.
Hlavným cieľom je detegovať oblohu ako jedného objektu, ktorý sa môže skladať buď
z jedného alebo viacerých segmentov podľa toho, aké časti oblohy budú na obraze
viditeľné (a teda neprekryté inými objektmi).
Rozpoznanie oblohy nám umožní získať nasledujúce vlastnosti:
Oblasť oblohy – zoznam zložený zo segmentov tvoriacich jeden objekt oblohy.
Prítomnosť oblohy – áno (obloha je viditeľná), nie (obloha nie je viditeľná, napr. ak
je vozidlo v tuneli).
60
Prítomnosť oblakov – percentuálne vyjadrenie oblačnosti (rozsah 0-100%, pričom
0% bude predstavovať jasnú bezoblačnú oblohu a100% úplne zamračenú oblohu).
Prítomnosť slnka – áno (vidno), čiastočne (prekrytý napr. mrakmi), nie (nevidno).
Stav dňa – deň (svetlo), noc (tma).
Stav počasia – jasno (vidno slnko, bez mrakov), polojasno (vidno slnko i mraky),
zamračené (nevidno slnko, iba mraky), dážď (prší), sneh (sneží), hmla.
Hory
Hory sú často viditeľné v hornatých krajinách v horizonte pod oblohou. Skladajú sa
z vrchov, pričom pod nimi sa väčšinou nachádzajú stromy vytvárajúce les.
Obr. 39 Vyznačená oblasť hôr červenožltým šrafovaním
Požadované vlastnosti:
Oblasť hôr – zložený zo segmentov.
Prítomnosť hôr – áno (hory sú viditeľné), nie (hory nie sú viditeľné).
Cesta
Cesta je pre vozidlá dôležitá, rovnako ako pre iných účastníkov cestnej premávky.
Hlavným cieľom bude identifikovať a lokalizovať cestu a kategorizovať jej časti –
vozovku, krajnicu, jazdné pruhy a chodníky. Jazdné pruhy a smer sa môžu rozpoznávať na
základe vodorovných dopravných čiar na ceste (plná čiara, prerušovaná čiara a smerové
šípky), čo bude riešené v rámci samostatnej úlohy rozpoznávania horizontálnych
dopravných značiek.
Cesty sa mnohokrát medzi sebou pretínajú alebo spájajú, čím vytvárajú križovatky. Tieto
miesta by bolo tiež vhodné rozpoznávať. Pre uľahčenie ich rozpoznávania je možné
využívať mapové podklady, čo poskytne apriórnu vedomosť o výskyte križovatiek, čím sa
z úlohy stane lokalizačná.
61
Hlavným cieľom je nájsť cestu v obraze a potom jej časti. Preto obrazový objekt cesta
bude zložená z menších objektov, ktoré budú k dispozícií formou požadovaných vlastností:
Oblasť cesty – zoznam objektov typu vozovka, krajnica alebo chodník.
Prítomnosť cesty – áno, nie.
Oblasť vozovky – zoznam objektov typu jazdný pruh.
Prítomnosť vozovky – áno, nie.
Oblasť krajnice – zložený zo segmentov.
Prítomnosť krajnice – áno, nie.
Oblasť jazdného pruhu – zložený zo segmentov.
Jazdný pruh
o Čiara vpravo – plná, prerušovaná a ich kombinácie.
o Susedný jazdný pruh vpravo – odkaz na iný objekt typu jazdný pruh.
o Čiara vľavo – plná, prerušovaná a ich kombinácie.
o Susedný jazdný pruh vľavo - – odkaz na iný objekt typu jazdný pruh.
Oblasť chodníka – zložený zo segmentov.
Prítomnosť chodníka – áno, nie.
Je chodník vyvýšený – áno, nie.
Prítomnosť križovatky – áno, nie.
Križovatka – digraf, v ktorom budú vrcholy predstavovať jazdné pruhy
vychádzajúce z hranice alebo vchádzajúce do hranice križovatky, pričom
orientované hrany budú predstavovať možné spojenia – dovolené prechody medzi
križovatkami z jazdných pruhov. Ohodnotenia orientovaných hrán bude v sebe
uchovávať informácie o dĺžke a zakrivení prechodu.
Obr. 40 Vyznačená oblasť vozovky červenožltým a chodníka žltým šrafovaním
62
Vodorovné dopravné značky
Vodorovné dopravné značky sú značky zobrazené ako čiary, šípky, nápisy, symboly alebo
významové symboly na ceste a jej súčastiach [71]. Tieto značky môžu byť trvalé alebo
dočasné, čomu zodpovedá použitá farba.
Cieľom je zdetegovať a rozpoznať čo najväčší počet takýchto značiek, pričom je dôležité
presne definovať výsledné kategórie takýchto značiek. Situácia sa sťažuje aj tým, že sa
v rôznych krajinách môžu používať odlišné farby a tvary značiek, rôzny text (v danom
jazyku krajiny) alebo použité písmo. To sa však dá riešiť územnou platnosťou pre danú
krajinu, v ktorej bude odlišná sada rozpoznávaných značiek. Pre významovo rovnaké
značky budú preto použité rovnaké identifikátory.
Obr. 41 Príklady vodorovných dopravných značiek používaných na Slovensku [72]
Rozpoznávanie takýchto značiek môže byť zaujímavé nielen na ceste pre rozpoznávanie
pruhov, smerových značiek, ale napr. aj na parkoviskách. Na obraze môže byť
detegovaných niekoľko vodorovných značiek, preto každá samostatná značka bude
vyjadrená jedným objektom.
Vlastnosti:
Vodorovné dopravné značky – zoznam detegovaných objektov vodorovných
dopravných značiek, každá bude reprezentovaná segmentom v obraze.
Kategória vodorovnej dopravnej značky – vráti identifikátor rozpoznanej dopravnej
značky (napr. 001 - pozdĺžna súvislá čiara, 002 - dvojitá pozdĺžna súvislá čiara, 006
- priechod pre chodcov, atď.).
63
Obr. 42 Príklady vodorovných dopravných značiek
Zvislé dopravné značky
Zvislé dopravné značky sú značky zobrazené na podkladovej tabuli, ktorá je umiestnená
zvislo na stĺpiku alebo na inej nosnej konštrukcii pevne spojenej so zemou [71]. Okrem
trvalých značiek sú k dispozícií aj prenosné značky a značky s premenlivým symbolom na
elektronickom, či elektromechanickom paneli. Podľa ich typu a významu sa odlišujú najmä
v tvare a farbe. Príklady značiek používaných na Slovensku znázorňuje obr. 43.
Obr. 43 Príklady zvislých dopravných značiek používaných na Slovensku [72]
Tvar a farba dopravných značiek sú odlišné nielen v závislosti od svojho typu a významu,
ale aj tým, v akej krajine sa nachádzajú. Podľa Maxwella [73] existujú dva hlavné systémy,
európsky na základe Viedenskej konvencie a americký definovaný na základe MUTCD.
Niektoré krajiny prijali vo svojich krajinách európsky, iné americký systém. Avšak nielen
medzi týmito dvoma systémami sa značky líšia. Podľa Viedenskej konvencie je možné
používať určité tvary a farby pre rovnaké triedy značiek. Z toho dôvodu sú mnohých
krajinách adaptované značky, ktoré sa líšia predovšetkým vo farbe, tvare, veľkosti,
64
použitom piktograme, fonte písma, merných jednotkách a lokalizovaných textoch [ST1].
Porovnanie značiek rovnakého druhu v niektorých vybraných krajinách zobrazuje tab. 1.
Kvôli týmto rozdielom značiek v rôznych krajinách je nutné vymedziť triedy zvislých
dopravných značiek a pre každú krajinu optimalizovať rozpoznávanie značiek vzhľadom
na ich vyobrazenie. Z tohto dôvodu musí mať každá trieda konkrétny jednoznačný
identifikátor, ktorý bude odkazovať na dopravnú značku bez ohľadu na to, aké má
vyobrazenie v krajine, v ktorej sa rozpoznala.
Hlavným cieľom rozpoznávania dopravných značiek je najskôr detegovať značku
a následne identifikovať jej triedu, ktorá vďaka tomu určuje konkrétny význam dopravnej
značky.
Tab. 1 Porovnanie dopravných značiek používaných v rôznych krajinách
Stoj, daj
prednosť
v jazde!
Daj
prednosť
v jazde!
Najvyššia
dovolená
rýchlosť
Zákaz
odbočo-
vania
vpravo
Zákaz
pred-
chádzania
Prikáza-
ný smer
obchá-
dzania
vpravo
Padajúce
kamene
Nerovnosť
vozovky
USA
Írsko
Švédsko
Poľsko
Slovensko
Vlastnosti:
Zvislé dopravné značky – zoznam detegovaných objektov zvislých dopravných
značiek, každá bude reprezentovaná segmentom v obraze.
65
Tvar zvislej dopravnej značky – kruh, trojuholník, obrátený trojuholník, štvorec,
obdĺžnik, osemuholník, kosoštvorec.
Farba okraja dopravnej značky – biela, modrá, zelená, červená, hnedá, žltá.
Dominantná farba dopravnej značky – biela, čierna, modrá, zelená, červená, hnedá,
žltá, oranžová.
Kategória zvislej dopravnej značky – vráti identifikátor rozpoznanej dopravnej
značky (napr. PS1 - hlavná cesta, YS - daj prednosť v jazde, MSL80 - najvyššia
dovolená rýchlosť 80 km/h, MSL100 – najvyššia dovolená rýchlosť 100 km/h,
PSNO - zákaz predchádzania, ISP - parkovisko atď.).
Svetelné signalizačné zariadenia – semafory
Svetelné signalizačné zariadenia sa prevažne používajú pre riadenie cestnej premávky,
najčastejšie na križovatkách (svetelné semafory), železničných priecestiach alebo tam, kde
môžu upozorniť vodiča na zvýšenú opatrnosť (priechod pre chodcov). Rovnako sú
k dispozícií i semafory pre chodcov alebo cyklistov.
Obr. 44 Príklady svetelných signalizačných zariadení
Hlavným cieľom je zdetegovať prítomnosť takýchto zariadení a ich stav. Poznamenajme,
že z jedného snímku môže byť niekedy ťažké rozpoznať stav, napr. ak je semafor v stave,
kedy oranžové svetlo svieti prerušovane. Ak ho kamera zachytí v čase zasvietenia, môže
dôjsť k nejednoznačnosti, pretože to môže znamenať buď prechod zo zeleného signálu na
červený a teda upozornenie vodiča, aby zastavil vozidlo alebo práve prípad prerušovaného
blikania. Preto je nutné analyzovať stav na základe viacerých po sebe nasledujúcich
obrázkov.
Vlastnosti:
Semafory – zoznam detegovaných objektov semaforov, udané regiónom.
66
Farba a stav semaforu – červená, oranžová, zelená spolu s blikaním a rozpoznaním
smerových šípok, ak budú k dispozícii.
Texty na paneloch a tabuliach
Texty sa nachádzajú takmer všade, na rôznych paneloch ako sú informačné dopravné
značky, smerové alebo dodatkové tabule, na budovách, bilbordoch, vozidlách atď.
Hlavným cieľom je detegovať umiestnenie textu a jeho rozpoznanie. Úloha detekcie a
rozpoznania je náročná aj tým, že text môže byť umiestnený kdekoľvek, môže byť rôzne
pootočený, v rôznej farbe a okrem toho môže mať aj rozličný font písma.
Obr. 45 Príklady výskytov textov na dopravnej scéne
Vlastnosti:
Oblasti detegovaných textov – zoznam segmentov obsahujúcich texty v obraze.
Text – rozpoznaný obsah textu vo forme reťazcov znakov.
Vozidlá a ich časti
Vozidlo možno definovať ako akýkoľvek dopravný prostriedok, ktorý sa pohybuje buď
vlastnou alebo cudzou silou a umožňuje transportovať osoby a náklad. Môže sa pritom
jednať o motorové alebo nemotorové vozidlo ako napr. osobný automobil, autobus,
nákladné vozidlo, motocykel, bicykel alebo akýkoľvek stroj, ktorý je schopný meniť svoju
pozíciu.
Je dôležité identifikovať nielen druh vozidla na ceste, ale aj jeho časti a pohľad.
Najčastejšie videné z pohľadu jednej alebo viacerých kamier v spracovávajúcom vozidle
sú automobily, preto si podrobne popíšeme časti automobilu, na ktoré sa budeme môcť
67
v dopytoch odkazovať. Celkovo tvar, farba, typ vozidla, jeho značka a evidenčné číslo
vozidla sú charakteristické znaky, ktorými sa vozidlá od seba odlišujú.
Evidenčné číslo vozidla (EČV) je pritom jednoznačný identifikátor vozidla, ktorý je
umiestnený vzadu alebo vpredu vozidla v tvare obdĺžnika. V rôznych krajinách má inú
podobu, krajiny si tak pridávajú vlastné logá, farby a používajú odlišný formát, čo môže
sťažovať rozpoznanie. Pri dopravných značkách môžeme použiť iný algoritmus
rozpoznávania platný v rámci územia, v ktorom sa vozidlo nachádza, avšak pri EČV môžu
vozidlá jazdiť takmer kdekoľvek, preto musí byť algoritmus dostatočne robustný a
univerzálny.
Požadované vlastnosti:
Vozidlá – zoznam detegovaných vozidiel, každé bude reprezentovaný segmentom v
obraze.
Typ vozidla – automobil, autobus, trolejbus, električka, nákladný automobil,
bicykel, motocykel, iné.
Farby vozidla – jedna alebo viacero dominantných farieb zo základných typov
definovaných nižšie.
Značka vozidla – identifikácia na základe tvaru vozidla a loga (z prednej alebo
zadnej časti vozidla) – Peugeot, BMW, Volkswagen, KIA, ...
Evidenčné číslo vozidla (EČV) – rozpoznanie do textovej podoby a určenie krajiny,
z ktorej evidenčné číslo pochádza, ak je to možné rozpoznať (napr. z loga).
Časti vozidla a ich natočenie – predná, zadná, pravá, ľavá strana a ich kombinácie
(obr. 46 a obr. 47). Na základe nich budú k dispozícií ďalšie objekty:
o predná strana – strecha, čelné sklo, kapota, pravý a ľavý predný svetlomet,
logo značky automobilky, nárazník, EČV, časť z ľavého a pravého
predného kolesa, pravé a ľavé spätné zrkadlo, podvozok.
o pravá strana (z profilu) – nárazník, kapota, pravý predný svetlomet, pravé
spätné zrkadlo, čelné sklo, strecha, kufor, pravý zadný svetlomet, pravé
predné a zadné koleso, pravé predné a zadné dvere (ak sú k dispozícii),
podvozok.
o ľavá strana (z profilu) – nárazník, kapota, ľavý predný svetlomet, ľavé
spätné zrkadlo, čelné sklo, strecha, kufor, ľavý zadný svetlomet, ľavé
68
predné a zadné a koleso, ľavé predné a zadné dvere (ak sú k dispozícii),
podvozok.
o zadná strana – strecha, kufor, pravý a ľavý zadný svetlomet, logo značky
automobilky, EČV, nárazník, časť z pravého a ľavého zadného kolesa,
pravé a ľavé spätné zrkadlo, podvozok.
Smer pohybu a približná rýchlosť vozidla – určená pomocou radaru alebo odhadom
na základe aktuálnej rýchlosti nášho pohybujúceho sa vozidla a sledovania
približovania alebo vzdialenia iného vozidla z obrazu.
Obr. 46 Pomenovanie častí vozidla z ľavoprednej strany (hore) a pravej strany (dole)
EČV
Logo
Kapota
Ľavé zadné
koleso
Čelné sklo
Strecha
Ľavé predné dvere
Ľavé zadné
dvere
Nárazník
Ľavé predné koleso
Ľavé spätné
zrkadlo
Kufor
Pravé zadné koleso
Pravé predné koleso
Kapota
Pravé spätné zrkadlo
Pravý zadný
svetlomet
Pravý predný svetlomet
Nárazník
Pravé predné dvere
Kufor
Čelné sklo
Strecha
69
Obr. 47 Časti vozidla pomenované pre identifikáciu z rôznych strán
Ľudia
Na cestách sa okrem vozidiel často pohybujú aj chodci, či už cez priechody pre chodcov
alebo po chodníkoch, či krajnici. Hlavným cieľom detekcie ľudí je nájsť ich v obraze
a zistiť pozíciu, v akej sa nachádzajú.
Obr. 48 Príklady ľudí vyskytujúcich sa na ceste
Vlastnosti:
Ľudia – zoznam detegovaných postáv človeka, každý človek bude reprezentovaný
segmentom v obraze.
Časti človeka – hlava, telo, ruky (pravá, ľavá), nohy (pravá, ľavá).
Predná strana
Zadná strana
Predná
strana
Zadná
strana
Pravá
strana
Ľavá
strana
Pravá strana
70
Približná výška človeka – malý (dieťa), vysoký (dospelý).
Pozícia človeka – vpred, chrbtom, z profilu vpravo, vľavo.
Pohyb – 8 smerov (ide sprava doľava, zľava doprava, približuje sa smerom k nám,
od nás, a ich kombinácie) alebo stojí (bez pohybu).
Približná rýchlosť človeka – odhadovaná rýchlosť.
Smer a trajektória pohybu – informácie o pohybe a približovaní, či vzďaľovaní sa.
Prítomnosť skupiny chodcov – áno, nie.
Zvieratá
Na ceste možno stretnúť buď domáce alebo divoké zvieratá. Najčastejšie to môžu byť psy,
mačky, diviaky, jelene a srnky, kone, kravy, ovce, vtáky apod. Systém by mal vedieť
detegovať aspoň niektoré druhy (pri väčšine zvierat sú charakteristické 4 nohy a tvar tela,
ktoré by bolo možné využiť ako apriórnu vlastnosť). Vlastnosti:
Zvieratá – zoznam detegovaných zvierat, každé z nich bude reprezentované
segmentom v obraze.
Časti zvieraťa – hlava, trup, nohy.
Budovy, stĺpy, stromy a kríky
Popri cestách sa nachádza množstvo budov, domov, či iných stavieb, ktoré sú
charakteristické svojou farbou a tvarom. Často sú popri ceste aj stĺpy, či už pre verejné
osvetlenie alebo pre trolejbusové pásy, na osadenie značiek, tabúl apod. Okrem nich sa
často vyskytujú aj stromy, kríky, krovie a iný porast.
Vlastnosti:
Budovy – zoznam zdetegovaných budov, každá bude reprezentovaná segmentom
v obraze.
Časti budovy – strecha, okná, dvere, atď.
Stĺpy – zoznam detegovaných stĺpov, každý reprezentovaný segmentom v obraze.
Oblasti stromov - zoznam detegovaných stromov, segment môže obsahovať viacero
stromov ako jedného objektu.
Voľné a vodné plochy, tunely a mosty
Vedľa ciest sa môžu nachádzať voľné plochy (lúky, polia), či vodné plochy ako sú jazerá
alebo rieky. Pre lepšie zistenie a následnú lokalizáciu sa môžu využiť mapové podklady.
71
Tieto tiež môžu poskytnúť informácie o tuneloch, mostoch a iných objektoch, ktoré sa
následne môžu lokalizovať a poskytnúť na ďalšie spracovanie.
Vlastnosti:
Oblasť voľných plôch – zoznam zložený zo segmentov tvoriaci jeden objekt
voľných plôch.
Oblasť vodných plôch – zoznam zložený zo segmentov tvoriaci jeden objekt
vodných plôch.
Prítomnosť v tuneli – áno, nie.
Prítomnosť na moste – áno, nie.
Pohybujúce sa objekty vo vzduchu
Na oblohe sa môžu nachádzať lietajúce objekty ako sú ľudsky vytvorené stroje (lietadlá,
helikoptéry) alebo zvieratá (vtáky rôznych druhov). Nakoľko môže byť predmet na oblohe
príliš vzdialený a kamera mať nedostatočné rozlíšenie, nebude jednoduché presne určiť typ
objektu.
Vlastnosti:
Lietajúce objekty – zoznam detegovaných pohybujúcich sa objektov, každý z nich
bude reprezentovaný segmentom v obraze.
Typ lietajúceho objektu – lietadlo, vrtuľník, balón, vták, skupina vtákov.
Všeobecný objekt
Ak by sme požadovali rozpoznávať neznámy objekt, ktorý sme vyššie nedefinovali, máme
niekoľko možností. Prvou možnosťou je pridať ho do kontraktu systému a nadefinovať
rozpoznávací algoritmus pre novú verziu. Toto riešenie by ale vyžadovalo aktualizáciu
softvéru systému na všetkých vozidlách, v ktorých by sme chceli vyhľadávať. Ak sa
navyše daný objekt v obraze vyskytuje len zriedka, nebolo by to ani efektívne. Preto
definujeme všeobecný objekt, ktorý bude pozostávať z modelu skladajúceho sa z množiny
šablón s popisom. Tento model potom bude priamo začlenený do dopytu, aby sa naňho
mohlo odkazovať a v dopyte používať.
Na to, aby sme mohli rozpoznávať zadefinované všeobecné objekty, máme dve možnosti:
Implementačne nezávislý – k spracovateľovi (vozidlu vykonávajúceho dopyt) sa
odošle jeden alebo viacero zdrojových obrázkov reprezentujúcich pohľady na
72
objekt. Na strane spracovateľa potom prebehne algoritmus, pomocou ktorého sa
bude detegovať (výber vhodného algoritmu je na spracovateľovi).
Implementačne závislý – k spracovateľovi sa neodošlú kompletné obrázky, ale iba
ich popisy (vytvorené napr. algoritmami ako je SIFT, MPEG-7 deskriptory, či
inými), prípadne vopred natrénovaný model nejakej učiacej sa siete (napr.
neurónová sieť, v tomto prípade by sa odoslal model siete s váhami jednotlivých
neurónov). Toto riešenie vyžaduje zhodne použité algoritmy na obidvoch stranách
(zadávateľovi i spracovateľovi).
Najjednoduchším riešením by bola prvá možnosť, pretože výber algoritmu nebude závisieť
na obidvoch stranách, ale iba na strane spracovateľa, ktorý môže implementovať
ľubovoľný algoritmus, ktorý bude univerzálny a bude dosahovať dobré výsledky. Časom aj
tak vznikajú nové algoritmy, ktoré môžu prekonávať súčasné riešenia. Na druhej strane,
toto riešenie vyžaduje prenos jedného alebo viacerých obrázkov, od ktorých veľkosti záleží
čas prenosu. Ak budú mať vhodné rozlíšenie a budú dostatočne komprimované, nemal by
to byť veľký problém.
Druhé riešenie umožňuje predpripraviť dáta na strane zadávateľa, ktoré navyše môžu mať
menšiu veľkosť, takže je možné ušetriť nielen na čase prenosu, ale hlavne na čase
spracovania (pri učiacej sa sieti by sa odoslal iba model siete; ak by sa použil SIFT
detektor a deskriptor, odpadáva nutnosť na všetkých vozidlách spustiť uvedené algoritmy
nad zdrojovými obrázkami).
Obidve riešenia majú svoje výhody i nevýhody, preto by sme odporúčali použiť spôsob
v závislosti od potreby. Ak bude potrebná rýchlosť, je možné využiť implementačne
závislé algoritmy, pričom je nutné definovať aspoň jeden. Odporúčali by sme v súčasnosti
niektoré zo state-of-the-art algoritmov, ako je napr. SIFT alebo jeden z jeho alternatívnych
vylepšení (SURF, H-SIFT, apod.), prípadne z učiacich sa sietí konvolučné neurónové siete.
Po uskutočnenej analýze navrhujeme, aby model všeobecného objektu obsahoval
nasledujúce časti:
Unikátny identifikátor modelu za účelom odkazovania sa naň v dopyte.
Vlastnosti objektu – deformovateľnosť, statickosť, atď.
Pohľady na model, ktoré budú vyjadrené buď formou množiny zdrojových
obrázkov, príznakov alebo modelom učiacej sa siete. Aby bolo možné objekt
73
rozpoznať, zdrojové obrázky by mali reprezentovať pohľady na neho z rôznych
strán (najmä ak nie je objekt symetrický) a rovnako zachytávať aj jeho rôzny
vzhľad v prípade deformovateľnosti a to najmä v takých pózach, v ktorých môže
byť najčastejšie videný.
Popísané časti modelu, z ktorých sa objekt skladá (napr. ak máme pohľad na zadnú
časť vozidla, vidíme kufor, pravé a ľavé svetlo, časť pravého a ľavého kolesa, atď.).
Časti budú definované pre každý pohľad a budú mať danú pozíciu, aby sa na ne
mohlo v dopytoch opäť odkazovať a napr. zisťovať, či sú viditeľné alebo v relácií
s inými objektmi.
Okrem toho by model mohol obsahovať nielen popis pomocou jedného spôsobu, ale aj
viacerých. Potom by bolo na spracovateľovi, ktorý zo spôsobov si vyberie. Ak napr. vie
pracovať so SIFT-om a bude definovaný v modeli, môže ho využiť. Ak bude obsahovať
lepší algoritmus detekcie, môže využiť zdrojové súbory obrázkov, pokiaľ budú v dopyte
priložené.
Formát všeobecného modelu objektu
Pre lepšiu predstavu ako popísať ľubovoľný model objektu definujeme nasledujúci model
vo vlastnom formáte, ktorý zahŕňa vyššie uvedené požiadavky:
MODEL UnikátnyNázovModeluObjektu
{
DEFORMABLE = true/false;
STATIC = true/false;
DESCBY SIFT/ANN/IMAGES/...
{
VIEW UnikátnyNázovPohľadu1
{
DATA
{
// obsah záleží od voľby DESCBY
}
PART UnikátnyNázovČasti1Pohľadu1
{
RECT/ELL/POL = súradnice;
}
PART UnikátnyNázovČasti2Pohľadu1
{
RECT/ELL/POL = súradnice;
}
... // ďalšie PART definície
}
VIEW UnikátnyNázovPohľadu2
{
74
DATA
{
// obsah záleží od voľby DESCBY
}
PART UnikátnyNázovČasti1Pohľadu2
{
RECT/ELL/POL = súradnice;
}
PART UnikátnyNázovČasti2Pohľadu2
{
RECT/ELL/POL = súradnice;
}
... // ďalšie PART definície
}
... // ďalšie VIEW definície
}
DESCBY SIFT/ANN/IMAGES/...
{
VIEW UnikátnyNázovPohľadu1
{
DATA
{
// obsah záleží od voľby DESCBY
}
PART UnikátnyNázovČasti1Pohľadu1
{
RECT/ELL/POL = súradnice;
}
... // ďalšie PART definície
}
... // ďalšie VIEW definície
}
... // ďalšie DESCBY definície
}
Tento popis obsahuje niekoľko kľúčových slov zvýraznených modrým písmom. Ako
oddeľovač položiek je použitá bodkočiarka. Ak je potrebné definovať viac položiek,
možno použiť zložené zátvorky {}. Jednotlivé položky a kľúčové slová pritom znamenajú
nasledovné:
MODEL – označujeme za ním unikátny názov modelu, na ktorý sa môžeme
v dopyte neskôr odkazovať.
DEFORMABLE – popisuje deformovateľnosť objektu (zmeny svojho vonkajšieho
vzhľadu). Môže nadobúdať dve hodnoty – true (pravda), ak má objekt, ktorý
popisujeme vlastnosť deformovateľnosti. Inak, ak nemá – false (nepravda).
STATIC – určuje, či je objekt statický, t.j. či je nehybný. Môže nadobúdať dve
hodnoty – true (pravda), ak je objekt statický a false (nepravda), ak je
dynamický, t.j. pohybujúci sa.
75
DESCBY – definuje, ako sa má popísať model, t.j. aký spôsob popisu sa má
konkrétne použiť. Definuje niekoľko základných metód, avšak bude možné použiť
aj iné, pokiaľ bude podpora na strane spracovateľa (implementácia vybraných
algoritmov ako sú rôzne učiace sa systémy, klasifikátory apod.). Samotné dáta a ich
vlastnosti sú definované vo vnútri tejto položky, konkrétne vo VIEW - DATA. Nami
navrhnuté možné hodnoty znamenajú:
o SIFT – určuje, že sa na popis a rozpoznávanie má použiť SIFT algoritmus.
o ANN – umožňuje použiť natrénovanú neurónovú sieť pre rozpoznávanie
pomocou posuvného okna.
o IMAGES – vložené celé súbory obrázkov do popisu. Je na spracovateľovi,
akú metódu spracovania obrázkov a rozpoznávania zvolí.
o Iné – je nutné sa dohodnúť na obidvoch stranách, t.j. zadávateľovi
i spracovateľovi, aké algoritmy majú použiť. Z tohto dôvodu by bolo
vhodné, aby spracovateľ exponoval zoznam svojich algoritmov spolu
s nastaveniami a zadávateľ si potom zvolil vhodný z nich, ktorý dokáže
spracovať.
VIEW – definuje pohľad na objekt, ktorý deklaruje unikátnym názvom. Ak máme
viac obrázkov reprezentujúcich rôzne pohľady alebo pozície objektu, môžeme
definovať viac položiek tohto typu. V rámci rôznych DESCBY môže byť zvolený
rovnaký názov.
DATA – samotné údaje popisov, ich hodnoty a ďalšie vlastnosti záležia od
zvoleného spôsobu popisu v nadradenej položke DESCBY:
o SIFT – bude obsahovať množinu popísaných kľúčových bodov v tvare
, kde predstavuje pozíciu kľúčového bodu v rámci
obrázka v desatinnom čísle a n-rozmerný vektor popisujúci
kľúčový bod v celočíselných hodnotách. Pre SIFT sa najčastejšie používa
n = 128. Počet m získaných a popísaných kľúčových bodov bude udávať
vnútorná vlastnosť COUNT. Ďalšie vlastnosti sú zadané v tvare poradové
číslo bodu = :
1 = x1 y1 d1,1 d1,2 ... d1,n;
2 = x2 y2 d2,1 d2,2 ... d2,n;
m = xm ym dm,1 dm,2 ... dm,n;
76
o ANN – bude obsahovať model neurónovej siete (počet neurónov na
vstupnej, výstupnej a skrytých vrstvách) s hodnotami natrénovaných váh.
Vnútorná vlastnosť TYPE bude udávať typ siete, napr. MLP pre
viacvrstvový perceptrón a CNN pre konvolučné neurónové siete. Ďalšia
vlastnosť ako je SIZE udáva veľkosť vstupných, skrytých a výstupných
neurónov. Naučené váhy siete sú potom udané vo vlastnosti NETWORK.
o IMAGES – vložené celé súbory obrázkov do popisu. Keďže obrázky môžu
byť v rôznych formátoch, definujeme vlastnosť TYPE, ktorý udáva typ
súboru (jpg, png, ppm, iné), jeho obsah bude uchovaný vo vlastnosti
CONTENT. Obsah celého obrázka bude zakódovaný napr. pomocou MIME
netextového kódovania Base64.
PART – popisuje časť obrázka pomocou útvaru, ktorému udáva jedinečný názov.
Môžeme definovať viac položiek tohto typu, pričom v každej je definovaná časť
v obraze na základe súradníc podľa jednej z troch možných vlastností:
o RECT – časť je definovaná obdĺžnikom, súradnice ktorého sú dané v tvare
štyroch hodnôt pixelov , kde prvá dvojica udáva prvý
najmenší bod a druhý najväčší bod, pričom samotné súradnice
vrcholov obdĺžnika budú mať v smere hodinových ručičiek nasledovné
hodnoty: , , a .
o ELL – časť je definovaná elipsou, súradnice sú rovnako ako pri obdĺžniku
definované štvoricou hodnôt pixelov, pričom elipsa je vpísaná do tohto
obdĺžnika.
o POL – časť je definovaná ľubovoľným tvarom pomocou polygónu
zloženého usporiadanou dvojicou v tvare , kde
n určuje počet týchto bodov.
Tento zjednodušený model nám kvázi simuluje 3D model objektu pomocou pohľadov,
nakoľko navrhované základné state-of-the-art algoritmy, ako aj ďalšie budúce by mali byť
robustné a invariantné voči posunom, rotáciám, afinným a iným transformáciám, aby sa
zabezpečilo rozpoznanie objektu v čo najväčšej miere.
Príklady modelov
Na rozpoznanie napríklad symbolu lebky s prekríženými kosťami z úvodného motivačného
príkladu musíme najskôr definovať model vyobrazenia tejto lebky. Na tento účel nám bude
77
postačovať iba jeden obrázok (obr. 49), nakoľko sa nejedná o dynamický a ani
deformovateľný objekt (nachádza sa ako nálepka na zadnej časti vozidla). Takže buď ho
celý odošleme a ponecháme jeho použitie na spracovateľovi alebo spustíme najskôr nad
ním jeden z definovaných základných algoritmov (napr. SIFT) a odošleme s dopytom
výslednú množinu popisných príznakov, prípadne deklarujeme obidva spôsoby a výber
metódy spracovania ponecháme na spracovateľovi.
Obr. 49 Symbol lebky s prekríženými kosťami
Iným netradičným príkladom by mohlo byť napr. hľadanie stratenej žirafy. Predstavme si,
že ušla zo zoo a je potrebné ju nájsť. Toto zviera je dynamickým objektom, ktorý je navyše
aj deformovateľný (môže si sadnúť, zohnúť krk k zemi a teda zmeniť svoj vzhľad). Z tohto
dôvodu definujeme niekoľko obrázkov (obr. 50), ktoré budú reprezentovať rôzne pohľady
a pózy žirafy. Každému z pohľadov priradíme anotáciu – pomenovanie, aby sme sa naň
následne v dopyte mohli odkazovať.
Obr. 50 Žirafa ako deformovateľný objekt v rôznych pozíciách a pohľadoch predstavujúcich množinu
šablón pre rozpoznávanie
78
Výsledný textový popis žirafy môžeme potom vyjadriť nasledovne (kvôli veľkosti je popis
skrátený):
MODEL Zirafa
{
DEFORMABLE = true;
STATIC = false;
DESCBY SIFT
{
VIEW SpreduLavyBok
{
DATA
{
COUNT = 2457;
1 = 650.98 484 0 1 29 17 9 2 0 0 4 15 35 34
12 5 4 4 14 8 25 34 2 2 4 23 8 8 7 8 1 0 0 4
1 17 19 18 7 4 7 0 128 140 80 77 11 0 0 1 44
57 113 140 10 0 0 7 10 127 87 45 0 0 0 7 41
32 5 1 2 0 0 4 140 90 12 9 1 0 0 39 85 24 72
140 15 0 2 20 1 125 140 46 2 4 3 2 40 13 0 0
0 0 0 2 140 10 1 0 0 1 0 66 91 4 5 13 8 0 3
49 1 4 4 3 4 6 13 5;
2 = 602.58 589.27 12 6 0 1 10 2 28 15 38 70
57 5 0 5 18 44 11 48 121 18 8 23 11 10 44 92
27 0 0 0 1 9 88 24 0 9 41 3 3 5 129 129 74 24
0 6 19 41 12 59 129 81 7 49 72 10 4 82 46 0 0
18 121 5 82 10 14 8 13 7 1 10 129 8 2 5 22 27
49 101 8 1 2 16 39 117 129 18 2 6 5 6 3 32
129 6 15 9 22 6 0 0 0 3 92 8 5 4 18 4 4 73 6
2 10 21 40 10 12 17 1 3 16 9 1 0 4 5;
... // ďalších 2455 popísaných bodov
}
PART Hlava
{
RECT = 490 396 721 657;
}
PART PravaNoha
{
RECT = 717 1495 857 2056;
}
... // ďalšie časti objekt na obrázku
}
VIEW SpreduSpravaSediPriamyPohlad
{
... // popis pohľadu
}
VIEW LavyBokKrmenie
{
... // popis pohľadu
}
... // popis iného pohľadu
}
DESCBY IMAGES
{
79
VIEW SpreduLavyBok
{
DATA
{
TYPE = jpg;
CONTENT =
/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAYEBQYFBAYGB
QYHBwYIChAKCgkJChQODwwQFxQYGBcU
FhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2
wBDAQcHBwoIChMKChMoGhYaKCgoKCgo
KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCj/wAARCAjwBrADARIA
...;
}
PART Hlava
{
RECT = 490 396 721 657;
}
...
}
VIEW SpreduSpravaSediPriamyPohlad
{
... // popis pohľadu
}
VIEW ProfilPravyBok
{
... // popis pohľadu
}
VIEW LavyBokKrmenie
{
... // popis pohľadu
}
... // popis iného pohľadu
}
}
4.2.2 Nízkoúrovňové objekty
Nízkoúrovňové objekty môžu predstavovať časti na obraze, ktoré sú niečím
charakteristické. Buď sú nezávislé od konkrétnych reálnych objektov alebo predstavujú ich
vlastnosti, či časti, ktoré nemusia mať samo o sebe význam. Najčastejšie predstavujú
takéto nízkoúrovňové objekty vlastnosti ako je farba, textúra a tvar. Dobre ich popisujú
MPEG-7 deskriptory. V tejto časti práce sa stručne zameriame iba na farbu a tvar.
Farba
Človek dokáže rozpoznávať a rozlišovať veľké množstvo farieb. Ich rozpoznanie strojom
ale nie je jednoduché, pretože túto úlohu sťažuje rôzne osvetlenie, citlivosť čipu senzora
snímajúceho obraz, artefakty v obraze spôsobené kompresiou atď.
80
Pre jednoduchosť definujeme niektoré zo základných farieb, ktoré by sme požadovali
vyhľadávať, s možnosťou definície vlastnej farby:
Základné – biela, čierna, červená, zelená, modrá, žltá.
Iná – zadaná rozsahom hodnôt v určitom farebnom modeli (napr. v RGB, HSV,
CIELAB, ...).
Vlastnosti:
Oblasti – zoznam segmentov obsahujúcich požadovanú farbu.
Farba segmentu – informácia o farbe, ktorú reprezentuje segment.
Obr. 51 Obraz segmentovaný na základe červenej, modrej a žltej farby
Jedným z cieľov je teda nájsť na obraze segmenty vyššie uvedených farieb. Takúto úlohu
predstavuje obr. 51, na ktorom sa z farebného obrázka extrahovali 3 základné farby
(červená, modrá a žltá). Tieto sú reprezentované vo výsledných binárnych obrázkoch ako
biele. Súvislé skupiny bielych pixelov potom tvoria požadované segmenty, ktoré následne
môžeme ďalej spracovávať.
Tvar
Mnohé objekty majú svoj charakteristický tvar, ktorý by sme takisto požadovali na obraze
vyhľadávať. Preto definujeme útvary:
Základné – kruh, elipsa, trojuholník, štvorec, obdĺžnik.
Všeobecný mnohouholník – zadaný počtom vrcholov s možnými požadovanými a
voliteľnými parametrami:
o pravidelnosť (všetky strany a uhly vrcholov musia byť zhodné),
81
o dĺžky jednotlivých strán,
o veľkosť uhlov vo vrcholoch zvierajúcich strany.
Najmä posledným z nich, všeobecným mnohouholníkom, môžeme reprezentovať a
vyhľadať ako základné tvary (trojuholník, štvorec, obdĺžnik a iné), tak aj komplexné
útvary.
Vlastnosti:
Oblasti – zoznam detegovaných segmentov požadovaného tvaru.
Tvar segmentu – informácia o tvare, ktorú reprezentuje segment.
4.3 Systém na dopytovanie
Po identifikácií obrazových objektov si v tejto časti predstavíme princíp a návrh systému
na dopytovanie, v ktorom tieto objekty, ich vlastnosti a vzťahy s inými objektmi vyjadríme
pomocou dopytov, ktoré sa následne budú môcť spracovávať vo vozidlách.
Dopyt ako komplexná úloha
Elementárna
úloha 1
Elementárna
úloha 2. . .
Elementárna
úloha N
Obr. 52 Dopyt ako komplexná úloha zložená z postupnosti jednoduchých úloh
Na dopytovanie obrazových objektov sa môžeme pozerať ako na komplexne zloženú úlohu,
ktorú môžeme dekomponovať na jednoduchšie úlohy a tie medzi sebou prepojiť (obr. 52).
Vďaka týmto prepojeniam sa budú predávať množiny obrazových objektov v smere zľava
doprava, pričom sa tieto množiny budú spracovávať práve v elementárnych úlohách. Ak sa
dostaneme na poslednú elementárnu úlohu, záleží od jej výstupu, čo sa ďalej stane (obr.
53). Ak je jej výsledok neprázdna množina, odošle sa odpoveď v požadovanom tvare
definovanom na konci dopytu. Ak bude ale výsledok prázdna množina, záleží od definície
dopytu, či sa bude dopyt znova spracovávať alebo sa ukončí a ak sa ukončí, či sa má
odoslať odpoveď. Môže sa teda buď pokračovať v spracovávaní, t.j. začne sa znova
vykonávať elementárna úloha 1 a pokračovať v smere spracovania doprava alebo sa
spracovanie úplne ukončí. Takéto správanie sme zvolili z toho dôvodu, že je často
potrebné v obraze vyhľadávať nejaký objekt, ktorý ale nemusí byť hneď prítomný. Preto
sme zvolili takýto cyklus spracovania, až dokiaľ sa nedostane odpoveď, čo reprezentuje
82
neprázdna množina. Prázdna množina potom reprezentuje neúspešný výsledok (t.j.
nenájdenie požadovaného objektu).
ZačiatokElementárna
úloha 1Elementárna
úloha 2 ...Elementárna
úloha N
KoniecPrázdna
množina?
Pokračovať v spracovaní?
áno
Odoslať odpoveď?
áno
nieOdoslať odpoveď
nie
áno
nie
Obr. 53 Postup spracovania dopytu od jeho začiatku až po koniec
Spracovanie obrazového dopytu teda znamená vykonanie elementárnych úloh zapojených
v sekvenčne zreťazenej postupnosti. Elementárna úloha pritom predstavuje akúkoľvek
základnú operáciu nad obrazom, čo môže byť forma detekcie, lokalizácie alebo klasifikácie
objektov, relácií medzi nimi, výberom a inými základnými algoritmami spracovania
obrazu. Pre objasnenie rozdielov týchto pojmov definujeme:
Detekcia – nájdenie požadovaného základného obrazového objektu na obraze
(vysokoúrovňového alebo nízkoúrovňového), pričom na obraze sa objekt záujmu
môže, ale aj nemusí nachádzať.
Lokalizácia – nájdenie obrazového objektu v obraze, v ktorom máme znalosť o
tom, že sa v ňom objekt nachádza. Napr. ak zdetegujeme na ceste vozidlo, môžeme
v ňom vyhľadať – t.j. lokalizovať napr. koleso, o ktorom vieme, že ho vozidlo
obsahuje.
Rozpoznanie (klasifikácia) – identifikácia objektu na obraze. Ak napr. zdetegujeme
dopravnú značku trojuholníkového tvaru s červeným lemom, požadujeme zistiť,
o akú konkrétnu dopravnú značku sa jedná, t.j. rozpoznať, resp. klasifikovať triedu
z vopred známej množiny tried (napr. zo všetkých trojuholníkových značiek
majúcich červený okraj).
Relácia medzi objektmi – predstavuje vzťah, ktorý môže mať priestorový charakter,
vyjadrený blízkosťou a postavením objektov navzájom (napr. prvý objekt nad
druhým objektom, tretí objekt vpravo od štvrtého objektu, piaty objekt pod prvým
a vľavo od tretieho atď.).
83
V motivačnom príklade uvedenom v úvode tejto práce sa dá úloha nájdenia vozidla
s popísanými charakteristickými znakmi rozdeliť na samostatné úlohy, ktoré môžeme
navzájom prepojiť do postupnosti elementárnych úloh. Táto sekvencia sa potom môže
skladať z nasledujúcej postupnosti (obr. 54):
1. Detekcia vozidiel – vráti nula alebo viac objektov typu vozidlo.
2. Rozpoznanie farby vozidiel a výber všetkých červených.
3. Rozpoznanie EČV a výber všetkých takých vozidiel, ktorých EČV začína na „ZA“
a končí „AB“.
4. Rozpoznanie priloženého vzoru obrázku lebky s prekríženými kosťami.
5. Zistenie, či sa nájdený obrázok lebky nachádza vpravo od EČV.
6. Odoslanie výsledku v tvare zachyteného obrázka z kamery, aktuálnej GPS pozície
a smeru jazdy nájdeného vozidla.
ZačiatokDetekcia vozidiel
Červené vozidlá
Detekcia EČVEČV obsahuje
ZA*AB
Koniec
Prázdna množina?
Pokračovať v spracovaní?
áno
Odoslať odpoveď?
áno
nieOdoslať odpoveď
nie
áno
nie
Detekcia vyobrazenia
lebky
Obrázok lebky vpravo od EČV
Obr. 54 Príklad postupnosti spracovania úlohy hľadania vozidla s charakteristickými znakmi
V prvom kroku sa vykoná detekcia všetkých vozidiel, ktoré sa nachádzajú na obraze. Tých
môže byť nula alebo viac. Ak sa nájde aspoň jedno vozidlo, nasleduje druhý krok, ktorým
sa rozpozná farba vozidiel. Farba nášho záujmu predstavuje červenú farbu, preto sa vyberú
iba tie vozidlá, v ktorých je práve táto farba dominantná. Ak po vyfiltrovaní vozidiel
zostane aspoň jedno vozidlo vyhovujúce podmienke, nasleduje ďalší krok, ktorým je
lokalizácia evidenčného čísla vozidla. Po jeho lokalizovaní a rozpoznaní sa v jeho
textovom obsahu zistí prítomnosť znakov „ZA“ na začiatku a „AB“ na konci EČV. Ak sa
tieto znaky na uvedených miestach nachádzajú, prechádzame k ďalšiemu kroku, t.j.
zisteniu, či sa nachádza nálepka lebky s prekríženými kosťami na nejakom
z vyfiltrovaných vozidiel a ak áno, či sa nachádza vpravo od evidenčného čísla. Keďže
vzor obrázku lebky nevie systém spracovať, pozrie sa do obsahu dopytu, či tam nie je
84
priložený (všeobecný objekt). Ak tam je, systém sa ho pokúsi podľa toho rozpoznať. Ak sa
takýto objekt nájde, porovná sa jeho pozícia s pozíciou EČV a ak je s ňou v relácií vpravo,
potom sa dopyt dostal úspešne ku svojmu koncu, kde sa výsledný obrázok spolu s GPS
polohou a smerom pohybu odošle spracovateľom naspäť k zadávateľovi. Ak by sme
v poslednom kroku dostali prázdnu množinu objektov, záleží od dopytu, čo sa stane. Ak by
bol definovaný na cyklické spracovanie určitú dobu (napr. 2 minúty), bude sa v cykle celá
táto postupnosť opakovať až dokiaľ nebude posledná elementárna úloha vracať neprázdnu
množinu alebo dokiaľ sa neprekročí stanovený limitný čas.
Je nutné poznamenať, že vykonanie uvedenej postupnosti krokov záleží od zadávateľa
dopytu ako ho definuje. Preto na nájdenie požadovaného vozidla môžeme zvoliť aj inú
postupnosť, môžeme napríklad najskôr hľadať červenú farbu, následne na segmentoch
červenej farby vozidlá, v nich evidenčné číslo atď. Túto postupnosť nechávame zatiaľ na
zadávateľovi dopytu, avšak vidíme tu možnosť optimalizácie dopytov. V tejto práci sa jej
nebudeme venovať, nakoľko sa jedná o samostatne rozsiahly problém.
V nasledujúcich častiach sa podrobnejšie pozrieme na možné vstupy a výstupy systému
spolu so zložením dopytu.
4.3.1 Vstup
Vstup je definovaný zadávateľom dopytu. Je v ňom nutné určiť, čo sa má vykonať, kedy sa
má spracovanie ukončiť a čo sa má poslať ako odpoveď. Takéto informácie je možné
zapísať v nejakom definovanom formáte, napr. v XML, JSON alebo iných. Keďže budeme
pracovať vo VANET prostredí, formát by mal byť kvôli prenosu čo najkompaktnejší
a najmenší. Naším cieľom ale nebude presne stanoviť formát, v akom sa budú dáta
prenášať po sieti, ale iba formát dopytu, v akom ho budeme spracovávať (t.j. čo a aké časti
sú potrebné v dopyte). Z toho dôvodu definujeme pre jednoduchšie popísanie vstupov i
výstupov povinné a voliteľné dáta pomocou nasledujúceho nami navrhnutého zápisu:
INPUT IdentifikátorDopytu
{
// Definícia modelov – nepovinná položka
MODEL UnikátnyNázovModeluObjektu1 // voliteľné
{
... // definícia modelu
}
MODEL UnikátnyNázovModeluObjektu2 // voliteľné
{
... // definícia modelu
}
85
MODEL UnikátnyNázovModeluObjektuN // voliteľné
{
... // definícia modelu
}
// Podmienka ukončenia vykonávania – nepovinná položka
TERMCONDITION
{
... // ukončovacia podmienka
}
// Vyžadovanie odpovede – nepovinná položka
REQANSWER = true/false; // implicitne true
// Dopyt – povinná položka
QUERY
{
// definícia dopytu
}
}
Jednotlivé položky pritom znamenajú:
INPUT – definuje názov a parametre dopytu. Zvolený identifikátor sa použije aj vo
výstupe. Identifikátor je zvolený preto, aby sa odpovede viacerých dopytov mohli
rozlíšiť, v prípade že ich zadávateľ vytvoril niekoľko.
MODEL – definícia všeobecného modelu objektu na rozpoznávanie, štruktúra bola
popísaná v časti Všeobecný objekt. Definícia modelu je nepovinná, pokiaľ
nebudeme vyžadovať rozpoznávanie objektu, ktorý je neznámy a v systéme
nedefinovaný. Ak takýto jeden alebo viacero modelov budeme vyžadovať, je nutné
ich pribaliť a v definícii dopytu sa na ne odkazovať.
TERMCONDITION – ukončovacia podmienka dopytu. Je nepovinná, pokiaľ sa bude
jednať o dopyt s rýchlou odpoveďou (spracovanie iba jedného obrázka aktuálne
získaného z kamery) a nutná v prípade, že chceme cyklicky spracovávať obraz
(videosekvenciu). Zadaná podmienka potom určuje, kedy sa cyklus spracovávania
ukončí. Aby sa zabránilo nekonečnému cyklu, môže mať systém vlastnú globálnu
podmienku, ohraničenú napríklad časom (napr. povolenie vykonávania najviac
jednu hodinu). V jej tele môžeme definovať akýkoľvek logický výraz, ktorého
pravdivosť bude znamenať ukončenie cyklického spracovania. Môžeme v ňom
použiť objekty, príkazy a funkcie, ktoré sa budú používať aj v dopyte, ako si neskôr
v tejto práci popíšeme. Pre ukážku použitia podmienky uvedieme najčastejšie
možnosti:
86
o false – pomocou hodnoty false zavedieme nekonečný cyklus.
o NOT(GPS.latitude >= 49.19811 AND GPS.latitude <=
49.21477 AND GPS.longitude >= 18.74182 AND
GPS.longitude <= 18.77671) – ak sa dostane vozidlo mimo oblasť
zadanú súradnicami (latitude – zemepisná šírka, longitude – zemepisná
dĺžka), tak sa cyklické spracovanie dopytu ukončí.
o Time.QueryDuration < 1.5 – ak dĺžka vykonávania dopytu presiahne
1,5 sekúnd.
Ak nebude táto položka definovaná, implicitná hodnota bude teda true, t.j. nebude
umožnené cyklické spracovávanie.
REQANSWER – určuje, či požadujeme vždy odpoveď, aj keď bude dopyt neúspešný
(to je vtedy, ak bola vrátená prázdna množina). Možné hodnoty sú true v prípade,
že vždy požadujeme odpoveď a false, ak odpoveď potrebovať nebudeme.
Implicitne, ak sa táto položka nedefinuje, bude platiť false.
QUERY – definícia dopytu. Povinná položka, ktorá tvorí jadro a umožňuje
definovať, čo sa má na obraze spracovať a aké objekty s vlastnosťami sa majú
získať. Posledná elementárna úloha bude definovať výstup dopytu. Zloženiu dopytu
a možným operáciám sa budeme podrobnejšie venovať v nasledujúcich častiach.
4.3.2 Výstup
Výsledkom dopytu môže byť čokoľvek, čo požaduje zadávateľ, napr. vrátenie pôvodného
obrázka zachyteného kamerou alebo z neho iba výsek, na ktorom sa nachádza jeden alebo
viacero objektov záujmu, GPS súradnica, obyčajná hodnota (číslo, text, pravdivostná
hodnota) obsahujúca požadovanú informáciu (počet objektov, rozpoznaný text, EČV, atď.)
alebo aj ich kombinácie. Toto všetko, čo má spracovateľ odoslať naspäť zadávateľovi,
bude definované v poslednej elementárnej úlohe dopytu. Výsledok spracovania môže byť
vyjadrený v nasledujúcom tvare:
OUTPUT UnikátnyIdentifikátorDopytu
{
// Odpoveď dopytu – povinná položka
ANSWER
{
// ľubovoľné dáta
}
}
87
Príklad konkrétneho výstupu môže byť:
OUTPUT ČervenéVozidloSLebkou
{
ANSWER
{
OBJECT
{
TYPE = Vehicle;
...
}
IMAGE
{
TYPE = png;
CONTENT =
/9j/4RAWRXhpZgAATU0AKgAAAAgACQEPAAIAAAAGAAAAegEQAAIAAA
AGAAAAgAESAAMAAAABAAEA
AAEaAAUAAAABAAAAhgEbAAUAAAABAAAAjgEoAAMAAAABAAIAAAExAA
IAAAAIAAAAlgITAAMAAAAB
AAEAAIdpAAQAAAABAAAAngAAAXBOb2tpYQBDMi0wMQAAAAEsAAAAAQ
AAASwAAAABViAxMC41MAAA
...;
}
GPS
{
LONGITUDE = 18.761623;
LATITUDE = 49.202468;
...
}
}
}
V tejto odpovedi je vrátený objekt vozidla (OBJECT), ktorý sa požadoval vyhľadať na
základe charakteristických vlastností stanovených v dopyte, ďalej pôvodný obrázok (obsah
položky IMAGE), na ktorom sa vozidlo našlo a aktuálna GPS poloha (GPS).
4.3.3 Dopyt
V tejto časti si bližšie predstavíme dopyt, jeho zloženie, spracovanie a zoznam operácií,
ktoré v ňom môžeme realizovať.
Obrazový objekt
Základom práce s dopytmi je obrazový objekt, ktorý bude vstupom i výstupom
elementárnych úloh. Predstavuje pritom nízkoúrovňový alebo vysokoúrovňový objekt v
obraze. Aby sme ho mohli použiť v elementárnych úlohách, v tejto časti si podrobne
definujeme jeho štruktúru a konkrétne vlastnosti, ktoré by mal obsahovať.
88
Obrázok
Dáta
Obrazový objekt
Obr. 55 Obrazový objekt z globálneho pohľadu
Obrazový objekt sa z hľadiska svojho obsahu skladá z obrázka a dát. Obrázok reprezentuje
pohľad na dopravnú scénu alebo výsek reálneho, či nízkoúrovňového objektu dopravnej
scény. Dáta popisujú hlavne objekt a môžeme ich rozdeliť na nasledujúce dva typy:
špecifické dáta objektu – vlastnosti, ktoré popisujú konkrétny obsah obrázka. Pre
každý obrazový objekt budú odlišné (napr. pre nízkoúrovňový objekt segmentov to
bude farba oblastí po segmentácií, pre vozidlo zase vlastnosti ako značka výrobcu,
pohľad, typ, EČV, farba atď.).
pomocné dáta – umožňujú orientáciu v obraze a v jeho častiach. Identifikujeme
tieto základné vlastnosti, ktoré bude obsahovať každý odvodený obrazový objekt:
o Objekty – kolekcia párov typu kľúč - hodnota, ktorá umožňuje uchovávať
obrazové objekty, ktoré boli v obraze získané. Kľúčom je typ objektu (napr.
vozidlo, dopravná značka, lebka, atď.) a hodnotou množina obrazových
objektov.
o Rodičovský objekt – odkaz na rodiča, ktorým je iný obrazový objekt. Ak
nemá rodiča ako je prípad koreňového obrázka dopravnej scény, bude mať
prázdnu hodnotu.
o Pozícia oblasti – obdĺžnik výseku o absolútnych súradniciach v hlavnom
koreňovom obrazovom objekte.
Príklad uvedenej štruktúry obrazového objektu zapísaného v UML diagrame tried spolu
s ďalšími dvoma odvodenými triedami zobrazuje obr. 56. Prvé dve základné vlastnosti sú
tu zvolené z dôvodu, že je potrebné niekde uchovávať dáta a okrem toho sa po obraze
pohybovať a s dátami manipulovať. Ak sa pozrieme na ľubovoľný obrázok, nachádzajú sa
na ňom rôzne objekty, ktoré obsahujú ďalšie objekty a tie môžu obsahovať ďalšie a ďalšie.
Takže je možné vidieť, ako sú objekty vnorené v rámci hierarchie iných objektov. Z toho
dôvodu sme zvolili stromovú štruktúru, ktorá nám nielenže umožní uchovávať jednotlivé
obrazové objekty ako vrcholy stromu na jednotlivých úrovniach, ale umožní aj pohyb
a spracovanie objektov, ich vlastností, relácie a ďalšie operácie.
89
ObrazovýObjekt
+ Obrázok: Image+ Objekty: Dictionary<key, Set>+ RodičovskýObjekt: ObrazovýObjekt+ PozíciaOblasti: Rectangle
+ Obrazové operácie
ObrazovýObjektVozidlo
+ Výrobca: String+ Farba: Color+ Pohľad: enum + Typ: string
ObrazovýObjekFarebnýSegment
+ Farba: Color
Obr. 56 Obrazový objekt ako základná trieda pre iné obrazové objekty na príklade vozidla
a farebného segmentu
Na obr. 57 je znázornená stromová štruktúra obrazových objektov. Obrázok dopravnej
scény je takisto obrazový objekt, ktorý je koreňom a obsahuje ďalšie obrazové objekty
(vozidlá a dopravné značky). Dopravná scéna sa tak skladá z kolekcie obrazových
objektov, ktoré sú usporiadané v dvoch typoch kľúčov – vozidlá a dopravné značky. V nich
sa nachádzajú zoznamy konkrétnych obrazových objektov, čo sú v príklade obrázka pre
vozidlá tri inštancie vozidiel (červené, biele, modré) a v prípade dopravných značiek dve
značky zákazu predchádzania na vyskytujúcich sa rôznych pozíciách v obraze. V prvom
vozidle sa navyše zdetegovalo a rozpoznalo evidenčné číslo vozidla, na ostatných
vozidlách sa EČV nenašli z dôvodu nízkeho rozlíšenia.
Dopravná scéna
EČV
Vozidlá
Vozidlo 2(biele)
Vozidlo 1(červené)
Vozidlo 3(modré)
Zákaz predchá-
dzania
Zákaz predchá-
dzania
EČV(ZA-555?)
Dopravné značky
Obr. 57 Strom obrazových objektov (oranžové obdĺžniky predstavujú obrazové objekty,
biele obdĺžniky typy)
90
Okrem definovaných vlastností bude mať obrazový objekt veľké množstvo základných
metód, t.j. funkcií, ktoré môžu manipulovať a upravovať obrázok. Jedná sa napr. o úpravu
jasu, vyhladzovanie Gaussom, mediánom a inými, ktoré boli popísané v teoretickej časti
tejto práce. Popri nich spomenieme ešte jednu z používaných funkcií, ktorou bude Výsek.
Touto operáciou bude možné orezať z obrázka jeho časť podľa zadaných súradníc. Vďaka
tomu môžeme pracovať s malými časťami obrazu a tak napr. ušetriť výpočtový čas
namiesto spracovania na celom obrázku.
Iné objekty
Okrem obrazových objektov, ktoré sú základom práce s obrazom, môžeme v dopytoch
využiť aj iné objekty a ich vlastnosti. Môže to byť kamera a jej parametre, ktorá generuje
obrázky. Ďalej to môže byť GPS senzor poskytujúci informácie o polohe, výške, smeru
alebo iné senzory, či metainformácie o systéme, na ktorom sa dopyt vykonáva (dostupné
objekty na rozpoznanie, čas vykonávania dopytu) atď.
Operácie
V dopyte ako komplexnej úlohe zloženej z elementárnych úloh predstavujú tieto úlohy
prevažne operácie nad obrazovými objektmi a ich vlastnosťami. Ich vstupom a rovnako
aj výstupom bude preto usporiadaná množina obrazových objektov (obr. 58), v ktorej
môžeme obrazové objekty vyhľadávať, upravovať, spájať atď.
Podstatou je teda množina obrazových objektov zložená z nula alebo viac objektov, ktoré
vstupujú a rovnako aj vystupujú z operácií, ktoré si v nasledujúcej časti definujeme. Okrem
takýchto funkcií si definujeme aj iné funkcie, ktoré nebudú pracovať s obrazovými
objektmi, ale budú poskytovať iné potrebné informácie, ako napr. funkcia GPS alebo
QUERYINFO.
Obrázok
Dáta
Obrazový objekt
Obrázok
Dáta
Obrazový objekt
Obrázok
Dáta
Obrazový objekt
0..N
Operácia
Obrázok
Dáta
Obrazový objekt
Obrázok
Dáta
Obrazový objekt
Obrázok
Dáta
Obrazový objekt
1..N
Obr. 58 Princíp spracovania elementárnej úlohy operáciou so vstupmi a výstupmi
91
Popísané operácie budú v tvare:
vstupné hodnoty → funkcia (vstupné parametre) → výstupné hodnoty,
kde funkcia transformuje vstupy, ktoré predstavujú vstupné hodnoty a vstupné parametre,
na výstupné hodnoty. V nasledujúcich častiach zavádzame a definujeme nasledujúce
funkcie:
Vstupné a výstupné funkcie
o GETIMAGE – získanie obrazu z kamery
o RESULT – vrátenie výsledku dopytu
Funkcia hľadania objektov
o FINDOBJECTS – detekcia a rozpoznanie objektov
Manipulačné operácie
o WHERE – selekcia
o SELECT – výber
Množinové operácie
o UNION – zjednotenie
o INTERSECTION – prienik
o MINUS – rozdiel
Operácie s dočasnými dátami
o SAVE – uloženie množiny obrazových objektov do dočasného úložiska
o LOAD – načítanie množiny obrazových objektov z dočasného úložiska
Priestorové operácie
o RIGHTOF – vpravo od
o LEFTOF – vľavo od
o ABOVE – nad
o BELOW – pod
o IN – vo vnútri
o OUT – mimo
o NN – najbližší sused
o DISTANCE – vzdialenosť
Iné funkcie, ktoré nepracujú s obrazovými objektmi
o GPS – práca s GPS
o QUERYINFO – metainformácie o dopyte
92
Lambda kalkul
Nakoľko nosnou časťou mnohých funkcií je manipulácia buď s obrazovým objektom, jeho
vlastnosťami alebo inými objektmi, v realizácií dopytov vychádzame z objektového
lambda kalkulu zavedenom v [74] a syntaxou upravenou z časti podľa jazyka C#. Použitie
lambda výrazov nám poskytne flexibilitu a umožní jednoducho vyjadriť ľubovoľné
operácie s objektmi. V mnohých operáciách je totiž nutné spracovať množinu objektov,
preto pomocou lambda výrazu definujeme vlastnú funkciu, ktorej volanie zabezpečí
aplikovanie výrazu na každý prvok množiny.
Lambda výraz budeme zapisovať v nasledujúcom tvare:
hlavička => telo
Skladá sa z troch častí:
„hlavička“ – predstavuje zoznam vstupujúcich premenných, ktoré sa zvyknú
označovať ako lambda-premenné. V našom prípade sa bude väčšinou jednať
o obrazové objekty, preto bude najčastejšie lambda-premenná obrazový objekt.
„=>” – lambda operátor, ktorým oddeľujeme časť hlavičky od tela. V klasických
zápisoch sa najčastejšie používa bodka „.“ alebo zvislá čiara „|“. Keďže obidva
znaky budeme používať pre iné účely, zaviedli sme zložený znak skladajúci sa zo
znaku rovná sa a väčší ako, ktorým sme sa inšpirovali práve z jazyka C#.
„telo“ – v tejto časti sa bude nachádzať zápis toho, čo sa má vykonať. Výsledná
hodnota sa získa po beta-redukcii, t.j. aplikácii lambda výrazu.
Jednoduchým príkladom lambda výrazu môže byť napr.:
obloha => obloha.StavPočasia
Obloha je obrazový objekt, ktorý v hlavičke ako jeden parameter vstupuje do tela funkcie
lambda výrazu. V ňom voláme vlastnosť stav počasia, ktorý vráti hodnotu stavu počasia,
ktorá sa stane výsledkom lambda výrazu.
Iným príkladom môže byť:
ečv => ečv.Text.ZačínaNa('ZA') AND ečv.Text.Dĺžka = 5
V tomto prípade vstupuje do lambda výrazu cez premennú ečv obrazový objekt
evidenčného čísla vozidla, ktorý sa využíva v tele lambda výrazu na zistenie, či jeho
93
vlastnosť Text začína na písmená ZA a súčasne či jeho dĺžka je rovná 5 znakom.
Výsledkom lambda výrazu je preto logického hodnota vyjadrujúca pravdivosť uvedeného
výrazu.
GETIMAGE - získanie obrazu z kamery
GETIMAGE (index kamery, trvanie) → obrazové objekty
GETIMAGEObrazovéobjekty
(1..N)
index trvanie
Zachytí obraz z kamery a transformuje ho do obrazového objektu. Môže pritom zachytiť
viac obrázkov a dokonca z viacerých zdrojov kamier, preto je výsledkom tejto operácie
množina obrazových objektov o počte podľa zvolených vstupných parametrov.
Zachytený každý obrázok predstavuje dopravnú scénu a ako dáta obrazového objektu ho
tvoria dáta popisujúce pohľad kamery, z ktorej sa obrázok získal v danom čase.
Vstupné parametre (voliteľné):
index kamery – jedna alebo viacero kamier, z ktorých sa má obraz zachytiť. Bude
možné zvoliť jednu alebo niekoľko z nasledujúcich kamier (obr. 59):
o predná – čelná kamera snímajúca scénu pred vozidlom
(implicitná hodnota).
o predná vpravo – sníma scénu vpravo pred vozidlom.
o predná vľavo – sníma scénu vľavo pred vozidlom.
o vpravo – sníma scénu vpravo od vozidla.
o vľavo – sníma scénu vľavo od vozidla.
o zadná vpravo – sníma scénu vpravo za vozidlom.
o zadná vľavo – sníma scénu vľavo za vozidlom.
o zadná – sníma scénu za vozidlom.
o vrchná – kamera namierená na zenit.
o všetky – zachytí obraz zo všetkých kamier.
trvanie – čas trvania zachytávania obrazov v milisekundách. Špeciálna hodnota:
o 0 – zachytí iba jeden obrázok (implicitná hodnota).
94
Keďže sa vo vozidle môžu nachádzať viaceré kamery, navrhli sme ich rozmiestnenie ako
je znázornené na obr. 59. Samozrejme od vozidla nebudeme očakávať, že bude obsahovať
všetky kamery, preto bude podmienkou, aby vozidlo malo aspoň jednu prednú kameru
snímajúcu situáciu pred vozidlom.
Obr. 59 Možné rozmiestnenie kamier vo vozidle
RESULT – vrátenie výsledku dopytu
obrazové objekty → RESULT (výraz) → objekty
RESULTObjekty
(1..M)
Obrazovéobjekty
(1..N)
Lambda výraz
Vráti výslednú množinu objektov definovanú lambda výrazom. Transformuje vstupujúce
obrazové objekty do nových objektov zložených z iných objektov, na ktoré aplikuje
operáciu UNION a následne vráti ako výsledok celého dopytu. Táto funkcia sa môže
použiť iba na poslednom mieste v zreťazenej sekvencii dopytu. Ak sa nepoužije,
výsledkom dopytu je množina obrazových objektov z poslednej elementárnej úlohy
vrchná
predná
zadná
predná
vpravo
predná
vľavo
vpravo vľavo
zadná
vľavo
zadná
vpravo
95
dopytu. Ak pritom bude vstupom prázdna množina, bude výsledkom takisto prázdna
množina.
Vstupný parameter:
výraz – lambda výraz transformujúci obrazové objekty na objekty.
FINDOBJECTS - detekcia a rozpoznanie objektov
obrazové objekty A → FINDOBJECTS (unikátny názov objektu) → obrazové objekty B
FINDOBJECTSObrazovéobjekty B
(0..M)
Obrazovéobjekty A
(1..N)
Unikátnynázov
objektu
Deteguje alebo rozpozná požadované obrazové objekty b (vysokoúrovňový alebo
nízkoúrovňový) vo vstupnom obrazovom objekte a. Keďže vstupom môže byť množina
obrazových objektov A o veľkosti , pre každý objekt a z množiny A nájde požadované
obrazové objekty b, ktoré následne operáciou UNION zjednotí do výslednej množiny B
ako výstup. Veľkosť množiny B potom môže byť . Ak bude ale vstupom prázdna
množina, bude výsledkom takisto prázdna množina, t.j. .
Okrem toho, že vráti výslednú množinu obrazových objektov B, pre každý prvok a sa
uloží množina b do kolekcie objektov vo vnútri každého obrazového objektu a za účelom
vytvárania hierarchie stromovej štruktúry a ich možnému neskoršiemu použitiu.
Vstupný parameter:
unikátny názov objektu – jednoznačný identifikátor typu objektu, ktorý požadujeme
vyhľadať. Môže to byť jeden z objektov definovaných v časti 4.2 Obrazové
objekty. Ak sa zvolí názov, ktorý systém nepozná, pozrie sa do zoznamu modelov
všeobecných objektov priložených vo vstupnom dopyte. Ak je názov pričlenený
k modelu, použije sa na vyhľadanie obrazového objektu podľa nastavených
parametrov.
WHERE - selekcia
obrazové objekty A → WHERE (podmienka) → obrazové objekty B
96
WHEREObrazovéobjekty B
(0..M)
Obrazovéobjekty A
(1..N)
Lambda výraz
Selekcia je operácia, ktorú môžeme definovať ako výber podmnožiny B z množiny A na
základe podmienky zadanej lambda výrazom. Pomocou nej teda filtrujeme vstupné
obrazové objekty a o počte , z ktorých na výstupe dostaneme množinu obrazových
objektov o veľkosti , pričom . Ak bude ale vstupom prázdna množina,
bude výsledkom takisto prázdna množina, t.j. .
Vstupný parameter:
podmienka – akákoľvek podmienka v tvare lambda výrazu, ktorá sa aplikuje na
každý prvok a vstupnej množiny obrazových objektov A a ktorej pravdivosť
znamená zahrnutie obrazového objektu a do výslednej množiny B. Preto, ak bude
výsledkom podmienky nepravda, obrazový objekt a sa do výslednej množiny B
nedostane.
SELECT - výber
obrazové objekty A → SELECT (výraz) → obrazové objekty B
SELECTObrazovéobjekty B
(0..M)
Obrazovéobjekty A
(1..N)
Lambda výraz
Výber je operácia, pomocou ktorej vyberáme množinu obrazových objektov B z množiny
iných obrazových objektov na základe ich vlastností, pričom k nim pristupujeme pomocou
prvkov a z množiny A. To, čo sa má vyberať, definujeme v tele lambda výrazu.
Táto operácia okrem výberu bude uskutočňovať aj zjednotenie množín, pokiaľ bude
výsledkom výberu jedného prvku opäť množina. To môže nastať v prípade, ak vyberáme
v množine objektov inú množinu objektov. Keďže vstupom môže byť množina obrazových
objektov A o veľkosti a každý prvok a môže mať K ďalších objektov, výsledná
veľkosť množiny B po operácii zjednotenia môže mať veľkosť , kde ∑ .
97
Ak bude ale vstupom prázdna množina, bude výsledkom takisto prázdna množina,
t.j. .
Vstupný parameter:
výraz – lambda výraz, pomocou ktorého sa vrátia obrazové objekty, ktoré
požadujeme vybrať.
UNION - zjednotenie
obrazové objekty A → UNION (obrazové objekty B) → obrazové objekty C
UNIONObrazovéobjekty C
(0..M)
Obrazovéobjekty A
(0..N)
Obrazovéobjekty B
(0..K)
Zjednotením množín obrazových objektov A a B dostaneme takú výslednú množinu C,
ktorá obsahuje prvky patriace aspoň do jednej z množín A alebo B.
Vstupom je množina obrazových objektov A o počte a množina obrazových objektov
B o počte . Výstupom potom bude množina obrazových objektov C, ktorej veľkosť je
, kde .
Vstupný parameter:
obrazové objekty B – množina obrazových objektov, ktoré požadujeme zjednotiť
s množinou obrazových objektov A.
INTERSECTION - prienik
obrazové objekty A → INTERSECTION (obrazové objekty B) → obrazové objekty C
INTERSECTIONObrazovéobjekty C
(0..M)
Obrazovéobjekty A
(0..N)
Obrazovéobjekty B
(0..K)
Prienikom množín obrazových objektov A a B dostaneme takú výslednú množinu C, ktorá
obsahuje všetky prvky patriace súčasne do oboch množín A a B.
98
Vstupom je množina obrazových objektov A o počte a množina obrazových objektov
B o počte . Výstupom potom bude množina obrazových objektov C, ktorej veľkosť je
, kde .
Vstupný parameter:
obrazové objekty B – množina obrazových objektov, na ktoré sa aplikuje prienik
s množinou obrazových objektov A.
MINUS - rozdiel
obrazové objekty A → MINUS (obrazové objekty B) → obrazové objekty C
MINUSObrazovéobjekty C
(0..M)
Obrazovéobjekty A
(0..N)
Obrazovéobjekty B
(0..K)
Rozdielom množín obrazových objektov A a B dostaneme takú výslednú množinu C, ktorá
obsahuje tie prvky množiny A, ktoré súčasne nepatria do množiny B.
Vstupom je množina obrazových objektov A o počte a množina obrazových objektov
B o počte . Výstupom potom bude množina obrazových objektov C, ktorej veľkosť je
, kde .
Vstupný parameter:
obrazové objekty B – množina obrazových objektov, ktoré požadujeme odčítať od
množiny obrazových objektov A.
SAVE - uloženie
obrazové objekty A → SAVE (kľúč) → obrazové objekty A
SAVEObrazovéobjekty A
(0..N)
Obrazovéobjekty A
(0..N)
Kľúč
99
Uloží množinu obrazových objektov A do dočasného úložiska pod zadaným kľúčom
(úložisko je platné po celú dobu spracovania dopytu), pričom nijako nemodifikuje vstupné
dáta. Môže sa použiť na uchovanie dočasnej množiny za účelom neskoršieho spracovania
týchto dát. Ak sa použije rovnaký názov kľúča, dáta sa prepíšu.
Vstupné parametre:
kľúč – identifikátor v úložisku, pod ktorým sa uloží množina obrazových objektov.
LOAD - načítanie
LOAD (kľúč) → obrazové objekty
LOADObrazovéobjekty
(0..N)
Kľúč
Vráti množinu obrazových objektov z dočasného úložiska podľa názvu kľúča. Ak zadaný
kľúč neexistuje, vráti sa prázdna množina.
Vstupný parameter:
kľúč – identifikátor v úložisku, pod ktorým sa načíta množina obrazových objektov,
ktorá sa následne vráti.
Priestorové operácie RIGHTOF, LEFTOF, ABOVE, BELOW, IN, OUT
obrazové objekty A → PriestorováOperácia (obrazové objekty B) → obrazové objekty C
kde PriestorováOperácia
PriestorováOperácia
Obrazovéobjekty C
(0..M)
Obrazovéobjekty A
(0..N)
Obrazovéobjekty B
(0..K)
Operácia RIGHTOF vyberá také prvky množiny A, ktorých pozícia na koreňovom obrázku
je vpravo od všetkých obrazových prvkov b množiny B.
100
Operácia LEFTOF vyberá také prvky množiny A, ktorých pozícia na koreňovom obrázku
je vľavo od všetkých obrazových prvkov b množiny B.
Operácia ABOVE vyberá také prvky množiny A, ktorých pozícia na koreňovom obrázku je
nad všetkými obrazovými prvkami b množiny B.
Operácia BELOW vyberá také prvky množiny A, ktorých pozícia na koreňovom obrázku
je pod všetkými obrazovými prvkami b množiny B.
Operácia NEXTTO vyberá také prvky množiny A, ktorých pozícia na koreňovom obrázku
je vedľa všetkých obrazovými prvkami b množiny B.
Operácia IN vyberá také prvky množiny A, ktorých pozícia na koreňovom obrázku je vo
vnútri všetkých obrazových prvkov b množiny B.
Operácia OUT vyberá také prvky množiny A, ktorých pozícia na koreňovom obrázku je vo
mimo všetkých obrazových prvkov b množiny B.
Vstupom je množina obrazových objektov A o počte a množina obrazových objektov
B o počte . Výstupom potom bude množina obrazových objektov C, ktorej veľkosť je
, kde .
Vstupný parameter:
obrazové objekty B – množina obrazových objektov, ktoré ovplyvňujú výber
množiny A podľa zvolenej priestorovej operácie.
NN – najbližší sused
obrazové objekty A → NN (obrazové objekty B) → obrazové objekty C
NNObrazovéobjekty C
(0..M)
Obrazovéobjekty A
(0..N)
Obrazovéobjekty B
(0..K)
Operácia NN vyberá jeden alebo viacero prvkov množiny A, ktorých vzdialenosť medzi
všetkými prvkami a množiny A voči všetkým obrazovým prvkom b množiny B je
najmenšia.
101
Vstupom je množina obrazových objektov A o počte a množina obrazových objektov
B o počte . Výstupom potom bude množina obrazových objektov C, ktorých veľkosť
bude , kde .
Vstupný parameter:
obrazové objekty B – množina obrazových objektov, z ktorých sa má nájsť
najmenšia vzdialenosť s obrazovými objektmi množiny A.
DISTANCE – vzdialenosť
obrazové objekty A→ DISTANCE (obrazové objekty B, vzdialenosť) →obrazové objekty C
DISTANCEObrazovéobjekty C
(0..M)
Obrazovéobjekty A
(0..N)
Obrazovéobjekty B
(0..K)
Lambda výraz
Operácia DISTANCE vyberá také prvky množiny A, ktorých vzdialenosť medzi všetkými
prvkami a množiny A voči všetkým obrazovým prvkom b množiny B je zadaný lambda
výrazom.
Vstupom je množina obrazových objektov A o počte a množina obrazových objektov
B o počte . Výstupom potom bude množina obrazových objektov C, ktorých veľkosť
bude , kde .
Vstupné parametre:
obrazové objekty B – množina obrazových objektov, z ktorých sa budú hľadať
vzdialenosti.
vzdialenosť – lambda výraz, ktorý bude mať dva vstupné parametre:
o obrazový objekt a – obrazový objekt z množiny A
o vzdialenosť – vzdialenosť vypočítaná medzi objektom a množiny A
a objektom b z množiny B.
Na základe týchto dvoch parametrov možno vykonať ľubovoľné operácie, ktorých
výstupom a teda výsledkom celého lambda výrazu je pravdivostná hodnota, ktorej
pravdivosť znamená prijatie prvku a do výslednej množiny C. Môžeme tak
102
filtrovať napr. prvky, ktorých vzdialenosť je medzi ostatnými prvkami menšia ako
nejaká zadaná hodnota.
GPS - práca s GPS
GPS → GPS inštancia
GPSGPS
inštancia
Výstup je GPS inštancia, ktorá poskytne možnosť získať nasledujúce aktuálne informácie
formou vlastností:
o zemepisná dĺžka (longitude),
o zemepisná šírka (latitude),
o zemepisná výška (altitude),
o smer pohybu (heading),
o rýchlosť pohybu (speed),
o čas (time).
QUERYINFO – metainformácie o dopyte
QUERYINFO → QUERYINFO inštancia
QUERYINFOQUERY-
INFO inštancia
Výstup je QUERYINFO inštancia, ktorá poskytne možnosť získať informácie o dopyte,
čase jeho spracovania, podporované objekty na rozpoznávanie ako aj popisné metódy,
ktoré poskytuje za účelom rozpoznávania všeobecných objektov.
Zloženie dopytu a operátor |
Dopyt môžeme vyskladať pomocou definovaných operácií, ktoré budú sekvenčne
prepojené v jednom riadku. Na prepojenie jednotlivých krokov si zavedieme operátor „|“
(zvislá čiara), ktorým budeme nielenže oddeľovať jednotlivé kroky, ale aj predávať
výstupy na vstupy nasledujúcich operácií:
obrazové objekty A → | → obrazové objekty A
|Obrazovéobjekty A
(0..N)
Obrazovéobjekty A
(0..N)
103
Vstupom a výstupom sú teda tie isté obrazové objekty bez akejkoľvek modifikácie.
Výsledné zapojenie viacerých príkazov a teda operácií nad obrazom bude vyzerať
nasledovne:
operácia1 | operácia2 | ... | operáciaN
pričom posledná operácia operáciaN bude udávať celkový výstup dopytu.
4.3.4 Príklady dopytov
Na demonštráciu použitia navrhnutého jazyka pre systém sekvenčného spracovania dopytu
uvádzame niekoľko príkladov.
Obrázok dopravnej scény
Vrátenie jedného obrázka z prednej kamery predstavuje najjednoduchší dopyt, aký
môžeme vyjadriť:
GETIMAGE
Formálne táto operácia vracia obrazový objekt, ktorý zaobaľuje získaný obrázok z kamery.
Pre jednoduchosť v tejto časti budeme používať pojem obrázok ako synonymum pre
obrazový objekt.
Ak by sme požadovali obraz zo zadnej kamery, môžeme použiť:
GETIMAGE('zadná')
V týchto jednoduchých dopytoch nemusíme použiť výstupnú operáciu RESULT, ani
operátor |, pretože nepožadujeme vrátiť iné dáta ako obrázok a nepoužívame ani iné
operácie. Ak by sme však chceli vrátiť s obrázkom aj GPS pozíciu, použijeme výstupnú
operáciu RESULT:
GETIMAGE('zadná') | RESULT(obrázok => obrázok, GPS.Pozícia)
Získaný obrázok sa predá na vstup operácie RESULT, v ktorej sa definujú položky, aké
požadujeme vrátiť. Konkrétne definujeme vrátenie obrázka a GPS pozíciu.
Hľadanie vozidla
Iným príkladom je vyhľadávanie červeného vozidla. Dopyt preto môžeme postaviť tak, že
na celom obraze vyhľadáme vozidlá a pozrieme sa na ich farbu alebo si najskôr nájdeme
104
červenú farbu a na takto získaných miestach segmentov vyhľadáme vozidlá. Ukážeme si
obidva spôsoby riešenia.
V oboch prípadoch potrebujeme získať obraz z kamery a následne v ňom vyhľadať
objekty. Použijeme pritom prednú kameru. Prvý spôsob:
GETIMAGE | FINDOBJECTS('vozidlo') |
WHERE(vozidlo => vozidlo.Farba = 'červená')
Vyjadrený dopyt znamená získaj obrázok dopravnej scény z prednej kamery (GETIMAGE),
na ktorom vyhľadaj vozidla (FINDOBJECTS) a následne z množiny vozidiel vyfiltruj tie,
ktorých farba je červená (WHERE). Výstupom je teda množina výsekov červených vozidiel.
GETIMAGE
Dopravná scéna
FINDOBJECTS
Vozidlo (modré)
Vozidlo (červené)
Vozidlo (červené)
WHERE
Vozidlo (červené)
Vozidlo (červené)
Obr. 60 Postupnosť hľadania červených vozidiel na príklade zistených troch vozidiel
Ak sa na tento zápis pozrieme podrobnejšie, GETIMAGE vráti obrazový objekt
reprezentujúci obrázok dopravnej scény z kamery. Ten sa predá funkcií FINDOBJECTS,
ktorá vyhľadá v tomto obrazovom objekte všetky vozidlá a vráti ich ako množinu
obrazových objektov reprezentujúcich všetky nájdené vozidla na obraze (môže ich byť
nula alebo viac). Keďže požadujeme získať len červené vozidlá, uskutočníme následne
operáciu selekcie (WHERE), v ktorej pomocou podmienky stanovíme, že dominantná farba
vozidla má byť červená. Nakoľko vyžadujeme od operácie selekcie univerzálnosť,
105
využívame lambda výraz, ktorým zapisujeme požadovanú podmienku v tele lambda
výrazu. Selekcia nám výsledne vyfiltruje množinu vozidiel tak, že na jej výstupe zostanú
len červené vozidlá.
Ak by sa na dopravnej scéne nachádzali tri vozidlá, z ktorých by boli dve červené, môžeme
nasledovné operácie spolu s obrazovými objektmi zobraziť do diagramu, ktorý znázorňuje
obr. 60. Modrou farbou sú označené operácie, oranžovou výsledné obrazové objekty.
Druhý spôsob nájdenia červených vozidiel:
GETIMAGE | FINDOBJECTS('červený segment') |
FINDOBJECTS('vozidlo')
Opäť získame obrazový objekt dopravnej scény, ktorý odošleme funkcii na hľadanie
červených oblastí. Tá nám vráti množinu obrazových objektov obsahujúcich červené
segmenty. Keďže len v týchto oblastiach chceme vyhľadávať objekty vozidiel, ako ďalšiu
operáciu zvolíme FINDOBJECTS. Obr. 61 znázorňuje diagram postupnosti hľadania
červených vozidiel týmto spôsobom.
GETIMAGE
Dopravná scéna
FINDOBJECTS
Červený segment
2
Červený segment
3
Červený segment
1
FINDOBJECTS
Vozidlo (červené)
Vozidlo (červené)
Červený segment
N...
Obr. 61 Postupnosť hľadania červených vozidiel pomocou hľadania červených segmentov
106
Pre vyjadrenie zložitejšieho dopytu použijeme motivačný príklad z úvodu práce, t.j.
hľadanie červeného vozidla, ktoré má určité neúplné evidenčné číslo začínajúce na „ZA“
a končiace „AB”), pričom vpravo od neho sa nachádza obrázok lebky. Tento dopyt
môžeme vyjadriť nasledovným spôsobom:
GETIMAGE | FINDOBJECTS('vozidlo') |
WHERE(vozidlo => vozidlo.Farba = 'červené' AND
vozidlo.Pohlad = 'zadná strana') |
FINDOBJECTS('EČV') |
WHERE(ečv => ečv.Text.ZačínaNa('ZA') AND
ečv.Text.KončíNa('AB'))|
SELECT(ečv => ečv.RodičovskýObjekt.Výsek(
ečv.PozíciaOblasti.Zväčši(0,100,400,100))) |
FINDOBJECTS('lebka') |
RESULT(lebka => lebka.RodičovskýObjekt, GPS.Pozícia, GPS.Smer,
lebka.VráťKoreňovýObjekt)
Predpokladom je, že s dopytom bol na vstupe definovaný model lebky s názvom lebka.
V inom prípade nám bude predposledná operácia vracať prázdnu množinu, nakoľko
nebude vedieť rozpoznávať tento typ objektu, keďže nie je vstavaný v systéme.
Prvé tri operácie sú rovnaké ako v predchádzajúcom prvom spôsobe hľadania červeného
vozidla, navyše je iba v podmienke stanovený pohľad na zadnú stranu vozidla, takže sa
z množiny odstránia tie vozidlá, ktoré sú z iného pohľadu (napr. spredu, zľava alebo
sprava). Na získanej množine červených vozidiel vyhľadáme objekt evidenčného čísla
vozidla (EČV). Ak sa nám ho podarí nájsť (vozidlo nemá príliš malé rozlíšenie), selekciou
zistíme, či obsahuje zadané znaky. V tele lambda výrazu využívame vlastnosť Text,
v ktorej sa nachádza rozpoznané EČV a za pomoci metód zistíme, či sa rozpoznané EČV
začína na „ZA“ a končí na „AB“. Ak ani jedno červené vozidlo nevyhovuje tejto
podmienke, dostaneme prázdnu množinu. V inom prípade môžeme pracovať s EČV tak, že
si operáciou výberu získame nový výsek obrázka vpravo od EČV. Využívame pritom
rodičovský objekt EČV, čo predstavuje obrazový objekt vozidla, z ktorého si vysekneme
oblasť zadanú zväčšenými rozmermi EČV o zadané pixely (0 zľava, 100 zhora, 400
vpravo, 100 vľavo). Tak dostaneme oblasť, na ktorej spustíme hľadanie obrázku lebky.
Výsledok vrátime operáciou RESULT. Ak dostaneme prázdnu množinu obrázkov lebiek,
záleží od nastavení dopytu, či sa bude pokračovať vo vyhľadávaní od začiatku alebo sa
107
dopyt ukončí. Ak prázdnu množinu nedostaneme, vráti sa obrázok vozidla (rodičovský
objekt lebky), GPS pozícia a smer spolu s celým pôvodným obrázkom (koreňový objekt).
Celú postupnosť krokov zobrazuje aj obr. 62.
GETIMAGE
Dopravná scéna
FINDOBJECTS
Vozidlo 2 (modré, zadná
strana)
Vozidlo 3 (červené,
zadná
strana)
Vozidlo 1 (červené,
predná
strana)
WHERE
Vozidlo 3 (červené,
zadná
strana)
FINDOBJECTS
EČV (ZA123AB)
WHERE
EČV (ZA123AB)
SELECT
Výsek z vozidla 3
FINDOBJECTS
Lebka
RESULT
Obr. 62 Postupnosť hľadania červeného vozidla s vyobrazením lebky na príklade troch vozidiel,
z ktorých jedno zodpovedá zadanému popisu
Zistenie stavu počasia
Na zistenie stavu počasia môžeme využiť objekt obloha, ktorý obsahuje vlastnosť stavu
počasia. Využijeme buď vrchnú kameru, ak bude k dispozícií alebo prednú:
GETIMAGE('vrchná' OR 'predná') | FINDOBJECTS('obloha') |
RESULT(obloha => obloha.StavPočasia)
108
Nájdenie cien z totemu čerpacej stanice
Chceli by sme vyhľadať totem určitej čerpacej stanice a získať z neho informácie o cene
pohonných hmôt. Ak máme obrázok totemu čerpacej stanice alebo len jej logo, môžeme
postaviť dopyt na hľadaní loga cez všeobecný model podobne ako v prípade lebky.
Následne, zo získanej množiny obrázkov hľadaného loga, vyrežeme oblasti pod logom
(zväčšené o 10 pixelov sprava, zhora, zľava a 400 pixelov zdola). V týchto oblastiach
predpokladáme výskyt totemu, preto sa v nich pokúsime vyhľadať text, ktorý potom
podrobíme selekcií. V nej zistíme, či text zodpovedá zvolenému formátu desatinných čísiel
a ak áno, môžeme vrátiť obrázok výseku, z ktorého budeme môcť získať informácie o cene
pohonných hmôt danej čerpacej stanice.
GETIMAGE | FINDOBJECTS('logo') |
SELECT(logo => logo.RodičovskýObjekt.Výsek(
logo.PozíciaOblasti.Zväčši(10,10,10,400))) |
FINDOBJECTS('text') |
WHERE(text => text.ObsahujeFormát('0.000')) |
RESULT(text => text.RodičovskýObjekt)
Celá postupnosť je zobrazená aj na obr. 63 s príkladom nájdenia 2 odpovedajúcich log,
ktoré obsahujú niekoľko textov (prvé logo jeden text, druhé štyri). Výsek pod druhým
logom reprezentuje hľadaný totem čerpacej stanice.
GETIMAGE
Dopravná scéna
FINDOBJECTS
Logo 2Logo 1
SELECT
Výsek pod
logom 2
Výsek pod
logom 1
WHERE
RESULT
FINDOBJECTS
Text 1 z výseku 2
Text 1 z výseku 1
Text 2 z výseku 2
Text 3 z výseku 2
Text 4 z výseku 2
Text 1 z výseku 2
Text 3 z výseku 2
Text 4 z výseku 2
Obr. 63 Postupnosť rozpoznania totemu čerpacej stanice na základe textu obsahujúceho čísla,
príklad zobrazuje dve logá, z ktorých jedno bude zodpovedať zadanému dopytu
109
Hľadanie vozidiel blízko značky zákazu zastavenia
Na poslednom príklade sa pokúsime vyhľadať vozidlá, ktoré sú blízko dopravnej značky
zákaz zastavenia. Problémom môže byť, že sa v danej oblasti vyskytujú bilbordy
s vyobrazením áut vysoko na oblohe, preto odfiltrujeme tie vozidlá, ktoré sa nachádzajú
v oblasti oblohy a potom vyhľadáme vozidlá vľavo a najbližšie od dopravnej značky
zákazu zastavenia.
GETIMAGE | FINDOBJECTS('zvislá značka zákazu zastavenia') |
SAVE('zákazy zastavenia') |
SELECT(značka => značka.RodičovskýObjekt) |
FINDOBJECTS('obloha') |
SELECT(obloha => obloha.RodičovskýObjekt) |
FINDOBJECTS('vozidlo') |
OUT(vozidlo => vozidlo.RodičovskýObjekt.Objekty['obloha']) |
LEFTOF(vozidlo => LOAD('zákazy zastavenia')) |
NN(vozidlo => LOAD('zákazy zastavenia')) |
RESULT(vozidlo => vozidlo, GPS.Pozícia)
Pre ukážku si na začiatku uložíme množinu nájdených značiek zákazu zastavenia pomocou
operácie SAVE. Potom sa operáciou výberu (SELECT) vrátime na dopravnú scénu, v ktorej
detegujeme oblohu. Následne sa opäť vrátime na dopravnú scénu, na ktorej tentoraz
spustíme hľadanie vozidiel. Z nájdených vozidiel vyradíme tie, ktoré sa nachádzajú
v oblasti oblohy pomocou operácie OUT. V tele lambda výrazu preto pristupujeme
k oblohe, tentoraz pre ukážku pomocou zoznamu všetkých doteraz nájdených objektov na
dopravnej scéne (Objekty['obloha']). Po vykonaní operácie OUT si ešte vyfiltrujeme
vrátené vozidlá operáciou LEFTOF tak, že si ponecháme len tie, ktoré sa nachádzajú vľavo
od značiek. Z týchto vozidiel napokon vrátime len také vozidlo, ktoré je najbližšie (NN).
Ak takéto vozidlo existuje, vrátime ho vo výsledku spolu s GPS pozíciou.
Všimnime si, že takto postavený dopyt najskôr vyhľadáva dopravné značky. Ak sa žiadna
dopravná značka zákazu zastavenia nenájde, FINDOBJECTS nám vráti prázdnu množinu
a preto všetky nasledujúce operácie nebudú zbytočne vyhľadávať oblohu a ani vozidlá na
obraze.
Postupnosť príkazov a príklad tohto dopytu zobrazuje diagram na obr. 64.
110
GETIMAGE
Dopravná scéna
FINDOBJECTS
Zákaz zastavenia
SAVE
Zákaz zastavenia
SELECT
Dopravná scéna
FINDOBJECTS
Obloha
SELECT
Dopravná scéna
FINDOBJECTS
Vozidlo 2 Vozidlo 3Vozidlo 1
OUT
Vozidlo 3Vozidlo 1
LEFTOF
Vozidlo 3Vozidlo 1
NN
Vozidlo 3
RESULT
Obr. 64 Postupnosť hľadania značky zákazu zastavenia, vozidiel a oblohy pre odfiltrované vozidiel na
bilbordoch a so zistením vozidla najbližšieho ku značke zákazu zastavenia
111
5 Implementácia a overenie riešenia
Aby sme mohli overiť navrhnuté riešenie, rozhodli sme sa implementovať časť systému s
použitím platformy .NET a programovacieho jazyka C#. Jazyk C# sme si zvolili z toho
dôvodu, že od verzie jazyka 3.0 a .NET verzie 3.5 podporuje technológiu LINQ (Language
Integrated Query) a s ňou späté rozšírenia, ktoré umožňujú v jazyku vykonávať dopyty nad
kolekciami objektov (LINQ to Objects), databáz (LINQ to SQL), XML dokumentov
(LINQ to XML) a iných. Okrem uvedených umožňuje tento .NET-ový jazyk vytvoriť aj
vlastnú implementáciu dopytovacieho jazyka, čo využijeme na vytvorenie a overenie
funkčnosti nášho navrhovaného systému.
5.1 Implementácia
Na implementáciu dopytov a previazanie s technológiou LINQ je možné použiť buď
rozhranie IEnumerable alebo IQueryable.
IEnumerable je rozhranie, ktoré exponuje enumerátor, pomocou ktorého je možné
vykonávať iterácie v určitej kolekcií implementujúcej toto rozhranie. Umožní teda
prechádzať a pristupovať k prvkom kolekcie, čo sa najčastejšie využíva v cykle foreach,
ktorý toto rozhranie vyžaduje.
Podobne aj IQueryable umožňuje enumerovať a to vďaka tomu, že implementuje a teda
dedí od rozhrania IEnumerable. K nemu pridáva podporu pre spracovanie dopytov
pomocou poskytovateľov dopytov (query providers). Tí umožňujú spracovať výrazový
strom, ktorý sa vybuduje z postaveného dopytu. To sa využíva napr. v LINQ to SQL, kde
sa pomocou výrazového stromu objektový dopyt preloží do SQL výrazu, ktorý sa následne
odošle SQL serveru na vykonanie.
Okrem týchto rozhraní je možné použiť vlastné rozhrania alebo priamo triedy, nad ktorými
je možné pomocou rozširujúcich metód (extension methods) vytvoriť vlastný systém na
spracovanie. Využili sme preto túto možnosť a s pomocou rozhrania IEnumerable spolu
s rozširujúcimi metódami vyvinuli navrhnutý systém.
5.1.1 EmguCV a OpenCV
Okrem samotného .NETu sme využili ešte externú knižnica EmguCV, ktorá je určená pre
spracovanie, analýzu obrazu a počítačové videnie. Je to multiplatformová .NET knižnica,
112
ktorá zaobaľuje knižnicu OpenCV. Tá predstavuje jednu z najstarších a najpoužívanejších
knižníc počítačového videnia. Zdrojový kód je písaný v jazykoch C a C++, čo zaručuje jej
vysokú efektívnosť a multiplaformovosť. V obidvoch prípadoch sa jedná o slobodné (open
source) knižnice, pričom OpenCV je šírená pod BSD licenciou a EmguCV používa duálny
model – pre nekomerčné použitie poskytuje GPL v3 licenciu a pre komerčné riešenia
vlastnú proprietárnu licenciu. Viac informácií je možné získať v [ST3] a priamo na
stránkach týchto knižníc, z ktorých je ich možné aj stiahnuť [75] [76].
5.1.2 Systém LINQ to Images
Obr. 65 Diagram niektorých významných tried navrhnutého systému
113
Navrhli sme niekoľko tried a rozhraní, ktoré spolu s rozširujúcimi metódami a integráciou
s EmguCV a LINQ to Objects tvoria plnohodnotný systém umožňujúci tvorbu dopytov.
Našu implementáciu systému sme preto z pohľadu technológie na dopytovanie nazvali
obdobne ako LINQ to Images. Neimplementovali sme úplne všetky objekty a vlastnosti,
ktoré sme v práci popisovali, ale iba základné, na ktorých je možné poukázať a overiť
použiteľnosť riešenia. Na rozpoznávanie objektov sme použili niekoľko dostupných
i vlastných algoritmov. Z dostupných sme použili napr. detektor chodcov pomocou
histogramu orientovaných gradientov, rozpoznávanie textu pomocou tesseract-ocr,
rozpoznávanie EČV a SURF detektor a deskriptor. Z vlastných sme implementovali
vyhľadávanie farebných segmentov a rozpoznávanie slovenských dopravných značiek.
V tejto implementácií systému je niekoľko odlišností oproti návrhu. Reťazenie operácií sa
realizuje prostredníctvom operátora bodky „.“ namiesto operátora zvislá čiara „|“. Nakoľko
tiež integrujeme knižnicu EmguCV, zavádzame konverziu z obrázka na obrazový objekt.
Vďaka tomuto prepojeniu získavame široké možnosti na prácu s obrázkami.
Systém celkovo simuluje VANET prostredie, takže je možné nielen spracovávať aktuálny
obrázok získaný z kamery, ale aj z iného zdroja, aby sme ho mohli testovať. Ako sme ďalej
zistili, systém je použiteľný nielen pre VANET prostredie, pre ktorý bol pôvodne
navrhovaný, ale aj pre klasické spracovanie obrazu na rýchlu prácu a prototypovanie.
5.1.3 Vlastné algoritmy
Vyhľadávanie farebných segmentov
Na vyhľadávanie segmentov základných farieb sme využili farebný model CIELAB, do
ktorého sme previedli obrázok získaný z kamery v RGB. To nám následne uľahčilo
extrakciu požadovanej základnej farby, avšak problémom stále bolo nájdenie prahových
hodnôt. Tie sme napokon získali experimentovaním na testovacej množine obrázkov,
v dôsledku čoho dokážeme vyhľadávať oblasti základných farieb ako je červená, žltá,
modrá alebo zelená farba. Po segmentácií sme nakoniec pristúpili k hľadaniu súvislých
oblastí, vďaka ktorým sme získali výsledné segmenty.
Rozpoznávanie dopravných značiek
Rozpoznávanie dopravných značiek je úloha, ktorá sa skladá z dvoch častí – detekcie
dopravných značiek v obraze a ich následnej klasifikácii. Tomuto problému sme sa
venovali v prácach [ST1] [ST2] [ST7] [ST8] a [ST11], ktorých cieľom bolo vytvoriť
114
systém na rozpoznávanie slovenských dopravných značiek v ich čo najväčšom počte. Na
obr. 66 uvádzame postupnosť krokov vytvoreného systému.
Obr. 66 Navrhnutý postup rozpoznávania dopravných značiek
Ako základ sme využili farebnú segmentáciu, po ktorej sme v jednotlivých segmentoch
použili adaptívne prahovanie. To riešilo problém, ak boli značky splynuté s inými objektmi
podobnej farby. Po vyhľadaní segmentov sme v nich hľadali základne tvary značiek, ako je
trojuholník, štvorec, obdĺžnik alebo kruh. Tu sme algoritmus postavili na neurónovej sieti
typu MLP. Po rozpoznaní tvaru sme pristúpili k ďalšiemu kroku, ktorým bolo rozpoznanie
značky na základe vnútorného piktogramu. Základom klasifikácie boli opäť neurónové
siete, ktorých sme podľa farby a tvaru použili niekoľko. Výsledkom je zreťazená
postupnosť kaskády neurónových sietí (obr. 67), v ktorej sa kandidáti na značku postupne
zamietajú alebo prijímajú. Ak kandidát úspešne prejde celým týmto procesom až na
koniec, prehlásime ho za dopravnú značku. Výsledkom je potom pozícia a identifikátor
nájdenej dopravnej značky.
6. Klasifikácia na základe tvaru, odstránenie
"neznačiek", klasifikácia typov značiek
5. Detekcia, nájdenie kontúr, odstránenie
objektov nespĺňajúcich kritéria
4. Aplikácia morfologickej operácie
otvorenia
3. Segmentácia na základe farieb,
prahovanie
2. Predspracovanie obrázka, použitie Gaussového filtra
1. Získanie obrázka Farebný obrázok
Farebný obrázok vyhladený
Gaussovým filtrom
Binárny obrázok vyprahovaný
podľa červenej farby
Binárny upravený
obrázok červenej farby
Kandidáti červených
značiek
Rozpoznané červené
dopravné značky
Binárny obrázok vyprahovaný podľa modrej
farby
Binárny upravený
obrázok modrej farby
Kandidáti modrých značiek
Rozpoznané modré dopravné
značky
Binárny obrázok vyprahovaný
podľa žltej farby
Binárny upravený
obrázok žltej farby
Kandidáti žltých značiek
Rozpoznané žlté dopravné značky
115
Obr. 67 Kaskáda navrhnutých neurónových sietí určených na klasifikáciu
5.2 Overenie riešenia
Demonštráciu funkčnosti systému na dopytovanie si ukážeme na nasledujúcich troch
príkladoch. V prvom príklade vyhľadáme zadnú časť červeného vozidla:
var result = Camera.GetImage()
.ConvertToImageObjects()
.FindObjects(new ColorSegmentImageObject(ColorSegmentDetector.Color.Red))
.Where(io => io.Image.Width > 20 && io.Image.Height > 20)
.FindObjects<VehicleImageObject>();
Keďže využívame kameru, ktorá môže vracať obrázok alebo aj množinu obrázkov typu
Image<Bgr, byte>, čo je typ reprezentujúci farebný obrázok z knižnice EmguCV, vytvorili
sme vlastnú rozširujúcu metódu ConvertToImageObjects(), ktorá konvertuje obrázky na
obrazové objekty typu ImageObject. Týmto krokom môžeme používať ďalšie rozširujúce
116
metódy a teda systém LINQ to Images. Na treťom riadku následne voláme metódu
FindObjects, ktorej predávame objekt typu ColorSegmentImageObject pre vyhľadávanie
farebných segmentov s parametrom červenej farby, čím získame enumerovateľnú množinu
všetkých segmentov obsahujúcich červenú farbu. Niektoré segmenty môžu byť príliš malé,
preto použijeme v nasledujúcom kroku selekciu a vyfiltrujeme si iba farebné segmenty,
ktoré sú väčšie ako 20x20 pixelov. Následne pristupujeme k hľadaniu vozidiel, čím
vylúčime tie segmenty, v ktorých sa vozidlá nenachádzajú.
GETIMAGE
Dopravná scéna
WHERE
Červený segment
10
Červený segment
12
Červený segment
3
FINDOBJECTS
Vozidlo (červené)
Vozidlo (oranžové)
Červený segment
27
Červený segment
53
Červený segment
2
Červený segment
3
Červený segment
1
Červený segment
4
Červený segment
5
Červený segment
64
FINDOBJECTS
...
Obr. 68 Postupnosť krokov spracovania testovacieho obrázku dopravnej scény pomocou segmentácie
červených oblastí s následným rozpoznaním vozidiel
117
Na otestovanie dopytu sme zvolili videonahrávku z uskutočnenej jazdy vozidlom. Obr. 68
znázorňuje diagram postupnosti spracovania jednotlivých krokov na príklade jedného
obrázka z videa. Segmentáciou červenej farby sa z testovacieho obrázka získalo 64
červených segmentov, z ktorých sa následne selekciou s podmienkou rozlíšenia obrázkov
väčších než 20x20 pixelov vyfiltrovalo 5 segmentov. V týchto 5 obrázkoch sa potom
vyhľadal vzor automobilu, čo odstránilo prvé tri segmenty a zostali len dva obrázky, na
ktorých sa nachádzali vozidlá. Je tu tiež možné si všimnúť, že nájdené pravé vozidlo je
oranžové. Prahy nastavené v algoritme farebnej segmentácie sú totiž pre červenú farbu tak
citlivé, že zahŕňajú aj túto farbu. Okrem takto dopredu definovanej farby je však možné
zvoliť i vlastný farebný rozsah. Implementácia algoritmov ale nie je predmetom tejto
práce, spracovatelia preto môžu používať vlastné implementácie, od ktorých je jediná
požiadavka, aby spĺňali uvedené funkčnosti.
Druhý dopyt predstavuje hľadanie totemu čerpacej stanice, čo bude príklad na hľadanie
neznámeho objektu, ktorý nie je integrovaný v našom navrhnutom systéme. Preto si na
základe všeobecného modelu predáme obrázok vzoru loga čerpacej stanice a za pomoci
algoritmu SURF rozpoznáme jeho výskyt v obraze. Ak sa ho podarí nájsť, rozšírime oblasť
pod logom a v ňom sa pokúsime vyhľadať texty. Ak aspoň jeden bude obsahovať číselnú
hodnotu, odpoveďou bude obrázok totemu spolu s GPS pozíciou.
Ako neznámy objekt použijeme obrázok loga čerpacej stanice Shell. Uvedená postupnosť
krokov spracovania je znázornená aj formou diagramu na obr. 69.
var result = Camera.GetImage() .ConvertToImageObjects() .FindObjects(new GenericImageObject(logoShell)) .Select(logo => logo.ParentObject.Image.Copy( logo.GetInflatedRootPosition(20, 20, 20, logo.Image.Height * 2) ) .ConvertToImageObject()) .FindObjects<TextImageObject>() .Where(text => Regex.IsMatch(text.Text, @"\d")) .Result(text => new { Totem = text.ParentObject, Gps = Gps.GetPosition() });
Vyhľadá sa teda obrázok loga čerpacej stanice Shell (logoShell) na obrázku získanom
z kamery (FindObjects). Ak sa na obrázku nájde, vysekne sa z obrázku rodičovského
objektu (t.j. dopravnej scény) oblasť daná rozmermi pixelov 20 zľava, 20 zhora, 20 sprava
a zdola 2x výška nájdeného loga. Keďže pracujeme s obrázkom typu Image<Bgr, byte>,
konvertujeme nakoniec vyseknutý obrázok na obrazový objekt (ConvertToImageObject).
118
Tým sa z obrazu získajú oblasti, v ktorých môže byť totem. Preto sa v nasledujúcom kroku
vyhľadajú možné texty, z ktorých sa potom operáciou selekcie vyfiltrujú len tie, ktoré
obsahujú číslo (testujeme regulárnym výrazom). Následne sa vo výsledku vyberie
rodičovský objekt, ktorý pravdepodobne bude obrázkom totemu spolu s GPS pozíciou.
GETIMAGE
Dopravná scéna
FINDOBJECTS
Logo Shell
SELECT
Výsek pod
logom
WHERE
RESULT
FINDOBJECTS
Text z výseku(1 418)
Text z výseku(deli80)
Text z výseku(1 418)
Obr. 69 Postupnosť krokov spracovania testovacieho obrázku dopravnej scény s cieľom vyhľadania
totemu čerpacej stanice podľa šablóny loga mušle
V treťom dopyte rozpoznáme dopravnú značku priechodu pre chodcov spolu s detekciou
chodcov, pričom budeme požadovať, aby bol aspoň jeden chodec vľavo od nájdenej
značky. Dopyt môže vyzerať nasledovne:
var result = Camera.GetImage() .ConvertToImageObjects() .FindObjects(new HorizontalTrafficSignImageObject( HorizontalTrafficSignDetector.Id.PedestrianCrossing)) .Save("znacky priechodu pre chodcov") .Select(pedestrianSign => pedestrianSign.ParentObject) .FindObjects<PersonImageObject>() .LeftOf(LinqToImages.Load("znacky priechodu pre chodcov")) .Result(person => new {Osoba = person, Gps = Gps.GetPosition()});
Po získaní obrázka na ňom najskôr vyhľadáme zvislé dopravné značky priechodu pre
chodcov, ktoré si uložíme do dočasného úložiska (Save). Potom sa vrátime na rodičovský
objekt (Select), čo predstavuje dopravnú scénu, na ktorej vyhľadáme osoby (FindObjects).
119
Po nájdení osôb ich vyfiltrujeme tak, že dostaneme množinu osôb vľavo od dopravných
značiek priechodu pre chodcov (LeftOf). Značky si pritom načítame z dočasného úložiska
(LinqToImages.Load). Nakoniec vrátime osoby a GPS pozíciu (Result).
Na testovacom obrázku (obr. 70) nám po prvom vyhľadaní našlo jednu dopravnú značku a
potom chodca. Po selekcií a ďalších operáciách sa do výsledku dostala osoba chodca.
FINDOBJECTS
Priechod pre
chodcov
SAVE
Priechod pre
chodcov
SELECT
Dopravná scéna
FINDOBJECTS
GETIMAGE
Dopravná scéna
Chodec
LEFTOF
Chodec
RESULT
LOAD
Priechod pre
chodcov
Obr. 70 Postupnosť krokov spracovania testovacieho obrázka dopravnej scény s cieľom vyhľadania
dopravnej značky priechodu pre chodcov umiestnenej vpravo od chodca
5.2.1 Porovnanie s klasickou tvorbou algoritmov
Vďaka pripraveným vlastným metódam a operáciám je možné veľmi rýchlo manipulovať
s obrazom, vyhľadávať objekty a spracovávať ich vlastnosti. Pre porovnanie zápisu dopytu
s klasicky vyjadreným kódom sme prepísali prvý uvedený príklad nasledovne:
var result = new List<Image<Bgr, byte>>(); using (var capture = new Capture()) { var image = capture.QueryFrame(); Rectangle[] redSegments = ColorSegmentDetector.Detect(image, ColorSegmentDetector.Color.Red); foreach (var segment in redSegments) { if (segment.Width > 20 && segment.Height > 20) {
120
image.ROI = segment; Rectangle[] detectedVehicles = VehicleDetector.Detect(image); foreach (var vehicle in detectedVehicles) { var vehiclePositionInImage = new Rectangle( segment.Left + vehicle.Left, segment.Top + vehicle.Top, vehicle.Width, vehicle.Height); result.Add(image.Copy(vehiclePositionInImage)); } } } } return result;
Tu treba poznamenať, že používame dve vlastné triedy a ich metódy Detect(), t.j. triedy
ColorSegmentDetector a VehicleDetector. Ak by sme mali počítať aj tieto algoritmy, bol by
výsledný kód ešte zložitejší. Pre zaujímavosť uvádzame kód jednoduchšieho z nich,
metódu triedy ColorSegmentDetector:
public static Rectangle[] Detect(Image<Bgr, byte> image, Color color) { var result = new List<Rectangle>(); var thresholdedImg = new Image<Gray, byte>(image.Size); using (Image<Lab, byte> imageLab = image.Convert<Lab, byte>()) { Image<Gray, byte>[] channels = imageLab.Split(); if (color == Color.Red) CvInvoke.cvInRangeS(channels[1], new MCvScalar(RedColorTresholdMin), new MCvScalar(255 + 1), thresholdedImg); else if (color == Color.Blue) CvInvoke.cvInRangeS(channels[2], new MCvScalar(0), new MCvScalar(BlueColorTresholdMax + 1), thresholdedImg); else if (color == Color.Green) CvInvoke.cvInRangeS(channels[2], new MCvScalar(YellowColorTresholdMin), new MCvScalar(255 + 1), thresholdedImg); else throw new NotSupportedException("Not supported yet."); } thresholdedImg._Erode(1); thresholdedImg._Dilate(1); using (var storage = new MemStorage()) { Contour<Point> contour = thresholdedImg.FindContours( Emgu.CV.CvEnum.CHAIN_APPROX_METHOD.CV_CHAIN_APPROX_NONE, Emgu.CV.CvEnum.RETR_TYPE.CV_RETR_EXTERNAL, storage); while (contour != null) { result.Add(contour.BoundingRectangle); contour = contour.HNext; } }
121
return result.ToArray(); }
Samozrejme, kód tejto metódy by sme mohli presne upraviť podľa požiadavky dopytu, t.j.
odstrániť univerzálne časti a použiť len tie, ktoré sú nevyhnutné, ako napríklad presne
špecifikovať požadovanú farbu segmentácie a ostatné nepotrebné v podmienkach vyhodiť.
Rovnako ďalej do cyklu while (contour != null) by sme mohli umiestniť kód z tela cyklu
foreach (var segment in redSegments) a tak ušetriť jeden celý prechod cyklom. Na druhej
strane by sme sa v takomto kóde zbavili univerzálnosti.
Vidíme, že takýto kód je nielen dlhší, ale aj zložitejší na úpravu. Jeho modifikovanie preto
zaberie určitý dlhší čas oproti navrhovanému riešeniu a použitiu LINQ to Images.
Aby sme poukázali na jednoduchosť nášho riešenia, prepísali sme nielen prvú úlohu, ale aj
ďalšie dve a porovnali počty riadkov spolu s počtom príkazov nevyhnutých na vykonanie
tej istej úlohy. Kvôli dĺžke zdrojových kódov už ďalšie v práci neuvádzame. Zistené údaje
zobrazuje tab. 2. Pre objasnenie, počet riadkov kódu vyjadruje početnosť všetkých riadkov
oddelených znakmi CR/LF, pričom sa počítajú aj prázdne riadky, avšak komentáre do
úvahy neberieme. Počet príkazov je počet tých výrazov, ktoré sú oddelené znakom
bodkočiarky alebo koncom zloženej zátvorky. V prípade cyklov alebo podmienok, kde
zložené zátvorky chýbajú, pripočítavame jeden príkaz. Okrem toho v tabuľke navyše
uvádzame v prípade klasického riešenia v zátvorkách celkový počet riadkov alebo
príkazov, ktoré sú platné pre kompletný kód (započítaný kód detektora farebných
segmentov, chodcov, značiek atď.).
Tab. 2 Porovnanie počtu riadkov a príkazov navrhovaného systému s klasicky písaným kódom
1. príklad 2. príklad 3. príklad
LINQ to Images
Klasické riešenie
LINQ to Images
Klasické riešenie
LINQ to Images
Klasické riešenie
Počet riadkov kódu 5 26 (71) 7 45 (162) 8 24 (318)
Počet príkazov 1 12 (39) 1 32 (95) 1 12 (192)
V prípade LINQ to Images je zápis vždy na jeden príkaz, hoci sa ale skladá z viacerých
operácií, ktoré môžeme zapísať na viacero riadkov alebo na jeden celý riadok. Pre lepšiu
prehľadnosť sme v uvedených príkladoch zapisovali každé volanie metódy na jeden
riadok. Dôležité je vyzdvihnúť kompaktnosť tohto zápisu, ktorý nielenže skracuje dĺžku
a čas písania kódu, ale vďaka malej veľkosti umožní aj rýchly prenos dopytu, preto je
122
vhodný pre použitie vo VANET prostredí. V tab. 3 uvádzame ešte dodatočné porovnanie
navrhnutého riešenia s klasickým.
Tab. 3 Porovnanie navrhovaného riešenia s klasickým riešením
LINQ to Images Klasické riešenie
Bezpečné vykonanie
áno (predpripravené funkcie a operácie neumožnia vykonávať
iné nebezpečné operácie)
skôr nie (záleží od interpretera alebo od systému, v ktorom sa
bude kód vykonávať)
Veľkosť kódu malý (umožní rýchlejší
prenos po sieti) väčšinou veľký (rozsiahly kód znamená aj dlhší čas prenosu)
Čas napísania kódu
krátky (použitie niekoľkých zreťazených príkazov, šetrí čas)
dlhší (nutnosť písať kompletný zdrojový kód)
Použitie vo VANET
áno (bezpečné vykonanie, malá veľkosť formátu, univerzálnosť,
nezávislosť na operačnom systéme)
nie (možnosť nebezpečného kódu, implementačne závislý kód)
123
6 Záver
V tejto práci sme sa venovali myšlienke spracovaniu dopytov pre získanie obrazových
objektov z obrazu v prostredí VANET. Zadávateľ dopytu, čo môže byť človek alebo stroj
v takejto sieti, vytvorí požiadavku v definovanom formáte a odošle ju pomocou V2V alebo
V2I komunikácie na vozidlá. Vozidlá ako spracovatelia dopytu túto požiadavku príjmu
a začnú spracovávať v reálnom čase podľa zadania. Základom je pritom získanie jedného
alebo viacerých obrázkov z kamery, v ktorých sa začnú vyhľadávať a spracovávať tzv.
obrazové objekty. Tie môžu reprezentovať buď reálne objekty na dopravnej scéne alebo
nízkoúrovňové objekty v podobe segmentov.
Pri navrhovaní systému a jazyka na dopytovanie obrazových objektov sme sa inšpirovali
myšlienkou SQL jazyka, štandardom MPEG-7 a teóriou lambda kalkulu, pomocou ktorého
sme navrhli výsledný jazyk na dopytovanie. Navrhnuté riešenie tak umožňuje jednoducho
spracovávať komplexné úlohy z oblasti spracovania obrazu pomocou dopytov.
Je dôležité zdôrazniť, že praktická časť navrhovaného riešenia je silne závislá na
implementácií kvalitných metód a algoritmov spracovania, analýzy obrazu a počítačového
videnia. Od nich záleží na kvalite výstupu. Akokoľvek, naše navrhované riešenie je
implementačne nezávislé. Na jeho overenie sme však použili jazyk C#, v ktorom sme
implementovali časť systému. To nám umožnilo nielen overenie funkčnosti a správnosti
riešenia, ale poskytlo systém, ktorý môžeme používať aj mimo prostredia VANET, napr.
ako doplnok ku klasickému spracovaniu obrazu.
Celkovo možno zhrnúť výhody navrhnutého dopytovacieho jazyka nasledovne:
Vhodnosť pre použitie v prostredí VANET
o bezpečné vykonanie kódu – nie sú dovolené nebezpečné operácie, iba
operácie týkajúce sa obrazu,
o malá veľkosť formátu dopytu – umožní rýchly prenos v prostredí VANET,
v ktorom je potreba minimalizovať čas komunikácie,
o implementačne nezávislý – zápis v jazyku s možnosťou nasadenia na
rôznych operačných systém, ak v ňom bude systém implementovaný.
Kompaktný a prehľadný zápis – stručný a jednoduchý zápis dopytu umožňuje
vyjadriť komplexné problémy hľadania objektov v obraze.
124
Nie je nutné písať zložitý kód, kompaktný zápis tak skracuje čas písania kódu, čo
znamená aj menej programovania.
Možnosť použitia ľuďmi alebo strojmi, ktorí nemajú základy spracovania obrazu
(stačí len vhodne definovať dopyt na základe objektového chápania).
Univerzálnosť – nemusíme zložito meniť kód, ak chceme niečo upraviť.
Znovupoužiteľnosť – po doplnení o rozpoznávanie nových objektov je možné
systém využiť v ľubovoľnej oblasti. Použitie je tak možné nielen v prostredí
VANET, ale napr. aj pre vyhľadávanie objektov v obrázkoch, či videách vo
vlastnej databáze.
Táto práca dopĺňa a nadväzuje na dizertačné práce zaoberajúce sa VANET problematikou
na našej fakulte ako napríklad komunikačným protokolom, ktorý navrhol kolega Tomáš
Bača [77] alebo prácami Jána Janecha [78], či Antona Lieskovského [79].
6.1 Vedecký prínos
Vedecký prínos spočíva hlavne v myšlienke využitia dopytov na spracovanie obrazu
v reálnom čase pre prostredie VANET. Doposiaľ sme sa totiž v skúmaní súčasného stavu
nestretli so systémom, ktorý by umožňoval rozpoznávať objekty v obraze na základe
definovanej požiadavky a to dokonca aj mimo oblasť VANET. Existujú síce riešenia na
dopytovanie obrazových informácií, avšak väčšina je postavených na vyhľadávaní vo
veľkých databázach, ktoré sú dopredu naplnené metadátami extrahovanými z obrazových
dát.
Navrhli sme preto jazyk umožňujúci vytvoriť dopyt, ktorý definuje, čo sa má na obraze
vyhľadať a ako sa má ďalej spracovávať. Dopyt reprezentuje komplexnú úlohu hľadania
obrazových objektov, ktorú je možné dekomponovať na menšie, tzv. elementárne úlohy.
Tie predstavujú navzájom prepojené operácie v sekvenčnej postupnosti, ktorými je možné
manipulovať s obrazom a jeho časťami. Samotný princíp systému a jazyk sme postavili na
objektovom základe vnímania obrazových častí ako objektov. Obrázok zachytávajúci
dopravnú scénu z vozidla obsahuje reálne objekty, ktoré sa skladajú z iných objektov,
ktoré môžu tiež obsahovať ďalšie vnorené objekty. Samotný obrázok je pritom tiež len
obrazový objekt. Podobné vnáranie tak môžu mať aj segmenty z nízkoúrovňových
objektov. Tieto vnorenia môžeme následne reprezentovať stromom obrazových objektov,
v ktorom sa môžeme v dopyte pohybovať.
125
Základom systému je vyhľadávanie známych objektov, ktoré sa môžu nachádzať na
dopravnej scéne z pohľadu pohybujúceho sa vozidla. Tieto vysokoúrovňové objekty sme
v práci identifikovali spolu s ich vlastnosťami. Systém by ich preto mal vedieť optimálne
vyhľadávať na základe existujúcich state-of-the-art algoritmov analýzy obrazu
a počítačového videnia. Keďže ale nie je možné všetky objekty zahrnúť do systému,
navrhli sme tzv. všeobecný model objektu, ktorý je postavený buď na obrázkoch alebo
predpripravených dátach, ktoré umožnia vyhľadávať ľubovoľný objekt v obraze.
Jazyk na spracovanie dopytov sme síce navrhovali pre prostredie VANET, avšak jeho
myšlienky je možné využiť aj v iných oblastiach. V rámci overenia riešenia sme
implementovali navrhnutý systém a integrovali s technológiou LINQ spolu s knižnicou na
spracovanie obrazu EmguCV. Uvedené spojenie vytvára veľmi dobrý prostriedok na prácu
s obrazom, predovšetkým na prototypovanie a rýchle spracovanie. Uvedené riešenie po
rozšírení o rozpoznávanie nových objektov umožní pracovať s obrazom ľuďom, ktorí
nemajú žiadne alebo len malé vedomosti z oblasti spracovania, analýzy obrazu
a počítačového videnia. Prináša tak možnosť rýchleho vývoja nových aplikácií
využívajúcich spracovanie obrazu bez znalosti zložitých algoritmov. Z toho dôvodu
plánujeme zverejniť implementovaný systém formou vlastnej knižnice alebo integrovať
naše riešenie priamo do EmguCV.
6.2 Použitie navrhovaného riešenia
Navrhnutý jazyk na dopytovanie a sekvenčné spracovanie bol primárne navrhovaný pre
úlohy v prostredí VANET. Ako bolo poukázané, môžu sa dopyty spracovávať aj mimo
VANET siete.
Ďalším príkladom môžu byť dnes rozširujúce sa inteligentné mobilné telefóny, tzv.
smartfóny, ktoré už nie sú len obyčajné telefónne prístroje na hlasovú komunikáciu, ale
výkonné počítače obsahujúce mnohé senzory a technológie. Vďaka mobilným aplikáciám
je ich dnes možné používať takmer na ľubovoľné účely. Jednou z nich je aj navigačná
aplikácia do vozidla schopná navigovať pomocou máp a GPS. Ak by sme vytvorili
samostatnú aplikáciu alebo zahrnuli náš systém do navigačnej aplikácie, telefón by tak
umožnil spracovanie dopytov, čo by sa mohlo využiť napr. na zber špecifických dát
z cestnej siete (napríklad dopravných značiek) [ST11]. Samozrejmosťou by bola nutnosť
povolenia takéhoto systému používateľom.
126
Príkladom je tiež aktualizácia dát z vozovky ako napr. poloha a umiestnenie dopravných
značiek. V databáze máme uložené, že sa na určitej GPS pozícií nachádza daná značka
(GPS pozícia, umiestnenie – vpravo, vľavo od cesty, na stĺpe, susedná značka, pozadie,
a iné dodatočné informácie...). Keď sa vozidlo dostane do okolia tejto polohy, mohol by
cyklicky vykonávať dopyt a keď zistí, že takú značku nenašiel alebo našiel a je zmenená,
zapíše si to do vlastnej databázy (obrázok, hodnota), pričom pri najbližšom prístupe na
internet môže odoslať aktualizované údaje na server na ďalšie spracovanie.
Inou oblasťou využitia navrhovaného systému a jazyka na dopytovanie by mohlo byť
vyučovanie spracovania obrazu pre študentov alebo používateľov – nadšencov, ktorí sa
začínajú oboznamovať s touto oblasťou. Mohli by si tak jednoducho a rýchlo vytvoriť
prototyp, vyhľadávať v obraze definované objekty a skúmať ich vlastnosti.
Ďalším príkladom sú koncoví používatelia, ktorí by mohli vyhľadávať objekty záujmu vo
svojej kolekcií digitálneho obsahu. V dnešnej digitálnej dobe narastá počet fotografií
a videa vďaka široko dostupným mobilným telefónom, lacným fotoaparátom, tabletom, či
iným počítačovým zariadeniam. Dáta tak narastajú nielen na internete, ale aj na
disku používateľa. Pre lepšiu orientáciu v ňom by bolo vhodné vyhľadávanie nad týmito
obrázkami pomocou navrhnutého systému.
6.3 Ďalšie pokračovanie výskumu
Pokračovanie tejto práce vidíme v rozšírení systému o spracovanie časopriestorových dát,
t.j. zapojenie tretieho rozmeru – času. Bude nutné navrhnúť nové operácie týkajúce sa
časových súvislostí, ktoré poslúžia napr. na sledovanie objektov.
Druhú oblasť vidíme v optimalizácií navrhnutých dopytov, aby sa identifikovali určité časti
dopytu, ktoré sa nemusia vôbec vykonať alebo sa môžu vykonať efektívnejšie.
Zaujímavou oblasťou by bolo aj rozpoznanie vozidla, s ktorým by sme chceli komunikovať
v sieti VANET. To by nám jednak umožnilo vykonávanie zložitých dopytov pomocou
čiastkových, ktoré by mohli vozidlá požadovať od okolitých vozidiel. Umožní to napríklad
zistenie takých vozidiel v okolí nášho vozidla, ktoré majú priamy výhľad na objekty
záujmu, aby sme s nimi mohli ďalej komunikovať za účelom splnenia hlavného dopytu.
127
Zoznam použitej literatúry
[1] Y. Li a E. Peytchev, „New Traffic Message Delivery Algorithm for a Novel VANET
Architecture,“ rev. ICWMC 2012 - The Eighth International Conference on Wireless
and Mobile Communications, Venice, Italy, 2012.
[2] J. E. Naranjo, J. G. Zato, L. Redondo, M. Oliva, F. Jiménez a N. Gómez, „Evaluation
of V2V and V2I mesh prototypes based on a wireless sensor network,“ rev. 14th
International IEEE Conference on Intelligent Transportation Systems (ITSC),
Washington, DC, USA, 2011.
[3] Daimler, „The first 'social network' for automobiles,“ August 2012. [Online].
Available: http://www.daimler.com/dccom/0-5-658451-1-1519410-1-0-0-0-0-0-8-
7145-0-0-0-0-0-0-0.html.
[4] H. Hartenstein a K. P. Laberteaux, VANET Vehicular Applications and Inter-
Networking Technologies, Torquay, UK: Wiley, 2010.
[5] C. 2. C. C. Consortium, „CAR 2 CAR Communication Consortium Manifesto version
1.1,“ 2007.
[6] H. T. Cheng, H. Shan a Z. Weihua, „Infotainment and road safety service support in
vehicular networking: From a communication perspective,“ Mechanical Systems and
Signal Processing, zv. 25, %1. vyd.6, pp. 2020-2038, 2011.
[7] L. Hoehmann a A. Kummert, „Car2X-communication for vision-based object
detection,“ rev. International Conference on Software, Telecommunications and
Computer Networks (SoftCOM), Split, Dubrovnik, 2010.
[8] C. Olaverri-Monreal, P. Gomes, R. Fernandes, F. Vieira a M. Ferreira, „The See-
Through System: A VANET-enabled assistant for overtaking maneuvers,“ rev. IEEE
Intelligent Vehicles Symposium (IV), San Diego, CA, 2010.
[9] M. Ferreira, H. Conceição, R. Fernandes a R. Reis, „Locating cars through a vision
enabled VANET,“ rev. IEEE Intelligent Vehicles Symposium, Xi'an, 2009.
128
[10] L. Le, A. Festag, R. Baldessari a W. Zhang, „CAR-2-X Communication in Europe,“
rev. Vehicular Networks: From Theory to Practice, Boca Raton, Chapman and
Hall/CRC, 2009, pp. 4-19.
[11] A. Jafari, S. Al-Khayatt a A. Dogman, „Performance evaluation of IEEE 802.11p for
vehicular communication networks,“ rev. 8th International Symposium on
Communication Systems, Networks & Digital Signal Processing (CSNDSP), Poznan,
2012.
[12] B. S. Gukhool a S. Cherkaoui, „IEEE 802.11p modeling in NS-2,“ rev. 33rd IEEE
Conference on Local Computer Networks, Montreal, Que, 2008.
[13] A. Westlake, „Toyota developing cars that communicate with smart roads, other
vehicles,“ The Japan Daily Press, 12 November 2012. [Online]. Available:
http://japandailypress.com/toyota-developing-cars-that-communicate-with-smart-
roads-other-vehicles-1218242.
[14] V. Vijayenthiran , „GM Participating In U.S. Car-To-Car Communication Trial,“
Motorauthority, 21 August 2012. [Online]. Available:
http://www.motorauthority.com/news/1078644_gm-participating-in-u-s-car-to-car-
communications-trial.
[15] V. Vijayenthiran, „Ford Powers Ahead With Development Of Car-To-Car
Communication Technology,“ Motorauthority, 7 August 2012. [Online]. Available:
http://www.motorauthority.com/news/1078286_ford-powers-ahead-with-
development-of-car-to-car-communication-technology.
[16] V. Hlaváč, Prednášky z predmetu AE4M33DZO - Digital Image, Praha: ČVUT v
Prahe, 2012.
[17] I. Pitas, Digital Image Processing Algorithms and Applications, New York, NY: John
Wiley & Sons, 2000.
[18] T. B. Moeslund, Introduction to Video and Image Processing: Building Real Systems
and Applications, Springer-Verlag London Limited, 2012.
129
[19] M. Šonka, V. Hlaváč a R. Boyle, Image Processing, Analysis and Machine Vision,
International Student Edition, Third Edition, Stamford, USA: Cengage Learning,
2008.
[20] J. Žára, B. Beneš, J. Sochor a P. Felkel, Moderní počítačová grafika, Brno: Computer
Press, 2010.
[21] R. C. Gonzalez a R. E. Woods, Digital Image Processing (2nd Edition), Upper Saddle
River, New Jersey: Prentice Hall, 2002 .
[22] G. Bradski a A. Kaehler, Learning OpenCV, 1st ed., M. Loukides, Ed., Sebastopol:
O'Reilly Media, 2008.
[23] S. Zhenghe, Z. Bo, Z. Zhongxiang, W. Meng a M. Enrong, „Research on Recognition
Methods for Traffic Signs,“ rev. Second International Conference on Future
Generation Communication and Networking, 2008. FGCN '08, Hainan Island, 2008.
[24] B. S. Manjunath, P. Salembier a T. Sikora, Introduction to MPEG-7 Multimedia
Content Description Interface, Chichester, UK: John Wiley & Sons, 2003.
[25] J. Schanda, Colorimetry: Understanding the CIE System, Hoboken, New Jersey: John
Wiley & Sons, 2007.
[26] M. Dobeš, Zpracování obrazu a algoritmy v C#, 1 ed., Praha: BEN - technická
literatúra, 2008.
[27] G. Otto, „Color in Computer Graphics,“ PennState - A Public Research University
Serving Pennsylvania and the Global Community, 29 August 2000. [Online].
Available:
http://viz.aset.psu.edu/gho/sem_notes/color_2d/html/primary_systems.html. [Cit. 21
March 2013].
[28] J. C. Russ, The image processing handbook, Boca Raton: Taylor & Francis Group,
2007.
[29] M. Bicchierini, A. Davalli, R. Sacchetti a S. Paganelli, „Colorimetric analysis of
silicone cosmetic prostheses for upper-limb amputees,“ Journal of Rehabilitation
130
Research & Development, zv. 42, %1. vyd.5, p. 655–664, 2005.
[30] R. Szeliski, Computer Vision: Algorithms and Applications, New York: Springer,
2011.
[31] L. Bo, K. Lai, X. Ren a D. Fox, „Object recognition with hierarchical kernel
descriptors,“ rev. IEEE Conference on Computer Vision and Pattern Recognition
(CVPR), Providence, RI, 2011.
[32] R. S. Montero a E. Bribiesca, „State of the art of compactness and circularity
measures,“ rev. International Mathematical Forum, 2009.
[33] S. Lafuente-Arroyo, P. Gil-Jimenez, R. Maldonado-Bascon, F. Lopez-Ferreras a S.
Maldonado-Bascon, „Traffic sign shape classification evaluation I: SVM using
distance to borders,“ rev. 2005. Proceedings. IEEE Intelligent Vehicles Symposium,
2005.
[34] D. Marček a M. Marček, Neurónové siete a ich aplikácie, M. Alexík, Ed., Žilina:
Žilinská univerzita v Žiline / EDIS vydaveľstvo ŽU, 2006.
[35] Y. LeCun a Y. Bengio, „Convolutional Networks for Images, Speech, and Time-
Series,“ rev. The Handbook of Brain Theory and Neural Networks, MIT Press, 1995.
[36] J. Babjak, „Neurónové siete sú čiernou skrinkou,“ 7 5 2003. [Online]. Available:
http://www.root.cz/clanky/neuronove-siete-su-ciernou-skrinkou/.
[37] M. Balla, „Neurónová sieť - obrázok,“ 6 December 2007. [Online]. Available:
http://kplab.tuke.sk/oz/Image:Image001.jpg.
[38] M. Čerňanský, Support Vector Machines, 2009.
[39] Y. Freund a R. E. Schapire, „Experiments with a New Boosting Algorithm,“ rev.
International Conference on Machine Learning (ICML), 1996.
[40] R. Laganière, OpenCV 2 Computer Vision Application Programming Cookbook,
Birmingham: Packt Publishing, 2011.
131
[41] K. Mikolajczyk a C. Schmid, „Scale & Affine Invariant Interest Point Detectors,“
International Journal of Computer Vision, zv. 60, %1. vyd.1, pp. 63-86, 2004.
[42] K. Mikolajczyk a C. Schmid, „A performance evaluation of local descriptors,“ IEEE
Transactions on Pattern Analysis and Machine Intelligence (PAMI), zv. 27, %1.
vyd.10, pp. 1615 - 1630, 2005.
[43] S. M. Smith a J. M. Brady, „SUSAN—A New Approach to Low Level Image
Processing,“ International Journal of Computer Vision, zv. 23, %1. vyd.1, pp. 45-78,
1997.
[44] J. Matas, O. Chum, M. Urban a T. Pajdla, „Robust wide baseline stereo from
maximally stable extremal regions,“ British machine vision conference, zv. 1, pp. 384-
393, 2002.
[45] D. G. Lowe, „Distinctive Image Features from Scale-Invariant Keypoints,“
International Journal of Computer Vision, zv. 60, %1. vyd.2, pp. 91-110, 2004.
[46] H. Bay, T. Tuytelaars a L. Gool, „SURF: Speeded Up Robust Features,“ Computer
Vision – ECCV 2006, 9th European Conference on Computer Vision, Graz, Austria,
zv. 3951, %1. vyd.Part I, pp. 404-417, 2006.
[47] A. E. Johnson, Spin-Images: A Representation for 3-D Surface Matching - doctoral
dissertation, Pittsburgh, Pennsylvania: Carnegie Mellon University, 1997.
[48] Z. Wang, B. Fan a F. Wu, „Local Intensity Order Pattern for Feature Description,“
rev. IEEE International Conference on Computer Vision (ICCV), Barcelona, 2011.
[49] O. Chum, J. Matas a S. Obdrzalek, „Enhancing ransac by generalized model
optimization,“ rev. Proc. of the Asian Conference on Computer Vision (ACCV), Seoul,
Korea South, 2004.
[50] O. Miksik a K. Mikolajczyk, „Evaluation of local detectors and descriptors for fast
feature matching,“ rev. 21st International Conference on Pattern Recognition (ICPR),
Tsukuba, 2012.
132
[51] J. Yang, Y.-G. Jiang, A. G. Hauptmann a C.-W. Ngo, „Evaluating bag-of-visual-
words representations in scene classification,“ rev. MIR '07 Proceedings of the
international workshop on Workshop on multimedia information retrieval, New York,
NY, USA, 2007.
[52] J. Sivic a A. Zisserman, „Video Google: a text retrieval approach to object matching
in videos,“ rev. Ninth IEEE International Conference on Computer Vision, Nice,
France, 2003.
[53] O. Chum, J. Philbin, J. Sivic, M. Isard a A. Zisserman, „Total Recall: Automatic
Query Expansion with a Generative Feature Model for Object Retrieval,“ rev. IEEE
11th International Conference on Computer Vision (ICCV), Rio de Janeiro, 2007.
[54] O. Chum, A. Mikulik, M. Perdoch a J. Matas, „Total recall II: Query expansion
revisited,“ rev. IEEE Conference on Computer Vision and Pattern Recognition
(CVPR), Providence, RI, 2011.
[55] D. Lowe, „Object recognition from local scale-invariant features,“ rev. The
Proceedings of the Seventh IEEE International Conference on Computer Vision,
Kerkyra, 1999.
[56] Y. Ke a R. Sukthankar, „PCA-SIFT: a more distinctive representation for local image
descriptors,“ rev. Proceedings of the 2004 IEEE Computer Society Conference on
Computer Vision and Pattern Recognition (CVPR), 2004.
[57] A. P. B. Lopes, S. E. F. Avila, A. N. A. Peixoto, R. S. Oliveira a A. d. A. Araújo, „A
Bag-of-Features Approach Based On Hue-SIFT Descriptor for Nude Detection,“ rev.
17th European Signal Processing Conference (EUSIPCO 2009), Glasgow, Scotland,
2009.
[58] J. M. Morel a G. Yu, „ASIFT: A new framework for fully affine invariant image
comparison,“ SIAM Journal on Imaging Sciences, zv. 2, %1. vyd.2, pp. 438-469,
2009.
[59] N. Dalal a B. Triggs, „Histograms of oriented gradients for human detection,“ rev.
IEEE Computer Society Conference on Computer Vision and Pattern Recognition
133
(CVPR), San Diego, CA, USA, 2005.
[60] MPEG, „MPEG-7 - The Moving Picture Experts Group website,“ [Online]. Available:
http://mpeg.chiariglione.org/standards/mpeg-7.
[61] M. Döller a H. Kosch, „The MPEG-7 Multimedia Database System (MPEG-7
MMDB),“ Journal of Systems and Software, zv. 81, %1. vyd.9, p. 1559–1580, 2008.
[62] M. Lux a S. A. Chatzichristofis, „Lire: lucene image retrieval: an extensible java
CBIR library,“ rev. Proceedings of the 16th ACM international conference on
Multimedia (MM '08), New York, NY, USA, 2008.
[63] L. Mathias, „Caliph & Emir: MPEG-7 photo annotation and retrieval,“ rev.
Proceedings of the 17th ACM international conference on Multimedia (MM '09), New
York, NY, USA, 2009.
[64] J. Laaksonen, M. Koskela a E. Oja, „PicSOM-self-organizing image retrieval with
MPEG-7 content descriptors,“ IEEE Transactions on Neural Networks, zv. 13, %1.
vyd.4, pp. 841 - 853, 2002.
[65] M.-S. Liu, J.-H. Li a H. Liu, „Image Retrieval Technology of Multi-MPEG-7 Features
Based on Genetic Algorithm,“ rev. International Conference on Machine Learning
and Cybernetics, Hong Kong, 2007.
[66] L. Gagnon, S. Foucher a V. Gouaillier, „ERIC7: an experimental tool for Content-
Based Image encoding and Retrieval under the MPEG-7 standard,“ rev. Proceedings
of the winter international synposium on Information and communication
technologies (WISICT '04), Dublin, 2004.
[67] M. Ba tan, H. am, U. G d kbay a O. Ulusoy, „Bilvideo-7: an MPEG-7- compatible
video indexing and retrieval system,“ IEEE MultiMedia, zv. 17, %1. vyd.3, pp. 62 -
73, 2010.
[68] Eptascape, „ADS-200 Video Content Analysis Unit,“ 2010. [Online]. Available:
http://www.eptascape.com/products/ads200.html.
134
[69] F. Temmermans, M. Döller, I. Vanhamel, B. Jansen, A. Munteanu a P. Schelkens,
„JPSearch: An answer to the lack of standardization in mobile image retrieval,“ Signal
Processing: Image Communication, zv. 28, %1. vyd.4, p. 386 – 401, 2012.
[70] M. Doller, R. Tous, M. Gruhne, K. Yoon, M. Sano a I. Burnett, „The MPEG Query
Format: Unifying Access to Multimedia Retrieval Systems,“ IEEE MultiMedia, zv.
15, %1. vyd.4, pp. 82 - 95, 2008.
[71] MVSR, „Vyhláška Ministerstva vnútra Slovenskej republiky č. 9,“ rev. Zbierka
zákonov č. 9/2009, 2009.
[72] MVSR, „Príloha č. 1 k vyhláške č. 9/2009 Z. z.,“ rev. Zbierka zákonov č. 9/2009,
2009.
[73] L. Maxwell, „History of Traffic Signs,“ rev. The human factors of transport signs,
Boca Raton, Florida, CRC Press LLC, 2004.
[74] V. Merunka, Objektové modelování, Praha: Alfa Nakladatelství, 2008.
[75] „Emgu CV: OpenCV in .NET (C#, VB, C++ and more ),“ 16 September 2012.
[Online]. Available: http://www.emgu.com/. [Cit. 20 April 2013].
[76] „OpenCV,“ 11 April 2013. [Online]. Available: http://opencv.org/. [Cit. 20 April
2013].
[77] T. Bača, Optimalizácia prenosu správ v ad hoc sieťach [dizertačná práca], Žilina:
Žilinská univerzita, Fakulta riadenia a informatiky, 2012.
[78] J. Janech, Riadenie procesov pri distribúcii databáz [dizertačná práca], Žilina: Žilinská
univerzita, Fakulta riadenia a informatiky, 2010.
[79] A. Lieskovský, Replikácia dát v ad-hoc sieťach [dizertačná práca], Žilina: Žilinská
univerzita v Žiline, Fakulta riadenia a informatiky, Katedra informatiky, 2012.
135
Zoznam vlastných publikovaných prác
[ST1] Š. Toth, „Rozpoznávanie dopravných značiek a ich použitie v mapových
aplikáciách“, GIS Ostrava 2011 [elektronický zdroj] : sborník symposia, 23.-
26.1.2011. - Ostrava: VŠB - TU, 2011. - ISBN 978-80-248-2366-9. - [15] s.
[ST2] Š. Toth, „Recognition of the European traffic signs“, TRANSCOM 2011 : 9-th
European conference of young researchers and scientific workers : Žilina, June
27-29, 2011, Slovak Republic. - Žilina: University of Žilina, 2011. - ISBN 978-
80-554-0372-4. - s. 233-236.
[ST3] Š. Toth, „Open source .NET libraries for image processing, recognition and
computer vision“, Objekty 2011 : proceedings of the 16th international
conference on object-oriented technologies : Žilina, 24.-25. november, 2011. -
Žilina: University of Žilina, Faculty of Management Science and Informatics,
2011. - ISBN 978-80-554-0452-3. - s. 165-171.
[ST4] Š. Toth, „Adaptive system for human-machine integration : (passenger monitoring
system in the vehicle) [Adaptívny systém pre integráciu človek-stroj]“, Zimná
škola MICT [elektronický zdroj] : Mathematics for information and
communication technologies : 6th winter school of mathematics for ICT :
Šachtičky 3.-8.1.2011. - Banská Bystrica: Science and Research Institute, MBU,
2011. - ISBN 978-80-557-0252-0. - s. 106-108.
[ST5] E. Kršák, M. Kvet a Š. Toth, „OBU.FRI - plugin-based application in .NET for
the on-board-unit of a vehicle“, Journal of Information, Control and Management
Systems. - ISSN 1336-1716. - Vol. 9, No. 3 Spec. iss. (2011), s. 285-290.
[ST6] E. Kršák, Š. Toth, „Proposed passenger monitoring system in the vehicle for
emergency services“, Journal of Information, Control and Management Systems. -
ISSN 1336-1716. - Vol. 9, No. 3 Spec. iss. (2011), s. 301-304.
[ST7] E. Kršák, Š. Toth, „Traffic sign recognition and localization for databases of
traffic signs“, Acta Electrotechnica et Informatica. - ISSN 1335-8243. - Vol. 11,
No. 4 (2011), s. 31-35.
136
[ST8] Š. Toth, „Difficulties of traffic sign recognition“, MICT [elektronický zdroj] -
Mathematics for information and communication technologies : proceedings of
the 7th winter school of mathematics for ICT students : Šachtičky, Slovakia,
February 6-11, 2012. - Žilina: University of Žilina, 2012. - ISBN 978-80-554-
0594-0. - [4] s.
[ST9] Š. Toth, M. Meško, „RemoteComputing: the .NET-based application for
distributed computing“, Objekty 2012 : sborník příspěvků sedmnáctého ročníku
konference : Praha, 27. listopad 2012. - ISBN 978-80-86847-63-4. - [9] s.
[ST10] M. Meško, Š. Toth, „Laser Spot Detection“, Journal of Information, Control and
Management Systems. - ISSN 1336-1716. - Vol.11, No. 1 (2013). [v tlači]
[ST11] Š. Toth, „Usage Smartphones for Traffic Sign Recognition“, ICTIC 2013 : The
2nd International Virtual Conference 2013 : Slovakia, March 25-29, 2013, Slovak
Republic. [v tlači]
[ST12] M. Meško, Š. Toth, „Teaching of Web Application Security“, ICTIC 2013 : The
2nd International Virtual Conference 2013 : Slovakia, March 25-29, 2013, Slovak
Republic. [v tlači]
[ST13] M. Meško, Š. Toth, „Basic principles of new recursive 3D reconstruction
algorithm“, TRANSCOM 2013 : 10-th European conference of young researchers
and scientific workers : Žilina, June 24-26, 2013, Slovak Republic. - Žilina:
University of Žilina, 2013. [v tlači]