Sunteți pe pagina 1din 27

Coordonator:

Conf.dr.ing.ec. Florin Codruț Nemțanu

2016-2017
2
CUPRINS
Introducere ................................................................................................................. 4
Definirea ipotezei de cercetare ................................................................................... 6
Definirea și elaborarea modelului – utilizare instrumente software de simulare și
modelare .................................................................................................................... 7
Descrierea algoritmului de urmărire a conturului prin baleiaj ................................... 7
Schema bloc funcțională ......................................................................................... 8
Achiziția datelor ....................................................................................................... 9
Îmbunătățirea imaginilor .......................................................................................... 9
Eliminarea zgomotelor ................................................................................... 10
Modificarea contrastului ................................................................................ 11
Segmentarea imaginilor ........................................................................................ 13
Segmentarea cu prag..................................................................................... 13
Operații cu șabloane ...................................................................................... 14
Analiza imaginilor .................................................................................................. 16
Clasificarea rezultatelor procesate și luarea deciziilor ........................................... 18
Stabilirea cerintelor pentru instrumentele necesare modelării .................................. 20
Cerințe funcționale ................................................................................................ 20
Design-ul sistemului .............................................................................................. 20
Unitatea de input ............................................................................................ 21
Unitatea de procesare ................................................................................... 21
Unitatea de control ......................................................................................... 24
Testarea modelului ................................................................................................... 24
Definirea pașilor viitori pentru dezvoltarea temei de cercetare ................................. 26
Bibliografie ............................................................................................................... 27

3
LISTA FIGURILOR:
Figura 1. Grafic de comparație între tipurile de vehicule ........................................................................ 5
Figura 2. Senzori montați pe mașină ...................................................................................................... 6
Figura 3. Principiul de detectare al conturului Radial Sweep ................................................................. 7
Figura 4. Schemă bloc funcțională a detecției semnelor de circulație .................................................... 8
Figura 5. Tipuri de vecinătate a pixelului central .................................................................................. 11
Figura 6. Reducerea zgomotului dintr-o imagine .................................................................................. 11
Figura 7. Egalizarea de histogramă ...................................................................................................... 11
Figura 8. Algoritmi de egalizare a histogramei...................................................................................... 13
Figura 9. Procedeu de binarizarea ........................................................................................................ 13
Figura 10. Delimitarea pragului pentru egalizare .................................................................................. 14
Figura 11. Șabloane de vecinătăți ale pixelului curent ......................................................................... 14
Figura 12. Proces de deschidere .......................................................................................................... 15
Figura 13. Procedee de corectare a caracterelor ................................................................................. 15
Figura 14. Determinarea semnelor rutiere ............................................................................................ 16
Figura 15. Schemă simplificată clasificare obiect ................................................................................. 18
Figura 16. Citirea semnelor rutiere la bordul autovehiculului ................................................................ 19
Figura 17. Model practic ........................................................................................................................ 20
Figura 18. Detecția obiectului din fața mașinii ...................................................................................... 21
Figura 19. Interpretarea inputurilor in OpenCV ..................................................................................... 21
Figura 20. Rețeaua neurală a valorilor drumului ................................................................................... 22
Figura 21. Determinarea direcției .......................................................................................................... 22
Figura 22. Antrenarea bazei de date pentru recunoașterea obiectelor țintă ........................................ 23
Figura 23. Telecomanda conectată la Arduino ..................................................................................... 24
Figura 24. Recunoașterea semnelor de circulație ................................................................................ 24
Figura 25. Distanță detectare semn STOP ........................................................................................... 25
Figura 26. Model de simulare: Drum, semafor, vehicul oprit în față ..................................................... 25

4
INTRODUCERE

În 1885 Karl Benz inventează primul automobil din lume. Mai târziu în același
an, expune publicului invenția sa și după doar câțiva metri, intră într-un zid. În ultimii
130 de ani s-a pus tot mai mult accentul pe siguranța conducătorului și a
pasagerului. Autovehiculele au devenit mai rezistente, au apărut centurile, au fost
lansate air-bag-urile, iar în ultimul deceniu s-a introdus din ce în ce mai mult partea
inteligentă (sau inteligența artificială), ce are ca scop corectarea principalului factor
de accidente rutirere: șoferul.

Inteligența artificială reprezintă o activitate de


cercetare ce presupune copierea acțiunilor creierului uman
în interiorul unei mașini, ca aceasta să poată lua anumite
decizii în anumite condiții în locul șoferului. Termenul de
inteligență artificială este luat în calcul adesea în momentul
în care o mașină încearcă să reproducă funcții ”cognitive” pe
care creierul uman le asociază cu alte minți umane, precum
”învățatul” sau ”rezolvarea problemelor”. Cu cât mașinile
devin mai capabile, mai performante, proprietatea de inteligență artificială este tot
mai diminuată. De exemplu, pentru recunoașterea optică a semnelor de circulație, o
mașinărie va rula doar o rutină ce va realiza acest lucru, nefiind capabilă să
îndeplinească și alte tipuri de aplicații. De aceea, un sistem de inteligență artificială
este un sistem complex, format din mai multe subsisteme ce încearcă să-și
îndeplinească cât mai bine, fiecare în dreptul său, respectiva subrutină cu care
lucrează, iar acest lucru este un plus enorm adus în industria transporturilor,
deoarece aceste sisteme ne ajută să fim mai în siguranță. Însă, unii oameni
consideră AI (Artificial intelligence) drept un pericol pentru umanitate dacă va
progresa necontrolat în viitor. Cercetarea acestui domeniu de Inteligență artificială
este divizată pe subcategorii ce se concentrează pe probleme specifice sau pe
apropieri specifice, ori folosesc tool-uri particulare în vederea satisfacerii unor
aplicații specifice, ca în cazul nostru, sistemele inteligente de transport sau
vehiculele asistate/vehiculele autonome.

