Sisteme de Tip Robot Swarm

CUPRINS

1. Introducere

1.1 Introducere în sistemele de tip robot swarm

1.2 Clasificare roboți swarm

1.3 Modele existente pe piață

2. Tehnici de procesare video

2.1 Introducere în procesarea video

2.2 Biblioteca OpenCV

2.3 Spații de culoare

2.3.1 Modelul RGB/BGR

2.3.2 Modelul HSV

2.4 Principale tehnici folosite

2.4.1 Segmentarea imaginii

2.4.2 Prăguirea

2.4.3 Detecția muchiilor

2.5 Filtre morfologice

2.5.1 Dilatarea binară

2.5.2 Eroziunea binară

3. Proiectarea și realizarea sistemului

3.1 Introducere

3.2 Schema Bloc

3.3 Arena

3.4 Determinarea centroidului

3.4.1 Segmentarea imaginii HSV

3.4.2 Găsirea contururilor

3.4.3 Calculul centroidului

3.5 Identificarea roboților

3.6 Determinarea unghiului de orientare

3.7 Harta de obstacole

3.8 Formarea pachetelor de date

3.9 Interfața

3.9.1 Calibrarea

3.9.2 Măsurarea

3.10.Selecție plan

4. Rezultate experimentale

4.1 Varianta

4.2 Varianta 2

4.3 Varianta 3

4.4 Varianta 4

4.5 Varianta finală

4.6 Limite de prag

4.7 Timpi de lucru

5. Concluzii și perspective

6. Bibliografie

Lista figurilor

Lista figurilor

Figura 1.1 Puterea grupului

Figura 1.2 Khepera II

Figura 1.3 Khepera III

Figura 1.4 MarXbot

Figura 1.5 Jasmine

Figura 1.6 I-Swarm

Figura 1.7 S-Bot

Figura 1.8 E-puck

Figura 1.9 SwarmBot

Figura 1.10 Kilobot

Figura 2.1 OpenCV logo

Figura 2.2 HSL & HSV

Figura 2.3 Spațiul HSV

Figura 2.4 Imagine originală

Figura 2.5 Segmentare pe portocaliu

Figura 2.6 Imagine originală

Figura 2.7 Imagine binară

Figura 2.8 Contururi din imagine

Figura 2.9 a. Imagine normală b.Eroziune c.Dilatare

Figura 3.1 Schema bloc

Figura 3.2 Schelet arenă

Figura 3.3 Arena

Figura 3.4 Centroid

Figura 3.5 Imagine originală

Figura 3.6 Imagine segmentată pe zona de căutare

Figura 3.7 Algoritmul Suzuki

Figura 3.8 Id

Figura 3.9 Unghi_orientare

Figura 3.10 Harta.1

Figura 3.11 Harta.2

Figura 3.12 Selecție plan

Figura 3.13 Selecție plan.2

Figura 3.14 Binarizare Obstacole

Figura 3.15 Imagine originală

Figura 3.16 Segmentare pe bitul 2

Figura 3.17 Interfața

Figura 3.18 Binarizare pe culoare de căutare

Figura 3.19 Vizualizare obstacole

Figura 4.1 Machetă 1.1

Figura 4.2 Machetă 1.2

Figura 4.3 Machetă 2.1

Figura 4.4 Machetă 2.2

Figura 4.5 Interfață-3

Figura 4.6 Segmentare pe zona de căutare-3

Figura 4.7 Discurile de identificare

Figura 4.8 Imagine originală

Figura 4.9 Imagine segmentată pe portocaliu

Figura 4.10 Imagine segmentată pe albastru

Figura 4.11 Imagine segmentată pe verde

Figura 4.12 Imagine segmentată pe alb

Figura 4.13 Imagine segmentată pe violet

INTRODUCERE ÎN SISTEMELE DE TIP ROBOT SWARM

Robotica Swarm este o nouă abordare a coordonării sistemelor de tip multirobot care constă în folosirea unui număr mare de roboți simplii al căror comportament colectiv, dorit, reiese din interacțiunile dintre roboți și interacțiunile acestora cu mediul înconjurător. Robotica Swarm își are originea teoretică în studiile recente pe societățile coloniale de origine animală, cum sunt furnicile și albinele care sunt o sursă valoroasă de inspirație pentru proiectarea sistemelor inteligente robotizate de tip colectiv. Ignorând zgomotul din mediul înconjurător, erorile de informație, de prelucrare și de îndeplinire a sarcinilor la nivel de individ, insectele sociale au destul de succes la îndeplinirea sarcinilor la nivelul grupului. Pornind de la acestea metafora ,,roi de roboți” subliniază aspecte cum ar fi descentralizarea controlului, abilități de comunicare limitată între roboți, folosirea informațiilor la nivel local, manifestarea unui comportament adecvat la nivel global și robustețe.[5]

Comparativ cu roboții complecși în majoritatea cazurilor, proiectarea unui sistem cu un număr mare de roboți simpli este mult mai simplă din punct de vedere hardware, determinând realizarea unui sistem mai economic, mai scalabil și mai fiabil. Defectarea sau distrugerea unui singur membru al sistemului are un efect mai limitat decât în cazul în care se defectează un robot convențional, sarcinile acestuia fiind preluate, în cazul unui roi de roboți, de ceilalți membrii[5]

1.2 Clasificare roboți swarm

Din punct de vedere al numărului de elemente, sistemele robot swarm se clasifică în:

Sisteme cu doi roboți (pereche) – cel mai simplu sistem de tip robot swarm;

Sisteme de tip grup limitat – roboți multipli, numărul n al acestora fiind mic în raport cu dimensiunea sarcinii sau a mediului de operare;

Sisteme de tip grup infinit – numărul n de roboți este virtual infinit.

Din punct de vedere al liderului, sistemele robot swarm se clasifică în:

Lider tip supervizor – liderul nu face parte din swarm, acesta are o capacitate de comandă ridicată la nivel global și este superior tehnologic oricărui robot din roi.

Lider fix din roi – liderul este ales din cadrul roboților, acesta își păstrează funcția de lider pe toată perioada cât este funcțional

Lider variabil din roi – liderul este schimbat în funcție de diferite situații și de poziționarea acestuia față de ceilalți roboți, acest model este excelent în cazul formațiunilor locale.

Din punct de vedere al distanței de comunicație, sistemele de tip robot swarm se clasifică în:

Sisteme fără comunicație directă – posibilă comunicarea, indirect, între roboți prin observarea prezenței, absenței sau a comportamentului celorlalți.

Sisteme cu comunicație apropiată – roboții pot comunica direct între ei dacă se află suficient de aproape unul față de celălalt.

