Cv Board Tabla Interactiva

Capitolul 1 – Introducere

Lucrarea de față își propune, pe baza tehnologiilor existente la ora actuală, să facă un studiu asupra implementării unui sistem didactic de predare, este vorba despre o tablă didactică interactivă, care pentru a fi realizată are nevoie de următoarele elemente: o cameră web, un videoproiector convențional, un spot led și un sistem de calcul în care este instalat ca IDE Visual Studio si librăria OpenCV. Asupra acestor elemente, a detaliilor de proiectare și implementare se va detalia în capitolele următoare.

Premisa de la care a pornit această idee este aceea de a veni in sprijinul studenților cât și a cadrelor didactice de a trece la o tehnologie de învățare modernă, una mult mai intuitivă și mult mai atractivă decât tehnologiile clasice de învățare.

Spre deosebire de celelalte produse asemănătoare de pe piață, acest sistem este unul mai puțin costisitor, unul mai flexibil și mai ușor de implementat, se poate personaliza și are un grad de portabilitate ridicat, deoarece nu are nevoie efectiv de suportul fizic pentru scris.

Principalul dezavantaj al acestui sistem este acela că se comportă diferit in funcție de condițiile de luminozitate din încăperea în care se află, deoarece sistemul a fost proiectat pentru detectarea gradului de luminozitate a spotului led de pe porțiunea unde se proiectează (tablă), iar o fluctuație a luminozității din încăpere ar putea perturba întregul proces de detecție a acestuia.

De asemenea, lucrarea va aborda și aspectele teoretice care să vină in sprijinul acestei idei, se vor trata parți teoretice din domeniul Viziunii Artificiale și a Prelucrării Imaginilor, se va face o scurta prezentare a librăriei OpenCV cât și a etapelor implementării efective a acestui produs.

• Analiza stadiului actual al temei

Dacă în urmă cu ceva timp noțiunea de Viziune Artificială (Computer Vision) era o ramură mai exotică a Informaticii și a Științei Calculatoarelor (Computer Science), astăzi acest domeniu are o gamă largă de răspândire și aplicabilitate în diferite domenii. O serie de aplicații ce au la bază noțiuni și aspecte derivate din domeniul Prelucrării Imaginilor și a Viziunii Artificiale își au implementarea în viața cotidiană.

Astfel, vedem în ultima vreme o adevărată “revoluție” a celor două domenii amintite anterior prin prisma dezvoltării a numeroase dispozitive și echipamente ce folosesc aceste tehnologii. Numeroase exemple pot fi întâlnite mai ales la dispozitivele mobile (smartphone-uri) care au început să implementeze aplicații de recunoaștere faciala, în industria jocurilor video, unde odată cu lansarea dispozitivului Kinect a celor de la Microsoft pentru seria de console Xbox, experiența utilizatorului a trecut la un alt nivel [1].

Fig. 1 – Senzorul Kinect al consolei de jocuri video Xbox 720

În industria aero-spațială observăm o importanță deosebită a aplicațiilor de acest gen în sistemul de ghidare, poziționare și navigare a numeroșilor roboți trimiși la milioane de kilometrii depărtare [2]. Un alt domeniu în care se folosește astfel de tehnologii este cel militar, aici vedem numeroase sisteme ce înglobează o serie de aplicații sofisticate, de la sisteme de detectare de soldați inamici până la sisteme de ghidare a rachetelor și a sateliților militari [3].În medicina, posibilitatea de a explora noi modalități de imagistică, vor duce la noi descoperiri anatomice sau funcționale precum și la depistarea și combaterea unor boli existente precum cancerul [4].Astfel de exemple pot continua însă nu fac parte din obiectul studiului pe care această lucrare și-o propune.

Fig. 2 – Roverul “Rocky 8”, un rover de cercetare, dotat cu un sistem special de ghidare

În contextul în care in această perioadă se pune accentul pe așa zisul concept de “digitalizare” a instituțiilor de învățământ din România prin implementarea la nivel național al manualelor digitale și prin lansarea altor programe pilot de acest gen [5], lucrarea de față abordează un astfel de subiect din aceasta sferă, cel al implementării unui sistem de predare didactic care sa fie ușor de instalat și cu costuri puține.

În momentul de față, în domeniul dezvoltării și proiectării tablelor didactice interactive, piața este dominată de compania Smarttech, cu produsul lor SMART Board, un produs de care și Universitatea “Petru Maior” din Târgu Mureș beneficiază. Tabla oferă o serie de facilități precum multitouch, touch gesture, utilizarea stylus pen, tehnologie cu LED-uri infraroșu, consum redus de energie prin alimentarea prin USB precum și compatibilitate cu diferite sisteme de operare[6].

Fig. 3 – Tabla interactivă SMART Board a celor de la Smarttech

Pe langă compania Smarttech, mai exista o serie de competitori cu produse și soluții asemănătoare, însă deocamdată aceștia nu au reușit să ajungă la nivelul primilor. În ultima vreme se observă o nouă tendință în dezvoltarea acestor dispozitive prin folosirea unor tehnologii mai puțin costisitoare care să reducă prețul final al produsului finit. Se pune accentul pe utilizarea unor biblioteci software ca OpenCV și a unor tipuri de senzori precum senzorul „Kinect” dezvoltat de Microsoft sau „Nintendo Wii Remote” dezvoltat de cei de la Nintendo.

Au apărut o serie de astfel de încercări, unele mai reușite, altele mai puțin, însă un lucru e cert, acela că pe parcursul timpului o să apară tot mai multe astfel de proiecte.

Fig. 4 – Monitor LCD convențional transformat in dispozitiv touchscreen folosind tehnologia OpenCV și senzorul Nintendo Wii Remote(sursa: youtube.com)

• Structura documentului

Primul capitol prezintă câteva noțiuni introductive referitoare la problema dată, scopul lucrării cât și analiza stadiului actual al temei.

Capitolul 2 prezintă fundamentarea teoretică a problemei prin expunerea catorva noțiuni fundamentale ce țin de Viziunea Artificiala și Prelucrarea Imaginilor. Se continuă cu descrierea unui sistem de prelucrare și analiză a imaginilor, prezentarea imaginilor digitale, a operațiilor ce se pot efectua asupra acestora, binarizarea imaginilor, imaginile color (RGB și HSV) precum și trecerea din sistemul RGB in HSV si invers. De asemenea se va trata și câteva aspecte referitor la librăria OpenCV si facilitațiile oferite de aceasta.

Capitolul 3 este dedicat proiectării sistemului și începe cu formularea cerințelor și prezentarea arhitecturii generale a sistemului. Se identifică componentele sistemului și se prezintă rolul acestora. Urmează prezentarea functionalitatii sistemului, a fluxului de date ale sistemului precum și metodologia de proiectare a acestuia.