Principalul scop al acestor tehnologii este siguranța călătorilor, iar pentru


aceasta, pe lângă sistemele clasice ITS ce se bazează pe optimizarea infrastructurii,
există în ziua de astăzi tot mai
multe automobile asistate de
tehnologie, sau chiar vehicule
autonome, ce se conduc
singure fără niciun fel de
problemă, recudând drastic
numărul accidentelor cu
cauze umane.

Figura 1. Grafic de comparație între tipurile de vehicule

5
DEFINIREA IPOTEZEI DE CERCETARE

Lucrarea de față are ca scop descrierea tehnologiilor de prelucrare a imaginii


în vederea implementării unui sistem de recunoaștere și interpretare a semnelor și
panourilor de circulație de pe marginea drumului la bordul vehiculelor rutiere, acesta
fiind un pas cheie în exploatarea tehnologiilor pentru dezvoltarea vehiculelor
autonome.

Detecția și recunoașterea automată a semnelor și panourilor rutiere reprezintă


un domeniu provocator, cu un număr mare de arii de aplicare, printre care regăsim
sistemele de conducere asistată, supravegherea video a traficului, sau vehiculele
autonome. Sistemul propus cuprinde două mari etape, menționate de asemenea
anterior: etapa de detecție și etapa de recunoaștere. Detecția constă în definirea
regiunilor de căutare a semnelor de circulație, detectarea posibililor candidați,
reducerea numărului de elemente rutiere la constrângeri contextuale privind
regiunea, și compararea rezultatelor din frame-ul curent, cu cele capturate în cadrele
precedente. Recunoașterea presupune îndeplinirea următorilor pași: corecția de
perspectivă (în cazul în care semnele sunt colectate dintr-un unghi oblic), detectarea
caracterelor text, formelor semnelor de circulație, sau culorii semafoarelor,
transpunerea în text sau în obiecte cu formă cunoscută, compararea acestora cu
elemente stocate într-o bază de date, și obținerea output-ului dorit.

În capitolul următor se va descrie procedeul prin care informațiile cu privire la


panourile rutiere sau semafoare sunt colectate de o cameră video, apoi procesate în
vederea furnizării unor informații de siguranță la bordul vehiculului. În sistemele
moderne ce se implementează pe vehiculele autonome, acest pas este unul
esențial, având în vedere că detecția video este principala tehnologie de colectare a
datelor în astfel de sisteme.

După aceea se va descrie o aplicație software ce are ca obiectiv simularea


unui vehicul autonom ce îndeplinește următoarele trei funcții:

 Vehiculul se va conduce singur;


 Vehiculul va detecta semnele de
circulație și va acționa în consecință;
 Vehiculul va fi capabil să frâneze la
timp, în vederea evitării coliziunilor.

Figura 2. Senzori montați pe mașină

6
DEFINIREA ȘI ELABORAREA MODELULUI – UTILIZARE INSTRUMENTE SOFTWARE DE
SIMULARE ȘI MODELARE

Pentru dezvoltarea unei aplicații de urmărire a unor obiecte, precum


recunoașterea semnelor și panourilor rutiere de pe marginea drumului, va fi descris
pe scurt un algoritm de detecție a semnelor ce este un algoritm de segmentare prin
urmărirea conturului intitulat Radial sweep, folosind Criteriul de oprire Jacob pentru
îmbunătățirea alboritmului. În cele ce urmează se va descrie funcționalitatea
algoritmului, după care se va exemplifica procesul de detecție a indicatoarelor rutiere
și luarea deciziilor la bordul vehiculului, fie autonom, de către vehicul, în situațiile
critice, fie de către conducătorul vehiculului.

DESCRIEREA ALGORITMULUI DE URMĂRIRE A CONTURULUI PRIN BALEIAJ

Algoritmul de baleiaj radial (Radial Sweep) reprezintă un alt algoritm de


urmărire a conturului, care deși are un nume mai aparte, are la bază o idee simplă.
Acest agloritm este identic cu cel prezentat anterior, Moore-Neighbor, dar diferă prin
anumite particularități.

Algoritmul de urmărire Moore-Neighbor caută vecinătatea lui Moore pentru


pixelul curent într-un sens ales, până găsește un pixel negru (sau un pixel de
interes). Apoi declară pixelul ca pixel curent al conturului și continuă să reia
algoritmul.

Algoritmul de baleiaj radial face cam același lucru, însă metoda este puțin
diferită: de fiecare dată când se localizează un nou pixel al conturului, acesta devine
pixel curent, P, și se trasează un segment imaginar ce unește pixelul P cu pixelul
anterior. De aici, segmentul se va roti în jurul pixelului P în sensul acelor de
ceasornic până când ”lovește” următorul pixel negru din vecinătatea Moore a
pixelului P. Rotirea segmentului este asemănătoare cu verificarea fiecărui pixel din
vecinătatea Moore a pixelului P.

Figura 3. Principiul de detectare al conturului Radial Sweep

CRITERIUL DE OPRIRE 1
Până în acest punct, algoritmul Radial Sweep are același rezultat ca
algoritmul Moore-Neighbor. Diferența constă în criteria de oprire a algoritmului.