Sisteme cu comunicație îndepărtată – un robot poate comunica cu oricare alt robot din sistem.

Sisteme fără comunicație directă – posibilă prin comunicarea indirectă între roboți prin observarea prezenței sau absenței sau a:

comportamentului celorlalți.

Sisteme cu comunicație apropiată – roboții pot comunica direct între ei dacă se află suficient de aproape unul față de celălalt.

Sisteme cu comunicație îndepărtată – un robot poate comunica cu oricare alt robot din sistem.

Din punct de vedere al topologiei comunicației, sistemele de tip robot swarm se clasifică în:

Sisteme de tip broadcast – orice robot comunică simultan cu toți ceilalți roboți, fără posibilitatea de a trimite un mesaj către un element distinct al sistemului.

Sisteme cu adresare – fiecare robot poate comunica cu oricare element al sistemului prin intermediul unui nume sau al unei adrese.

Sisteme de tip arbore – roboții sunt relaționați într-o structură de tip arbore și pot comunica între ei doar prin intermediul acestei ierarhii.

Sisteme de tip graf – roboții sunt relaționați într-o structură de tip graf, aceasta fiind o schemă mult mai robustă de conexiune datorită legăturilor redundante care previn deconectările între elemente.

Din punct de vedere al reconfigurabilității, sistemele de tip robot swarm se clasifică în:

Sisteme statice – topologia este fixă, sistemul fiind foarte fragil.

Sisteme coordonate – topologia se poate modifica prin intermediul elementelor care comunică între ele în scop de coordonare;

Sisteme dinamice – relațiile dintre membrii sistemului se pot modifica arbitrar.

Din punct de vedere al capacității de procesare a unui singur element, sistemele de tip robot swarm se clasifică în:

Sisteme cu model de tip sumator – fiecare element al sistemului permite realizarea unei operații neliniare de sumare, similar neuronilor dintr-o rețea neurală (nu este practic);

Sisteme cu model de tip automat cu stări finite – modelul arhitecturilor bazate pe comportament reactiv (behavior-based robotics);

Sisteme cu model de tip automat push-down – modelul automatelor cu stivă și gramatică formală, fiind mai capabil decât un automat cu stări finite, dar mai slab decât o mașină Turing;

Sisteme echivalente unei mașini Turing – modelul majorității sistemelor robotice, bazat pe tabele de reguli.

Din punct de vedere al compunerii, sistemele de tip robot swarm pot fi:

Omogene – sistemul este compus din elemente cu caracteristici identice;

Eterogene – sistemul este compus din elemente cu caracteristici diferite.

Modele existente pe piață

Tehnici de procesare video

2.1 Introducere în procesarea video

În știință imagistica prelucrarea de imaginii este orice formă de prelucrare de semnal pentru care intrarea este o imagine, cum ar fi o fotografie sau un cadru video. Rezultatul procesării de imagine poate fi fie o imagine sau un set de caracteristici sau de parametri specifici imaginii. Cele mai multe tehnici de procesare a imaginii implică tratarea imaginii ca pe un semnal bidimensional și aplicarea de tehnici standard de procesare.[5]

O imagine este definită în "lumea reală" ca o funcție de trei variabile naturale F(x,y,z) = I unde x este coordonata pe coloană, y este coordonata pe linie, z este planul de culoare iar I este intensitatea luminii.[5]

Procesarea digitală a imaginilor presupune utilizarea de algoritmi de calculator pentru prelucrarea imaginilor, care față de cele analogice beneficiază de o gamă mult mai largă de algoritmi. Deoarece imaginile sunt definite pe două sau mai multe dimensiuni de procesare digitală a imaginii, pot fi modelate în formă de sisteme multidimensionale.[5]

Scopul prelucrării de imagine se împarte în trei categorii:

Preprocesare a imaginii (imagine intrare → imagine rezultat)

Analiza imaginii (imagine intrare → măsurători rezultat)

Înțelegerea imaginii (imagine intrare → descriere de înalt nivel- rezultat)

Analiza imaginii reprezintă extragerea de informații semnificative în principal digitale prin intermediul unor tehnici de procesare numerică a imaginii. Calculatoarele sunt indispensabile pentru prelucrarea unor cantități mari de date, care necesită un volum mare și complex de calcule, sau pentru extragerea de informații cantitative.[5]

Video tracking este procesul de a localiza unul sau mai multe obiecte în mișcare folosind o cameră video. Obiectivul video tracking este de a găsi obiecte țintă în cadre video consecutive; ca rezultat acesta oferă date despre mișcarea obiectelor vizate, în cadrul imaginii.[5]

Camerele foto/video digitale includ, în general, chip-uri dedicate de prelucrare a imaginilor digitale pentru a converti datele brute de la senzorul de imagine într-o imagine, cu culori corectate într-un format de fișier imagine standard. Imaginile de la camerele digitale primesc de multe ori o prelucrare ulterioară pentru a îmbunătățirea calității lor. Procesare digitală a imaginii în mod tipic este executată de programe software speciale care pot manipula imaginile în mai multe moduri.[5]

2.2 Biblioteca OpenCV

OpenCV (Open Source Computer Vision) este o bibliotecă de funcții de programare, în principal, pentru computer vision în timp real. Este gratuit pentru a fi utilizate sub licență BSD open source. Biblioteca este cross-platform. Aceasta se concentrează în principal pe procesarea imaginii în timp real.[5]

Domenii de aplicare OpenCV includ:

Toolkit-uri pentru procesare 2D și 3D

Estimare Egomotion

Sistemul de recunoaștere facială

Recunoașterea gesturilor

Interacțiunea om-calculator (HCI)

Robotica mobilă

Înțelegerea gesturilor

Identificarea obiectelor

Segmentare și recunoaștere

Viziunea stereopsis Stereo: adâncime de percepție de la 2 camere

Structura din mișcare (SFM)

Motion tracking

Realitate augmentată [5]

Pentru a susține unele dintre domeniile de mai sus, OpenCV include o bibliotecă statistică de învățare mașină, care conține:

Stimularea ( algoritmi meta)

Decizia de învățare arbore

Algoritm de așteptare-maximizare

KNN

Clasificatori Naive Bayes

Rețelele neuronale artificiale

Random forests

Mașină de vector de sprijin (SVM)

Gradient boostin [5]

OpenCV este scris în C++ și interfața sa primară este în C++, dar păstrează și interfață mai veche în C. Există acum interfețe complete în Python, Java și MATLAB / OCTAVE (începând cu versiunea versiunea 2.5). API-urile pentru aceste interfețe pot fi găsite în documentația on-line.[5]