In Capitolul 4 sunt tratate aspecte ale implementarii efective a sistemului, se vor prezenta tehnologiile folosite, etape de implementare, structura codului sursa, a funcțiilor folosite si altele.

Capitolul 5 se axează pe partea experimentală a proiectului, se vor descrie principalele rezultate obținute, se vor preciza problemele întâmpinate in implementarea sistemului si rezolvarea lor dacă s-a reusit acolo unde a fost cazul.

În finalul documentului vor fi prezentate concluziile acestuia proiect cât și referințele bibliografice.

Capitolul 2 – Fundamentare teoretică

• Viziunea artificială și Prelucrarea Imaginilor

În literatura de specialitate, termenul de Viziune Artificială (Computer Vision) se referă la un domeniu complex care include numeroase tehnici și metode pentru achiziția, prelucrarea și analiza imaginilor sau a cadrelor video din mediul exterior. Scopul acestuia este acela de a reda cât mai fidel efectul vizual uman de a percepe și înțelege de către sistemul de calcul a imaginii pe cale electronică și numerică, de fapt preia date de la un aparat foto sau video și le transformă într-o decizie sau o nouă reprezentare.

Există o serie de alte discipline înrudite cu Viziunea Artificială sau care au puncte comune de studiu cu aceasta, precum Inteligența Artificiala(Artificial intelligence), Recunoașterea Formelor(Pattern recognition), Prelucrarea Semnalelor, Senzorii, Optica ș.a.m.d. însă cele mai apropiate de acest domeniu sunt Prelucrarea Imaginilor și Viziunea Calculatoarelor(Machine Vision)

„Prelucrarea și analiza imaginilor (numită adeseori prescurtat doar Prelucrarea Imaginilor) s-a născut datorită ideii și necesității de a înlocui observatorul uman printr-o mașină. Este important de precizat că analiza imaginilor a mers mai departe decât simpla înlocuire a observatorului uman, deoarece au apărut soluții inovatoare pentru probleme cu care acesta nu mai fusese confruntat – ca în cazul imaginilor non-vizibile (imagini acustice, ultrasonore, radar)”[7].

Există trei tipuri de procese computerizate de prelucrare în domeniul Prelucrării Imaginilor: procese de nivel jos, mediu și înalt. Procesele de nivel jos implică operații primitive cum ar fi cele pentru: reducerea zgomotelor, îmbunătățirea contrastului și accentuarea contururilor dintr-o imagine. Un proces de nivel jos este caracterizat de faptul că atât intrarea cât și ieșirea sunt imagini. Un proces de nivel mediu implică operații ca segmentarea (partiționarea unei imagini în regiuni sau obiecte), descrierea obiectelor dintr-o imagine. Un proces de nivel înalt poate fi descris de “generarea sensului”, efectuarea funcțiilor cognitive.

• Structura unui sistem de prelucrarea și analiza imaginilor

Un sistem de prelucrarea și analiza imaginilor este de obicei structurat din punct de vedere al funcționalității dintr-un număr relativ redus de blocuri. Sistemul de formare a imaginii în general este format din sistemul de lentile al camerelor de luat vederi și are rolul de a strânge radiația electromagnetică a obiectului studiat pentru a forma imaginea trăsăturilor de interes. Împreună cu convertorul de radiație formează senzorul, acesta având rolul de a realiza o proiecție plană (bidimensională) a scenei reale (este de obicei una tridimensională).

Fig. 5 – Schema generală a unui sistem de prelucrare și analiză a imaginilor(C. Vertan, Prelucrarea și Analiza Imaginilor, Printech București, 1999)

Sistemul de achiziție(echivalent unui frame-grabber sau video-blaster) convertește semnalul electric al senzorului într-o imagine digitală, pe care o stocheză, acesta nu este altceva decât un dispozitiv de eșantionare (discretizare a suportului imaginii) și cuantizare (discretizare a domeniului de valori a imaginii). Sistemul de prelucrare este în mod tipic un calculator, fie el PC sau stație de lucru. În această categorie se încadrează însă și unele mașini specializate de calcul, calculatoarele de proces, etc. Software-ul specializat implementează algoritmii de prelucrare și analiză.

• Imaginile digitale

Întru-un sistem de prelucrare si analiză a imaginilor ca cel descris anterior, sistemul de calcul sau computerul primește de la aparatul de fotografiat sau video o grilă de numere, deseori sub formă bidimensională de matrice, ca în figura de mai jos.

Fig. 6 – Pentru un sistem de calcul, oglinda laterală a mașinii nu reprezintă decât o grilă de numere(G. Bradski, A. Kaehler, “Learning OpenCV”, O’Reilly Media, Inc. , 2008)

Deseori, o imagine se poate defini ca fiind o funcție de tip bi-dimensională f(x,y), unde x și y nu sunt altceva decât coordonatele spațiale iar f – amplitudinea, aceasta mai fiind numită și intensitate sau nivel de gri în acel punct. Când valorile x, y și f sunt finite și discrete, imaginea este numită imagine digitală. Fiecare element de imagine poartă numele de pixel (cuvânt preluat din limba engleză, provine de la picture element)[8].

(2.1)

Funcția de mai sus descrie modelul matematic discret al imaginii, cel utilizat in practică unde funcția f ia valori discrete, fiind definită pe un domeniu de valori discrete.

Trecerea de la domeniul continuu la domeniul discret se face prin eșantionare și cuantizare.

După tipul datelor din aceasta structură bidimensională, imaginile prelucrate pot fi împărțite in mai multe categorii:

• Imagini scalare, în care fiecare componentă este un scalar(un număr unic), ca exemple de astfel de imagini se pot da imaginile monocrome în care punctele au doar două valori posibile ce corespund unui conținut binar al imaginii, în general alb-negru cât și imaginile cu nivele de gri de tipul imaginii de luminanță de pe ecranele televizoarelor alb-negru.

• Imagini vectoriale, în care fiecare componentă este un vector de numere, un exemplu particular este cel al imaginilor color, în care vectorul are trei elemente ce corespund celor trei constituente de bază ale oricărei culori. Tot în categoria imaginilor vectoriale intră și imaginile stereo, o pereche de imagini ale aceleiași scene, luate din unghiuri diferite cât și secvențele de imagini.

După natura lor, imaginile pot fi clasificate ca imagini abstracte, imagini non-vizibile și imagini vizibile. Imaginile abstracte sau modelele sunt de fapt funcții (matematice), continue sau discrete, de două variabile. Imaginile non-vizibile, care, evident, nu pot fi percepute în mod direct de ochiul uman, sunt de fapt achiziții ale unor câmpuri bidimensionale de parametri fizici (presiune, temperatură, presiune, densitate, …). În fine, imaginile ce pot fi percepute în mod direct de către ochiul uman (deci imaginile vizibile) sunt la rândul lor imagini optice, generate ca distribuții de intensitate luminoasă (așa ca hologramele, imaginile de interferență și difracție) sau imagini propriu-zise (de luminanță – în sensul curent al termenului, ce se referă la fotografii, desene, picturi, schițe, scheme și altele din aceeași categorie)[9].