Prima metodă de oprire a algoritmului prezintă aceeași problemă ca la Moore-


Neighbor, însă aceasta poate fi optimizată prin folosirea criteriul de oprire Jacob.

7
Pentru a ne aminti, criteriul de oprire Jacob încheie un algoritm dacă pixelul de start
este vizitat în aceeași manieră (în aceeași direcție) ca și prima dată. Dar din moment
ce algoritmul de baleiaj radial nu are definit termenul ”direcție”, acesta nu va putea fi
folosit aici.

CRITERIUL DE OPRIRE 2

Să presupunem că de fiecare dată când un nou pixel al conturului este găsit,


Pi, acesta este introdus într-o secventă de pixeli de contur, precum: P1, P2, P3, ..., Pi,
și este declarat pixel curent. (P1 fiind pixel de start).

Astfel, se va ști pixelul de contur anterior Pi-1 al fiecărui pixel curent Pi.

Cu presupunerile de mai sus, putem defini criteriul de oprire: Algoritmul se


termină când:

 Pixelul de contur curent Pi a apărut anterior ca pixel Pj (unde j<i) în secvența


pixelilor de contur
ȘI

 Pi-1 = Pj-1
Cu alte cuvinte, algoritmul se sfârșește când un pixel de contur este întâlnit
pentru a doua oară, ultimul pixel fiind pixelul anterior pixelului ce a fost întâlnit a
doua oară.

SCHEMA BLOC FUNCȚIONALĂ

O astfel de aplicație complexă de interpretare a imaginii și decizionare pe


baza rezultatelor se poate implementa prin urmărirea unei scheme funcționale ca
cea prezentată mai jos:

Figura 4. Schemă bloc funcțională a detecției semnelor de circulație

8
ACHIZIȚIA DATELOR

Pentru colectarea imaginilor, sistemul folosește o cameră de rezoluție înaltă


(High Resolution) amplasată în interiorul mașinii, în spatele oglinzii retrovizoare. O
cameră video pentru astfel de aplicații nu are rol doar de senzor, ci și de digitalizare
a imaginii. Cum tehnologia avansează foarte repede, acest lucru poate fi făcut de
orice cameră video din zilele noastre. Astfel, imaginea reală -3D- este captată de
camera video și va suferi un proces de proiecție 2D. Datorită faptului că senzorul de
captare al imaginilor este unul de ultimă generație, acesta va avea ca funcție
standard și un senzor infraroșu, astfel că indiferent de nivelul intensității luminoase,
camera va putea detecta ceea ce se află în fața mașinii.

În astfel de aplicații, de regulă nu se folosesc camere video ce extrag


informație RGB, deoarece această informație este în majoritatea cazurilor irelevantă,
ci se va folosi un senzor ce va capta informația astfel încât la ieșirea din acest bloc
funcțional, unitatea de procesare și imbunătățire a imaginilor va avea ca input
imagini în tonuri de gri.

ÎMBUNĂTĂȚIREA IMAGINILOR

Există numeroase tehnici de îmbunătățire a imaginilor capturate de o cameră


de luat vederi. Cele mai multe din acestea, aplică metode matematice pentru
înlăturarea zgomotelor, îmbunătățirea contrastului sau accentuarea muchiilor.

Îmbunătățirea imaginilor este o sintagmă generală ce se referă la o clasă


largă de operații al căror scop este mărirea detectabilității componentelor imaginii.
Detectabilitatea componentelor este legată mai mult de percepția vizuală a unui
observator uman decât de o analiză automată cantitativă. Percepția vizuală de
referință este cea a unui expert uman în domeniul aplicației din care provine
imaginea.

Principiul (aproape unanim acceptat) este că îmbunătățirea calității unei


imagini se face fără a lua în considerare nici o informație asupra imaginii originale
sau asupra procesului de degradare (prin care imaginea nu este suficient de bună).
Conform acestui punct de vedere chiar și o imagine originală (nedegradată) poate fi
îmbunătățită, obținând o imagine falsificată, dar subiectiv preferabilă.

În general, calitatea subiectivă a unei imagini poate fi apreciată pe baza


contrastului sau accentuării elementelor de contur (muchii, frontiere, linii, margini) și
pe baza netezimii în regiunile uniforme. Creșterea uniformității regiunilor este însă
asimilată eliminării unui eventual zgomot suprapus imaginii, operație denumită în
mod clasic filtrare.

Din punctul de vedere al metodelor utilizate, putem distinge mai multe tipuri
de operații de îmbunătățire:

9
 operații punctuale, prin care se realizează o corespondență de tip “unu la unu”
între vechea valoare a nivelului de gri și noua valoare a acestuia, pentru
fiecare pixel al imaginii. Tot în acestă categorie vom include și operațiile de
pseudocolorare, care se referă la afișarea imaginii folosind o paletă de
culoare modificată.
 operații locale (sau de vecinătate), prin care noua valoare a nivelului de gri
într-un pixel este obținută din vechea valoare a pixelului repectiv și din valorile
unor pixeli vecini pixelului considerat.
 operații integrale, în care noua valoare a unui pixel este dependentă de
valorile tuturor pixelilor imaginii
Eliminarea zgomotelor

Tehnicile spaţiale de eliminare a zgomotelor se remarcă prin simplitate, ceea


de duce la posibilitatea unor implementări hardware în timp real. Ele se bazează pe
folosirea aşa-numitelor măşti de convoluţie care, în esenţă, realizează înlocuirea
valorii fiecărui pixel cu o combinaţie liniară a valorilor pixelilor dintr-o vecinătate a
pixelului curent.