2.3 Spații de culoare

2.3.1 Modelul RGB/BGR

Modelul de culoare RGB este un model de culoare recunoaștere facială

Recunoașterea gesturilor

Interacțiunea om-calculator (HCI)

Robotica mobilă

Înțelegerea gesturilor

Identificarea obiectelor

Segmentare și recunoaștere

Viziunea stereopsis Stereo: adâncime de percepție de la 2 camere

Structura din mișcare (SFM)

Motion tracking

Realitate augmentată [5]

Pentru a susține unele dintre domeniile de mai sus, OpenCV include o bibliotecă statistică de învățare mașină, care conține:

Stimularea ( algoritmi meta)

Decizia de învățare arbore

Algoritm de așteptare-maximizare

KNN

Clasificatori Naive Bayes

Rețelele neuronale artificiale

Random forests

Mașină de vector de sprijin (SVM)

Gradient boostin [5]

OpenCV este scris în C++ și interfața sa primară este în C++, dar păstrează și interfață mai veche în C. Există acum interfețe complete în Python, Java și MATLAB / OCTAVE (începând cu versiunea versiunea 2.5). API-urile pentru aceste interfețe pot fi găsite în documentația on-line.[5]

2.3 Spații de culoare

2.3.1 Modelul RGB/BGR

Modelul de culoare RGB este un model de culoare aditiv, la care se adaugă lumină roșie, verde și albastru în diferite moduri de a reproduce o gamă largă de culori. Numele modelului vine de la inițialele celor trei culori primare, roșu, verde și albastru. Atunci când intensitatea luminii obținute este nulă se obține culoarea negru, când intensitatea este maximă se obține alb iar când intensitățile celor trei surse de lumină sunt egale se obțin nuanțe de gri. Când intensitățile sunt diferite, rezultatul este o nuanță colorată, mai mult sau mai puțin saturate în funcție de diferența dintre cele mai puternice și mai slabe a intensităților culorile primare folosite. Între modelul RGB și BGR singura diferență este ordinea planurilor de culoare.[5]

2.3.2 Modelul HSV

Modelul HSV și modelul HSL sunt cele mai frecvente reprezentări în coordonate cilindrice ale punctelor din modelul RGB. Dezvoltat în anii 1970 pentru aplicații de grafică pe calculator, HSL și HSV sunt folosite astăzi de software de editare imagine, și în computer vision.[5]

Modelele HSl și HSV sunt utile datorită a două proprietăți principale. În primul rând componenta de intensitate este separată de informația de crominanță, reprezentate ca nuanță și saturație H,S. În al doilea rând, nuanța (H) și saturația (S) sunt componente strâns legate de modul în care oamenii percep crominanță Prin urmare, aceste caracteristici fac din HSL/HSV un model de culoare ideala pentru aplicații de procesare a imaginii în care crominanță are o importanță mai mare decât percepția culorii generală (care este determinată atât de luminanță și crominanță).

HSL și HSV sunt spațiile de culoare destul de similare. De fapt, acestea sunt diferitele forme de ale sistemului de coordonate cilindric. Diferența este că în spațiul HSV pentru a obține culoarea albă ar trebui să setată saturația la 0. Dar în spațiu HSL la L = 1 se va obține alb, indiferent de valoarea de saturație.[9],[11].

Pentru a transforma din domeniul RGB în domeniul HSV se folosesc următoarele ecuații:[1]

V = max(R,G,B)

S =

H=

2.4 Principale tehnici folosite

2.4.1 Segmentarea imaginii

Segmentarea imaginilor este procesul de partiționare unei imagini digitale în mai multe segmente ( seturi de pixeli , de asemenea, cunoscut sub numele de superpixels ) . Scopul de segmentare este de a simplifica și / sau modifica reprezentarea unei imagini în ceva care este mai semnificativ si mai ușor de analizat . Segmentare imaginii este de obicei folosită pentru a localiza obiectele și limitele acestora ( linii , curbe , etc ) în imagini . Mai precis , segmentarea imaginilor este procesul de atribuire a unei etichete pentru fiecare pixel într-o imagine , astfel încât pixeli cu aceiași etichetă dețin caracteristici comune. Rezultatul segmentării imaginii este un set de segmente care acoperă împreună întreaga imagine , sau un set de contururi extrase din imagine. Fiecare pixel dintr-o regiune este similar, în ceea ce privește unele caracteristici sau proprietăți de procesare , cum ar fi culoarea , intensitatea , sau textura . [5]

Mai mulți algoritmi și tehnici de uz general au fost dezvoltate pentru segmentarea imaginilor. Pentru a fi utile, aceste tehnici trebuie să fie de obicei combinate cu cunoștințe specifice unui domeniu în scopul de a rezolva în mod eficient problemele de segmentare în domeniu. Principalele metode de segmentare sunt: [5]

Prăguirea

Metode de clustering

Metodele bazate pe compresie

Metode bazate pe histograma

Detecția muchiilor

Metode de creștere a unei regiuni

Metode de divizare-îmbinare

Metode bazate pe ecuații cu derivate parțiale

Metode parametrice

Metode cu setare de nivel

Metode de partiționare cu grafuri

Transformata Watershed

Metode de segmentare bazate pe model

Segmentarea multi-scală

Segmentarea antrenabilă

Principalele metode care au avut contribuție în cadrul acestui proiect:

Prăguirea

Această metodă este cea mai simplă metodă de segmentare și presupune binarizarea imagini cu anumite praguri, metoda se aplicându-se pe imagini monocanal. Astfel ce este de o parte a pragului devine 0 iar ce se află în cealaltă parte devine 1. Se pot folosi și două praguri, formându-se o fereastră, ce se află în interiorul ferestrei fiind considerat cu proprietăți diferite față de exterior. În cazul imaginilor multicanal se tratează fiecare canal separat iar pe imaginile rezultate se aplică un operator logic, după caz. În cazul algoritmilor, bazați pe interpretarea culorilor, această metodă are un rol esențial. În continuare pe baza celor două imagini se poate observa rezultatul acestei metode.

Detecția muchiilor

Detecția muchiilor este numele pentru un set de metode matematice care vizează identificarea de puncte într-o imagine digitală la care luminozitatea imaginii se schimbă brusc. Punctele la care schimbările de luminozitate ale imaginii sunt bruște sunt de obicei organizate într-un set de segmente curbe numite margini. Aceste muchii fac diferența dintre anumite obiecte și fundal. Pe baza acestora se pot obține date geometrice despre un obiect, cum ar fi forma unui obiect, dimensiunea segmentelor care formează conturul acestuia, pozițiile colțurilor. Datele de la ieșirea unei astfel de funcții trebuie să fie sub forma unor vectori de puncte. Acești vectori