• Eșantionarea și cuantizarea imaginilor

Pentru a putea prelucra cu ajutorul unui dispozitiv de calcul o imagine de tipul f(x,y), aceasta trebuie discretizată spațial și în amplitudine. Discretizarea coordonatelor spațiale (x,y) poartă numele de eșantionare.

Eșantionarea reprezintă astfel acel proces de aproximare a unei imagini continue f(x,y) cu o matrice de dimensiune m x n de tipul:

(2.2)

Cuantizarea este procesul de discretizare a valorilor funcției f(x,y). Aceasta se realizează de obicei cu ajutorul unei funcții de tip scara, de forma celei din Figura 7. Astfel, tuturor valorilor lui x dintr-un interval li se atribuite valori discrete k. Cuantizarea este un proces însoțit de zgomot, cunoscut sub numele de eroare de cuantizare. Cea mai utilizată metodă de cuantizare este cea uniformă, ceea ce înseamnă că intervalele funcției de cuantizare sunt egale[10].

Fig. 7 – Exemplu de funcție de cuantizare

• Operații de prelucrare si analiză asupra imaginilor

Sistemul software al unității de calcul este responsabil cu realizarea efectivă a unei sarcini concrete, acesta poate fi descompus în mai multe module, nu neapărat bine separate sau prezente împreună. Astfel distingem tehnici de îmbunătățire a imaginilor, de restaurare a acestora, de compresie și de segmentare.

• Îmbunătățirea imaginilor are ca scop accentuarea anumitor trăsături(ale obiectelor conținute in imagine) pentru ușurarea unor sarcini ulterioare de analiză automată sau interpretare prin afișare. Asemenea metode pot fi utile la extragerea trăsăturilor caracteristice ale obiectelor, eliminarea zgomotelor suprapuse imaginii, mărirea confortului vizual. Acești algoritmi nu măresc conținutul informațional al imaginii și sunt în general interactivi și puternic dependenți de aplicație.

• Restaurarea imaginilor se referă la eliminarea sau minimizarea efectelor unor perturbații¸ si a unor degradări. Perturbațiile reprezintă în general zgomotele (modelate ca procese aleatoare) ce se suprapun în cursul achiziției imaginii (din cauza senzorului și a lanțului de transmisiune și captare); degradările sunt cauzate de imperfecțiunile și limitările deterministe ale senzorului (efecte de apertură, timp de expunere, deficiențe geometrice ale sistemului de lentile, etc.).

• Compresia imaginilor se referă la reducerea volumului de date (numărului de biți) cu care este reprezentată imaginea, printr-o transformare reversibilă – imaginea trebuie să poată să fie recuperată integral (sau cu diferențe foarte mici, controlabile) din versiunea sa comprimată.

• Segmentarea este procesul de descompunere a unei imagini (sau scene) în elementele (obiectele) sale constituente. Adeseori, segmentarea este strâns legată de algoritmii de analiză, al căror scop este de a realiza măsurători cantitative sau evaluări calitative asupra unor anumite categorii de obiecte, prezente în imaginea dată.

Imaginile digitale pot fi stocate în memoria sau pe discul unui sistem de procesare și analiză a imaginilor, în vederea vizualizării sau prelucrării ulterioare. Pe disc imaginile sunt stocate sub forma unor fișiere. Fișierele pot fi de mai multe feluri, în funcție de formatul în care păstrează datele ce reprezintă imagini: BMP, JPEG, GIF, TIFF, etc. Cel mai simplu format de fișier imagine este Windows Bitmap (BMP) al celor de la Microsoft. Acesta este formatul în care o imagine digitală este stocată practic fără nici un fel de codare sau pierdere de informație, cu excepția reprezentării binare.

• Binarizarea imaginilor. Prăguirea (Thresholding)

Pentru realizarea sistemului propus este nevoie de implementarea unor operații de binarizare sau prăguire a imaginii(thresholding). Acestea fac parte din categoria operațiilor de îmbunătățire a imaginilor. Metodele de îmbunătățire a imaginilor în general se împart în doua categorii mari:

• Metode de îmbunătățire în domeniul spațial;

• Metode de îmbunătățire în domeniul frecvență.

Domeniul spațial se referă la totalitatea pixelilor ce compun o imagine, iar metodele în domeniul spațial sunt proceduri ce operează direct pe acești pixeli.

Metodele de prelucrare în domeniul frecvență se bazează pe modificarea transformatei Fourier a imaginii.

Funcțiile de prelucrare a imaginii în domeniul spațial se pot exprima prin relația:

(2.3)

În formula de fața, f(x,y) este imaginea de intrare; g(x,y) este imaginea prelucrata și T este o funcție de transformare (operator de transformare) definită pe o vecinătate a punctului de coordonate (x,y) din imaginea de intrare.

În funcție de dimensiunea vecinătății vom avea următoarele tipuri de operații (funcții de transformare):

– punctuale – noua valoarea a pixelului curent (valoarea de ieșire a funcției de transformare pentru pixelul de coordonate (x,y)) depinde doar de vechea valoare a pixelului curent;

– locale – noua valoare a pixelului curent este calculată folosind valorile vechi ale pixelului curent și ale pixelilor din vecinătatea lui;

– globale – noua valoare a pixelului curent este dependentă de valorile tuturor pixelilor din imaginea de intrare (imaginea inițială).

Fig. 8 – Tipuri de operații: a) punctuală; b) locală; c) globală

Operațiile punctuale de modificare a contrastului (numite și transformări ale nivelului de gri) sunt asocieri (mapping, în engleză) ce leagă nivelul de gri original (notat cu r) de noua sa valoare (notată cu s). O asemenea asociere nu este altceva decât o funcție:

(2.4)