Pentru a exemplifica un filtru de mediere, vom da următorul exemplu: pentru


fiecare vecinătate de pixeli (3x3, 5x5, 7x7), pixelul central se înlocuiește cu o
combinație liniară a pixelilor din vecinătate:
1
𝑃̃(𝑖, 𝑗) = 𝑘 ∑1𝑚=−1 ∑1𝑛=−1 𝑀(𝑚, 𝑛) ∗ 𝑃(𝑖 + 𝑚, 𝑗 + 𝑛), unde 𝑀(𝑚, 𝑛) poate fi:

Asemenea tip de filtre se pot rafina astfel încât sănu fie afectaţi de operaţia de
mediere pixelii situaţi pe muchii. Un operator pentru detecţie de muchii (mască)
poate indica prezenţa şi direcţia unei muchii în imagine. În absenţa muchiei, se
aplică filtrul de eliminare a zgomotelor pentru toţi pixelii din vecinătate, în caz contrar
doar pentru pixelii situaţi de o parte şi de alta a muchiei, cunoscând direcţia ei. De
asemenea se pot utiliza măşti de mediere pentru toţi pixelii, însă având coeficienţii
corelaţi cu datele furnizate de detectorul de muchii.

Medierea cu prag realizează compararea fiecărui pixel cu media vecinilor lui,


medie ce poate fi calculată printr-o convoluție cu masca M4. Modificarea pixelului
curent se face doar dacă este îndeplinită o condiție de prag:

10
Dacă [ 𝑓(𝑥, 𝑦) − 1/8 ∑8𝑖=1 𝑣𝑖 (𝑥, 𝑦)] > 𝜃 , atunci 𝑓(𝑥, 𝑦) = 1/8 ∑8𝑖=1 𝑣𝑖 (𝑥, 𝑦) .

Pe lângă medierea cu prag există și filtre spațiale mai aparte, ce au rolul de


filtre mediane, la care pixelul central are o vecinătate de forma:

Figura 5. Tipuri de vecinătate a pixelului central

Trebuie de menţionat proprietatea filtrelor mediane de a nu altera semnificativ


colţurile şi muchiile obiectelor din imagine. Filtrarea mediană necesită ordonarea
pixelilor din vecinătate, ceea ce înseamnă un număr destul de mare de operaţii.

Figura 6. Reducerea zgomotului dintr-o imagine

Modificarea contrastului

Îmbunătățirea contrastului se realizează cel


mai simplu prin operații ce au la bază modificarea
asupra histogramei.

Fie o imagine de f de M x N pixeli, cu L nivele


de gri, histograma este definită ca probabilitatea de
apariție în imagine a diferitelor nivele de gri posibile.

Egalizarea de histogramă își propune să furnizeze la


ieșire o imagine având o utilizare relativ univormă a
nivelelor de gri:
Figura 7. Egalizarea de histogramă

11
𝑀𝑁
𝐻𝑒(𝑧) = , unde M, N sunt dimensiunile imaginii.
𝑆

Se remarcă următoarele situații:

 Nivelele de gri ”slab reprezentate” din histograma inițială din intervalul [m,n],
capătă prin egalizare nivelul de gri unic ”r” în histograma egalizată;
 Nivelul de gri ”k”, care este ”bine reprezentat” în histograma inițială, va fi
reprezentat printr-un interval [p,q] în histograma egalizată.
Se poate adopta unul din următorii algoritmi pentru nivelul de gri ”k”:

o Pixelii din imaginea iniţială având nivelul de gri "k" capătă după
egalizare nivelul de gri (p+q)/2; histograma nu rezultă perfect plată, dar
efortul de calcul este minim;
o Pixelilor din imaginea inițială li se atribuie un nivel de gri aleator în
intervalul [p,q]; efortul de calcul rămâne destul de mic, histograma
rezultă aproximativ plată, dar apare un zgomot care se suprapune
peste imagine;
o Nivelul de gri atribuit pixelilor din imaginea iniţială se corelează cu
nivelul de gri al vecinilor lui, astfel:

12
Figura 8. Algoritmi de egalizare a histogramei

SEGMENTAREA IMAGINILOR

După procesele de îmbunătățire sau nivelare și


egalizare a imaginii, se trece la pasul de binarizare a
acesteia. Este necesar ca imaginile să fie aduse la o
formă cât mai idealizată, pentru a extrage informațiile
de care o aplicație are nevoie.

În figura alăturată este afișat un frame al unei


camere de luat vederi, în care imaginea de la intrare
a fost mai întâi trecută în tonuri de gri, apoi netezită,
după care a suferit un proces de nivelare/contrastare,
urmând ca în sfârșit aceasta să fie binarizată prin
aplicarea unui proces de segmentare cu prag.

Segmentarea cu prag

Segmentarea cu prag poate fi realizată prin


stabilirea interactivă sau automată a pragului.
Stabilirea automată a pragului are la bază
minimizarea probabilistică a erorii de clasificare a
pixelilor în pixeli de fond şi pixeli obiect.

Fie:

P1 = Probabilitatea apriori ca un pixel să fie


pixel obiect;

P2 = Probabilitatea apriori ca un pixel să fie


pixel de fond;

p1(z) = densitatea de probabilitate a variabilei


aleatoare ataşată pixelilor obiect;

p2(z) = densitatea de probabilitate a variabilei


aleatoare ataşată pixelilor obiect.