pot conține toate punctele dintr-un contur sau se poate aplica o compresie. Pe lânga informațiile legate de forma unui contur, se pot realiza și ierarhii între acestea, utile în recunoașterea formelor.

2.5 Filtre morfologice

Morfologie matematică (MM) este o teorie și tehnică pentru analiza și procesarea de structuri geometrice, bazat pe teoria mulțimilor, topologie, și funcții aleatorii. MM este cel mai frecvent aplicată imaginilor digitale, dar poate fi de asemenea avută pe grafice, plase de suprafață, solide, și multe alte structuri spațiale.

Morfologia binară este definită pe imagini cu două nivele, pixelii pot fi ori negru or alb. [5]

2.5.1 Dilatarea binară

Implementarea generală a dilatării are două elemente: imaginea binară pe care este aplicată dilatarea și un element structural. Aceasta poate fi scrisă ca și:

A ⊕ B = , A, B ∈ Z2

=

A este imaginea care este dilatată iar B este elementul structural.

Dilatarea îngroșa obiectele din imagine astfel zgomotul interior, care apare ca puncte singulare de 0 logic în cadrul formațiunilor de pixeli de 1 logic, va dispărea.[6]

2.5.2 Eroziunea binară

Ca și dilatarea, eroziunea are două elemente: imaginea binară pe care este aplicată eroziunea și un element structural. Aceasta poate fi scrisă ca și:

A ⊕ B = , A, B ∈ Z2

A este imaginea care este erodată iar B este elementul structural.

Eroziunea subțiază obiectele din imagine astfel zgomotul interior, care apare ca puncte singulare de 1 logic va dispărea.[6]

Proiectarea și realizarea sistemului

3.1 Introducere

În cadrul acestui proiect se va realiza o platforme de tip arenă, cu o unitate video centrală de monitorizare și calcul. Aceasta va avea rolul de a achiziționa cadre ale arenei în care sunt dispuse un număr de până la 6 elementele unui sistem de tip robot swarm, precum și obstacole aleatoare. Pornind de la cadre, unitatea de calcul va determina regiunile de obstacole, pozițiile elementelor mobile, orientarea acestora. Toate datele vor fi transmise la modulele de comunicație – control pentru a comanda roboții.

3.2 Schema Bloc

Imaginea este capturată de la o cameră web, Logitech QuickCam Ultra Vision SE Webcam, aceasta realizând și partea de autocalibrare. Peste imaginea achiziționată se adaugă o mască astfel încât tot ce se află în afara zonei de interes va fi egalat cu zero. Imaginea achiziționata, în domeniul BGR, este convertită în domeniul HSV. Aceasta este segmentată pe două culori formându-se imaginea de căutare și imaginea cu fundalul. Imaginea cu fundalul este negată formându-se imaginea cu obstacole. Peste acestea două se aplică un filtru tip eroziune.

Pe imaginea de căutare se obțin vectorii cu punctele de contur apoi pe baza acestora se calculează centroidul fiecărei forme din aceasta. În jurul fiecărui centroid se crează o zonă de pixeli unde se va căuta prezența celorlalte culori destinate identificării.. Căutarea se face binarizând zona cu setul de praguri caracteristic fiecăreia din aceste culori. În funcție de prezența sau absența acestora se determină id-ul. Pe baza înclinării fiecărui dreptunghi de căutare se determină unghiul de orientare pe jumătate de cadran. Cu ajutorul poziționării culorilor de identificare se poate corecta defazajul posibil de 180o. După ce termină procesarea pentru un robot datele sunt afișate pe ecran iar după ce sunt procesați toți roboții datele sunt transmise la modulul de comandă.

Pe imaginea cu obstacole sunt acoperite zonele din imaginea de căutare,care sunt corespunzătoare unui element din swarm, cu un disc negru de raza 22 pixeli, astfel roboții vor fii ignorați. Se aplică un filtru de eroziune apoi se va face și pe aceasta extragerea contururilor și se va număra numărul acestora. Dacă numărul s-a modificat față de cadrul precedent se va genera o nouă harta cu obstacole. Pe imaginea curentă se va aplica o dilatare cu un nucleu în formă de disc cu raza de 36 de pixeli. La crearea unei noi harți de obstacole aceasta va fi afișată și transmisă. Imaginea transmisă este micșorată de 100 de ori față de cea originală.

3.3 Arena

Deoarece arena este mediul în care roboții își desfășoară acțiunile este necesar ca aceasta să poată permite camerei web să vadă toată zona de interes și să se poată distinge roboții de fundal.

Arena este formată dintr-un schelet din PVC și o mocheta de culoare gri închis care acoperă podeaua și pereții arenei. Acesta are 165cm înălțime și o bază circulară cu diametrul de 150cm.

Scheletul este format din două părți: suportul și arcada. Suportul este format din două cercuri concentrice cu diametrul de 150cm și unite prin 12 distanțiere cu lungimea de 33cm. Cercurile sunt confecționate din două țevi de PVC, fiecare, cu diametrul de 14 mm unite la capete prin țevi cu diametrul de 16mm și întărite cu fier beton de 6mm. Țevile de 14mm au dimensiunea de iar cele de de 16 au dimensiunea de 55cm. Distanțierele sunt confecționate din țevi cu diametrul de 18mm, acestea au dimensiunea reală de 33cm dar au două decupaje la capete de 15mm fiecare. Prin aceste decupaje trec cele două cercuri.

Arcada este prinsă pe 6 suporți legați de 6 din cele 12 distanțoare. Aceasta este confecționată din 3 țevi de pvc cu diametrul de 14mm și lungi de 3m. Cele trei sunt unite la mijloc, La zona de unire două din acestea sunt aproximativ paralele iar cea de a treia vine perpendicular pe acestea. Camera web este prinsă pe a treia țeavă și fixată de celelalte două.

Mocheta pe care vor fi dispuși roboții are dimensiunea de 150x200cm. Pereții laterali ai arenei sunt confecționați din fâșii din același material cu dimensiunea 33x50cm. Aceștia sunt lipiți de scheletul arenei cu silicon.

3.4 Determinarea centroidului

Pentru a determina poziția roboților în cadrul imaginii este necesar să se determine centroidul pentru fiecare. Deoarece nu se poate folosi întregul disc pentru acest proces datorită necesității spațiului altor prelucrări, se folosește o porțiune care are același centru cu al discului, după cum se poate vedea în figura centroid. Astfel dacă s-a identificat centroidului dreptunghiului portocaliu s-a determinat centrul robotului.