În [8] se stabilesc ca necesare condițiile ca transformarea T să păstreze gama admisibilă de valori ale imaginii (dacă nivelele de gri au fost reprezentate pe L nivele de cuantizare, atunci ,transformarea T să fie monotonă (crescătoare sau descrescătoare) pentru a păstra ordinea între nivelele de gri. În cazul imaginilor cu nivele de gri reprezentate pe un octet valoarea lui L = 256, astfel nivelul minim de gri (negru) are valoare 0 (zero) iar nivelul maxim de gri (alb) are valoare 255 (L-1).

Cea mai des folosită tehnică de modificare liniară a contrastului este o transformare liniară pe porțiuni, dată de:

(2.5)

În formula anterioară, parametrii de control sunt r1, r2, s1 și s2; aceștia sunt grupați câte doi, definind punctele (r1, s1) și (r2, s2). Aceste două puncte de control, împreună cu punctele fixe (0, 0) și (L − 1, L − 1) vor defini cele trei segmente de dreaptă ce apar în formula (2.5).

Fig. 9 – Modificarea lineară a contrastului

Rezultatul aplicării unei asemenea operații punctuale se obține modificând valoarea (nivelul de gri) fiecărui pixel al imaginii inițiale, r, conform (2.5), obținând noul nivel de gri s. Transformarea poate fi făcută în două moduri: fie se repetă calculele de la (2.5) pentru fiecare pixel, baleiind imaginea, fie noile valori ale contrastului se calculează de la început pentru toate nivelele de gri posibile (între 0 și L−1) și apoi aceste modificări se aplică imaginii. În funcție de alegerea celor patru parametri, se pot obține câteva cazuri particulare de interes ce poartă denumiri specifice.

Fig. 10 – Binarizarea (Thresholding)

Dacă r1 = r2, s1 = s2 și s2 = L − 1, se obține binarizarea (“thresholding”). În imaginea rezultată prin aplicarea acestei operații, nu există decât alb și negru, toate nivelele de gri inițiale a căror valoare era mai mică decât r1 fiind negre și toate nivelele de gri inițiale mai mari ca r1 devenind albe.

Fig. 11 – Întinderea contrastului (contrast stretching)

Dacă s1 = 0 și s2 = L − 1 se obține operația de întindere maximă a contrastului (“contrast streching”) pentru intervalul [r1, r2]. Nivelele de gri care se găsesc în afara acestui interval vor fi înlocuite fie cu alb, fie cu negru.

Principalul dezavantaj al tehnicii liniare pe porțiuni prezentate este faptul că modificarea contrastului este aceeași pe un întreg interval de nivele de gri, și nu este posibilă o modificare neuniformă a contrastului pe întregul interval de nivele de gri sau în jurul unui anume nivel de gri.

Fig. 12 – În cadrul aplicației, in fereastra din dreapta se vede efectul de thresholding, atunci când camera web detectează pointerul de culoare roșie

• Zgomotul în imagini

Zgomotul este un semnal aleator, care afectează informația utilă conținută într-o imagine. El poate apare de-a lungul unui lanț de transmisiune, sau prin codarea și decodarea imaginii și reprezintă un element perturbator nedorit. De obicei se încearcă eliminarea lui prin diverse metode de filtrare.

Zgomotul se poate suprapune informației utile în două moduri:

• Aditiv, În acest caz, zgomotul se numește zgomot aditiv și matematic se poate scrie:

g(x,y) = f(x,y) + n(x,y) (2.6)

• Multiplicativ. În acest caz zgomotul se numește zgomot multiplicativ, iar fenomenul de suprapunere al acestuia peste informația utilă se scrie matematic astfel:

g(x,y) = f(x,y)·n(x,y) (2.7)

unde f(x,y), n(x,y) ¸si g(x,y) au aceleași semnificații ca mai sus.

Cantitativ, se poate aprecia măsura în care zgomotul a afectat informația utilă, calculând raportul semnal-zgomot(SNR = (engl.) Signal Noise Ratio):

Fig. 13 – Modelul aditiv de degradare

(2.8)

(2.9)

Raportul semnal-zgomot reprezintă raportul dintre energia imaginii originale și energia zgomotului suprapus acesteia

Există numeroase tipuri de zgomot, cele mai importante fiind zgomotul cu distribuție uniformă, cel cu distribuție gaussiană, cel de tip „sare și piper”, cel cu distribuție Maxwell, etc.

• Imaginile color

Culoarea este senzația vizuală care implică o sursă de lumină, obiecte colorate și ochii observatorului uman. Aceste elemente interacționează unul cu celălalt și produc senzația de culoare.

Ochiul uman simte acest spectru de lumină folosind o combinație de celule de tip conuri și bastonașe. Celulele de tip conuri sunt mai bune pentru vedere în condiții de lumină slabă, dar ele pot simți doar intensitatea luminoasă, pe când bastonașele pot discerne și culorile. Ele funcționează cel mai bine în lumină puternică. Ochiul uman conține 3 tipuri de bastonașe, fiecare dintre ele fiind mai sensibil la lumina cu lungimi de undă diferite; scurt (S), mediu (M) sau lung (L). Setul total de semnale posibile la toate cele trei tipuri de bastonașe, descriu cât de mare este gama de culori pe care le putem percepe.

Culoarea percepută este rezultatul interacțiunii dintre lumină, obiect și observator. Fiecare dintre cele trei componente influențează într-un mod sau altul culoarea. Din punct de vedere fizic spectrul vizual este compus din unde între UV (ultra violet) și IR (infraroșu) adică undeva între 400 și 700 nm[11].

Fig. 14 – Spectrul vizual al culorilor, lungimile de undă a acestora

Utilizarea culorii în domeniul prelucrării imaginilor este motivată de următorii factori principali:

Culoarea este un descriptor puternic care adesea simplifică identificarea și extragerea obiectelor din cadrul unei scene, omul este capabil să deosebească mii de nuanțe și intensități de culoare comparativ cu aproximativ două duzini de nuanțe de gri. Al doilea factor este important în analiza manuală (realizată de specialistul uman) a imaginilor.

Datorită caracteristicilor de absorție ale ochiului uman, culorile sunt percepute ca și combinații variabile ale așa numitelor culori primare: roșu (R, eng. red), verde (G, eng. green) și albastru (B, eng. blue). Prin combinarea culorilor primare se obțin culorile secundare ale luminii: magenta (M = R + G), cyan (C = G + B) și galben (eng. yellow, Y = R + G). Combinarea celor trei culori primare ale luminii sau a unei culori secundare a luminii cu culoarea sa primară opusă se produce culoarea albă (Figura 15a).

• b)

Fig. 15 – Culorile primare și secundare ale luminii (a) și ale pigmenților pe o hârtie albă (b)

Diferențierea dintre culorile primare ale luminii și culorile primare ale pigmenților sau coloranților este importantă. O culoare primară din ultima categorie este definită ca una ce absoarbe o culoare primară a luminii și reflectă celelalte două culori primare ale luminii. Astfel, culorile primare ale pigmenților sunt magenta, cyan și yellow iar culorile secundare ale pigmenților sunt roșu, verde și albastru. Combinarea celor trei culori primare ale pigmenților sau a unei culori secundare a pigmenților cu culoarea sa primară opusă se produce culoarea neagră (Figura 15b).

Culorile primare ale luminii mai sunt numite și culori primare aditive iar, culorile primare ale pigmenților mai sunt numite culori primare substractive [12].

