Riesitel : Matej Hrinčár matoman(-at-)matfyz.cz, ICQ: 175-037-871,
Veduci : Mgr. Mikulas Patocka

Ročnikový projekt I - špecifikácia

Posledná zmena : 9. Marca 2005

Rozpoznávanie dopravných značiek z fotografií

Na tejto stránke sa nachádzajú podrobnosti k mojmu projektu, budú sa tu objavovať aktuality a predbežné verzie.

Zadanie : (neuplné)

priebežne doplňované a spresňvané

Cieľom projektu je určit a označit dopravné značky vo fotografii, danej programu na vstup. Pretože je tento problém obecne dosť zložitý (tak na diplomku (-:), dovolil som si nasledujúce zjednodušenia:

Program bude s velkou pravdepodobnostou vyuzivat kniznicu OpenCV ( firmy intel ).

platforma, jazyk a tak :

Specifikacia :

Zakladnou otazkou je zistit co je to vlastne znacka. Znacky su specificke svojim tvarom a farbou. Z tychto dvoch parametrov ide vacsionu urcit druh znacky.

Najcastejsie farby pouzivane na znackach :

A tvary znaciek :

No a jednotlive znacky sa potom rozlisuju podla piktogramu vo vnutri znaciek.

Zamerajme sa teraz BUNO na znacky Vystrazne. Znacka vystrazna je tvorena cervenym trojuholnikom, bielou vyplnou a ciernym piktogramom. Ako ale takuto znacku na obrazku rozpoznat? Prvy napad bol najst vsetky trojuholniky, ale tych moze byt na fotke strasne vela, a hlavny problem bol nastavit prah prevodu do dvojfarebneho obrazka, pretoze funkcia na zistovanie kontur pracuje iba s takymito dvojfarebnymi obrazkami.

Dalsie riesenie ktore ma napadlo bolo zamerat sa iba na cervene trojuholniky. Takze prevedieme obrazok do dvojfarebneho pomocou nasledujuceho jednoducheho algoritmu.

for each pixel of image do
  if color of pixel like Red then outputColor is Black
  else
  outputColor is Wihte

Podobnost cervenej definujem ako najvacsiu vzdialenost od cervenej v modele RGB. Presne hodnoty sa stanovia az pozorovanim konkretnych vstupov. Takto pomocou funkcii kniznice OPENCV by sa uz malo podarit najst vsetky cervene trojuholniky. Pre kazdu znacku by malo najst dva. Jeden vnutorny, a jeden vonkajsi trojuholnik. Staci uz iba skontrolovat orientaciu.

Teraz podobne obraz prevedieme do dvojfarebneho na zaklade podobnosti bielej farby. Opat najdeme biele trojuholniky. A pre vsetky cervene trojuholniky zistime ci nejaky biely nelezi v jeho vnutri, s podobnou velkostou toho vnutorneho.

Nakoniec este nastavime prah podla ciernej farby a overime ci najaky cierny "piktogram" sa nachadza vo vnutri znacky. Pretoze prazdna vystrazna znacka neexistuje. Jedina pripustna moznost kde v torjuholnikovej znacke nieje nic (okrem bielej vyplne) je znacka Daj prednost v jazde, ktora je ale tvorena otocenym trojuholnikom. Tuto skutocnost overime dodatocne. Podobne by sa mala dat zistit znacky Zakazove, kde namiesto trojuholnikov testujeme kruh.

Na rozpoznavanie tvarov je pouzita funkcia cvFindContours, ktora najde uzavrete kontury, a vrati ich ako zoznam. Ja uz potom iba overim, ci je to ziadany tvar. Na rozpoznavanie kruhov pouzivam funkciu cvHoughCircles, ktora je implementovana metodov CV_HOUGH_GRADIENT.

Literatura :