Pentru determinarea centroidului se vor urma următorii pași:

Segmentarea imaginii HSV

Găsirea contururilor

Calculul centroidului

3.4.1 Segmentarea imaginii HSV

Pentru a determina contururile este necesar ca imaginea de la intrarea funcției, care realizează acest lucru, să fie binară. Imaginea binară trebuie să conțină 1 logic în zonele unde apare culoarea portocalie, specifică dreptunghiului de identificare și 0 logic, în rest. Astfel pe fiecare canal al imaginii HSV se vor pune două praguri, unul inferior și unul superior. Ce se află între cele două praguri va deveni 1 logic iar restul va deveni 0 logic. Dacă Hb,Sb,Vb sunt imaginile binarizate ale fiecărui plan de culoare, nuanță , saturație, intensitate atunci imaginea binară pentru întreaga imagine va fi: prag_total = Hb & Sb & Vb, unde ,,&” reprezintă operatorul și pe bit.

Deoarece imaginea binară va avea un mic zgomot se va aplica și un filtru morfologic de tip eroziune.

3.4.2 Găsirea contururilor

Acestea se realizează prin funcția findContours care stochează fiecare contur sub forma unui vector de puncte.

Pentru obținerea vectorilor de contururi se folosește funcția findcontours din biblioteca imgproc a OpenCV. Această funcție are la bază cel de-al doilea algoritm a lui Suzuki si Abe propus în articolul ,,Topological Structural Analysis of Digitized Binary Images by Border Following”. Acest algoritm este destinat obținerii conturilor exterioare fiecărei forme și funcționează astfel:

Algoritmul împarte muchiile în două părți, muchia stângă(cu valoarea 2 ) și muchia dreaptă(cu caracterul ,,:”). Muchiile sunt parcurse complet, apoi se caută o muchie nouă.

Se parcurge imaginea pe linii până în momentul în care găsește un pixel de valoare 1, care este înlocuit cu un caracter care să îl identifice ca punct de start.

Pixelii cu valoarea 1 și cu un cel puțin un vecin cu valoarea 0, devin 2.

Se parcurge imaginea spre dreapta, până când găsește un pixel, care are vecinul din dreapta 0, acesta primește un caracter special, ,,:”.

Se trece la vecinul de jos al pixelului cu valoarea ,,:”.

Dacă vecinul , din dreapta, al pixelului curent are valoarea 1 atunci se parcurge linia spre dreapta, se parcurge ca la pasul 4.

Dacă pasul 6. nu este satisfăcut și pixelul curent are valoarea 1, atunci acesta devine : și se trece la vecinul de jos

Dacă nici pasul 7. nu este satisfăcut atunci se parcurge linia spre stânga, prmul element găsit cu valoarea >0 devine :. Acesta se parcurge până când se ajunge la un pixel cu vecinul superior nul apoi se parcurge muchia invers pașilor 6.,7.,8., pixelii care sunt muchii și au valoarea 1 devin 2.

Se va parcurge matricea până când se va găsi un pixel cu valoarea 1 dar care nu îndeplinește condițiile de muchie, atunci se va relua algoritmul de la pasul 5.

În final se va ajunge la punctul de start moment în care muchia este completă.

Toți pixelii cărora le este modificată valoarea le sunt memorate coordonatele, cu excepția secvențelor de cel puțin 3 puncte consecutive, pe aceiași linie sau coloană, memorându-se doar capetele.

Punctul punct cu valoarea : este memorat iar căutarea pentru o nouă muchie va începe de pixelul din stânga lui.

Se va căuta un nou pixel de început pentru o nouă muchie ținându-se cont de faptul că dacă s-a găsit un element cu valoarea 2, pixelii nu aparțin unei muchii noi până când nu se găsește un punct cu valoarea :.[4]

3.4.3 Calculul centroidului

Acesta se calculează folosind formula:

xo = și yo = , (xo,yo) sunt coordonatele centroidului.

m00 – momentul de ordin 0

m10, m01 – momentele de ordin 1

În cazul general momentele de ordin n se calculează astfel:

mji =

i,j=[0,n]

În cazul real, pentru un contur momentele de ordin 0 și 1 sunt:

m00 = nr puncte din contur = npc

m10 =

m10 = [2]

3.5 Identificarea roboților

În momentul de față se cunoaște centrul fiecărui corp de culoarea zonei de identificare însă nu se cunoaște dacă acest corp este robot sau ce robot este. Astfel pentru a rezolva această problemă folosesc un număr suplimentar de maxim 4 culori. Numărul maxim de roboți care pot fi identificați este de 2nr culori suplimentare-1. Astfel id-ul se poate scrie sub forma unui număr pe

4 biți. Bitul 0 corespunde culorii albastru, bitul 1 culorii verde, bitul 2 culorii alb iar bitul 3 culorii mov. Bitul 1 este MSB-ul iar bitul 4 LSB-ul. Pentru 6 roboți sunt necesare doar 3 culori, bit-ul 3 nefiind folosit. Dacă pe robot una din culori este prezentă atunci bitul corespunzător va primi valoarea logică 1, altfel va deveni 0 logic.

Pentru a determina id-ul trebuie urmați următorii pași:

Se selectează o zonă de căutare. Culorile se vor căuta într-un pătrat cu concentric cu discul dar cu diagonala mai mică decât diametrul discului. Din imaginea mare, în domeniul HSV, această zonă se alege, selectând liniile de la yo-lp2 la yo+lp2 și coloanele de la xo-lp2 la yo+lp2, unde lp2 reprezintă jumătate din latura pătratului iar (xo,yo) coordonatele centroidului.

Se binarizează această zonă la fel ca pentru determinarea centroidului dar limitele pragurilor diferă pentru fiecare culoare. Se numără pixeli de 1 logic iar daca numărul acestora este diferit de 0 sau peste un anumit prag atunci se ia decizia că acea culoare este prezentă.

Se calculează id-ul. Primii doi pași se repetă pentru fiecare culoare folosită pentru identificare. De fiecare dată rezultatul este reținut într-un vector, bits[], iar la final pe baza acestuia se calculează id-ul. Id-ul corespunzător fiecărui robot se calculează astfel id=.

Dacă din cauza unor erori id-ul obținut este mai mare decât numărul de roboți disponibili, acesta va fi rejectat.

3.6 Determinarea unghiului de orientare