Culoarea are următoarele atribute importante: nuanță, saturație și strălucire. Toate trei trebuie să fie controlate pentru a reproduce culoarea, ținând cont de definirea lor. Astfel:
Nuanța (Hue) descrie "culoarea" culorii, dacă este roșie, verde, albastră, cyan, magenta, galbenă, etc. Nuanța rezultă din lungimea de undă dominantă a luminii.
Saturația (Saturațion) descrie intensitatea culorii și depărtarea față de gri, putând sa varieze de la tare la slab. Un exemplu pentru schimbarea saturației este adăugarea de pigment în vopsea. Cu cât se adaugă mai mult pigment cu atât crește saturația, neschimbându-se nuanța.
Strălucirea (Brightness) descrie iluminarea culorii putând fi mai închisă sau mai deschisă. De exemplu, un roșu foarte saturat poate fi închis (un vin roșu) sau strălucitor (o floare ex. mușcata).

• Modele de culoare

Scopul unui model de culoare (denumit și spațiu de culoare sau sistem de culoare) este de a ușura specificarea culorilor în anumite standarde. În esență, un model de culoare este o specificare a unui sistem de coordonate și a unui subspațiu în care fiecare culoare este reprezentată de un singur punct. Multe din modelele de culoare utilizate în prezent sunt orientate fie, spre hardware (cum sunt culorile monitoarelor și a imprimantelor) fie spre aplicații în care manipularea culorii este un scop (ex. crearea culorilor grafice pentru animații). Deși în prezent sunt utilizate numeroase modele de culoare, în practică, cele mai utilizate modele orientate spre hardware sunt:

– modelul RGB (red, green, blue) pentru monitoarele color și pentru o gamă largă de camere video;

– modelele CMY (cyan = azuriu, magenta = purpuriu (roșu închis spre violet), yellow = galben) și CMYK (cyan, magenta, yellow, black) pentru imprimantele color;

– modelul HSI (hue, saturation, intensity), este modelul care este foarte apropiat de modul uman de descriere și interpretarea a culorii[13].

În realizarea aplicației propuse, pentru ușurință se vor utiliza modelele RGB și HSV pentru captarea și prelucrarea imaginilor video provenite de la camera web.

• Modelul RGB

În acest model, fiecare culoare este o combinație de roșu (Red), verde (Green) și albastru (Blue). Acest model se bazează pe sistemul cartezian de coordonate. Subspațiul de culori este un cub, ca in Figura 14. Nuanțele de gri se situează pe diagonala cubului, de la punctul Black (0,0,0) la punctul White (1,1,1), iar culorile sunt puncte pe și in interiorul cubului. Valorile R, G și B au fost normalizate, astfel încât cubul RGB este cubul unitate.

Imaginile color reprezentate RGB sunt alcătuite din trei plane de imagine independente, câte unul pentru fiecare culoare primară. Acest model este folosit în special la monitoare și la camere digitale, acolo unde culorile sunt produse prin emisia simultană a trei surse de lumină: roșie, verde și albastră.

Fig. 16 – Cubul RGB(R., C., Gonzalez, P., Wintz, “Digital Image Processing”, Adison-Wesley, 1987)

În cazul Figurii 16 se consideră că valorile celor trei componente RGB sunt normalizate în domeniul [0,1]. Imaginile reprezentate în modelul de culoare RGB constau din trei imagini componente, câte una pentru fiecare culoare primară. Numărul de biți utilizați pentru reprezentarea fiecărui pixel în spațiul RGB poartă numele de adâncimea pixelului. Se consideră o imagine RGB, în care fiecare imagine componentă (în roșu, verde și albastru) este o imagine pe 8 biți (fiecare punct dintr-o astfel de imagine este o valoare pe 8 biți). În acest context, fiecare pixel de culoare RGB (este un triplet de valori (R,G,B)) v-a avea o adâncime de 24 de biți. Termenul de imagine total-color (full-color) este utilizat de obicei pentru a indica o imagine color RGB pe 24 de biți. Numărul total de culori într-o imagine RGB pe 24 de biți este de (28)3 = 16.777.216. În acest caz cubul de culori RGB este cel reprezentat în Figura 17.

Fig. 17 – Cubul RGB PE 24 biți (R., C., Gonzalez, P., Wintz, “Digital Image Processing”, Adison-Wesley, 1987)

• Modelul HSV

Modelul de față este oarecum derivat din modelul RGB, fiind un model mai aproape de percepția ochiului uman.

Modelul HSV își propune să reprezinte culorile astfel:

• Hue (nuanța) se referă la diferitele culori din spectrul vizibil

• Saturațion (saturație) se referă la intensitatea unei culori sau, altfel spus, cât de nuanțată este culoarea respectivă.

• Value (luminozitatea) se referă la luminozitatea unui culori; altfel spus, discutăm despre cât alb și cât negru se găsește într-o culoare [14].

Modelul HSV a fost formal descris în 1978 de către Alvy Ray Smith, deși noțiunea de a descrie culorile în trei dimensiuni datează din secolul 18.

Modelul HSV este des întâlnit și sub numele de HSB, și HSI, deși între noțiunea de strălucire și intensitate este o diferență.

Modelul HSV este frecvent utilizat în aplicații grafice. În diferite contexte de aplicare, un utilizator trebuie să aleagă o culoare pentru a fi aplicată la un anumit element grafic. Atunci când este utilizată în acest fel, roata de culoare HSV este adesea folosită. În aceasta, nuanța culorii este reprezentată printr-o regiune circulară; separat, o regiune triunghiulară poate fi utilizată pentru a reprezenta saturația și valoarea. În mod obișnuit, axa verticală a triunghiului indică saturația, în timp ce axa orizontală corespunde valorii. În acest fel, o culoare poate fi aleasă culegând prima dată nuanța de culoare de pe regiunea circulară, apoi selectând saturația și valoarea dorită de pe regiunea triunghiulară.

Fig. 18 – Reprezentarea modelului HSV sub forma unui con

O altă metodă de vizualizare a modelului HSV este conul (Figura 17). În această reprezentare, nuanța de culoare este înfățișată ca un complet conic tridimensional al roții de culoare.

Nuanțele sunt reprezentate de unghiul fiecărei culori în con relativ la linia 0°, care este tradițional atribuită la culoarea roșie.

Saturația este reprezentată de distanța de la centrul unei secțiuni circulare transversale a conului, iar valoarea este distanța de la sfârșitul ascuțit, punctual al conului. Culorile foarte saturate sunt pe marginea exterioară a conului, iar cele în tonuri de gri (care nu au nici o saturație) sunt înspre centru.

Valoarea reprezintă luminozitatea culorii și variază cu saturația. Aceasta variază de la 0 la 1, acestea fiind valori normalizate. În cazul în care valoarea este "0" spațiul de culoare va fi complet negru. Odată cu creșterea valorii crește și luminozitatea spațiului de culoare și arată culori diferite. Valoarea „1” nu va arăta culoare albă, ci va arăta cea mai luminoasă culoare posibilă.

• Conversia culorii din modelul RGB în modelul HSV