1 −(𝑧 − 𝑚1 )2
𝑝1 (𝑧) = 𝑒𝑥𝑝
𝛿√2𝜋 𝛿2
Figura 9. Procedeu de binarizarea
1 −(𝑧−𝑚2 )2
𝑝2 (𝑧) = 𝑒𝑥𝑝
𝛿√2𝜋 𝛿2

13
Unde 𝑚1 , 𝑚2 , 𝛿 sunt mediile şi respectiv dispersia celor două variabile
aleatoare, în ipoteza că, deoarece zgomotul afectează în mod egal toţi pixelii din
imagine, dispersiile corespunzătoare
fondului şi obiectelor sunt egale.

În figura anterioară E1(T) și E2(T)


sunt erorile de probabilitate ca un pixel fond
să fie clasificat drept pixel obiect (negru), şi
eroarea de probabilitate ca un pixel obiect
să fie clasificat drept pixel fond (alb) prin
segmentare.

Dacă însă pagina scanată conţine


text cu o densitate mică a caracterelor sau
fonturi foarte subţiri, raportul 1 2 P / P devine
foarte mic, lobul histogramei corespunzător
caracterelor se diminuează foarte mult şi metoda
precedentă poate da rezultate nesatisfăcătoare.
Criteriul alegerii pragului T la 2.5δ faţă de nivelul
de gri pentru care se atinge valoarea maximă în
histogramă poate rezolva această situaţie
mulţumitor. Rezultate oarecum similare se obţin
fixând pragul T astfel încât proporţia de pixeli negri
şi albi să fie cât mai apropiată de o valoare aprioric
stabilită (în jur de 90%). Figura 10. Delimitarea pragului pentru egalizare

Operații cu șabloane

După determinarea pragului histogramei sunt necesare încă 2-4 procese, prin
care imaginea binarizată este retușată pentru corectarea golurilor din caractere.
Operaţiile cu şabloane fac parte din categoria operatorilor morfologici şi permit
transformări ale imaginilor binare bazate pe relaţiile geometrice de conectivitate ale
pixelilor din imagine. Șabloanele sunt vecinătăţi ataşate pixelului curent. Ele pot
avea una din următoarele forme:

Figura 11. Șabloane de vecinătăți ale pixelului curent

14
Erodarea (contractarea, comprimarea)
unei imagini se defineşte ca fiind mulţimea
pixelilor aparţinând obiectului S care prezintă
proprietatea că şablonul ataşat lor este inclus în
obiectul S. Erodarea face ca din obiectele negre
aflate într-o imagine cu fundal alb, să fie
”mâncat” un pixel de jur împrejurul acestora.

Dilatarea (expandarea) unei imagini este Figura 12. Proces de deschidere


formată din mulţimea pixelilor obiectului S la
care se adaugă acei pixeli din fond al căror şablon intersectează obiectul.

Deschiderea unei imagini este o operaţie de erodare urmată de o dilatare cu


acelaşi şablon (cum se arată în figura de mai sus).

Închiderea unei imagini este obţinută printr-o dilatare urmată de o erodare


folosind acelaşi şablon.

Exemplu, pentru un caracter:

Figura 13. Procedee de corectare a caracterelor

Operatorii închidere şi deschidere se aplică la concatenarea obiectelor


fragmentate şi respectiv separarea obiectelor atinse. Fără a fi un panaceu, aceşti
operatori se dovedesc a fi utili în multe situaţii.

15
ANALIZA IMAGINILOR

Așa cum am descris anterior,


în capitolul al doilea, imaginile ce au
trecut de procesul de segmentare
vor fi procesate astfel încât
informația din interiorul lor să poată fi
separată în obiecte diferite, cum ar fi
recunoașterea doar a semnelor ce
circulație și selectarea acestora
pentru pasul următor, și anularea
informațiilor de fundal, ce nu au
relevanță în studiul respectiv. Figura 14. Determinarea semnelor rutiere

Pentru selectarea obiectelor din imaginea respectivă este nevoie ca


întâi să fie extrase conturele acestora. Acest procedeu se va realiza cu algoritmul de
urmărire contur Radial Sweep, sau algoritmul de baleiaj radial, la care vom folosi al
doilea criteriu de oprire ce subliniază faptul că algoritmul se sfârșește când un pixel
de contur este întâlnit pentru a doua oară, ultimul pixel fiind pixelul anterior pixelului
ce a fost întâlnit a doua oară.

Plecând de la presupunerea că imaginea capturată reprezintă un semn de


STOP, în continuare se va face o mică demonstrație a funcționalității algoritmului:

1. Imaginea de interes, după procesele de


prelucrare și binarizare a imaginii (s-a ales o
imagine color pentru impactul vizual mai mare
ce îl oferă în scopuri teoretice față de o
imagine alb-negru)

2. Începerea căutării conturului obiectului de


interes, prin parcurgerea matricei imaginii
baleiaj coloană cu coloană, de sus în jos, de
la dreapta la stânga, până la întâlnirea unui
pixel de start (pixel curent de contur):

16
3. Aplicarea algoritmului de baleiaj radial pentru
extragerea conturului. Se marchează pixelul
de start, și se începe căutarea radială în jurul
pixelului curent din ultimul pixel alb înainte de
intrarea în contur, în sensul acelor de
ceasornic, până la întâlnirea noului pixel de
contur:

4. După întâlnirea celui de-al doilea pixel de


contur, acesta devine pixel curent, și se reia
algoritmul radial pentru căutarea următorului
pixel de contur, după trasarea unei linii
imaginare între pixelul curent și pixelul
anterior:

5. Se repetă algoritmul până la determinarea