Unghiul de orientare reprezintă unghiul cu care robotul s-a rotit față centrului său de greutate.În două sisteme de coordonate, cu originile comune cu centroidul robotului, unul rămâne fix iar celălalt se rotește odată cu robotul. Unghiul determinat de abscisele celor două sisteme este unghiul de orientare ( figura unghi_orientare) notat cu α.

Pentru a calcula acestui unghi este necesară parcurgerea următorilor pași:

Se determină coordonatele a trei dintre colțurile dreptunghiului portocaliu. În cadrul vectorului de puncte, care stochează coordonatele punctelor semnificative din contur, se caută punctele care au una din coordonate minimă sau maximă. Acest vector a fost obținut anterior în secvența de determinare a centroizilor.

Se determină coordonatele punctului aflat la intersecția axei ox cu una din laturile mici ale dreptunghiului portocaliu. Din cele trei puncte obținute anterior, două din acestea reprezintă capetele uneia din axele mici. Media coordonatelor acestor două reprezintă coordonatele punctului căutat. În figura unghi_orientare acest punct este notat cu ,,m”.

Se calculează unghiul de orientare pe jumătate de cadran. Notând acest unghi cu β iar α=β+ε , unde ε poate fi 0o sau 180o. Unghiul β se calculează cu relația:

β = arctg( ) rad, unde (xo,yo) sunt coordonatele centroidului iar (xm,ym) coordonatele punctului median m.

Se determină unghiul de orientare cu corect. În sistemul xoy se cunoaște cu exactitate poziția fiecărei zone de culoare, astfel verificând un pixel sau un grup de pixeli în acea zonă se verifică dacă unghiul obținut este defazat cu 180o, sau este corect. De exemplu, în sistemul xoy pentru un unghi <xok = 45o si o distanță față de centru r = 12 pixeli, pixelul aflat la această poziție are culoarea albastra specifică LSB. Astfel în coordonate carteziene, luând în considerare și rotația sistemului, poziția pixelului de verificare va fi:

xk = xo + r * cos(+ β)

yk = yo + r * sin( + β)

Deoarece nu toți roboții au culoarea albastră se poate face verificarea și pe verde, alb sau mov dar se va defaza cu , π respectiv, adică ,,n” va putea lua valorile 1, 3, 5 și 7.

Astfel ε

3.7 Harta de obstacole

Harta cu obstacole se obține luând în considerare cerințele de comandă ale unităților de comunicație – control. Astfel harta va trebui să fie o imagine în care zonele accesibile pentru centrul fiecărui robot să fie 1 logic iar cele inaccesibile 0 logic. Transmisia se va face doar dacă apare o modificare a numărului de obstacole pentru a nu ocupa banda destină transmisiei coordonatelor și unghiurilor roboților.

Pe imaginea achiziționată după ce s-a aplicat conversia în HSV se realizează segmentarea pe culorile fundalului. Imaginea obținută va avea 1 logic în zonele în care există fundal, aceasta este inversată obținându-se o imagine a obstacolelor. Pentru înlăturarea zgomotului se aplică un filtru tip eroziune. Cu datele deja obținute legate de centroizii roboților se acoperă roboții cu un disc de culoare neagră astfel în imaginea rezultată apar doar obstacole. Pe această imagine se caută contururile, cele care trec un prag limită sunt considerate obstacole și numărate. Dacă numărul de obstacole diferă față de cadrul precedent atunci însemnă că s-a modificat configurația hărții și se va genera una nouă. Pe imaginea cu obstacole se va aplica un proces de dilatare, cu un nucleu sub formă de disc și diametrul de 36 de pixeli, echivalent razei roboților. Aceasta este harta obstacolelor, datorită dilatării se va păstra o distanță între centroizii roboților și marginea obstacolelor.

Pentru a putea fi transmisă este necesar ca imaginea să fie micșorată. Acesta este împărțită în pătrate cu dimensiunea 10X10 iar imaginea rezultată va avea un singur pixel cu valoarea egală cu media fiecărui pătrat. Astfel pentru o imagine achiziționată de la cameră, cu dimensiunea 640×480, harta de obstacole miniaturizată va avea dimensiunea 64×48.

3.8 Formarea pachetelor de date

Pentru a putea fi transmise datele trebuie aranjate sub forma unor vectori. Mesajul de date este de două feluri: unul care conține datele legate de poziționare și orientare și unul pentru transmisia harții de obstacole.

Primul mesaj conține 6 octeți pentru fiecare robot și are datele sub următoarea formă: id – coordonata x – coordonata y – unghi de orientare. Pentru Id este alocat un octet, pentru cele două coordonate sunt alocați minim 2 octeți pentru fiecare depinzând de dimensiunea datelor de tip int. Unghiul de orientare este înjumătățit pentru a putea fi trimis pe un byte. După procesarea fiecărui robot cei 6 octeți sunt concatenați vectorului mesaj. La finalul prelucrării tuturor formelor din imaginea segmentată pe portocaliu mesajul și dimensiunea de acestuia sunt transmise la unitățile de comandă.

Pentru transmiterea hărții de obstacole se transmite caracterul 0XFF la începutul pachetului,urmat de numărul de coloane, numărul de lini și harta propriu-zisă. Deoarece harta este o matrice 2D iar mesajul este un vector liniile sunt adăugate una după alta. Acest mesaj are dimensiunea 3+64*48=3075 octeți.

3.9 Interfața

Interfața este sistemul prin care utilizatorul poate acționa asupra programului sau prin care acesta vizualizează datele obținute. Interfața acestui program este împărțită în trei părți:

Selecție plan

Calibrare

Măsurare

3.9.1 Selecție plan

1

Odată cu deschiderea programului apar trei ferestre care au rol în setarea pragurilor pentru segmentarea fundalului și perimetrul minim acceptabil pentru obstacole. Toate ferestrele pentru afișarea de imagine au dimensiunea rezoluției camerei, 640X480 iar cele pentru sliderele de calibrare au dimensiunea 280X380. În prima fereastra, numită ,,Imagine_RGB”, este afișată imaginea originală RGB, peste aceasta se adăugă o mască care sa acopere zonele care nu sunt de interes. Această fereastră este prezentă în toate cele trei părți, fiind desenate și contururile obstacolelor cu roșu.

Cea de a doua fereastră,numită segmentare_plan, conține 7 slidere, primele șase fiind folosite pentru a calibra pragurile și pentru a selecta fundalul dintre acestea primele 2 slidere setează valorile de prag pentru planul nuanței și au capetele 0 și 180. Următoarele 4 slidere setează valorile de prag pentru saturație și intensitate și au capetele 0 și 255. Ultimul slider alege perimetrul minim pentru un obiect, acesta putând fi reglat valori între 0 și 255.