Având o imagine în formatul RGB, componenta V pentru fiecare pixel se obține utilizând relația:

(2.10)

Fie:

(2.11)

Saturația este dată de:

(2.12)

Nuanța se calculează folosind relația:

(2.13)

În cazul relațiilor (2.10÷2.13) s-a considerat că valorile RGB sunt normalizate în intervalul [0,1]. Valorile nuanței pot fi normalizate la intervalul [0,1] prin împărțirea tuturor valorilor obținute cu relația (2.9) la 360º. Celelalte două componente ale modelului HSV au valori în intervalul [0,1].

• Conversia culorii din modelul HSV în modelul RGB

Având valorile componentelor H, S, V, valori normalizate în domeniul [0,1], pentru a obține valori R, G, B folosim următorii pași:

(2.14)

(2.15)

Fie:

(2.16)

(2.17)

(2.18)

(2.19)

În funcție de I vom avea mai multe cazuri:

(2.20)

(2.21)

(2.22)

(2.23)

(2.24)

(2.25)

Floor(x) reprezintă întregul mai mic sau egal cu x. Doar un singur caz va fi executat în funcție de valoarea lui I, iar expresia (R, G, B) = (X, Y, Z) este echivalentă cu R=X, G=Y, B=Z.

• Librăria OpenCV. Arhitectura și facilitațiile oferite de aceasta

În cadrul implementarii produsului (scrierii codului sursă), s-au apelat numeroase funcții ale librăriei OpenCV. OpenCV este o librărie de tip open-source (computer vision library) scrisă in limbajele de programare C și C++ și care rulează pe platforme ca Linux, Windows și Mac OS X. De asemenea, există o dezvoltare rapida și pe alte platforme și limbaje de programare cum ar fi Python, Ruby, Matlab sau altele.

OpenCV a fost proiectat pentru a eficientiza puterea computațională a sistemelor de calcul cât și pentru dezvoltarea aplicațiilor în timp real. Unul dintre obiectivele librăriei OpenCV este de a oferi o infrastructură software simplă a viziunii artificiale care să îi ajute pe oameni să construiască aplicații de acest tip destul de sofisticate și cu o implementare rapidă.

La ora actuală, biblioteca conține peste 500 de funcții care se întind pe mai multe zone de interes din viziunea artificială precum imagistică medicală, securitate, interfețe de utilizator, calibrarea camerei, viziune stereo, robotică și altele.

Pentru că viziunea artificială și inteligența artificială sunt ramuri cu multe aspecte comune, OpenCV conține de asemenea o librărie specializată de acest gen (Machine Learning Library sau MLL)[15].

OpenCV are o structură modulară, ceea ce înseamnă că pachetul include mai multe biblioteci partajate sau statice. Cele mai importante module sunt:

• core – un modul compact care definește structuri de date de bază, inclusiv matricea multidimensională Mat și funcțiile de bază utilizate de toate celelalte module.

• imgproc – un modul de procesare a imaginii, care include filtre liniare și non-liniare, transformări de imagini geometrice(redimensionări, deformări de perspectivă), conversie de spațiu de culori, histograme și altele.

• video – un modul de analiză video care include estimări de mișcare și algoritmi de urmărire a obiectelor.

• calib3d – include algoritmi de bază pentru vizualizare geometrică, calibrare unică și stereo a camerei, algoritmi de estimare a poziției obiectelor precum și elemente de reconstrucție 3D.

• features2d – include caracteristici de detecție, precum și numeroși descriptori.

• objdetect – se ocupă de detectarea obiectelor și are o mulțime de clase predefinite(detectarea feței, a ochilor, a mașinilor din trafic, etc.)

• highgui – o interfață ușor de utilizat pentru captura video și de imagine.

• gpu – algoritmi pentru partea de GPU[16].

Asupra instalării și configurării librăriei OpenCV precum și a utilizării anumitor funcții din aceste module utilizate în cadrul proiectului se vor detalia mai multe în capitolele în care se va aborda proiectarea și implementarea sistemului.

Capitolul 3 – Proiectarea sistemului

• Cerințe.

Se consideră un sistem de calcul (partea centrală a sistemului propus) la care se conectează două periferice, o camera web și un videoproiector convențional.. Comunicarea cu aceste dispozitive se va face în timp real, astfel odată lansată aplicația, camera web va capta pointerul de culoare roșie de pe suprafața de pe care se proiectează (de regulă un perete alb) iar videoproiectorul va suprapune peste aceeași suprafața o fereastră care reprezintă tabla virtuală. Mișcarea pointerului pe această suprafață în interiorul ferestrei (tablei virtuale), în urma procesării de către aplicație a datelor provenite de la camera web, va face sa creeze “o dâră” asemănătoare celei lăsate de o cretă sau oricărui alt instrument de scris.

Fig. 19 – Elementele componente ale sistemului și principiul de funcționare a acestuia. Obiectele numerotate pe figură reprezintă, în ordinea următoare: 1)Sistemul de calcul;

2) Camera web; 3) Videoproiectorul; 4) Tabla fizică (peretele);

Camera web va capta tot ceea ce se găsește pe suprafața tablei. Dacă aceasta este complet albă atunci nu va capta decât punctul roșu făcut de pointerul led. Imaginea astfel captată va fi transmisă unității de calcul și implicit aplicației. Aceasta, în urma operației de prăguire (thresholding) va elimina pixelii diferiți de culoarea roșie. Va rezulta o imagine binarizată, care va fi suport pentru crearea imaginii în care va fi desenată „dâra” (traiectoria) acelui punct de pe imaginea binarizată.

• Arhitectura sistemului

Sistemul dezvoltat este realizat prin folosirea unor periferice în care se individualizează ca și componentă centrală unitatea de calcul. În acest model, în componenta centrală se găsește aplicația care va iniția toate comunicațiile iar perifericul va comunica cu aceasta numai dacă a fost inițiată o comunicare pentru această entitate. Avem deci o componentă centrală reprezentată de sistemul de calcul (calculator) și două componente auxiliare sau periferice (camera web și videoproiectorul). Comunicarea între periferice și sistemul de calcul este una bidirecțională, după cum se vede în Figura 20.

Fig. 20 – Modelul de comunicare între componentele sistemului curent

În cadrul componentei centrale a sistemului (aplicația software sau executabilul),codul sursă este format prin invocarea unor metode sau funcții din librăria OpenCV cât și a unora din cadrul platformei Visual Studio. Pe lângă acestea, executabilul mai conține și alte fișiere precum fișiere de tip obiect, manifest sau de linkeditare. În Figura 21 este evidențiată structura aplicației software propuse sau a codului sursă prin folosirea instrumentului de Code Map din cadrul platformei Visual Studio 2013. Astfel în cadrul executabilului (proiect_licenta.exe) care e marcat aici de culoarea verde deschis, se evidențiază spațiul de nume (namespace std) de culoare albastră, în interiorul căruia se găsesc doua metode(funcții). Funcția ImagineBinarizata are rolul de a face conversia din imaginea de tip RGB provenită de la camera web în una de tip HSV și de a stabili pragurile de detectare a spotului de culoare roșie iar în cadrul funcției main se realizează interfața aplicației, inițializarea capturii, inițializarea ferestrelor aplicației, bucla infinită pentru rularea continua a capturii video. Mai multe aspecte despre realizarea efectivă a implementării structurii și conținutului codului sursă se vor regăsi în Capitolul 4.