completă a conturului, când criteriul de oprire
al algoritmului anunță faptul că pixelul de start
a devenid din nou pixel curent.

După terminarea algoritmului de detecție al


conturului nu rămâne altceva de făcut decât să se
compare rezultatul găsit cu anumite pattern-uri dintr-o
bază de date. În plus, noile obiecte găsite vor antrena
respectiva bază de date pentru recunoaștere mai rapidă pe viitor a unui astfel de
obiect.

17
CLASIFICAREA REZULTATELOR PROCESATE ȘI LUAREA DECIZIILOR

Procesul de clasificare al rezultatelor se referă la compararea obiectului


procesat de algoritmii prezentați mai sus cu anumite clase de obiecte memorate într-
o bază de date și determinarea
deciziilor ce trebuiesc luate după
această comparație.

Pentru a face un rezumat a


ceea ce am prezentat până acum, să
privim imaginea alăturată:

După ce imaginile capturate de


un senzor în lumea reală sunt
procesate prin diferite metode în Figura 15. Schemă simplificată clasificare obiect
funcție de aplicabilitate, se observă
cum obiectele de interes sunt extrase, pentru ca apoi să poată fi utilizate în două
moduri: primul scop în care sunt utilizate obiectele îl reprezintă compararea acestora
cu clasele de obiecte deja existente în vederea luării unei decizii, iar al doilea scop
este de a ”antrena” baza de date cu noi patternuri ale clasei respective, în vederea
lărgirii rezultatelor standard pentru clasa respectivă și rapiditatea calculării obiectului
respectiv la viitoarele apariții. Cu alte cuvinte, clasificarea propriu-zisă furnizează la
ieşire decizia de apartenenţă a fiecărui obiect la
una din clasele posibile.

În cazul aplicației de recunoaștere a


semnelor de circulație de pe marginea străzii,
atunci când mașina va avea un semn de circulație
în frontul vizual al camerei montate în spatele
oglinzii retrovizoare, camera va capta o imagine,o va procesa, va determina
obiectele de interes, iar pe baza algoritmului de extracție al conturului, va compara
obiectul respectiv cu ceea ce are în baza de date și va lua o decizie în acest sens.

Spre exemplu, dacă la 50 de metri în fața mașinii se află un semn de STOP,


luarea deciziei se ia doar pe baza definirii conturului semnului de circulație respectiv,
care este definit ca un hexagon. După clasificarea obiectului, semnul de STOP va fi
prezent la bordul autovehiculului, iar în cazul în care șoferul nu este atent la drum,
sau nu are timp să reacționeze, mașina va frâna automat.

În cazul în care semnul de pe marginea drumului este un semn de reducere a


vitezei, de exemplu 50 km/h, în urma segmentării cu prag va fi nevoie de rularea
algoritmului de extracție de 3 ori:

 Algoritmul 1 va determina forma semnului de circulație, care este un cerc de


culoare închisă;

18
 Algoritmul 2 va deciziona dacă în interiorul primului cerc va mai exista un cerc
de culoare deschisă (alb);
 Algoritmul 3 va determina conturul cifrelor sau semnelor (în cazul unui semn
de depășire interzisă, spre exemplu, care se află tot în interiorul a 2 cercuri
concentrice), pentru a determina restricția de viteză 50.
La finalizarea primilor doi algoritmi, obiectul va fi înscris la clasa de semne de
circulație de au contur un cerc, în interiorul căruia se mai găsește un alt cerc. După
rularea algoritmului 3, semnul va fi clasificat ca un semn de reducere a vitezei la
50km/h și acesta va fi afișat la bordul vehiculului. În cazul unor astfel de semne,
mașina nu frânează singură, dar va furniza o alertă la bordul vehiculului.

Figura 16. Citirea semnelor rutiere la bordul autovehiculului

19
STABILIREA CERINTELO R PENTRU INSTRUMENTELE NECESARE MODELĂRII

CERINȚE FUNCȚIONALE

Pentru punerea în practică a unui astfel de sistem de recunoaștere a


semnelor de circulație prin algoritmi de procesare a imaginii, este nevoie de
realizarea unei aplicații. În această lucrare a fost aleasă o aplicație de simulare a
unui vehicul autonom ce trebuie să îndeplinească următoarele cerințe funcționale:

 Vehiculul trebuie să fie capabil să se conducă singur în funcție de delimitarea


părții carosabile;
 Vehiculul trebuie să fie capabil să detecteze, recunoască și să acționeze pe
baza semnelor și semafoarelor rutiere;
 Vehiculul trebuie să includă o funcție de frânare în situații de urgență, în cazul
în care în fața acestuia se află un alt vehicul sau un alt obiect;

DESIGN-UL SISTEMULUI

Sistemul este compus din 3 subsisteme:

 Unitatea de input (cameră video, senzor ultrasonic);


 Unitatea de procesare (calculator);
 Unitatea de control a vehiculului.

Simularea va folosi o mașinuță


telecomandată (ca cea din imaginea alăturată) ce
va capta informații de la o cameră video și de la
un senzor ultrasonic montate pe aceasta,
informații ce vor fi transmise wireless către o
unitate de procesare (un calculator). După
procesarea imaginii cu ajutorul anumitor tool-uri
software, unitatea de control, reprezentată de un Figura 17. Model practic
cip Arduino conectat la telecomanda mașinuței, va
transmite către respectivul vehicul informații de mișcare, iar mașina se va deplasa,
va staționa, sau va vira conform informațiilor citite de aceasta. În continuare se vor
descrie mai pe larg cele 3 subsisteme ale proiectului practic.