A treia fereastră conține imaginea binarizată cu toate obstacolele, inclusiv roboții sunt considerați și ei ca obstacole. Imaginea care selectează planul de culoare este inversată pentru a afișa obstacolele. Pentru a înlătura zgomotul se folosește un filtru tip eroziune.

3.9.2 Calibrarea

Permite setarea pragurilor pentru segmentare și se poate face pe cele cinci culori sau pe patru, dacă numărul de roboți e mai mic de 8.

Interfața pentru calibrare are trei ferestre.Prima fereastră este ,,Imagine_RGB”, despre care am vorbit anterior.A doua fereastră are numele ,,Fereastră de calibrare”, aceasta conține 7 slidere. Primul slider alege culoarea care este calibrată să ia valori între 0 la 4 dacă se folosește și violetul și de la 0 la 3 dacă nu se folosește. Valoarea 0 este pentru culoarea de căutare, portocaliu, iar pentru identificare:1pentru albastru, 2 pentru verde, 3 pentru alb și 4 pentru violet.

Următoarele 6 slidere sunt pentru setarea pragurilor, capetele acestora sunt limitele pentru HSV.Ultima fereastră conține imaginea segmentată pe culoarea dorită.

În imaginea de mai jos se regăsește fereastra de calibrare pentru patru culori iar în stânga acesteia imaginea binarizată pe verde.

3.9.3 Măsurarea

Permite afișarea tuturor măsurătorilor obținute și a transformatei în distanță, datele fiind afișate în trei ferestre. Prima fereastră, numită ,,Imagine_RGB”, peste imaginea originală este suprapusă o mască, roboții sunt încadrați într-un chenar roșu, conturul zonei de căutare este colorat cu verde, punctele pentru determinarea unghiului de orientare sunt colorate cu violet, între media punctelor de pe latura mică și centroid se găsește o linie roșie, punctul unde se verifică dacă unghiul nu este defazat cu 180o, este colorat cu galben dacă nu este defazat și cu violet deschis dacă este. În dreapta centroidului este scris un mesaj cu albastru de forma: id_(poziție x)_(poziție y)_(unghi în grade). În stânga acestei ferestre se găsesc discuri pentru cei șase roboți, culoare este roșie dacă robotul cu id-ul respectiv nu este găsit și verde dacă este găsit.

În cea de a doua fereastră se găsește imaginea binară a zonei portocalii, numită ,,Imagine_binară”, se găsește imaginea segmentată pe culoarea portocalie. Cu datele de la aceasta și cu cele de la prima fereastră se pot determina anumite erori de calibrare.

În ultima imagine, numită ,,Harta_obstacole”, este afișată harta binară a obstacolelor cu o dilatarea care sa compenseze raza roboților.

Rezultate experimentale

4.1 Varianta 1

În prima variantă de concept, datele despre roboți trebuiau sa fie obținute cu ajutorul unui cerc de leduri, aflat pe modulul superior al roboților. Id-ul se obținea binar, fiecare led aprins având valoare 1 logic iar cele stinse 0 logic. Unul din leduri trebuia să aibă culoare diferită față de restul, fiind folosit pentru determinarea orientării și început pentru șirul binar.

În această variantă pe baza unei capturi de la un webcam s-a obținut o imagine binară, zonele de 1 logic reprezentau zonele unde apărea lumina roșia unor leduri. S-a folosit domeniul de lucru HSV iar segmentarea imaginii se făcea folosind o prăguire tip fereastră. Pentru reglarea pragurilor s-a realizat o funcție de calibrare pentru o singură culoare.

4.2 Varianta 2

În această variantă de recunoaștere a roboților, cercul de leduri este schimbat cu un disc colorat. Avantajele noului model, fără sursă de lumina proprie, ofereau atât independența față de electronica robotului cât și simplificarea metodelor de testare. Discurile erau confecționate din carton și acoperite cu autocolant de diferite tipuri: roșu mat, albastru lucios, verde lucios și portocaliu lucios. Fiecărei culori îi era asignat un id, zonele cu aceste culori erau considerați roboți. Funcția pentru reglarea pragurilor de la varianta precedentă se modifică, pentru calibrarea a 4 culori.

S-a implementat algoritmul pentru determinarea centroizilor, acesta fiind chiar varianta finală de determinare a acestora. Interfața a fost împărțită în două parți: calibrare și afișare măsurători. În modul calibrare interfața era formată din 3 ferestre pentru: imaginea originală, imaginea binară și slidere calibrare. Acest model pentru calibrare nu s-a mai modificat până la final. La trecerea de la modul de calibrare la modul de afișare, fereastra cu slidere se închidea iar pe fereastra, cu imaginea originală, se desenau centroizii și se încadrau într-un chenar roboții.

Albastrul a fost scos din culorile de identificare fiind folosit pentru orientare. Discurile nemaifiind monocromatice, la una din margini era lipită o zona albastră. Astfel se putea determina unghiul de orientare. Concentric centroidului se alegea o zonă, în formă de pătrat cu diagonala cât diametrul cercului. În această zonă se calcula centroidul zonei albastre. Unghiul de orientare se determina astfel: β = arctg( ) rad, unde (xza,yza) coordonatele centrului de masă a zonei albastre și (xo,yo) coordonate centroidului robotului. Dacă xza<xc, unghiul era în cadranul 2 sau 3 al cercului trigonometric, astfel β=β+π rad.

4.3 Varianta 3

Deoarece trebuia să existe o diferență destul de mare între fiecare culoare, pentru a se realiza segmentarea corect și fiecărui id i se atribuia o culoare, numărul de roboți nu putea fi foarte mare. Prima soluție pentru a rezolva această problemă a fost identificarea pe bază de simboluri sau OCR (recunoaștere optică a caracterelor). Astfel fiecare robot trebuia să aibă 3 elemente, o culoare pentru căutare, o culoare pentru orientare și un simbol. Culorile pe roboți trebuiau sa fie identice iar găsirea acestor în imagine se făcea pe baza culorii de căutare și unghiul de orientare se calcula ca la varianta precedentă. Identificarea avea o mică problemă, simbolurile erau mici ca dimensiune, astfel se putea crea confuzie. Revenind la varianta 1, s-a creat o modalitate de recunoaștere binară folosind mai multe culori. Aceasta nouă metoda este metoda folosită și in varianta finală a proiectului. S-a renunțat la varianta de identificare cu simboluri și la culoarea de orientare.

Pentru determinarea unghiului de orientare se folosea centroidul uneia din culorile de identificare. Acest unghi se calcula la fel ca la varianta precedentă doar că trebuia adăugată o corecție. Culoarea pentru orientare devenea culoarea primului bit iar dacă aceasta culoare nu era prezentă în id se folosea culoarea următorului bit.