Fig. 21 – Structura aplicației (codului sursă), nucleul componentei centrale a sistemului

Din punct de vedere funcțional, aplicația conține următoarele funcții prin care utilizatorul (actorul extern) interacționează cu aceasta, funcțiile fiind accesibile prin intermediul unui meniu.

Acest lucru se redă de obicei prin intermediul unei diagrame de utilizare care prezintă actorii externi și cazurile de utilizare identificate, numai din punctul de vedere al actorilor (care este comportamentul sistemului, așa cum este el perceput de utilizatorii lui) nu și din interior, precum și conexiunile identificate între actori și cazurile de utilizare[17].

• Radieră – funcționalitate ce permite ștergerea conținutului din anumite porțiuni de pe fereastra ce afișează tabla virtuală;

• Ștergere(Clear) – funcționalitate ce permite ștergerea întregului conținut al tablei virtuale;

• Salvare(Captură) – funcționalitate ce permite o captura a întregului conținut a tablei virtuale și salvarea acestuia pe disc sub forma unui fișier de tip jpg;

• Roșu, Verde, Albastru – funcționalități ce permit schimbarea culorii lăsate de “dâra” spotului led pe tabla virtuală;

• Trackbar – funcționalitate implementată printr-o interfață ce permite reglarea parametrilor HSV a spotului led (pointerului roșu) pentru adaptarea la diferite condiții de lumină;

• Exit – prin intermediul acestei funcționalități se iese din bucla continuă și implicit din aplicație.

Fig. 22 – Structura aplicației software bazată pe funcționalitățile acesteia – diagrama use- case

Funcționalitățile descrise mai sus, cu excepția componentei Trackbar, se regăsesc în cadrul meniului din fereastra Cv Board (tabla virtuala) iar toate acestea împreună compun interfața cu utilizatorul (GUI).

• Modelarea dinamica a sistemului

Pentru modelarea dinamică a sistemului se folosește de obicei diagrame UML de tip stare(statechart diagram). Acestea sunt utile pentru a descrie fluxul de control de la o stare la alta și a descrie diferite stări ale unui obiect în timpul duratei sale de viață.

Sistemul propus spre implementare se comporta pana la urma ca orice automat, în Figura 26 este exemplificat acest lucru cu ajutorul diagramei UML de stare.

Fig. 23 – Diagrama de stare(activitate) a sistemului propus

După cum se observă, la început aplicația verifică dacă detectează camera web, dacă aceasta nu există sau nu se poate inițializa captura de la ea, atunci se va returna un mesaj de eroare iar aplicația se va închide. Dacă se reușește să se inițializeze captura de la dispozitiv, atunci algoritmul implementat va inițializa ferestrele in care se vor crea mai departe imaginile și frame-urile pentru prelucrare și procesare. De asemenea, tot în această stare se vor inițializa și crea “imaginile” pentru a scrie/desena urma(traiectoria) pointerului, acestea sunt nule inițial.

Din această stare se va trece în starea în care se pregătește frame-ului capturat de la camera web. Aici, cu o metodă specială se citește fișiere video și se captează date decodate iar apoi se returnează un frame. Cu frame-ul realizat in starea precedentă se va intra într-o buclă infinită pentru a rula continuu conținut video (frame-uri) de la camera web spre a fi prelucrate și procesate. Printre cele mai importante metode de prelucrare și procesare aflate în această stare ar fi conversia din sistemul RGB în HSV, prăguirea (thresholding), calcularea momentelor pentru a stabili traiectoria pointerului precum și desenarea efectivă a acestei traiectorii. La începutul intrării in această buclă de tip while , dacă frame-ul nu se poate realiza, atunci se iasă din buclă și implicit din program.

Din starea ce rulează conținut video continuu (bucla while) se mai poate ieși fie prin apăsarea unei taste de la tastatura, fie prin poziționarea pointerului in zona de meniu în care se stabilește ieșirea automata din aplicație.

O altă modalitate de a modela dinamic sistemul este acela de a fi reprezentat printr-o diagrama de secvență, rolul acestor tipuri de diagrame este acela de a modela scenariile posibile și de a prezenta temporal interacțiunile dintre obiecte.

În Figura 24 este reprezentat cât mai minimalist, printr-o astfel de diagramă sistemul curent, cu precizarea că locul obiectelor din conceptul programării orientate-obiect este luat de „obiecte fizice” precum sistemul de calcul, camera web sau videoproiectorul. Acestea se comportă asemănător obiectelor POO întrucât au o durată de viață de funcționare și pot primi mesaje de la celelalte obiecte iar la rândul lor, acestea pot să ofere răspunsuri către celelalte.

Utilizatorul trimite un mesaj prin care solicită sistemului de calcul să pornească aplicația și implicit sistemul să intre în stare de rulare. „Obiectul Sistemul de calcul” este astfel creat și va transmite în succesiunea temporală mesaje către „obiectul camera web”. Cele mai importante mesaje trimise către camera web sunt cvCapture() și cvFlip(). Primul mesaj are rolul de a capta o captura video (frame) de la obiectul camera web iar al doilea mesaj are rolul de a seta modul în care să fie afișat frame-ul pentru a elimina efectul de oglindă pe care îl au majoritatea camerelor web.

„Obiectul camera web” va trimite un mesaj de tip răspuns către obiectul sistem de calcul prin care transmite un frame. Durata de viață a acestui obiect va persista atât timp cât camera web nu va fi deconectată de la sistem sau în cazul în care va apărea o excepție.

Odată primit mesajul de tip răspuns, sistemul de calcul va iniția un mesaj de afișare către un dispozitiv de afișare, care in cazul de față este atât display-ul sistemului de calcul cât și videoproiectorul. Ca și în cazul camerei web, videoproiectorul va funcționa atât timp cât acesta nu va fi decuplat de la sistem și de la alimentarea electrică.

Fig. 24 – Diagrama de secvență a sistemului

Mai trebuie menționat faptul că „obiectul sistemul de calcul” mai trimite un mesaj de tip self message prin care atât timp cat nu se apasă o tastă durata de viață a acestuia nu se va termina.

• Componentele hardware ale sistemului

Sistemul propus este format din două mari părți, o parte fizică (hardware) în care se evidențiază componentele hardware ca videoproiectorul, camera web, pointerul led și stația de lucru și o parte software (aplicația) în care vor fi descrise elementele software (Capitolul 4 – Implementarea sistemului).