Notă!

Pentru vizualizarea simulării video, se poate scana codul


QR atașat, sau se poate accesa pagina:

https://www.youtube.com/watch?v=BBwEF6WBUQs

(OpenCV Python Neural Network Autonomous RC Car)

20
Unitatea de input

Din punct de vedere al componentelor hardware utilizate, sistemul atașat pe


mașină este format dintr-un Raspberry Pi model B+, ce are atașat un modul Pi
Camera și un senzor SR04 ultrasonic, cele două din urmă fiind folosite pentru
colectarea datelor. Două programe client
rulează pe Raspberry Pi, pentru a transmite
către calculator prin intermediul Wi-Fi imagini
video color și datele colectate de ultrasenzorul
din partea frontală a mini-vehiculului. În
vederea asigurării unei comunicații de
întârziere mică în streamingul video, rezoluția
camerei a fost scăzută la QVGA (320x240

Figura 18. Detecția obiectului din fața mașinii


pixeli).

Unitatea de procesare

Unitatea de procesare
(calculatorul) îndeplinește mai
multe taskuri: primește date de
la Raspberry Pi via Wi-Fi,
antrenează și prezice rețeaua
neurală în vederea îndeplinirii
funcției de viraj a
autovehiculului, detectează
obiecte, precum semnul de
STOP și semaforul, măsoară
distanța dintre vehicul și obiect, Figura 19. Interpretarea inputurilor in OpenCV
și trimite informații către un
modul Arduino, via USB.

Serverul TCP
Un program de server TCP multithread rulează pe computer pentru a primii
imaginile live în frame-uri și informațiile de distanță de la Raspberry Pi. Imaginile
primite sunt convertite în tonuri de gri și sunt decodate în matrice numerice, asa cum
s-a explicat în capitolul anterior. Prelucrarea imaginilor în tonuri de gri se face mult
mai rapid, deci este mai eficientă, decât prelucrarea imaginilor brute, colorate.

Rețeaua neurală
Un avantaj în folosirea rețelei neurale îl constituie faptul că după ce rețeaua
este antrenată, este necesar după aceea să se folosească doar parametrii antrenați,

21
predicție ce face ca procesul să fie foarte rapid. Doar jumătatea de jos a imaginii
input va fi folosită pentru antrenare și predicție. Se creează astfel 38400 (320x120)
de noduri în stratul de input și 32 de noduri în stratul intermediar (sau ascuns).

Figura 20. Rețeaua neurală a valorilor drumului

Numărul de noduri din stratul ascuns se alege arbitrar.

La ieșirea rețelei se vor găsi 4 noduri, astfel încât fiecare nod corespunde
uneia din direcțiile de deplasare ale vehiculului: Stânga (Left), Dreapta (Right),
Înainte (Forward) și Înapoi (Reverse).

Mai jos se poate vedea procesul de colectare a datelor antrenante. Pentru


început, fiecare frame este trunchiat și transformat într-o matrice numerică. După
care, matricea culeasă este comparată cu o matrice definită de utilizator. Rețeaua
neurală este antrenată în OpenCV, ce utilizează o metodă de propagare înapoi.
Când antrenarea este gata, rezultatele sunt salvate într-un fișier XML. Pentru a
genera preziceri, aceeași rețea neurală este construită și încărcată cu fișierul XML
antrenat.

Figura 21. Determinarea direcției

22
Detecția obiectului
În această aplicație se folosește abordarea bazată pe forma obiectelor și
clasificatoarele Haar pentru clasificarea obiectelor. Se vor testa pentru ușurință doar
semnul STOP și un semafor.

Software-ul OpenCV are rol atât de trainer, cât și de detector. Eșantioanele


pozitive (ce contin obiectul țintă) au fost colectate utilizând un smartphone și sunt
trunchiate (croppate) pentru a fi afișat doar obiectul de interes. Eșantioanele
negative au fost culese la întâmplare.

Figura 22. Antrenarea bazei de date pentru recunoașterea obiectelor țintă

Pentru a face diferența de culoarea semaforului (roșu sau verde), o procesare


de imagine este necesară; următorii pași trebuiesc urmați: Detectare în cascadă
Haar  Filtru Gaussian  Punct luminous  Validare, pentru a determina Regiunea
de interes (ROI = Region of Interest).

Măsurarea distanței
Această aplicație urmărește modelul geometric pentru detectarea distanței
față de un obiect folosind viziunea monoculară propusă de Chu, Ji, Guo, Li și Wang
(2004).

P – punct al obiectului țintă;

23
d – distanța dintre centrul optic și punctul P;

a – unghiul de înclinație al camerei;

h – înălțimea centrului optic.

Unitatea de control

Mașina teleghidată folosește un controller de tip comutator ON/OFF. Atunci


când un buton este apăsat, rezistența dintre pinul relevant al cipului și masă devine
zero. În cazul acesta, un modul Arduino este folosit pentru a simula apăsarea
butoanelor. 4 dintre pinii modulului Arduino au fost conectați la cele 4 direcții pe care
le poate lua mașina: Înainte, înapoi, stânga și dreapta.

Figura 23. Telecomanda conectată la Arduino

Prin transmiterea informației de LOW pe pinii Arduino, se va produce o


acțiune. Menținerea pinilor în HIGH indică rezistența neschimbată dintre pin și masă.
Arduino este alimentat și controlat prin USB, acționând respectivii pini prin interfață
serială, în funcție de rezultatul interpretat de OpenCV.