Față de varianta precedentă de interfață, la modul afișare, în dreapta fiecărui centroid era scris id-ul robotului și coordonatele acestuia. Cu roșu, era desenată o linie între centroidul robotului și al unei culori de id, aceasta semnifica orientarea.

4.4 Varianta 4

Metoda de determinare a unghiului a fost modificată în varianta explicată la capitolul ,, Determinarea unghiului de orientare”. Această nouă varianta are avantajul că nu mai necesita corecție. Pentru partea de algoritm, pentru traiectoriile roboților, au fost clarificate sarcinile între membrii echipei. S-au trimis datele la o stație de comunicație-control, astfel s-a pus la punct formatul de transmisie a datelor.

S-a implementat algoritmul de determinare a schimbării numărului de obstacole și s-a trimis transformata în distanță la fiecare modificare. În primă variantă algoritmii de determinare a traiectoriilor aveau la bază transformata în distanță apoi a fost înlocuită de harta cu obstacole. Tot în această variantă s-a făcut și miniaturizarea.

Pentru a rezolva problemele inutile datorate vizibilității zonelor fără interes, pe imaginea captată s-a adăugat o mască care să lase vizibilă doar partea utilă. Erorile se pot vedea în figura Interfață-3, acesta reprezentând varianta fară mască. În varianta Interfață-3, masca acoperă acele zone, astfel dispar erorile cauzate de obiectele de lângă arenă, obiecte cu culoarea apropiată de cea de căutare.

4.5 Varianta finală

În varianta finală discurile de carton au fost înlocuite cu discuri de plastic. Aceste discuri nu au numai rol în recunoaștere ci și rol ca suport pentru unul din modulele wire-less.

Limite de prag

4.7 Timpi de lucru

La efectuarea măsurătorilor s-au luat în considerare 5000 de valori și s-au folosit șase sateliți. Unitatea pe care s-au făcut măsurătorile are următoare configurație: procesor AMD Athlon II P340 Dual-Core 2.2GHZ, 2GB Ram, Windows 7 32 bits.

Concluzii și perspective

Folosirea unui algoritm pe bază de culoare oferă date corecte într-un timp scurt.

Prelucrarea centrală, a datelor despre elementele roiului permit comenzi optime având la dispoziție toate informațiile posibile.

Biblioteca OpenCV oferă o gamă largă de funcții optime pentru procesarea digitală de imagini.

În segmentare pe culoare proprietățile de material ale zonelor colorate de pe discurile de identificare au un rol foarte important.

Pe culoarea de căutare nu trebuie aplicată dilatare deoarece crește eroarea pentru unghiul de orientare.

Eroarea unghiului de orientare se datorează deviației de la forma dreptunghiulară a zonei cu culoarea de căutare. Eroarea constă în faptul că pe latura mică a dreptunghiului punctul destinat orientării nu se găsește exact pe mijloc ci se poate găsi în orice poziție pe aceasta

Arena nu trebuie să aibă sursă de lumină exact deasupra ei deoarece aceasta se reflectă din materialul lucios creând erori de procesare.

Cu cât diferența dintre culori, pe cel puțin un plan, este mai mare cu atât culorile sunt mai ușor de identificat.

Cadrul din țevi de PVC din care este confecționată arena îi oferă o greutate mică, putând fi ușor manevrată.

Planurile de viitor in ceea ce privește proiectul implica:

În prezent algoritmul de recunoaștere video a fost testat cu succes pentru 6 roboți (cerințele proiectului) iar acesta a fost gândit pentru 15 elemente maxim. Pe viitor se va folosi pentru numărul maxim de sateliți.

Pentru îmbunătățirea preciziei algoritmul se va construi o sursă de lumină care să lumineze difuz întrega arenă și care să ofere independență față de lumina ambientală.

6. Bibliografie

[1] http://docs.opencv.org/ (OpenCV Documentation)

[2]http://opencv-srf.blogspot.ro/2010/09/object-detection-using-color-seperation.html

[3] http://www.aishack.in/2010/07/tracking-colored-objects-in-opencv/

[4]Topological Structural Analysis of Digitized Binary Images by Border Following

– SATOSHI SUZUKI and KEIICHI ABE

[5] Wikipedia

[6] Digital image processing,3rd Edition, Pearson 2008 – R.C Gonzalez and R.E. Woods

[7] The SWARM-BOTS Project – Marco Dorigo, Elio Tuci1, Roderich Gross, Vito Trianni, Thomas Halva Labella, Shervin Nouyan, Christos Ampatzis, Jean-Louis Deneubourg2, Gianluca Baldassarre, Stefano Nolfi, Francesco Mondada, Dario Floreano, and Luca Maria Gambardella.

[8] A Taxonomy for Swarm Robots – G. Dudek, M. Jenkinj , E. Milios and D. Wilkest

[9] Color Image Processing and Applications – K.N Plataniotis și Venetsanopulos

[10] DISTRIBUTED CONTROL FOR ROBOTIC SWARMS USING

CENTROIDAL VORONOI TESSELLATION – Shelley Rounds[11] Prelucrare digitală de imagini – Molder Cristian

Bibliografie

[1] http://docs.opencv.org/ (OpenCV Documentation)

[2]http://opencv-srf.blogspot.ro/2010/09/object-detection-using-color-seperation.html

[3] http://www.aishack.in/2010/07/tracking-colored-objects-in-opencv/

[4]Topological Structural Analysis of Digitized Binary Images by Border Following

– SATOSHI SUZUKI and KEIICHI ABE

[5] Wikipedia

[6] Digital image processing,3rd Edition, Pearson 2008 – R.C Gonzalez and R.E. Woods

[7] The SWARM-BOTS Project – Marco Dorigo, Elio Tuci1, Roderich Gross, Vito Trianni, Thomas Halva Labella, Shervin Nouyan, Christos Ampatzis, Jean-Louis Deneubourg2, Gianluca Baldassarre, Stefano Nolfi, Francesco Mondada, Dario Floreano, and Luca Maria Gambardella.

[8] A Taxonomy for Swarm Robots – G. Dudek, M. Jenkinj , E. Milios and D. Wilkest

[9] Color Image Processing and Applications – K.N Plataniotis și Venetsanopulos

[10] DISTRIBUTED CONTROL FOR ROBOTIC SWARMS USING

CENTROIDAL VORONOI TESSELLATION – Shelley Rounds[11] Prelucrare digitală de imagini – Molder Cristian

Similar Posts