Prelucrarea Semnalelor Video Pentru Recunoasterea Semnelor de Circulatie
PRELUCRAREA SEMNALELOR VIDEO PENTRU RECUNOAȘTEREA SEMNELOR DE CIRCULAȚIE
Proiect de diplomă
Declarație de onestitate academică
Prin prezenta declar că lucrarea cu titlul “Prelucrarea semnalelor video pentru recunoașterea semnelor de circulație ”, prezentată în cadrul Facultății de Electronică, Telecomunicații și Tehnologia Informației a Universității “Politehnica” din București ca cerință parțială pentru obținerea titlului de Inginer în domeniul Electronică și Telecomunicații, programul de studii Microelectronică, Optoelectronică și Nanotehnologii este scrisă de mine și nu a mai fost prezentată niciodată la o facultate sau instituție de învățământ superior din țară sau străinătate.
Declar că toate sursele utilizate, inclusiv cele de pe Internet, sunt indicate în
lucrare, ca referințe bibliografice. Fragmentele de text din alte surse, reproduse exact,
chiar și în traducere proprie din altă limbă, sunt scrise între ghilimele și fac referință
la sursă. Reformularea în cuvinte proprii a textelor scrise de către alți autori face
referință la sursă. Înțeleg că plagiatul constituie infracțiune și se sancționează
conform legilor în vigoare.
Declar că toate rezultatele simulărilor, experimentelor și măsurătorilor pe care
le prezint ca fiind făcute de mine, precum și metodele prin care au fost obținute, sunt
reale și provin din respectivele simulări, experimente și măsurători. Înțeleg că
falsificarea datelor și rezultatelor constituie fraudă și se sancționează conform
regulamentelor în vigoare.
București, data
Absolvent
_________________________
(semnătura în original)
CUPRINS
Introducere
Capitolul 1 Tehnici actuale folosite pentru sistem
Capitolul 2 Sistemul de prelucrare a cadrelor video
2.1 Imagini digitale
2.2 Eșantionarea si Cuantizarea Imaginii
2.3 Reprezentarea Digitală a Imagini
2.4 Utilizarea de Culoare
2.4.1 Spațiul de culoare RGB
2.4.2 Spațiul de culoare YCbCr
2.5 Detecția
2.5.1 Detecția și extragerea regiunii
2.5.2 Modelul de semne pentru modulul detecție
2.5.3 Identificarea unui potențial semn în regiunea extrasă
2.5.4 Prăguirea Histogramei
2.5.5 Binarizarea imaginii
2.5.6 Detecția Orientată pe Regiuni
2.5.7 Detecția formelor
2.6 Urmărirea regiunii extrase
2.7 Recunoașterea
2.7.1 Modelul de semne pentru modulul de recunoaștere
2.7.2 Corelația dintre model si regiunea candidată 41
2.8 Afișarea pe ecran si transmiterea indicatorului
Capitolul 3 Implementarea in MATLAB
3.1 Realizarea cadrelor video pentru prelucrare
3.2 Implementarea modulului de transmitere audio a semnului și a regulii aferente
Capitolul 4 Rezultate experimentale
Capitolul 5 Posibilități de dezvoltare si implementare în Industria Auto
5.1 Implementarea în industria auto
5.2 Posibilități de dezvoltare
Capitolul 6 Concluzii
Bibliografie
Anexe
Cuprins figuri
Figură 0.1 Semnul STOP este parțial vizibil, 11
Figură 0.2 Schema teoretică generală a sistemului 14
Figură 1.1 Imagine din trafic segmentată 19
Figură 2.1 Eșantionare și cuantizare 21
Figură 2.2 Imaginea înainte și după digitizare 22
Figură 2.3 Reprezentarea digitală a imaginii 22
Figură 2.4 Conversia din spațiul RGB în spațiul YCbCr 24
Figură 2.5 Schema spațiului RGB in coordonate carteziene 24
Figură 2.6 Cubul de culori in coordonate carteziene 25
Figură 2.7 Combinarea celor trei imagini de culoare pentru a forma o imagine color 25
Figură 2.8 Segmentarea imaginii în planul YCbCr 27
Figură 2.9 Modelul de semne pentru detecție 28
Figură 2.10Scema blocului de detecție 30
Figură 2.11 Exemplu de histogramă a unei imagini 31
Figură 2.12 Histograma unei imagini cu obiecte iluminate pe un fundal întunecos 32
Figură 2.13 Un exemplu de detecție orientată pe regiuni 33
Figură 2.14 Model de margini digitale 34
Figură 2.15 Aplicare filtrului Sobel unei imagini 36
Figură 2.16 Semnul stop înainte și după aplicarea filtrului Sobel 37
Figură 2.17 Laplacian pentru funcția Gauss 38
Figură 2.18 Blocul de urmărire al regiunii extrase 40
Figură 2.19 Model de semne pentru recunoaștere 41
Figură 2.20 Schema blocului de recunoaștere 42
Figură 2.21 Blocul de afișare 43
Figură 2.22 Mesajul afișat dedesubtul semnului identificat 43
Figură 2.23 Modul de afișare pe ecran 43
Figură 2.24 Identificare semnului STOP 44
Figură 3.1 Modelul de semne pentru detecție 45
Figură 3.2 Model de semne pentru recunoaștere 45
Figură 4.1 Rezultate favorabile obținute 48
Figură 4.2 Imagini cu contrast închis 49
Figură 4.3 Diferite situații în care lumina este nefavorabilă 50
Figură 4.4 Situații în care informația despre semn este insuficientă 51
Figură 5.1 Amplasarea camerei video în oglinda retrovizoare a mașinii 52
Figură 5.2 Schema sistemului implementată în autoturism 53
Abstract
Sistemul este conceput ca fiind o asistență pentru conducătorul auto. În timpul deplasării cu vehiculul, o cameră video amplasată in oglinda retrovizoare preia cadre frontale în direcția de deplasare a mașinii. Imaginile sunt procesate și se identifică semnele de circulație. După identificare, conducătorul auto este avertizat de prezenta semnelor. Pentru procesarea imaginilor se folosește spațiul de culoare YCbCr. Detecția semnelor potențiale în imagine se face folosind caracteristicile de culoare dar si formele standard ale semnelor, care le diferențiază de fundalul imaginii. Algoritmul are două module principale. Primul este detecția în care se identifică în imagine o regiune în care poate fi un semn, după identificare regiunea se compară cu un model de semne folosit doar pentru acest modul. Dacă în patru cadre consecutive se identifică aceeași regiune ca fiind un potențial semn, regiunea este transmisă modulului de recunoaștere. În memorie este predefinit un model de semne special pentru recunoaștere. Dacă în trei cadre consecutive se identifică același semn în regiunea extrasă comparară cu modelele predefinite, se consideră semn identificat și este încadrat pe ecran urmat de un semnal audio care indică semnul dar si regula impusă de semn. Algoritmul este făcut pentru a identifica trei semne de circulație bazate pe culoarea roșu: oprire, cedează trecerea și accesul interzis.
Introducere
Lucrarea de fata are ca obiectiv procesarea unui semnal video achiziționat cu un dispozitiv aflat la bordul unei mașini în deplasare în vederea identificării și recunoașterii semnelor de circulație. Fiecărui semn de circulație identificat îi sunt asociate regulile de circulație impuse de semn, acestea fiind transmise prin semnal vocal conducătorului auto sau afișate pe un ecran . Întreg sistemul are ca scop îmbunătățirea calității conducerii și comportarea in trafic a conducătorului auto printr-o asistenta acordată acestuia. Sistemul trebuie privit ca un mijloc complementar de ghidare având în vedere faptul că pot exista erori care să pună in pericol viața participanților la trafic.
Motivația alegerii temei
De foarte multe ori conducătorii auto se confrunta cu probleme vis a vis de semnele de circulație fără de care nu ar putea sa se deplaseze in trafic. Aceste probleme pot fi: neobservarea unui semn de circulație din cauza neatenției, vizibilitatea foarte redusa asupra indicatorului respectiv sau necunoașterea regulii de circulație impusa de indicator. In oricare din aceste situații deplasarea pe carosabil devine nesigură punând in pericol viața conducătorului auto dar si a celorlalți participanți la trafic. Asociația ASIRT a publicat o statistică la nivel global referitoare la accidentele rutiere ce indică faptul că aproximativ 1,3 milioane de oameni mor anual in accidente de mașină, însemnând o medie de 3,287 de decese pe zi, iar intre 20-50 milioane de oameni sunt răniți sau rămân cu handicap anual. In anul 2012 decesele cauzate de accidentele de mașină se situau pe locul 9 pe plan mondial, datorită creșterii numărului de autoturisme si totodată a populației pe glob iar ASIRT afirmă că moartea cauzată de accidentele rutiere ar putea ajunge pe locul 5 in anul 2030. [1]
Sistemul considerat în această lucrare este privit ca o asistența pentru șofer atenționându-l pe acesta la fiecare apariție a unui indicator si a regulii de circulație ce trebuie respectată. Astfel numărul de accidente rutiere ar putea scădea foarte mult, crescând siguranța in trafic atât a conducătorului auto cât și a celorlalți participanți la trafic.
Cadrul general și obiectivele proiectului
Proiectul are ca scop procesarea unei imagini preluate din trafic cu a o cameră video integrată în oglinda retrovizoare in vederea detecției și recunoașterii semnelor de circulație din imagine. După identificare se va transmite audio indicatorul dar si regula impusa de acesta. Se va crea o bază de date cu semnele de circulație pentru a se putea identifica acestea în imaginea procesată.
In domeniul prelucrării semnalelor video, recunoașterea unui obiect dintr-un cadru reprezintă o abordare de actualitate pentru care s-au dezvoltat algoritmi specifici. Aplicații exista în multe domenii cum ar fi: industria de producție si testare, imagistica medicală, biologie, sisteme de securitate, industria auto etc.
În recunoașterea unui semn de circulație dintr-o imagine preluată din trafic intervin mulți factori ce pot îngreuna procesul crescând timpul de răspuns dar poate duce si la obținerea unui rezultat eronat. Probleme care apar in procesul de recunoaștere pot fi:
Condițiile meteorologice si de iluminare.
Vizibilitatea indicatorului obturată sau redusă de: prezența pomilor in jurul semnului, prezența altor afișe sau reclame, poziția altor autovehicule, pietoni. (Fig.0.1)
Semnele de circulație ce diferă mai mult sau mai puțin in funcție de fiecare țară.
Deteriorarea sau modificarea poziției indicatorului.
Toți acești factori afectează sistemul îngreunând detecția si recunoașterea semnelor prin zgomotul introdus sau prin obturarea/(captarea incompleta) a unui semn.
Figură 0.1 Semnul STOP este parțial vizibil,
fiind obturat de crengile copacului.
@ [2]
Problemele de vizibilitate, iluminare sau cele create de zgomotul suprapus imaginii se pot rezolva prin creșterea vitezei de procesare. În acest sens dimensiunea cadrului video înregistrat este destul de mică [180×360] din care se extrag 30 de cadre pe secunda pentru a fi procesate. Funcția „BlobAnalysis” care aparține detecției caută în imagine regiuni în care sunt potențiale semne de circulație. După identificarea regiunii aceasta se redimensionează [18×18] și se salvează într-o variabilă. Pentru detecție și recunoaștere se folosesc două modele de semne salvate în memorie. Modelul de semne pentru detecție are dimensiunea de [12×12]. Este o dimensiune mică pentru ca timpul de comparație între regiunea identificată și modelul de semne pentru detecție să fie foarte mic. Dacă în detecție regiunea extrasă este identificată în trei cadre consecutive cu modelul din memorie, regiunea extrasă este transmisă pasului de recunoaștere. Al doilea model de semne pentru recunoaștere are o dimensiune de [18×18]. În acest pas contează foarte mult corectitudinea dată de corelația dintre regiunea extrasă din imagine si modelul de semne pentru recunoaștere din memorie.
Problemele legate de deteriorarea semnelor, modificare poziției acestora sau inexistența lor sunt mult mai delicate și necesită o abordare specială. Prezentându-mă la „ Sesiunea De Comunicări Științifice” cu acest proiect în desfășurare am primit o sugestie pentru rezolvarea acestor probleme din partea unui profesor din comisie, respectiv sincronizarea sistemului de recunoaștere cu GPS-ul mașinii sau cu cel portabil. Această metodă va reprezenta una din direcțiile viitoare de dezvoltare ale sistemului la care voi lucra. Sincronizarea sistemului cu GPS-ul aduce un plus de valoare și validează sistemul de detecție și recunoaștere propus prin simpla comparare a rezultatelor cu regulile de circulație semnalizatimensiune mică pentru ca timpul de comparație între regiunea identificată și modelul de semne pentru detecție să fie foarte mic. Dacă în detecție regiunea extrasă este identificată în trei cadre consecutive cu modelul din memorie, regiunea extrasă este transmisă pasului de recunoaștere. Al doilea model de semne pentru recunoaștere are o dimensiune de [18×18]. În acest pas contează foarte mult corectitudinea dată de corelația dintre regiunea extrasă din imagine si modelul de semne pentru recunoaștere din memorie.
Problemele legate de deteriorarea semnelor, modificare poziției acestora sau inexistența lor sunt mult mai delicate și necesită o abordare specială. Prezentându-mă la „ Sesiunea De Comunicări Științifice” cu acest proiect în desfășurare am primit o sugestie pentru rezolvarea acestor probleme din partea unui profesor din comisie, respectiv sincronizarea sistemului de recunoaștere cu GPS-ul mașinii sau cu cel portabil. Această metodă va reprezenta una din direcțiile viitoare de dezvoltare ale sistemului la care voi lucra. Sincronizarea sistemului cu GPS-ul aduce un plus de valoare și validează sistemul de detecție și recunoaștere propus prin simpla comparare a rezultatelor cu regulile de circulație semnalizate de GPS cunoscând cu certitudine poziția semnelor în trafic. Acest lucru va duce la o corectitudine mult mai mare în ceea ce privește identificarea semnelor dar va creste timpul de procesare. Cel mai important aspect al sincronizării cu GPS-ul este afișarea semnelor chiar dacă sunt degradate sau inexistente.
Contribuțiile acestui proiect sunt legate de:
studierea algoritmilor deja existenți in vederea îmbunătățirii lor atât teoretic cât și practic;
crearea unei baze de date cu majoritatea semnelor de circulație;
implementarea unui mod de atenționare vocală a conducătorului auto care să transmită acestuia semnul identificat și regula impusă de semn.
Începând din anii 90’ până in momentul de față s-a încercat crearea unui sistem de recunoaștere a semnelor ce circulație care să identifice in timp aproape real și cât mai corect un semn de circulație într-un video sau o imagine . Acest sistem este recunoscut pe plan internațional sub numele de „Traffic Sign Recognition (TSR)” Există câteva autovehicule care au implementat TSR în faza de test, introducerea lui pe piață este încă la început iar performanțele nu sunt ridicate, sistemul necesitând optimizare.
„Sistemul a fost deja introdus si testat pe multe mașini in ultimii cinci ani dar nu a dat rezultate foarte bune motiv pentru care a fost amânată aprobarea lui de a fi introdus pe ultimele modele de pe piață. In urma testării multe semne nu au fost interpretate tocmai corect de sistem, punând in pericol viața conducătorului auto. Mesajul BMW Romania este următorul:
Șoferul are datoria să rămână vigilent să identifice și să respecte toate semnele de circulație întâlnite pe traseu. Funcția de recunoaștere a semnelor de circulație nu înlocuiește atenția celui de la volan ci este doar un ajutor.
Așadar, ne este greu să recomandăm achiziția unui sistem TSR. Tehnologia este încă crudă pentru a garanta perfecțiunea, iar erorile, oricum ai privi problema, sunt greu de scuzat. În definitiv, chiar și un singur semn ratat în întreaga “carieră” a sistemului, sau o apreciere greșită a vitezei maxim admise, poate avea consecințe grave pentru cineva care, în acel moment, se bizuie pe indicațiile sistemului. ”[3]
Metodologie
Sistemul are o schemă generală relativ simplă. În oglinda retrovizoare a mașinii este integrată o cameră video care înregistrează drumul parcurs de mașină. Camera are o orientare spre partea dreaptă pentru o vizibilitate mai bună asupra semnelor de circulație. Mașina este dotată cu un procesor de tip Pentium IV integrat in bord sau un PC separat si o memorie externă. Procesorul este conectat la camera video, la ecranul bordului ( poate fi un ecran separat) si la sistemul audio din dotarea mașinii.
In timpul deplasării mașinii semnalul video este procesat succesiv, cadru cu cadru de către procesor, rezultatele fiind afișate pe un display sau după caz comunicate conducătorului prin semnal vocal.
Metodele standard de detecție si recunoaștere a semnelor de circulație au în vedere parcurgerea unor etape:
Achiziția cadrelor si conversia din spațiul de culoare RGB în spațiul YCbCr.
Aplicarea unor operații morfologice imaginii: filtrare, dilatare si eroziune.
Segmentarea imaginii pentru a obține regiunea de roșu.
Regiunea identificată se redimensionează si se salvează într-o variabilă.
Se compară regiunea identificată cu un model de semne salvat in memorie special pentru modulul de detecție.
După detecție se urmărește printr-un alt bloc, dacă s-a identificat intr-un număr consecutiv de cadre vreun semn din model în regiunea selectată
În momentul în care urmărirea semnului s-a realizat cu succes, regiunea este transmisă modulului de recunoaștere.
Modelele de semne pentru recunoaștere sunt diferite față de cele folosite pentru detecție, acestea având o rezoluție mult mai bună, semnele având poziții diferite simulând situațiile din trafic.
Modulul de recunoaștere compară regiunea transmisă mai departe de către modulul de detecție și o compară cu modelele de semne proprii. Identificarea aceluiași semn în trei cadre consecutive procesate confirmă existența semnului
Ultima etapă este identificarea pe display a semnului prin încadrarea acestuia într-un chenar galben si se transmite după caz un mesaj audio cu numele semnului si regula impusă de el.
În Figura 1.3 este prezentată imaginea de ansamblu a sistemului de detecție si recunoaștere al semnelor de circulație.
Figură 0.2 Schema teoretică generală a sistemului
În continuare voi prezenta schema generală teoretică a sistemului detaliind fiecare bloc în parte.
Achiziția de cadre: Imaginea este captată, folosind o camera video, in spațiul RGB (roșu, verde, albastru). Semnalul video primit este memorat in timp real. Semnalul memorat este împărțit in cadre, ce se procesează individual. Formatul cu care se înregistrează semnalul video din care se preiau cadrele este de [180×360]. Rezoluția este relativ mica pentru a crește viteza de procesare. Următorul pas după preluare unui cadru este convertirea acestuia din spațiul de culoare RGB în spațiul YCbCr, apoi se creează o matrice cu cele trei dimensiuni ale spațiului.
Modulul de detecție: Planul Cr din întreg spațiul de culoare este transmis de modulul de achiziție către acest modul pentru a-l prelucra. Acest plan este de interes deoarece evidențiază doar culoare roșu din toată imaginea. Modulul urmărește identificarea in cadrul procesat a unei regiuni omogene care sa se apropie de caracteristicile standard ale semnelor. Imaginea primită ca semnal de intrare este filtrată cu un prag 0,55 pentru a elimina zgomotul din imagine, evidențiind zonele de interes. După prăguire imaginea este supusă unor operații morfologice prin care se dilatează imaginea apoi se aplică o eroziune care accentuează pixelii bazându-se pe pixelii vecini. O funcție preia imaginea și identifică în aceasta regiunile de culoare roșu punându-se condiții pe cele trei coordonate ale matricei care formează imaginea. În memoria sistemului se creează o altă funcție care retine semne de circulație pentru acest modul de detecție. Semnele au o dimensiune de [12×12], ele sunt salvate în nivele de gri bidimensionale. În momentul în care funcția găsește o regiune preponderentă de culoare roșu, o salvează într-o variabilă apoi redimensionează regiunea și o transformă în nivele de gri în formatul [9×4]. După ce se obține această regiune se compară cu modelele predefinite în memorie pentru modulul de detecție. Dacă asemănările dintre regiunea extrasă si modelele predefinite depășește un anumit prag, în funcție de performanțele pe care le dorim de la sistem, regiunea extrasă este transmisă următorului modul. Dacă nu s-a găsit nici un potențial semn, se renunță la cadru și se preia un cadru nou.
Modulul de urmărire: Scopul principal este acela de a urmări dacă o regiunea extrasă de la pasul anterior se mai identifică și în alte cadre. Funcția primește regiunea extrasă ca parametru și o salvează într-o variabilă, apoi compară rezultatul actual primit cu regiunea primită de la ultimele trei cadre. Dacă se respectă condiția, regiunea se consideră ca fiind un potențial semn si se transmite următorului modul. În situația în care nu este identificată aceeași regiune în cadrele consecutive se renunță la aceasta și se începe contorizarea altei regiuni furnizate de modulul de detecție.
Modulul de recunoaștere: Potențialul semn dat de regiunea primită este comparat cu un model de semne predefinit în memorie special pentru acest modul. Semnele din model au o dimensiune de [18×18]. Funcția acestui modul identifică potențialele semne care sunt cât mai similare cu modelele predefinite. Similaritatea se determină calculând corelația dintre cele două semne. Dacă semnele sunt corelate , se transmite mesajul următorului modul.
Modulul de transmitere: În momentul recunoașterii unui semn, acest bloc încadrează în imagine regiunea identificată și subt aceasta se afișează un mesaj cu numele semnului. Se transmite și vocal numele semnului și regula aferentă lui.
Tehnici actuale folosite pentru sistem
Detecția și recunoașterea semnelor de circulație a reprezentat un punct de interes internațional încă începând din anii 80’. Pentru acest sistem se folosesc câteva din următoarele nume : Semnele de pe marginea drumului, Semnele de avertizare din trafic, Inspecția drumului, Semnele din Trafic, Asistență în timpul condusului, Semnele de circulație, Detecție în timp real a semnelor de limitare de viteză, Folosirea camerei digitale a telefonului mobil pentru detecție semnelor din trafic, etc. Foarte multe metode și algoritmi au fost propuși pentru realizarea detecției și recunoașterii semnelor de circulație. Varietatea metodelor apare și în folosirea diverselor spații de culoare în care se achiziționează imaginea cum ar fi : RGB, ZCbCr, HSV. Metodele folosite sunt diferite în funcție de pasul la care ne aflăm in sistemul de recunoaștere. Metode folosite pot fi: Segmentarea zonelor de culoare și a formelor, Clasificarea, Rețele Neuronale sau RBFINN, Potrivirea regiunilor detectate cu un model predefinit.
În continuare voi da câteva exemple de sisteme realizate prin diferite metode nu doar pentru recunoașterea de semne de circulație ci și pentru alte aplicații în care se aplică același principiu.
În [4] autorii prezintă un sistem de actualitate în care se detectează și se recunoaște textul prezent în indicatoarele de circulație la nivelul străzii. Se folosește metoda aparențe vizuale.
Lucrarea [5] folosește metoda segmentării autoasociative pentru recunoașterea obiectelor în timp real din mediul exterior.
Autorul Chang-Hao Lai a prezentat în lucrarea [6] o metodă eficientă de detecția semnelor din trafic în timp real pentru vehicule inteligente folosind telefonul mobil. Pentru înregistrarea semnalului video se folosește telefonul mobil care preia cadre la perioade fixe de timp și le transmite folosind: Bluetooth WiMAX sau Wi-Fi, etc. Metoda convertește imaginea din spațiul RGB în spațiul HSV. Folosind telefonul mobil pentru captarea imaginilor din trafic este foarte accesibilă, deci este o metodă cu portabilitate mare.
O altă metodă este prezentată [7] pentru recunoașterea eficientă a semnelor de limitare de viteză din trafic. Algoritmul este format din trei pași principali: filtrarea bazată pe culoare, localizarea semnului în imagine, detecția numărului din semn. Se captează imaginea în spațiul de culoare RGB apoi se convertește in HSV după care se filtrează acest spațiu prin RWB care evidențiază culorile ce formează semnele de limitare de viteză: roșu, alb si negru. Rezultatele metodei sunt foarte bune cu o corectitudine de 98% din 189 de cadre procesate.
În [8] lucrarea realizează detecția și recunoașterea semnelor de circulație folosind îmbunătățirea lui RBFINN care este o funcție bazată pe rețele neuronale . Recunoașterea semnelor se face folosind informațiile legate de formă și culoare. Un algoritm generic (GA) antrenează RBFINN pentru a obține structuri și parametri în concordanță cu obiectele din funcție. Semnele de circulație sunt clasificate in trei categorii în funcție de culoare spațială si informații legate de forma lor. RBFINN este creat pentru cele trei categorii. Înainte de a introduce semnele in rețea, imaginile se binarizează iar caracteristicile lor sunt optimizate folosind analizorul liniar de discriminare (LDA). Setul de semne antrenat în RBFINN imită toate condițiile posibile ale semnelor în trafic, astfel se creează și se testează rețeaua.
Foarte multe aplicații sunt bazate pe detecție și recunoaștere de imagine. În momentul de față sistemul de detecție si recunoaștere al semnelor de circulație este în plină dezvoltare si optimizare. Se urmărește în principiu ca sistemul de recunoașterea să respecte următoarele condiții:
Recunoașterea unui semn în timp real.
Recunoașterea semnului chiar dacă condițiile de iluminare și vizibilitate nu sunt favorabile.
Identificare semnelor cât mai corect.
Un cost de implementare al sistemului foarte redus.
Sistemul să fie portabil pe orice sistem de operare și să se poată implementa pe orice model de autovehicul.
Cea mai folosită metodă în sistemele de recunoaștere în orice altă aplicație nu numai pentru semne de circulație este segmentarea. Metoda de segmentarea imaginilor reprezintă descompunerea unui cadru. În urma procesului vor fi extrase din scenă regiuni se satisfac anumite criterii de uniformitate, obiecte distincte sau alte elemente. Acest proces este foarte important deoarece in funcție de corectitudinea lui obținem rezultate veritabile sau eronate în urma prelucrării sau procesării bazate pe răspunsul segmentării. Aplicațiile de detecție si recunoaștere ar trebui să îmbunătățească considerabil acest proces. Scopul segmentării este de a micșora volumul de informație procesată intr-o imagine dar se păstrează cele mai importante informații folosite in procesul de recunoașterea. Se analizează imaginea având în vedere: discontinuitatea și similaritatea. [9][10]
Tehnicile de segmentare se împart în două categorii principale: tehnici de segmentare orientate pe regiuni și tehnici de segmentare orientate pe contur. Pentru tehnicile orientate pe regiuni primitivele extrase din imagine sunt forme și zone texturale, pentru tehnicile orientate pe contur se extrag entități de tip discontinuitate.
În Fig 1.1 este un exemplu de segmentare prin care se evidențiază zonele de culoare, imagine din trafic este segmentată evidențiind culoarea albastru in (b) apoi aceeași imagine este segmentată după culoarea roșu (c).
Figură 1.1 Imagine din trafic segmentată
a)Imaginea originală b)Segmentare evidențiind culoarea albastru c)Segmentare evidențiind culoarea roșu
@ [11]
În lucrarea prezentată în acest proiect am folosit ca punct de plecare o metodă publicată pe forumul Matworks numită „Trafic warning signs”. Lansarea acestei metode se face apelând comanda „vipwarningsign” în linia de comanda a programului Matlab. Codul folosit în crearea algoritmului, pe care l-am studiat și l-am adaptat pentru lucrarea mea este trecut în capitolul Anexe și este publicat în [12].
Sistemul de prelucrare a cadrelor video
Acest capitol detaliază principiile teoretice care stau la baza sistemului de prelucrare. Din schema generală (Fig 0.2) zona de importanță majoră ce va fi prezentată este care include modulul de detecție, modulul de urmărire și modulul de recunoaștere.
Imagini digitale
Imaginea digitala este alcătuita dintr-un număr finit de elemente, fiecare element poseda o locație și o valoare proprie. Aceste elemente reprezintă pixelii imaginii sau elementele imaginii. În sens larg noțiunea de pixel este folosită pentru a defini un element al unei imagini digitale.
O imagine poate fi definita ca o funcție cu doua dimensiuni f( x, y ), unde x și y sunt coordonatele spațiale. Amplitudinea funcției f are o valoare scalar pozitivă și este dată de sursa care emite imaginea. Putem vorbi despre existenta unei imagini digitale dacă valoarea amplitudinii funcției si ( x, y ) sunt finite și au valori diferite de zero.
0< f( x, y )< ∞ (1)
Funcția f este caracterizată de: cantitatea de lumină incidentă asupra scenei din imagine si cantitatea de lumină reflectată de obiectele din imagine. Aceste două componente sunt numite iluminare i( x,y ) (care este dată de iluminarea sursei) si reflexie r(x,y ) (dată de caracteristicile obiectelor din imagine) . Cele două elemente formează funcția f( x, y ).
f( x, y )= i( x,y ) r(x,y ) (2)
unde:
0< i( x, y )< ∞ (3)
0< r( x, y )< 1 (4)
Reflexia este delimitată de 0 când absorbția este totală si 1 când reflexia este totală.
In ecuațiile (3) si (4) valorile lor sunt granițe pur teoretice. Vom da câteva exemple ale i( x, y ) pentru lumina vizibilă. Nivelul mediu de iluminare intr-un birou este de 1000 lm/m². Într-o zi senină soarele produce aproximativ 90,000 lm/m² de iluminare pe suprafața pământului. În cazul unei zile înnorate nivelul de iluminare este de 10,000 lm/m². Pentru reflexie r( x, y ) vom da câteva exemple :0,93 pentru zăpadă, 0,90 pentru argint, 0,80 pentru peretele vopsit in alb, 0,65 pentru oțel si 0,01 pentru catifea.
Notăm cu l nivelul de gri al unei imagini monocromatice intr-un punct si cu ( xₒ yₒ ) coordonatele.
l = f( x0, y0 ) (5)
deci din (2) și (4) rezultă:
Lmin≤ l ≤ Lmax (6)
unde : Lmin>0, Lmax ≠∞
Scala de gri dintr-o imagine este dată de [Lmin , Lmax], unde Lmin = rminimin ; Lmax = rmax imax. In practica se folosește scala de gri data de intervalul [0 , L-1], cele două valori pe care le ia l sunt negru pentru minim si alb pentru maxim. Uzual o imagine pe nivel de gri este reprezentată pe 8 biți respectiv [0 255]. [13]
Eșantionarea si Cuantizarea Imaginii
Consideram că imaginea este continuă Fig 2.1 (a) de forma f( x, y ), pentru a o digitiza trebuie să eșantionăm coordonatele funcției dar si amplitudine. Eșantionarea reprezintă obținerea valorilor digitale pentru coordonate iar cuantizarea reprezintă obținerea valorilor digitale pentru amplitudine care este dată de sursa emitentă a imaginii. Din Fig 2.1(a) este luat un segment A-B de-a lungul imaginii care este reprezentat in Fig 2.1(b) unde vedem o ilustrare grafică a nivelului de gri din imagine sau a valorilor amplitudini. Datorită faptului că întreaga imagine este afectată de zgomot în Fig 2.1(c) se eșantionează și se cuantizează imaginea. Se iau valori la un anumit moment de timp si in funcție de nivelul de gri in care se încadrează fiecare eșantion. În imagine se folosesc 8 nivele de gri. Fig 2.1(d) reprezintă o imagine digitală pe două dimensiuni fiind rezultatul Fig 2.1(c) [13]
Figură 2.1 Eșantionare și cuantizare
(a)Imaginea continuă (b)Nivelul de gri sau valorile amplitudinii de-a lungul segmentului A-B (c)Eșantionarea și cuantizarea (d)Digitizarea segmentului prelucrat
@ Digital Image Processing; Rafael C. Gonzalez
În Fig 2.2 este prezentat procesul de eșantionare si cuantizare aplicat întregii imagini. Acest lucru se realizează procesând fiecare linie si coloană de pixeli din imagine. Pentru o calitate bună a imaginii se ia un număr cât mai mare de eșantioane si se folosesc cât mai multe nivele de gri. Fig 2.2 (a) reprezintă imaginea continua iar Fig 2.2(b) întreaga imagine digitizată.
Figură 2.2 Imaginea înainte și după digitizare
(a)Imaginea continuă (b) Imaginea digitizată
@ Digital Image Processing; Rafael C. Gonzalez
Reprezentarea Digitală a Imagini
Digitizând imaginea in urma eșantionării și cuantizării obținem o matrice cu numere reale in care avem M linii si N coloane. Coordonatele funcției f( x, y ) au valori discrete. In origine ( x,y )=( 0,0 ), următoarea valoare ( x, y )=( 0,1) deci ne aflăm în matrice pe primul rând la al eșantionul doi. Un exemplu de reprezentare digitală a unei imagini este dat in Fig 2.3, o matrice cu valori discrete M-linii si N-coloane .[13]
Figură 2.3 Reprezentarea digitală a imaginii
@ Digital Image Processing; Rafael C. Gonzalez
Ecuația (7) este definiția imaginii digitale. Aceasta este o matrice formată din coordonate discrete in care fiecare element din matrice este un pixel sau element al imaginii.[10]
Utilizarea de Culoare
Culoarea este cea mai importantă informației pentru om in vederea distingerii obiectelor in lumea reală. Ochiului uman are trei tipuri de percepție sesizând părțile importante ale spectrului , camerele video moderne sunt proiectate astfel încât să perceapă culoarea folosind trei senzori, fiecare pentru o culoare primară: roșu, verde, albastru. Imaginea captată de o cameră video este reprezentă într-o colecție de coordonate de pixel (R, G, B). Spațiul de date conținut de pixeli este numit spațiu de culoare. Deci camera video achiziționează imaginile în spațiul de culoare RGB.
Majoritatea semnelor de circulație se clasifică in două mari categorii [14]:
semne de culoare roșie cele de atenționare si obligare;
semne de culoare albastru pentru informare si reglementare;
Culoare după ce este convertită imaginea în spațiul YCbCr are o importanță majoră in sistemul nostru determinând distincția dintre semne. Extragerea zonei de culoare din imagine reprezintă un potențial semn. Inițial imaginile sunt achiziționate in spațiul de culoare RGB, dar vom transforma cadrele in spațiul de culoare YCbCr din următoarele motive:
Convertirea din RGB in YCbCr elimină variațiile de iluminare asupra imaginii.
Spațiul de culoare RGB este o reprezentare de trei culori primare: roșu, verde, albastru, aceste semnale nu sunt eficiente si au o redundanță destul de ridicată dacă vrem să transmitem, memorăm sau să reprezentăm semnalele. Spațiul de culoare YCbCr este reprezentat de intensitatea luminoasă Y, care se poate memora la o rezoluție destul de ridicată sau se poate transmite într-o bandă de trecere largă, si două componente cromatice Cr si Cb care pot fi sub-eșantionate, comprimate, micșorarea benzii de trecere sau se pot trata separat pentru a crește eficiența sistemului.
Spațiul de culoare YCbCr este cel mai folosit în televiziune video sau ” video streams”. Când folosim reprezentarea semnalelor digitale în acest spațiu componentele pot fi scalate , rotunjite sau putem adăuga „offset”. Modificând parametrii putem obține o calitate mai buna a imaginii sau putem introduce diferite efecte vuzuale.
Figura 2.4 prezintă o transformare din spațiul RGB în YCbCr.
Figură 2.4 Conversia din spațiul RGB în spațiul YCbCr
@ http://ro.wikipedia.org/
Spațiul de culoare RGB
Spațiul de culoare RGB este alcătuit din culorile roșu ,verde, albastru. Acesta este cel mai folosit si cel mai cunoscut spațiu. In Fig 2.5 este arătată o reprezentare carteziană a acestui model in care x, z, y sunt înlocuite de R G B. In fiecare din colț al cubului este o culoare. Negru este in origine(0,0,0) iar alb (1,1,1) este in colțul opus față de negru, linia care le unește pe acestea două reprezintă nivelul de gri. În celelalte colțuri întâlnim culorile turcoaz, purpuriu, si galben. Pe axele coordonatelor carteziene sunt culorile de bază ale acestui spațiu. Definirea culorilor se face folosind vectori care pleacă din origine, dar in cub culorile sunt puncte.[15]
Figură 2.5 Schema spațiului RGB in coordonate carteziene
O imagine in spațiul RGB este alcătuită din alte trei pe nivele de gri suprapuse. Cele trei imagini suprapuse sunt culori primare din cub. In Fig 2.7 este o prezentare a modului in care se combină cele trei imagini fiecare reprezentând o culoare din cele trei astfel încât pe monitor sa apară imaginea color. Două culori sunt similare dacă sunt alăturate in cea mai mică vecinătate in spațiul RGB
Adâncimea pixelului reprezintă totalitatea biților folosiți pentru a forma un pixel in RGB. Pe o imagine cu dimensiunea de 8 biți in spatele ei mai sunt trei imagini fiecare pe 8 biți deci numărul total de culori folosit pentru afișarea imaginii este de:
(28)3=(256)3=16,777,216 culori
În Fig 2.6 este cubul de culori în coordonatele carteziene din Fig 2.5 pe 24 biți din RGB [16]
Figură 2.6 Cubul de culori in coordonate carteziene
@ Digital Image Processing; Rafael C. Gonzalez
Figură 2.7 Combinarea celor trei imagini de culoare pentru a forma o imagine color
@ Digital Image Processing; Rafael C. Gonzalez
Acest spațiu are câteva dezavantaje cum ar fi :
Două culori care sunt similare in spațiul RGB pot fi foarte diferite.
Pentru a aplica o segmentare direct pe acest plan este foarte complicat datorită faptului că este format din trei imagini suprapuse.
Recunoașterea de obiecte în imagine este foarte dificilă în condiții diferite de iluminare Cele trei coordonate sunt foarte mult corelate . Variația in intensitatea luminii ambientale are un efect negativ in valorile RGB mutând vectorii de culoare ai pixelilor semnificativ in spațiul cubic, in timp ce „culorile” acestor pixeli sunt aceleași. [16]
Spațiul de culoare YCbCr
Acest spațiu s-a dezvoltat pentru a fi utilizat în fluxuri video sau televiziune digitală. Definirea culorilor este diferită de RGB, în YCbCr se definește culoarea prin intensitatea luminoasă si două valori cromatice. După abrevierea spațiului Y reprezintă intensitatea luminoasă, Cb este planul culorii albastru iar Cr este planul culorii roșu. In proiectul nostru, din acest plan, vom folosi doar informația furnizată de planul Cr pentru extragerea culorii roșu in vederea identificării semnelor bazate pe această culoare. [17]
Cum am prezentat și în subcapitolul 2.4 Utilizarea de culoare dar si în subcapitolul 2.5.1 Spațiul de culoare RGB, datorită dezavantajelor pe care le prezintă planul RGB , imaginile din acest plan se converti in planul YCbCr pentru o procesare mai buna si mai rapidă. Conversia se face direct printr-o matrice.
(8)
Unde: Y ia valori între [0,1] ; Cr si Cr iau valori între [-0.5,0.5]
Conversia din YCbCr in RGB se face aplicând următoarea matrice dar pentru Y ia valori intre[0,1] iar Cb si Cr intre [-0.5,0.5]
(9)
În Fig 2.9 este prezentat un exemplu prin care o imagine din trafic este convertită din spațiul de culoare RGB in spațiul YCbCr evidențiind planul Cb de culoare albastru si planul Cr de culoare roșu.
Figură 2.8 Segmentarea imaginii în planul YCbCr
a) Imaginea originală b) Imaginea evidențiind Y c) Imaginea evidențiind Cb
d) Imaginea evidențiind Cr
@ [18]
Detecția
Schema generală a acestui boc este in Fig 2.10. În pasul detecție fiecare cadru este analizat separat. Semnalul transmis prin Cr care reprezintă doar informația de culoare roșie din cadru, este supus unui filtru pentru a îndepărta zgomotul și estomparea din imagine. După filtrare imaginea este supusă mai multor operații morfologice sau de închidere prin care se dilatează și apoi se aplică o eroziune care accentuează pixelii bazându-se pe diferențele dintre pixelii vecini.
Detecția și extragerea regiunii
După aceste operații, o funcție numită „Blob Analysis” preia imaginea. Scopul acestei funcții este de a identifica în cadru regiuni care sunt potențiale semne de circulație bazate pe culoarea roșu. Identificarea regiunii se face punând condiții de intensitate a culorii roșu pe cele trei dimensiuni ale imaginii : dimensiunea 1 125; dimensiunea 290 și dimensiunea 390. Dacă se identifică în imagine o astfel de regiune înseamnă că ne aflăm intr-o zonă de culoare roșu. Pixelii din această zonă se salvează într-o variabilă. Pentru a evidenția zona identificată se adaugă un ofset pixelilor din margine. Regiunea extrasă este convertită in nivele de gri, se dublează precizia imaginii și cadrul se binarizează sub un prag de 0,5. Ultima prelucrare asupra regiunii extrase este redimensionarea acesteia [9×4] apoi se salvează într-o variabilă care este transmisă funcției principale din acest bloc.
Modelul de semne pentru modulul detecție
Modelul de semne pentru detecție este o funcție în care sunt salvate semnele de circulație, câte un cadru pentru fiecare semn . Aceste imagini au o dimensiune mică [12×12], au forma unei matrice [M x N x K] unde M este numărul de linii, N numărul de coloane pentru fiecare model și K reprezintă numărul modelului din memorie. Semnele se folosesc ca model în funcția Detecție Dimensiunea acestora este mică pentru a crește viteza de procesare. În figura 2.9 este prezentat modelul de semne folosit în blocul de detecție în care este memorat câte un cadru pentru fiecare semn.
Figură 2.9 Modelul de semne pentru detecție
@ http://www.mathworks.com/
Identificarea unui potențial semn în regiunea extrasă
Funcție are parametri de intrare: modelul de semne pentru detecție , un set de caracteristici ale pixelilor identificați și regiunea extrasă în care este potențialul semn. Această funcție preia regiunea cu potențialul semn si o compară cu modelele pentru detecție salvate în memorie. Întâi se caută toate posibilitățile pentru a se găsi cea mai bună asemănare cu un semn din model. Se calculează caracteristicile regiuni, și se normalizează. Când se atinge maximul de asemănare al regiunii cu un semn, adică sunt corelate, se identifică regiunea extrasă ca fiind un potențial semn. În acest caz regiunea extrasă de „Blob anasysis” este transmisă următorului bloc de urmărire.
Figură 2.10Scema blocului de detecție
Prăguirea Histogramei
Histograma Nivelurilor de Gri. Considerând o imagine pe scara de gri cu L niveluri de intensitate, histograma reprezintă o funcție g( j ) care are ca valoare numărul de pixeli din imagine sau regiune care au intensitatea j [0….L]
g(j)=Nj (10)
unde Nj reprezintă numărul de pixeli din imagine sau regiunea de interes, cu intensitatea j
Figură 2.11 Exemplu de histogramă a unei imagini
a)Imaginea originala în nivele de gri b)Histograma imaginii
@ http://www.mathworks.com/
În momentul în care o imagine este reprezentată pe nivele de gri histograma va avea o structură de intervale de nivele de gri ce apar cu probabilitate mai mare. Aceste intervale probabilistice se numesc moduri dominante, fiecare mod indică un obiect din imagine sau o categorie de obiecte.
Prăguirea histogramei joacă un rol central in aplicațiile de detecție. Pentru a identifica un obiect în imagine se definesc nivele de gri corespunzătoare minimelor locale ale histogramei. Considerăm că avem o imagine f( x,y ) pe nivele de gri, alcătuită din obiecte iluminate pe un fundal întunecos. Pentru a separa obiectele de restul imaginii se alege un prag T care separa cele doua moduri. Perechea de coordonate ( x,y ) pentru care f( x,y ) > T se numește punct din obiect, in rest se numește punct din fundal. În Fig 2.11a) este un exemplu de histogramă a unei imagini cu obiecte iluminate în fundal întunecat cu un singur prag T. În Fig 2.12b) este un exemplu de histograma pentru aceeași imagine dar cu iluminare diferită asupra obiectelor, sunt trei moduri dominante.
Figură 2.12 Histograma unei imagini cu obiecte iluminate pe un fundal întunecos
a)Histograma cu un prag b) Histograma cu multiple praguri
@ Digital Image Processing; Rafael C. Gonzalez
În Fig 2.11 b) întâlnim multiple praguri ceea ce clasifică punctele in clase diferite in funcție de apartenența la aceste praguri. Un punct (x,y) aparține unei clase obiect dacă T1 < ( x,y )≤ T2 ,aparține altei clase dacă f( x,y )> T2 și fundalului dacă f( x,y ) ≤ T1. Prăguirea poate fi abordată și ca o operație prin care se aplică teste unei funcții T de forma:
(11)
Unde: f( x,y ) reprezintă nivelul de gri punctului ( x,y ) și p(x,y) proprietăți locale ale punctului cum ar fi nivelul mediu de gri al vecinilor centrați in punctul ( x,y ).[10]
Binarizarea imaginii
Prin binariăzare se separă modurile histogramei prin alegerea unui nivel de gri T numit prag.
O imagine binarizată g(x,y) este de forma:
(12)
unde 1 este pentru punctele din imagine iar 0 este pentru punctele din fundalul imaginii
T se numește prag global pentru că depinde doar de f( x,y ), dacă T depinde si de p(x,y) se numește prag local.
Din imaginea inițială f s-a creat imaginea de etichete g. [10]
Detecția Orientată pe Regiuni
Operația de detecție orientată pe regiuni are ca scop identificarea și extragerea din imagine a regiunilor în care sunt prezente obiectele de interes. În Fig 2.10 întâlnim un exemplu în care într-o imagine sunt detectate diferite zone: f0, f1, f2, f3, f4, f5. Fiecare din aceste zone prezintă zone de interes, f2 și f3 sunt regiuni în care întâlnim obiecte similare.
Figură 2.13 Un exemplu de detecție orientată pe regiuni
@ [10]
Un obiect este o entitate definită de un set de parametri care nu se modifică în diferitele puncte ale entității considerate. Detecția se face aplicând diferite praguri imaginii identificând modurile dominante din histogramă. În momentul în care s-au identificat modurile dominante se etichetează imaginea ca in Fig 2.13 care este împărțită în funcție de nivelurile de gri care zonele.
Detecția formelor
Detecția marginilor localizează schimbările abrupte in intensitate a valorii sau a culorii pixelilor. Forma reprezintă o grupare de pixeli care se întind de-a lungul graniței a două regiuni. În acest proces avem nevoie de nivelul de gri al imaginii.
Pentru a determina o formă în mod ideal delimitarea ar trebui să fie foarte bine pronunțată astfel încât trecerea de la un nivel de gri la altul sa fie abruptă ca in Fig 2.14a) . Observăm in această figură o linie orizontală care delimitează cele două regiuni sau nivele de gri. În practică, Fig 2.14b), delimitarea intre zone este neclară așa că nu avem o trecere abruptă intre nivelele de gri ale celor două regiuni. Această trecere poate fi afectată de sistemul de achiziție al imaginii, rata de eșantionare sau condițiile de iluminare .[13]
Figură 2.14 Model de margini digitale
a)Model ideal al unei margini digitale b) Model al unei margini digitale în rampă
@ Digital Image Processing; Rafael C. Gonzalez
Într-o imagine orice modificare ale proprietăților fizice și geometrice ale obiectelor ce o compun determină o variație de nivel ale pixelilor. În general aceste variații reprezintă conturul regiunilor determinate de obiectele din imagine. Pentru a clasifica un punct ca și contur, tranziția intre nivelele de gri asociată acelui punct trebuie să fie semnificativă și mai puternică decât fundalul. Se evaluează dacă valoarea unui punctului este semnificativă aplicând un prag imaginii. Se definește un punct (x,y) dintr-o imagine ca făcând parte din contur dacă derivata de ordin I pe două dimensiuni este mai mare decât pragul stabilit. O mulțime de aceste puncte conectate în funcție de un criteriu prestabilit definește un contur sau o frontieră. O altă metodă de a căuta contururile dintr-o imagine este determinarea trecerilor prin 0 ale derivatei de ordin II.
Aceste definiții nu garantează un succes in găsirea formelor intr-o imagine dar ne dau formalități prin care le putem căuta. Deci pentru a aplica derivata de ordin I într-o imagine se folosește metoda gradientului. Pentru a obține derivata de ordin II se aplică metoda Laplacian.[10]
Tehnicile de gradient
Punctele de contur sunt pixeli ai imaginii al căror nivel de gri suferă schimbări modificări abrupte. Pentru a măsura variația nivelului de gri se folosesc operatori derivativi de tip gradient. Derivata unei imagini f( x,y ) pe o anumită direcție reprezintă combinația liniară a derivatelor parțiale pe cele două direcții verticală și orizontală.
cos + sin (13.1)
= cos + sin (13.2)
unde r reprezintă direcția după care se face derivata imaginii, este unghiul făcut de derivată cu orizontala.
Pentru a determina maximul derivatei , calculată după unghiul folosim următoarea relație:
xsin+y sin (14)
soluția ecuației (14) este :
(15)
Pe direcția r modulul gradientului este :
max= (16)
Implementarea metodei gradientului implică, pentru fiecare pixel al imaginii, calcularea modului gradientului si direcție acestuia pentru derivatele parțiale fx și fy. Valoarea maximă a gradientului obținută pentru fiecare pixel al imaginii este comparată cu un prag stabilit. Dacă maximul gradientului depășește valoare de prag, pixelul este clasat ca făcând parte din contur. Pentru a obține derivatele parțiale pe verticală si orizontală trebuie să obținem o formulare discretă s lui fx și fy.
(17)
(18)
(m,n) reprezintă poziția pixelului curent asupra căruia se aplică gradientul
Derivatele parțiale discrete prezentate in relațiile (17) si (18) pot avea diferite implementări:
fx= f( m1,n ) f ( m,n ); fy= f( m,n1 ) f( m,n ) (19)
fx= f( m,n ) f ( m+1,n ); fy= f( m,n ) f( m,n+1 ) (20)
fx= f( m1,n ) f ( m+1,n ); fy= f( m,n1 ) f( m,n+1 ) (21)
Expresiile (19), (20) și (21) sunt combinații liniare ale valorilor pixelilor din imagine situați în vecinătatea pixelului (m,n). Deci pentru implementare se pot folosi măști de filtrare cum ar fi:
Wx=(1* ) Wy= (22)
Wx=(1 *) Wy= (23)
Wx=(1 0* ) Wy= (24)
unde cu * s-a marcat originea măștii de filtrare; uzual se aproximează
max≈│ fx │+│ fy │ (25)
Utilizarea măștilor de derivare are și dezavantaje: rezultatele devin destul de sensibile la zgomot datorită faptului că aceste măști au dimensiuni mici. Datorită acestui dezavantaj s-a introdus ideea de a combina filtrarea de derivare cu filtrarea de netezire pentru a reduce zgomotul. Deci pentru operatorii de derivare pe verticală si orizontală se folosesc măștile :
Wx= Wy= ( 26)
unde c este o constantă.
Putem obține diferite tipuri de operatori de extragere de contur particularizând valorile constantei c. Tipuri de operatori clasici : Prewitt pentru c=1; Sobel pentru c=2; Izotrop pentru c=. În Fig 2.15 și 2.16 este un exemplu în care filtrul Sobel este aplicat unei imagini, se observă in Fig 2.15b) conturul formelor evidențiat fată de restul imaginii.[10]
Figură 2.15 Aplicare filtrului Sobel unei imagini
a)Imagine originală b) Imaginea după aplicarea filtrului Sobel
@ http://www.mathworks.com/
Figură 2.16 Semnul stop înainte și după aplicarea filtrului Sobel
@ http://www.mathworks.com/
Laplacian
Metoda de identificare a conturului prin determinarea trecerilor prin zero ale celei de a doua derivată are avantaje fata de metoda gradientului. Principalul avantaj este acela că identifică cu precizie centrul tranziției pentru imagini în care conturul are panta lentă. Operatorul „zero-crossing” identifică trecerile prin zero ale derivatei de ordin doi. Pentru imagini derivata secunda trebuie analizată după ambele direcții: verticală și orizontală, combinate in Laplacian.
(27)
Vom exemplifica trei tipuri de măști ce implementează o derivată de ordin doi bidirecțională, adică operatorul Laplace.
Pentru o imagine se calculează derivata a doua pentru fiecare pixel. Pixelul aparține graniței dacă rezultatul derivatei este zero. Netezirea pentru a determina cu precizie trecerile prin zero folosind operatorul „zero-crossing” se face î combinând Laplacian cu o funcție:
h(r)= (28)
unde r2=x2 + y2 și este deviația standard
Convoluția funcției din (28) cu o imagine estompează imaginea, gradul de estompare este determinat de . Laplacianul funcției h este următorul:
(29)
Relația (29) reprezintă forma de Laplace pentru funcția Gauss abreviată cu LOG. În Fig 2.15 este reprezentată funcția LOG 3-D, o imagine, un plot 3-D si o mască de 5 X 5 pentru aproximarea lui . Această mască de aproximare are ca scop să surprindă esențialul pentru . Imaginea este alcătuită dintr-un termen central pozitiv înconjurat de o regiune negativă care își mărește valoare pe măsură ce se depărtează de origine.[10]
Figură 2.17 Laplacian pentru funcția Gauss
a)Plot 3-D b)Imaginea c)Secțiune transversală cu trecerea prin zero d)Masca de 5 X 5 pentru aproximarea formei de la (a) @ Digital Image Processing; Rafael C. Gonzalez
Urmărirea regiunii extrase
Blocul de urmărire al potențialului semn are rolul de a valida regiunea ca fiind un semn potențial. Această verificare se face urmărind dacă o regiune candidată este identificată într-un număr consecutiv de cadre. În cazul nostru se verifică dacă se identifică aceeași regiune în patru cadre consecutive.
În acest bloc primește regiunea cu potențialul semn redimensionată [9×4] și o salvată în variabilă. Pentru fiecare cadru acest bloc salvează într-o variabilă regiunea primită de la blocul de detecție ca fiind un potențial semn. Noua regiune primită se compară cu vechea regiune salvată, dacă regiunile se potrivesc se contorizează într-o variabilă contor care memorează de câte ori s-a identificat o regiune cu cele din cadrele anterioare consecutive. Dacă în patru cadre consecutive se identifică aceeași regiune, regiunea actuală este transmisă mai departe următorului bloc pentru a fi comparată cu modelele de recunoaștere. În Fig 2.18 este evidențiat blocul de urmărire al regiunilor extrase.
Figură 2.18 Blocul de urmărire al regiunii extrase
Recunoașterea
Răspunsul final al sistemului este dat de blocul de recunoaștere. Acest bloc este foarte important, acuratețea lui având un moment cheie în întreg sistemul. Pentru recunoaștere se folosesc semne de circulație speciale predefinite în memorie. Regiunile candidate sunt primite folosind printr-o variabila de la blocul de urmărire. Parametri de intrare ai acestui bloc subt : modelul de semne pentru recunoaștere, id-ul și numele lor pe care îl voi detalia în pasul următor; regiunea candidată.
Modelul de semne pentru modulul de recunoaștere
Semnele pentru modulul de recunoaștere se salvează în aceeași funcție în care sunt salvate modelele de semne pentru detecție. Acest model este mult mai important decât primul. Semnele au forma unei matrice [M x N x K] unde M este numărul de linii, N numărul de coloane pentru fiecare model și K reprezintă numărul modelului din memorie. Dimensiunea unui model de semn este de [18×18]. Aici sunt salvate câte trei cadre pentru fiecare semn orientate în poziții diferite pentru a simula situațiile din trafic. Cadrele au o rezoluție foarte bună deoarece după acest bloc obținem rezultatul final și trebuie să avem o precizie ridicată. În Fig 2.19 întâlnim modelul de semne pentru blocul de recunoaștere.
Figură 2.19 Model de semne pentru recunoaștere
Corelația dintre model si regiunea candidată
În acest bloc caută potențialele semne care sunt similare cu modelul predefinit. Similaritatea se măsoară calculând corelația dintre cele două regiuni. Inițial funcția compară regiunea candidată cu toate pozițiile în care sunt salvate modelele. Dacă se identifică aceeași orientare se trece la pasul următor în care se determină caracteristicile regiunii. Această determinare este în vederea potrivirii regiunilor. Caracteristicile regiunii se normalizează și se compară toate modelele. Se calculează corelația dintre regiune extrasă si totalitatea modelelor. Două regiuni sunt corelate atunci când se respectă un prag de similaritate numit minim de similaritate. Se validează un semn atunci când obține similaritatea maximă.
În momentul în care se confirmă apartenența semnului la unul din modelele date, se transmite un mesaj de confirmare blocului de afișare. Mesajul transmis conține numele modelului recunoscut. Dacă un semn a fost identificat si transmis, se încetează procesul de recunoaștere, căutându-se un alt semn diferit de cel anterior recunoscut, pentru a nu ocupa memoria inutil. Figura 2.20 reprezintă o structură a blocului de recunoaștere.
Figură 2.20 Schema blocului de recunoaștere
Afișarea pe ecran si transmiterea indicatorului
Modulul de afișare primește mesajul de confirmare furnizat de funcția de cunoaștere. Se încadrează semnul identificat într-un chenar galben. După identificare pe ecrana semnului, se transmite audio un mesaj audio corespunzător semnului identificat. În Fig 2.21 este blocul de afișare al semnelor după recunoașterea acestora.
Figură 2.21 Blocul de afișare
Mesajul afișat dedesubtul chenarului în momentul în care un semn este încadrat este evidențiat în Fig 2.22
Figură 2.22 Mesajul afișat dedesubtul semnului identificat
Figura 2.23 și 2.24 evidențiază modul de afișare pe ecran a semnului identificat.
Figură 2.23 Modul de afișare pe ecran
Figură 2.24 Identificare semnului STOP
Implementarea in MATLAB
Implementarea programului s-a făcut in MATLAB, o versiune adaptată cu Simulink. Versiunea de MATLAB este R2013a integral. Computerul folosit este un laptop personal care rulează Windows 7, procesor Intel CORE i3, 6Gb memorie RAM. Simulink s-a folosit pentru o vizualizare mai bună a modului de funcționare al sistemului dar și pentru simplificarea.
Fiecare modul a fost împărțit în blocuri separat. În Fig 3.3 este o vizualizare a tuturor blocurilor sistemului. În implementare s-au folosit două semne de circulație, toate bazate pe culoare roșu. Pentru a evidenția această culoare am folosit din spațiul culoare YCbCr planul Cr și Y. Pentru ca rezultatul în urma recunoașterii să fie cât mai bun s-au folosit două tipuri de modele de semne antrenate intr-o bază de date. Un model de semne s-a folosit pentru blocul de detecție. Acest model este alcătuit din câte un model din fiecare semn, Cedează trecerea; Stop; și Acces interzis. Imaginile au o rezoluție foarte mică pentru a crește viteza de procesare a cadrelor. În Fig 3.1 sunt prezentate cele trei semne la o rezoluție foarte scăzută din modelul de detecție.
Figură 3.1 Modelul de semne pentru detecție
Al doilea model folosit este pentru blocul de recunoaștere sau „template_recognition”, acesta este mai important decât primul. Aici sunt salvate câte trei cadre pentru fiecare semn orientate în poziții diferite pentru a simula poziția lor în trafic. Cadrele au o rezoluție foarte bună deoarece după acest bloc obținem rezultatul final și trebuie să avem o precizie foarte bună. În Fig 3.2 este modelul de semne pentru blocul de recunoaștere.
Figură 3.2 Model de semne pentru recunoaștere
Aceste două modele de semne au fost create folosind funcție „vipwarningsigns_template.m”, după ce au fost create pentru a le putea apela, au fost salvate într-o altă funcție „vipwarningsigns_template.mat”. Voi detalia modul în care am abordat schema generală din Fig 0.2 în Matlab.
Semnalul de intrare este un clip video care surprinde mai multe semne de circulație. Rezoluția este relativ mica [180×360] pentru a crește viteza de procesare asupra cadrelor. Din video sunt extrase 30 cadre/secunda in spațiul de culoare RGB. După achiziția de cadre, acestea sunt convertite in spațiul de culoare YCbCr care se transmite fiecare plan în parte blocurilor următoare, se creează si o matrice pe trei linii si trei coloane din aceste planuri. În mod special se folosesc planurile Y si Cr pentru analiza pixelilor bazați pe culoarea roșu. Planul Cb care reprezintă culoarea albastru este lăsat in gol.
În blocul de detecție se preia cadrul transmis prin Cr care este supus unui filtru sau prag pentru a evidenția pixelii importanți. După filtrare imaginea este supusă mai multor operații morfologice . După aceste operații, o funcție numită „Blob Analysis” preia imaginea. Scopul acestei funcții este de a căuta în cadru spații sau zone în care sunt potențiale semne de circulație bazate pe culoarea roșu. În momentul în care s-a găsit un potențial semn „Blob analysis” îl transmite mai departe modulului principal de detecție. Acest modul returnează regiunea cu potențialul semn dacă acesta este conform modelului din memorie. Se calculează asemănările dintre model si potențialul semn si dacă acestea sunt corelate rezultă identificarea unui potențial semn. În acest caz regiunea extrasă de „Blob anasysis” este transmisă următorului bloc prin variabila z .
Blocul de urmărire al potențialului semn primește regiunea cu potențialul semn redimensionată [9×4]. Se preia regiunea din variabila z o salvează si o compară cu regiunile identificate din cadre procesate. Dacă în patru cadre consecutive se identifică același regiune candidată ca fiind un semn, regiunea este transmisă mai departe următorului bloc pentru a fi comparat cu modelele de recunoaștere.
Răspunsul final al sistemului este dar de blocul de recunoaștere. Semnele candidate sunt primite de la blocul de urmărire al semnelor. Funcția blocului primește la intrare variabila z dar si modelele de semne pentru recunoaștere. Aceasta calculează corelația între potențialul semn si modelele din memorie. În momentul în care se confirmă apartenența semnului la unul din modelele date, se transmite un mesaj de confirmare blocului de afișare. Mesajul transmis conține numele modelului recunoscut . Dacă un semn a fost identificat si transmis, se încetează procesul de recunoaștere, căutându-se un alt semn diferit de cel anterior recunoscut.
Modulul de afișare primește mesajul de confirmare furnizat de funcția de recunoaștere. Pentru a încadra semnul identificat într-un chenar galben se folosește blocul „Drow Shape”. Textul afișat sub chenarul galben se realizează apelând blocul „Invert text”.
Realizarea cadrelor video pentru prelucrare
Pentru înregistrarea cadrelor video s-a folosit un dispozitiv portabil de tip ipod generația 5. Înregistrarea cadrelor s-a făcut in spațiul exterior, în condiții de iluminare bună. Clipurile video au fost înregistrate inițial cu următoarele proprietăți:
Rezoluția [1920 x 1080];
Dimensiune aproximativ 4,59 MB;
Durată [4 – 9 ] secunde;
29 de cadre/secundă;
Rata de date 12769 kbiți/secundă;
După înregistrare, clipurile video au fost convertite pentru a obține performanțe mai ridicate. Pentru a prelucra înregistrările s-a folosit programul VideoPad Video Editor Professional, ediția non-comercială. Acest program este dedicat pentru editarea fișierelor de tip : .avi , .mov, .mp4 .gif, .flv, .mkv. Configurația înregistrărilor după convertire este următoarea:
Rezoluția între [450 x 320] – [230 x 180];
Dimensiune între 200 KB – 600KB;
Durată [4 – 9 ] secunde;
29 de cadre/secundă;
Rata de date 735 kbiți/secundă;
Implementarea modulului de transmitere audio a semnului și a regulii aferente
Înregistrarea s-a realizat folosind aceleași mijloace tehnice cu care s-a implementat simularea în MATLAB. Înregistrarea secvenței vocale s-a făcut folosind microfonul integrat al calculatorului cu programul Audacity ediția non-comercială, condițiile de înregistrare au fost in “liniște” relativă in camera de cămin. Secvențele audio s-au făcut folosind un format .WAV, înregistrare mono. Frecvența de eșantionare este de 48KHz, cu 16biți/eșantion. Secvențele au dimensiuni între [5-9] secunde si sunt în număr de trei în care se pronunță semnul și regula aferentă lui:
Oprește.WAV
CedeazăTrecerea.WAV
AccesulInterzis.WAV
În modulul de recunoaștere, după ce a fost identificat semnul de trei ori, se afișează pe ecran mesajul corespunzător dar pentru fiecare din cele trei semne se apelează secvența:
[y,Fs] = audioread('nume.fișier.wav');
sound(y,Fs);
În y este salvat fișierul din memorie folosind funcția audioread și în Fs este salvata rata de eșantionare a semnalului audio. Semnalul audio se redă folosind funcția sound( y, Fs) care are ca parametri fișierul din memorie si rata de eșantionare. Această implementare s-a folosit pentru a nu perturba atenția de la trafic a conducătorului auto și pentru a-l ajuta în a respecta cu mai multă atenție regulile de circulație.
Rezultate experimentale
Pentru testarea metodei am înregistrat un număr de 30 de clipuri video în care am surprins semnele de circulație în diferitele condiții de iluminare pe timpul zilei, am simulat majoritatea condițiilor în care acestea pot fi în trafic. Rezultatele au variat în majoritatea cazurilor în funcție de condițiile de iluminare.
În Fig 4.1 am evidențiat mai multe cadre din clipurile video în care semnele au fost identificate cu succes. Condiție în care s-au surprins semnele sunt ideale adică:
vizibilitate maximă asupra acestora,
distanța destul de mică pentru a extrage informația în totalitate,
lumina ideală care pune în evidență tot semnul, lumina provenită de la soarelui pică direct pe indicator și nu intervin umbre.
Figură 4.1 Rezultate favorabile obținute
În următoarele figuri am evidenția condiții nefavorabile care împiedică identificare semnelor. Putem identifica principial trei situații majore care afectează de cele mai multe ori procesul.
Prima situație este legată de poziția soarelui ca are un rol foarte important, după cum am văzut în Fig 4.1 lumina solară ajută la identificarea semnelor, dar dacă razele soarelui pică direct pe obiectivul dispozitivului care preia cadrele video acest lucru are un efect nefast asupra calității fișierului înregistrat. Cum cele mai multe camere video sunt echipate cu opțiunea de setare automată a diafragmei în funcție de lumina care intră în dispozitiv, la fel și dispozitivul cu care am realizat înregistrarea este echipat cu această opțiune. În principiu setarea automată a diafragmei este bună, dar în situația în care cantitatea de lumină care pică pe suprafața dispozitivului, diafragma se închide foarte mult ceea ce determină închiderea contrastului întregii imagini. În cazul nostru Fig 4.2 cantitatea luminoasă este provenită de la soare fiind foarte puternică, deci tot restul cadrului își închide contrastul, și culorile își pierd din consistență.
Figură 4.2 Imagini cu contrast închis
a)Imagine în care razele solare cad pe obiectiv din lateral b) Imagine în care razele solare cad frontal pe obiectiv, semnul aproape indescifrabil c)Imagine în care razele solare cad în lateral pe obiectiv iar culoarea semnului este parțial vizibilă
A doua situație este insuficiența de lumină asupra semnului. Dacă lumina solară nu cade pe suprafața semnului sa orice altă sursă de lumină, informația de culoare este insuficientă pentru prelucrare. Umbrele sunt un alt aspect care defavorizează sistemul în același sens.
În Fig 4.3 sunt prezentate situații întâlnite în care lumina insuficientă sau prezenta umbrelor asupra semnelor împiedică identificarea semnelor.
Figură 4.3 Diferite situații în care lumina este nefavorabilă
A treia situație care afectează metoda apare atunci când informația legată de forma semnului este incompletă. Situațiile în care apar aceste probleme pot fi diferite:
Semnul este prea îndepărtat și se pierde informația despre formă;
Semnul este deteriorat:
Factori exteriori împiedică vizibilitatea asupra semnului (natura, diferite afișe)
Figură 4.4 Situații în care informația despre semn este insuficientă
a)Distanța prea mare la care a fost preluat cadrul b)Semn deteriorat c)Vizibilitate redusă asupra semnului
În simularea sistemului am înregistrat câte șase clipuri video în care am simulat cele trei situații nefavorabile, și alte șase clipuri video in situațiile ideale de recunoașterea semnului. În 24 de cazuri semnele nu au fost identificate iar în cele șase situații ideale am obținut un rezultat favorabil ca în Fig 4.1.
Posibilități de dezvoltare si implementare în Industria Auto
Acest sistem are ca scop îmbunătățirea calității conducerii și comportarea in trafic a conducătorului auto printr-o asistenta acordată acestuia. Obiectivul principal este procesarea unui semnal video achiziționat cu un dispozitiv aflat la bordul unei mașini în deplasare în vederea identificării și recunoașterii semnelor de circulație. Fiecărui semn de circulație identificat îi sunt asociate regulile de circulație impuse de semn, acestea fiind transmise prin semnal vocal conducătorului auto sau afișate pe un ecran.
Implementarea în industria auto
Camera video este amplasată în spatele oglinzii retrovizoare ca în Fig 5.1[r] Performanțele acestei camere nu trebuie să fie foarte ridicate deoarece pentru sistem avem nevoie de o rezoluție mică a cadrelor. Foarte important este ca dispozitivul de preluat cadre să aibă integrată opțiunea de setare automată a timpului de expunere astfel încât să se adapteze automat la diferitele condiții de iluminare. Dacă intensitatea luminoasă este prea mare diafragma este mai puțin deschisă pentru a împiedica excesul de lumină, dacă intensitatea luminoasă este prea scăzută, diafragma trebuie să fie mult mai deschisă pentru a introduce lumină. Această setare a camerei video trebuie să mențină un echilibru de lumină în cadrele înregistrate.
Figură 5.1 Amplasarea camerei video în oglinda retrovizoare a mașinii
Cu ajutorul programului MATLAB sau orice alt sistem de programare se implementează algoritmul în bordul autoturismului folosind un procesor (Pentium IV recomandat) cât mai bun pentru performanțe ridicate. Pe lângă procesor mai trebuie amplasată și o memorie externă în care se stochează modelele de semne folosit în detecție și recunoaștere si semnalele audio.
Modulul de afișare al semnului identificat se face folosind un ecran separat instalat la bordul mașinii sau folosind chiar displayul mașinii. Procesorul este conectat la acest ecran, modulul de afișare folosindu-l ca port extern.
Transmiterea audio a semnului și a regulii aferente lui se face conectând un sistem audio separat sau sistemul audio al mașinii la procesor . În momentul recunoașterii unui semn procesorul ia din memorie semnalul vocal asociat semnului și folosește ca port extern de transmitere sistemul audio. În Fig 5.3 este evidențiat modul de funcționare al sistemului audio. Camera video și sistemul audio sunt alimentat de la bateria mașinii.
Figură 5.2 Schema sistemului implementată în autoturism
Posibilități de dezvoltare
După cum am menționat și în capitolul de Introducere, datorită problemelor legate de deteriorarea semnelor, modificare poziției acestora sau inexistența lor, am primit o sugestie pentru rezolvarea acestor probleme din partea unui profesor aparținând comisiei „ Sesiunea De Comunicări Științifice” Sugestia a fost sincronizarea sistemului de recunoaștere cu GPS-ul mașinii sau cu cel portabil. Acest lucru va aduce un plus de valoare și validează sistemul de detecție și recunoaștere propus prin simpla comparare a rezultatelor cu regulile de circulație semnalizate de GPS cunoscând cu certitudine poziția semnelor în trafic. Deci corectitudinea va fi mult mai mare în ceea ce privește identificarea semnelor dar va creste timpul de procesare. Cel mai important aspect al sincronizării cu GPS-ul este afișarea semnelor chiar dacă sunt degradate sau inexistente.
O altă direcție de dezvoltare a sistemului este aceea de „pilot automat”, desigur pentru a ajunge la o asemenea performanță este un proces foarte lung și complicat, dar treptat se poate realiza. Pentru început procesorul trebuie să aibă cea mai mare prioritate asupra sistemului de frânare, astfel la detectarea indicatoarelor de „STOP” să poată reduce viteza la zero a autoturismului. Un alt bloc trebuie implementat în sistem care comunică direct cu structura mecanică a autoturismului. Blocul se poate numi „Reducerea Vitezei” și are atribuțiile de a calcula distanta de la autoturism la poziția semnului identificat, și reduce treptat viteza la zero în condiții de siguranță fără să depășească indicatorul. Din momentul în care viteza mașinii este redusă la zero, sistemul cedează prioritatea conducătorului auto. Același lucru se poate aplica și pentru semnul de „Cedează Trecerea” , doar că viteza autoturismului nu trebuie redusă la zero prin legislație ci trebuie redusă sub un prag astfel încât șoferul să realizeze încadrarea pe drumul cu prioritate în condiții de siguranță sau să acorde prioritate autoturismelor în deplasare pe respectivul drum. Pentru semnul „Acces Interzis” sistemul de frânare este activ tot timpul cât indicatorul este recunoscut de camera de filmat, reducând viteza la zero fără a depăși indicatorul. În momentul în care acesta nu se mai află în raza de acțiune sistemul cedează prioritatea conducătorului auto. Posibilitatea de deplasare mașinii fiind doar în direcțiile laterale sau reverse, desigur sistemul ar trebui să recunoască poziția roților și momentul în care este activat mersul înapoi al mașinii.
Un pas important în introducerea sistemului de „pilot automat” pe un autoturism este identificarea benzilor de pe carosabil, autoturismelor din trafic si viteza acestora. Comportarea mașinii trebuie adaptată pentru fiecare semn de circulație în parte. Pentru implementarea acestor blocuri necesită folosirea altor metode de prelucrare de imagine față de cele prezentate în capitolele anterioare.
Concluzii
Această lucrare prezintă o metodă eficientă de recunoașterea semnelor de circulație în timp real. Metoda folosește spațiul de culoare YCbCr pentru procesarea cadrelor extrase. Acest sistem are performanțe ridicate deoarece poate să identifice semnele din trafic chiar dacă poziția acestea este modificată. Semnalul video din care se preiau cadre este realizat la o rezoluție mică. Se folosesc modele de semne pentru detecție care au o rezoluție foarte mică și alte modele de semne pentru recunoaștere în care fiecare semn este salvat în trei sau mai multe poziții diferite simulând situațiile din trafic. Aceste modele ajută la creșterea vitezei de procesare a fiecărui cadru și pentru a obține performanțe ridicate.
Realizarea sistemului se poate face cu un cost relativ redus. Singurul inconvenient al sistemului este acela că în situația în care intensitatea luminoasă asupra unui cadru este foarte redusă, nu se realizează detecția semnului neputând să se facă distincția culorii semnului în imagine.
Acest sistem este foarte util conducătorului auto din multe puncte de vedere. Privind la statistici foarte multe accidente au loc datorită neatenției șoferului la semnele de circulație dar si uitării regulilor elementare de circulație. Implementând sistemul ar putea reduce foarte mult rata de accidente la nivel internațional, crescându-se siguranța la volan a conducătorului auto.
Sistemul a fost deja introdus si testat pe foarte multe mașini in ultimii cinci ani dar nu a dat rezultate foarte bune motiv pentru care a fost amânată aprobarea lui dea a fi introdus obligatoriu pe ultimele modele de pe piață. In urma testării multe semne nu au fost interpretate tocmai corect de sistem, punând in pericol viața șoferului. Deci această aplicație este în plină dezvoltare si necesită optimizare.
Bibliografie
[1] http://www.asirt.org/initiatives/informing-road-users/road-safety-facts/road-crash- statistics.aspx 04.06.2014
[2] http://www.evz.ro/semne-de-circulatie-acoperite-de-verdeata-849759.html 04.06.2014
[3] http://www.webcarblog.ro/sistemul-de-recunoastere-a-semnelor-de-circulatie/ 05.06.2014
[4] Gonzalez, A., Bergasa, L.M., Yebes, J.J., Text Detection and Recognition on Traffic Panels From Street-Level Imagery Using Visual Appearance, ITS(15), No. 1, February 2014, pp. 228-238. IEEE DOI Link 1403 Bayes methods BibRef
[5] Estevez, L.W., Kehtarnavaz, N., Autoassociative Segmentation for Real Time Object Recognition in Realistic Outdoor Images, JEI(7), No. 2, April 1998, pp. 378-385. 9807 BibRef
Earlier: A real-time histographic approach to road sign recognition,
Southwest96(95-100). BibRef
[6] Ching-Hao Lai „An Efficient Real-Time Traffic Sign Recognition System for Intelligent Vehicles with Smart Phones” Emerging Smart Technology Institute Institute for Information Industry Taipei, Taiwan, R.O.C.
[7] Jim Torresen, Jorgen W. Bakke , Lukas Sekanina: Efficient Recognition of Speed Limit Signs.
[8] Yangping Wang1, Jianwu Dang1 and zhengping Zhu2 : Traffic Signs Detection and Recognition by Improved RBFNN School of Electronic & Information Engineering, Lanzhou Jiaotong University Department of Computer Science, Lanzhou City University
[9] Practice Hall – Digital Image Procesing by Rafael C. Gonzalez/ 1.1 What Is Digital Image Processing?
[10] http://imag.pub.ro/ro/cursuri/archive/carte_pai.pdf
[ 11] Real Time Detection and Recognition of Indian Traffic Signs using Matlab
Huda Noor Dean, Jabir K.V.T
[12] http://crunchmodo.com/traffic-warning-sign-recognition-matlab-code/# în data de 20.03.2014
[13] Digital Image Processing,Second Edition; Rafael C. Gonzalez University of Tennessee Richard E. Woods MedData Interactive Prentice Hall, Capitolul 2.5
[14] Efficient Recognition of Speed Limit Signs Jim Torresen, Jorgen W. Bakke and Lukas Sekanina/ 1.Introduction
[15] Digital Image Processing,Second Edition; Rafael C. Gonzalez University of Tennessee Richard E. Woods MedData Interactive Prentice Hall, Capitolul 6
[16] ROAD SIGN RECOGNITION Daqing Li
[17] Recognition of Traffic Sign for Driver Assistance Systems 1S.Mohamed Al Ameen, 2V.Ganapathy
[18] Traffic and Road Sign Recognition Hasan Fleyeh
Anexe
Codul implementat în MATLAB; funcția main si BlobAnalzsis:
function main
readerobj = mmreader('stop1.avi');
vidFrames = read(readerobj);
numFrames = get(readerobj, 'numberOfFrames');
implay(vidFrames)
for k = 1 : numFrames-1
mov(k).cdata = vidFrames(:,:,:,k);
mov(k).colormap = [];
mov(k).cdata=blobAnalysis(mov(k).cdata);
vidFrames(:,:,:,k)=mov(k).cdata;
end
implay(vidFrames);
%% audio play files
% [y,Fs] = audioread('nume.fișier.wav');
% sound(y,Fs);
function x=blobAnalysis(a)
x=a;
a(:,:,1) = medfilt2(a(:,:,1), [3 3]);
a(:,:,2) = medfilt2(a(:,:,2), [3 3]);
a(:,:,3) = medfilt2(a(:,:,3), [3 3]);
[r c d]=size(a);
check=1;
i1=0;j1=0;
i2=0;j2=0;
%for k=1:1;
for i=1:r
for j=1:c
if(a(i,j,1)>125&&a(i,j,2)<90&&a(i,j,3)<90)
if(check)
i1=i;j1=j;
check=0;
else
i2=i;j2=j;
end
end
end
end
%end
i1=i1-2;
if(i1<1)
i1=1;
end
i2=i2+2;
if(i2>r)
i2=r;
end
if(c>500)
j1=j1-40;
else
if(r<150)
j1=j1-10;
else
j1=j1-30;
end
end
if(j1<1)
j1=1;
end
j2=j2+20;
if(j2>c)
j2=c;
end
i2-i1;
yieldtag=imread('cedeazatag.jpg');
stptag=imread('oprestetag2.jpg');
[r1 c1 d1]=size(stptag);
z=a(i1:i2,j1:j2,1:3);
z=rgb2gray(z);
z=im2double(z);
z=im2bw(z,0.5);
[row col]=size(z);
if(row~=0 && col~=0)
z=imresize(z, [18 18], 'nearest');
load vipwarningsigns_templates.mat;
for k=1:9
temp=template_recognition(:,:,k);
s(k)=corr2(temp,z);
end
mx=max(s);
ind=1;
for i=1:9
if(s(i)==mx)
ind=i;
end
end
if(isnan(s)==0)
if(i2-i1>20)
if(mx>0.15)
for l1=i1:i2
a(l1,j1,1)=255;
a(l1,j1,2)=255;
a(l1,j1,3)=0;
a(l1,j2,1)=255;
a(l1,j2,2)=255;
end
for l2=j1:j2
a(i1,l2,1)=255;
a(i1,l2,2)=255;
a(i1,l2,3)=0;
a(i2,l2,1)=255;
a(i2,l2,2)=255;
a(i2,l2,3)=0;
end
if(r<150)
%if(ind==7||ind==8||ind==9)
scalex=i2+r1-1;
scaley=j1+c1-1;
% size(a(i2:scalex,scaley:j1));
a(i2:scalex,j1:scaley,:)=yieldtag;
% [y,Fs] = audioread('cedeaza.wav');
% sound(y,Fs);
%end
else
%if(ind==1||ind==2||ind==3)
scalex=i2+r1-1;
scaley=j1-c1+1;
% size(a(i2:scalex,scaley:j1));
a(i2:scalex,scaley:j1,:)=stptag;
%
% [y,Fs] = audioread('stop.wav');
% sound(y,Fs);
% end
% end
end
end
end
end
end
x=a;
Bibliografie
[1] http://www.asirt.org/initiatives/informing-road-users/road-safety-facts/road-crash- statistics.aspx 04.06.2014
[2] http://www.evz.ro/semne-de-circulatie-acoperite-de-verdeata-849759.html 04.06.2014
[3] http://www.webcarblog.ro/sistemul-de-recunoastere-a-semnelor-de-circulatie/ 05.06.2014
[4] Gonzalez, A., Bergasa, L.M., Yebes, J.J., Text Detection and Recognition on Traffic Panels From Street-Level Imagery Using Visual Appearance, ITS(15), No. 1, February 2014, pp. 228-238. IEEE DOI Link 1403 Bayes methods BibRef
[5] Estevez, L.W., Kehtarnavaz, N., Autoassociative Segmentation for Real Time Object Recognition in Realistic Outdoor Images, JEI(7), No. 2, April 1998, pp. 378-385. 9807 BibRef
Earlier: A real-time histographic approach to road sign recognition,
Southwest96(95-100). BibRef
[6] Ching-Hao Lai „An Efficient Real-Time Traffic Sign Recognition System for Intelligent Vehicles with Smart Phones” Emerging Smart Technology Institute Institute for Information Industry Taipei, Taiwan, R.O.C.
[7] Jim Torresen, Jorgen W. Bakke , Lukas Sekanina: Efficient Recognition of Speed Limit Signs.
[8] Yangping Wang1, Jianwu Dang1 and zhengping Zhu2 : Traffic Signs Detection and Recognition by Improved RBFNN School of Electronic & Information Engineering, Lanzhou Jiaotong University Department of Computer Science, Lanzhou City University
[9] Practice Hall – Digital Image Procesing by Rafael C. Gonzalez/ 1.1 What Is Digital Image Processing?
[10] http://imag.pub.ro/ro/cursuri/archive/carte_pai.pdf
[ 11] Real Time Detection and Recognition of Indian Traffic Signs using Matlab
Huda Noor Dean, Jabir K.V.T
[12] http://crunchmodo.com/traffic-warning-sign-recognition-matlab-code/# în data de 20.03.2014
[13] Digital Image Processing,Second Edition; Rafael C. Gonzalez University of Tennessee Richard E. Woods MedData Interactive Prentice Hall, Capitolul 2.5
[14] Efficient Recognition of Speed Limit Signs Jim Torresen, Jorgen W. Bakke and Lukas Sekanina/ 1.Introduction
[15] Digital Image Processing,Second Edition; Rafael C. Gonzalez University of Tennessee Richard E. Woods MedData Interactive Prentice Hall, Capitolul 6
[16] ROAD SIGN RECOGNITION Daqing Li
[17] Recognition of Traffic Sign for Driver Assistance Systems 1S.Mohamed Al Ameen, 2V.Ganapathy
[18] Traffic and Road Sign Recognition Hasan Fleyeh
Anexe
Codul implementat în MATLAB; funcția main si BlobAnalzsis:
function main
readerobj = mmreader('stop1.avi');
vidFrames = read(readerobj);
numFrames = get(readerobj, 'numberOfFrames');
implay(vidFrames)
for k = 1 : numFrames-1
mov(k).cdata = vidFrames(:,:,:,k);
mov(k).colormap = [];
mov(k).cdata=blobAnalysis(mov(k).cdata);
vidFrames(:,:,:,k)=mov(k).cdata;
end
implay(vidFrames);
%% audio play files
% [y,Fs] = audioread('nume.fișier.wav');
% sound(y,Fs);
function x=blobAnalysis(a)
x=a;
a(:,:,1) = medfilt2(a(:,:,1), [3 3]);
a(:,:,2) = medfilt2(a(:,:,2), [3 3]);
a(:,:,3) = medfilt2(a(:,:,3), [3 3]);
[r c d]=size(a);
check=1;
i1=0;j1=0;
i2=0;j2=0;
%for k=1:1;
for i=1:r
for j=1:c
if(a(i,j,1)>125&&a(i,j,2)<90&&a(i,j,3)<90)
if(check)
i1=i;j1=j;
check=0;
else
i2=i;j2=j;
end
end
end
end
%end
i1=i1-2;
if(i1<1)
i1=1;
end
i2=i2+2;
if(i2>r)
i2=r;
end
if(c>500)
j1=j1-40;
else
if(r<150)
j1=j1-10;
else
j1=j1-30;
end
end
if(j1<1)
j1=1;
end
j2=j2+20;
if(j2>c)
j2=c;
end
i2-i1;
yieldtag=imread('cedeazatag.jpg');
stptag=imread('oprestetag2.jpg');
[r1 c1 d1]=size(stptag);
z=a(i1:i2,j1:j2,1:3);
z=rgb2gray(z);
z=im2double(z);
z=im2bw(z,0.5);
[row col]=size(z);
if(row~=0 && col~=0)
z=imresize(z, [18 18], 'nearest');
load vipwarningsigns_templates.mat;
for k=1:9
temp=template_recognition(:,:,k);
s(k)=corr2(temp,z);
end
mx=max(s);
ind=1;
for i=1:9
if(s(i)==mx)
ind=i;
end
end
if(isnan(s)==0)
if(i2-i1>20)
if(mx>0.15)
for l1=i1:i2
a(l1,j1,1)=255;
a(l1,j1,2)=255;
a(l1,j1,3)=0;
a(l1,j2,1)=255;
a(l1,j2,2)=255;
end
for l2=j1:j2
a(i1,l2,1)=255;
a(i1,l2,2)=255;
a(i1,l2,3)=0;
a(i2,l2,1)=255;
a(i2,l2,2)=255;
a(i2,l2,3)=0;
end
if(r<150)
%if(ind==7||ind==8||ind==9)
scalex=i2+r1-1;
scaley=j1+c1-1;
% size(a(i2:scalex,scaley:j1));
a(i2:scalex,j1:scaley,:)=yieldtag;
% [y,Fs] = audioread('cedeaza.wav');
% sound(y,Fs);
%end
else
%if(ind==1||ind==2||ind==3)
scalex=i2+r1-1;
scaley=j1-c1+1;
% size(a(i2:scalex,scaley:j1));
a(i2:scalex,scaley:j1,:)=stptag;
%
% [y,Fs] = audioread('stop.wav');
% sound(y,Fs);
% end
% end
end
end
end
end
end
x=a;
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Prelucrarea Semnalelor Video Pentru Recunoasterea Semnelor de Circulatie (ID: 163000)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