TESTAREA MODELULUI

În urma testelor aplicației de simulare a


tehnologiilor folosite de un vehicul autonom, s-a constatat
faptul că predicțiile pe eșantioanele testate oferă o
acuratețe de 85% în comparație cu cea de 96% oferită de
esantioanele antrenate. În situații de mers normal,
prezicerile sunt generate cam de 10 ori pe secundă (10
frameuri/s).

Caracteristicile Haar sunt, în termeni nominali,


sensibile la rotații. În schimb, în acest proiect rotația nu
ne preocupă în ceea ce privește citirea semnului rutier de
STOP sau a indicației semaforului, care sunt obiecte fixe
(nu doar în simulare, dar si în lumea reală). Figura 24. Recunoașterea semnelor de circulație

Pentru măsurarea distanței, senzorul ultrasonic este folosit doar pentru

24
determinarea distanței dintre obstacol și partea frontală a mașinii și oferă informații
cu o acuratețe destul de bună dacă sunt luate în seamă unghiul de simț sau condiția
suprafeței de test. Pe de altă parte, Pi Camera furnizează rezultate nu deosebit de
bune când vine vorba de măsurare. De aceea, este bine să se cunoască din timp
distanțele de interes, pentru a putea calibra echipamentele în vederea măsurării
corecte a informației.

Rezultatele experimentale ale distanței detectate folosint Pi Camera sunt


următoarele:

Figura 25. Distanță detectare semn STOP

În concluzie, o mașinuță teleghidată poate naviga cu succes pe un traseu cu


alibitatea de a evita coliziunea frontală, de a vira și de a răspunde în conformitate la
indicațiile rutiere de pe marginea drumului.

Figura 26. Model de simulare: Drum, semafor, vehicul oprit în față

25
DEFINIREA PAȘILOR VIITORI PENTRU DEZVOLTAREA TEMEI DE CERCETARE

În domeniul transporturilor, inteligența artificială începe să-și facă simțită


prezența din ce în ce mai mult. Față de anul 2006, în care luau naștere motoarele
electrice sau hibrid, și implementarea la scară largă a sistemelor inteligente de
transport, acum, 11 ani mai târziu, producătorii de mașini apelează tot mai des la
electronică în toate subsistemele unei mașini, de la folosirea motoarelor electrice,
până la reglarea electronică a suspensiilor sau detecția pericolelor. Ba chiar mai mult
decât atât, avem în momentul de față celebrul exemplu al companiei Tesla pentru
implementarea unor autovehicule total autonome, ce se pot conduce singure, și te
pot duce din punctul A în punctul B fără niciun fel de problemă. Astfel, gradul de
siguranță crește exponențial, iar principala cauză a producerii accidentelor – greșala
umană – este diminuată.

Pentru dezvoltarea temei de cercetare se pot aduce îmbunătățiri la modelul


actual descris precum:

 Maturizarea bazei de date pentru recunoașterea unui număr mai mare de


semne de circulație. Prin îmbunătățirea bazei de date, modelul descris poate
face diferența între mai multe semne de circulație, si poate simula situațiile
descrise de acestea;
 Detecția, recunoașterea și clasificarea obiectelor cu forme diferite precum
vehicule, locuințe, biciclete sau pietoni, și folosirea aceluiași algoritm ca la
recunoașterea semnelor rutiere (algoritmul Haar).
 Comunicația cu un centru de management al traficului, ce poate oferi
informații de natură diferită vehiculului; Acest pas este unul complex,
deoarece modelul respectiv necesită echipamente noi și un update de
software în vederea acționării vehiculului conform a ceea ce se primește de la
respectivul centru de management al traficului (ce poate fi simulat de un
calculator, prin colectarea unor informații ”din trafic” cu ajutorul unor detectori
(senzori ultrasonici, bucle inductive), sau prin executarea unor comenzi de la
computer, și transmiterea wireless a acestora către vehicul.

Prin implementarea unor astfel de îmbunătățiri la modelul actual prezentat


anterior, mașina teleghidată poate simula cu o mare exactitate un automobil
autonom, ce ține cont de mediul înconjurător, reprezentat de alte vehicule, pietoni,
semafoare sau panouri rutiere și astfel acționează la parametrii de mediu în condiții
de siguranță .

26
BIBLIOGRAFIE

https://www.youtube.com/watch?v=BBwEF6WBUQs

(OpenCV Python Neural Network Autonomous RC Car)

https://zhengludwig.wordpress.com/projects/self-driving-rc-car/

https://diyin.wordpress.com/2016/01/14/diy-self-driving-car-project-with-raspberrypi-
and-opencv/

IEEE TRANSACTIONS ON INTELLIGENT TRANSPORTATION SYSTEMS, VOL.


16, NR. 3, Junie 2015: Recognizing Text-Based Traffic Signs;

IEEE TRANSACTIONS ON INTELLIGENT TRANSPORTATION SYSTEMS, VOL.


17, NR. 10, Octombrie 2016: A Survey of Vision-Based Traffic Monitoring of Road
Intersections;

http://profs.info.uaic.ro/~ipistol/ia1213/res/carteaIA-v7.pdf

http://www.imageprocessingplace.com.html

https://www.youtube.com/watch?v=9YZMrkEHYlU

Curs TET, Master – Elemente de inteligență artificială

Datasheet AdOculos – Digital Image Processing

https://www.youtube.com/watch?v=tiwVMrTLUWg

(Chris Urmson: How a driverless car sees the road)

27

S-ar putea să vă placă și