• Pointerul led folosit este unul ce are o lungime de undă de 650 nm și o putere de 5 mW. Dimensiunea acestuia este de 55 x 9 mm iar alimentarea este una pe bază de baterii (3  – AG3).

Fig. 23 – Pointerul utilizat in realizarea proiectului

• Camera web utilizată este “3MP (Interpolated) USB 2.0 Smart Webcam w/3 LEDs” și este o cameră de 3 mega pixeli pentru formatul video și 1.4 mega pixeli pentru format imagine, o rezoluție de 800 x 600 pixeli la 15 fps sau 320 x 240 la 30 fps, raportul semnal zgomot (S/N ratio) < 45 dB De asemenea formatul video este 24-bit RGB și dispune de sensor de imagine de tip CMOS.

Fig. 24 – Camera web “3MP (Interpolated) USB 2.0 Smart Webcam w/3 LEDs”

• Videoproiectorul este unul convențional de la BenQ ce dispune de o rezoluție de 800×600 SVGA și o luminozitate de până la 3000 Lumeni. Nivelul de zgomot poate atinge valoarea de 33 dB iar lampa are o putere de 190 W și o durată de viață de până la 6500 de ore in mod ECO.

Fig. 25 – Videoproiectorul BenQ utilizat in cadrul proiectului

• Sistemul de calcul reprezintă acea parte care se ocupă cu prelucrarea și procesarea datelor ce vin de la camera web și afișarea datelor procesate prin intermediul videoproiectorului. Cea mai mare parte a dezvoltării aplicației s-a realizat pe calculatoarele din cadrul laboratoarelor de la facultate, un astfel de dispozitiv, în general are următoarea configurație: Procesor – Intel Pentium Dual Core (3.0 GHz), Memorie Ram – 2 GB, IDE – Visual Studio Professional 2010, OpenCV 2.4.9.

Bibliografie

• Ashlee Vance, With Kinect, Microsoft Aims for a Game Changer, http://www.nytimes.com/2010/10/24/business/24kinect.html?_r=4&ref=technology& , 2010

• L. Matthies, M. Maimone, Andrew Johnson, Yang Cheng, R. Willson, C. Villalpando, S. Goldberg, A. Huertas, Computer Vision on Mars, Springer Science + Business Medi, 2007

• Siouris, George, Missile Guidance and Control Systems. 2004

• Pun, Gerig and Ratib, Computer vision in medicine, 1993

• Ministerul Educatiei și Cercetării, Ministerul Educației Naționale deschide procedurile aferente licitației pentru manualele de clasa I și clasa a II-a, http://www.edu.ro/index.php/pressrel/21108, la data de 13.03.2014

• https://smarttech.com/Solutions/Education+Solutions/Products+for+education/Interactive+whiteboards+and+displays/SMART+Board+interactive+whiteboards la data de 11.04.2014

• C. Vertan, Prelucrarea și Analiza Imaginilor, Printech București, 1999

• R., C., Gonzalez, P., Wintz, “Digital Image Processing”, Adison-Wesley, 1987

• H. Grif, Prelucrarea digitală a imaginilor. Notițe de curs – format digital , Universitatea “Petru Maior”- Târgu Mureș, 2008

• L.M. Ivanovici, Procesarea Imaginilor, Îndrumător de laborator, Universitatea “Transilvania” din Brașov, 2006

• http://www.e-learn.ro/tutorial/fotografie/perceptia-umana-a-culorilor/132/1/161.htm la 22.04.2014

• H. Grif, Prelucrări de imagine. Notițe de curs, Universitatea “Petru Maior”- Târgu Mureș, 2009

• J. C. Russ, The Image Processing Handbook – Sixth Edition, CRC Press Taylor & Francis Group, 2011

• Cristina Zoica Dumitru, „RGB, HSV și reprezentarea culorilor în Hexazecimal”,http://www.animatic.ro/2010/05/rgb-hsv-si-reprezentarea-culorilor-in-hexazecimal/, 23.05.2010

• G. Bradski, A. Kaehler, “Learning OpenCV”, O’Reilly Media, Inc. , 2008

• http://docs.opencv.org/modules/core/doc/intro.html, la 23.04.2014

• http://cs.upm.ro/_users/cursuri_on_line/CD/IP/UML.HTM, la 30.05.2014

Bibliografie

• Ashlee Vance, With Kinect, Microsoft Aims for a Game Changer, http://www.nytimes.com/2010/10/24/business/24kinect.html?_r=4&ref=technology& , 2010

• L. Matthies, M. Maimone, Andrew Johnson, Yang Cheng, R. Willson, C. Villalpando, S. Goldberg, A. Huertas, Computer Vision on Mars, Springer Science + Business Medi, 2007

• Siouris, George, Missile Guidance and Control Systems. 2004

• Pun, Gerig and Ratib, Computer vision in medicine, 1993

• Ministerul Educatiei și Cercetării, Ministerul Educației Naționale deschide procedurile aferente licitației pentru manualele de clasa I și clasa a II-a, http://www.edu.ro/index.php/pressrel/21108, la data de 13.03.2014

• https://smarttech.com/Solutions/Education+Solutions/Products+for+education/Interactive+whiteboards+and+displays/SMART+Board+interactive+whiteboards la data de 11.04.2014

• C. Vertan, Prelucrarea și Analiza Imaginilor, Printech București, 1999

• R., C., Gonzalez, P., Wintz, “Digital Image Processing”, Adison-Wesley, 1987

• H. Grif, Prelucrarea digitală a imaginilor. Notițe de curs – format digital , Universitatea “Petru Maior”- Târgu Mureș, 2008

• L.M. Ivanovici, Procesarea Imaginilor, Îndrumător de laborator, Universitatea “Transilvania” din Brașov, 2006

• http://www.e-learn.ro/tutorial/fotografie/perceptia-umana-a-culorilor/132/1/161.htm la 22.04.2014

• H. Grif, Prelucrări de imagine. Notițe de curs, Universitatea “Petru Maior”- Târgu Mureș, 2009

• J. C. Russ, The Image Processing Handbook – Sixth Edition, CRC Press Taylor & Francis Group, 2011

• Cristina Zoica Dumitru, „RGB, HSV și reprezentarea culorilor în Hexazecimal”,http://www.animatic.ro/2010/05/rgb-hsv-si-reprezentarea-culorilor-in-hexazecimal/, 23.05.2010

• G. Bradski, A. Kaehler, “Learning OpenCV”, O’Reilly Media, Inc. , 2008

• http://docs.opencv.org/modules/core/doc/intro.html, la 23.04.2014

• http://cs.upm.ro/_users/cursuri_on_line/CD/IP/UML.HTM, la 30.05.2014

Similar Posts