Procesarea Imaginilor - Laborator 5: Etichetarea componentelor conexe 1

Similar documents
Procesarea Imaginilor

Titlul lucrării propuse pentru participarea la concursul pe tema securității informatice

Grafuri bipartite. Lecție de probă, informatică clasa a XI-a. Mihai Bărbulescu Facultatea de Automatică și Calculatoare, UPB

Reflexia şi refracţia luminii. Aplicaţii. Valerica Baban

Structura și Organizarea Calculatoarelor. Titular: BĂRBULESCU Lucian-Florentin

Metrici LPR interfatare cu Barix Barionet 50 -

Olimpiad«Estonia, 2003

ARBORI AVL. (denumiti dupa Adelson-Velskii si Landis, 1962)

2. Setări configurare acces la o cameră web conectată într-un router ZTE H218N sau H298N

Subiecte Clasa a VI-a

D în această ordine a.î. AB 4 cm, AC 10 cm, BD 15cm

Semnale şi sisteme. Facultatea de Electronică şi Telecomunicaţii Departamentul de Comunicaţii (TC)

Arbori. Figura 1. struct ANOD { int val; ANOD* st; ANOD* dr; }; #include <stdio.h> #include <conio.h> struct ANOD { int val; ANOD* st; ANOD* dr; }

Versionare - GIT ALIN ZAMFIROIU

ISBN-13:

MS POWER POINT. s.l.dr.ing.ciprian-bogdan Chirila

Ghid identificare versiune AWP, instalare AWP şi verificare importare certificat în Store-ul de Windows

Modalitǎţi de clasificare a datelor cantitative

10. Modelarea şi eliminarea zgomotelor din imaginile digitale

În continuare vom prezenta unele dintre problemele de calcul ale numerelor Fibonacci.

Textul si imaginile din acest document sunt licentiate. Codul sursa din acest document este licentiat. Attribution-NonCommercial-NoDerivs CC BY-NC-ND

La fereastra de autentificare trebuie executati urmatorii pasi: 1. Introduceti urmatoarele date: Utilizator: - <numarul dvs de carnet> (ex: "9",

Aspecte controversate în Procedura Insolvenţei şi posibile soluţii

Update firmware aparat foto

Dispozitive Electronice şi Electronică Analogică Suport curs 02 Metode de analiză a circuitelor electrice. Divizoare rezistive.

The First TST for the JBMO Satu Mare, April 6, 2018

INFORMAȚII DESPRE PRODUS. FLEXIMARK Stainless steel FCC. Informații Included in FLEXIMARK sample bag (article no. M )

CERERI SELECT PE O TABELA

Mecanismul de decontare a cererilor de plata

Auditul financiar la IMM-uri: de la limitare la oportunitate

CAIETUL DE SARCINI Organizare evenimente. VS/2014/0442 Euro network supporting innovation for green jobs GREENET

HEAPSORT I. CONSIDERAŢII TEORETICE

Managementul referinţelor cu

CHAMPIONS LEAGUE 2017 SPONSOR:

2. In the pattern below, which number belongs in the box? 0,5,4,9,8,13,12,17,16, A 15 B 19 C 20 D 21

APLICAŢII ELEMENTARE CU ARBORI

Mods euro truck simulator 2 harta romaniei by elyxir. Mods euro truck simulator 2 harta romaniei by elyxir.zip

CERERI SELECT PE MAI MULTE TABELE

Procesarea Imaginilor

REVISTA NAŢIONALĂ DE INFORMATICĂ APLICATĂ INFO-PRACTIC

9. Filtrarea imaginilor în domeniul spaţial şi frecvenţial

Metoda BACKTRACKING. prof. Jiduc Gabriel

Reţele Neuronale Artificiale în MATLAB

Candlesticks. 14 Martie Lector : Alexandru Preda, CFTe

Lucrarea de laborator nr. 4

Lecţii complementare de teoria grafurilor

9. Filtrarea imaginilor în domeniul spaţial şi frecvenţial

INSTRUMENTE DE MARKETING ÎN PRACTICĂ:

Capitolul 4 SUBCERERI. F. Radulescu. Curs: Baze de date - Limbajul SQL

GHID DE TERMENI MEDIA

Structuri de date: ARBORI

Printesa fluture. Мобильный портал WAP версия: wap.altmaster.ru

2. Setări configurare acces la o cameră web conectată într-un echipament HG8121H cu funcție activă de router

Baze de date distribuite și mobile

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

Prima. Evadare. Ac9vity Report. The biggest MTB marathon from Eastern Europe. 7th edi9on

Nume şi Apelativ prenume Adresa Număr telefon Tip cont Dobânda Monetar iniţial final

PROCEDURA PRIVIND DECONTURILE. 2. Domeniu de aplicare Procedura se aplică în cadrul Universităţii Tehnice Cluj-Napoca

EN teava vopsita cu capete canelate tip VICTAULIC

Interactiune om-calculator. Curs 3 Interfete bazate pe racunoasterea gesturilor mainii din imagini 2D

F. Radulescu. Curs: Utilizarea bazelor de date, anul IV C5.

Subiectele pentru proba practică din cadrul examenului de Paradigme de Programare Sesiunea iunie 2015

SPREADING CODES 1. INTRODUCTION. Ion POPA Societatea Română de Televiziune Studioul Teritorial Iaşi

X-Fit S Manual de utilizare

Lucrarea de laborator nr. 2. Operaţii de bază în prelucrarea imaginilor cu MATLAB

ACTA TECHNICA NAPOCENSIS

USING SERIAL INDUSTRIAL ROBOTS IN CNC MILLING PROCESESS

2. Color spaces Introduction The RGB color space

Metoda de programare BACKTRACKING

Updating the Nomographical Diagrams for Dimensioning the Concrete Slabs

ALGORITMI DE GESTIUNE A PAGINILOR DE MEMORIE

SAG MITTIGATION TECHNICS USING DSTATCOMS

METODE FIZICE DE MĂSURĂ ŞI CONTROL NEDISTRUCTIV. Inspecţia vizuală este, de departe, cea mai utilizată MCN, fiind de obicei primul pas într-o

Behavioral design patterns (comportamentale) ALIN ZAMFIROIU

R O M Â N I A CURTEA CONSTITUŢIONALĂ

6. Bucle. 6.1 Instrucţiunea while

INTEROGĂRI ÎN SQL SERVER

LIDER ÎN AMBALAJE EXPERT ÎN SISTEMUL BRAILLE

Universitatea Lucian Blaga din Sibiu Facultatea de inginerie Hermann Oberth Catedra de Calculatoare şi automatizări

Propuneri pentru teme de licență

Proceduri stocate. Crearea procedurilor stocate. Varianta 1 În Management Studio se dă clic pe New Query ca în imaginea de mai jos: Fig.

Capete terminale şi adaptoare pentru cabluri de medie tensiune. Fabricaţie Südkabel Germania

COMPRESIA DE IMAGINI

ACTA TECHNICA NAPOCENSIS

Preţul mediu de închidere a pieţei [RON/MWh] Cota pieţei [%]

LINEAR VOLTAGE-TO-CURRENT CONVERTER WITH SMALL AREA

A NOVEL ACTIVE INDUCTOR WITH VOLTAGE CONTROLLED QUALITY FACTOR AND SELF-RESONANT FREQUENCY

ANTICOLLISION ALGORITHM FOR V2V AUTONOMUOS AGRICULTURAL MACHINES ALGORITM ANTICOLIZIUNE PENTRU MASINI AGRICOLE AUTONOME TIP V2V (VEHICLE-TO-VEHICLE)

Vizualizarea documentelor xml

Mircea Merca 1) Articol dedicat Prof. Dr. Ioan Tomescu la a 70-a aniversare

Proiectarea Sistemelor Software Complexe

AILab Scripting Language for Artificial Intelligence

MODELUL UNUI COMUTATOR STATIC DE SURSE DE ENERGIE ELECTRICĂ FĂRĂ ÎNTRERUPEREA ALIMENTĂRII SARCINII

Prelucrarea numerică a semnalelor

Universitatea din Bucureşti Facultatea de Matematică şi Informatică. Matematică (Varianta 1)

Constructii sintetizabile in verilog

Capitolul 7. Data mining. F. Radulescu. Curs: Utilizarea bazelor de date, anul IV C5.

Metode de acces la informatie în bazele de date pentru prelucrari grafice

Itemi Sisteme de Operare

ADMITERE 2015 SUBIECTELE PROBELOR ŞI BAREMELE DE CORECTARE ŞI NOTARE PROFILUL MAIŞTRI MILITARI PROBA NR.1 TEST GRILĂ LA LIMBA ENGLEZĂ VARIANTA 2

Transcription:

Procesarea Imaginilor - Laborator 5: Etichetarea componentelor conexe 1 5. Etichetarea componentelor conexe 5.1. Introducere În această lucrare de laborator se vor prezenta algoritmi pentru etichetarea obiectelor distincte din imagini alb-negru. Ca rezultat, fiecare obiect va avea un număr unic. Acest număr, numit etichetă, va putea fi folosit pentru analiza fiecărui obiect în parte. 5.2. Fundamente teoretice Vom prezenta doi algoritmi pentru etichetare. Intrarea acestor algoritmi este imaginea binară, iar ieşirea este o matrice de etichete, cu dimensiunea egală cu cea a imaginii de intrare. Această matrice trebuie să aibă celula de un tip numeric capabil să reńină numărul total de etichete. În imaginea binară de intrare, obiectele sunt reprezentate ca componente conexe de culoare neagră (0), iar fundalul are culoarea albă (255). Pentru a defini nońiunea de componentă conexă, trebuie să definim tipurile de vecinătate. Vecinătatea de 4 a unei pozińii (i,j) este definită ca pozińiile: N 4 (i,j)={(i-1,j), (i,j-1), (i+1,j), (i,j+1)}, i.e. vecinii de sus, stânga, jos şi dreapta. Vecinătatea de 8 conńine toate pozińiile care diferă de pozńia curentă cu maxim 1 unitate pe o una sau ambele coordonate: N 8 (i,j) = {(k,l) k-i 1, l-j 1, (k,l) (i,j) }, Deci include vecinătatea de 4, şi vecinii de pe diagonale. La parcurgerea imaginii într-o direcńie oarecare, putem defini vecinii anteriori raportat la această direcńie. Vecinii anteriori ai unei parcurgeri sus-jos, stânga-dreapta sunt: Np(i,j)={(i,j-1), (i-1,j-1), (i-1,j), (i-1,j+1)}. Aceste definińii sunt ilustrate în figura de mai jos. x x x a) Vecinătate de 4 b) Vecinătate de 8 c) Vecinii anteriori Vom defini un graf format de imaginea binară. Vârfurile grafului sunt pozińiile pixelilor obiect, iar vecinătatea dintre pixeli reprezintă muchiile grafului. Două vârfuri sunt vecine dacă unul dintre ele aparńine vecinătăńii celuilalt. Vom utiliza vecinătatea de 4 sau de 8, astfel că graful generat este neorientat. O componentă conexă este o mulńime de vârfuri pentru care există o cale între oricare două elemente ale acestei mulńimi. Algoritm 1 Traversarea în lăńime Vom începe cu o metodă directă pentru etichetare, care se bazează pe traversarea în lăńime a grafului format de imaginea binară. Primul pas este inińializarea matricei de etichete cu valoarea zero pentru tońi pixelii, indicând faptul că inińial totul este ne-etichetat. Apoi, algoritmul va căuta un pixel de tip obiect care este ne-etichetat. Dacă acest punct este găsit, el va primi o etichetă nouă, pe care o va propaga vecinilor lui. Vom repeta acest proces până când tońi pixelii obiect vor primi o etichetă. Algoritmul este descris de următorul pseudocod:

2 Universitatea Tehnică din Cluj-Napoca, Catedra de Calculatoare label = 0 labels = zeros(height, width) //Matrice height x width, cu valori 0 if img(i,j)==0 and labels(i,j)==0 label++ Q = queue() labels(i,j) = label Q.push( (i,j) ) while Q not empty q = Q.pop() for each neighbor in N 8 (q) if img(q)==0 and labels(neighbor)==0 labels(neighbor) = label Q.push( neighbor ) Algoritm 1 Traversare în lăńime pentru etichetarea componentelor conexe Structura de date de tip coadă menńine lista punctelor care trebuie etichetate cu eticheta curentă label. Deoarece este o structură FIFO, se va obńine traversarea în lăńime. Vom marca nodurile vizitate setând eticheta pentru pozińia lor, în matricea de etichete. Dacă structura de date se schimbă într-o stivă, se va obńine o traversare în adâncime. Algoritm 2 Două treceri cu clase de echivalenńă Etichetarea poate fi realizată prin două parcurgeri liniare pe imagine, plus o procesare suplimentară pe un graf mult mai mic. Această abordare foloseşte mai puńină memorie. Deoarece în algoritmul anterior aveam nevoie de memorarea unei liste de puncte, în cazul în care o componentă conexă este foarte mare dimensiunea listei poate fi comparabilă cu dimensiunea imaginii. Algoritmul al doilea va face o primă parcurgere şi va genera etichete inińiale pentru pixelii obiect. Pentru fiecare pixel vom lua în considerare pixelii deja vizitańi şi etichetańi, deci vom folosi vecinătatea pixelilor anteriori definită mai sus, N p. După inspectarea etichetelor pixelilor deja vizitańi, avem următoarele cazuri: Dacă nu avem vecin anterior etichetat, vom crea o etichetă nouă Dacă avem vecini etichetańi, vom selecta minimul acestor etichete (notat cu x). După aceea, vom marca fiecare etichetă y din vecinătate, diferită de x, ca echivalentă cu x. Vom asigna eticheta găsită în pasul anterior pentru pozińia curentă. După prima trecere, există câte o etichetă pentru fiecare pozińie din imagine. Totuşi, vor exista etichete diferite pentru acelaşi obiect, care sunt etichete echivalente, deci va trebui să fie înlocuite cu o etichetă nouă, numită clasă de echivalenńă. RelaŃiile de echivalenńă definesc un graf neorientat, având ca noduri etichetele inińiale. Acest graf este de obicei mult mai mic decât graful inińial al pixelilor obiect, deoarece numărul de noduri este numărul de etichete generate la prima parcurgere. Muchiile grafului sunt relańiile de echivalenńă. Putem aplica algoritmul 1 (BFS) pe acest graf mai mic, pentru a obńine o nouă listă de etichete. Toate etichetele echivalente cu 1 se re-etichetează cu 1, următoarea componentă conexă ne-echivalentă cu 1 se re-etichetează cu 2, şi asa mai departe. O nouă trecere prin matricea de etichete inińiale va realiza re-etichetarea.

Procesarea Imaginilor - Laborator 5: Etichetarea componentelor conexe 3 label = 0 labels = zeros(height, width) vector<vector<int>> edges if img(i,j)==0 and labels(i,j)==0 L = vector() for each neighbor in N p (i,j) if labels(neighbor)>0 L.push_back(labels(neighbor)) if L.size() == 0 //assign new label label++ labels(i,j) = label else x = min(l) labels(i,j) = x for each y from L if (y <> x) edges[x].push_back(y) edges[y].push_back(x) //assign smallest neighbor newlabel = 0 newlabels = zeros(label+1) //sir de zero, de dimensiune label+1 for i = 1:label if newlabels[i]==0 newlabel++ Q = queue() newlabels[i] = newlabel Q.push( i ) while Q not empty x = Q.pop() for each y in edges[x] if newlabels[y] == 0 newlabels[y] = newlabel Q.push( y ) labels(i,j) = newlabels[labels(i,j)] Algoritm 2 Etichetarea componentelor conexe prin două treceri Fig. 5.1 Exemplu de caz unde vecinii anteriori au etichete diferite. Etichetele 1 şi 2 sunt marcate ca echivalente.

4 Universitatea Tehnică din Cluj-Napoca, Catedra de Calculatoare 5.3. Detalii de implementare Codul următor ilustrează cum se poate parcurge vecinătatea de 4 a unui pixel. Acest cod se poate modifica uşor pentru a obńine o vecinătate de 8, sau pentru a lua în considerare doar vecinii de sus şi din stânga. int di[4] = {-1,0,1,0}; int dj[4] = {0,-1,0,1}; uchar neighbors[4]; for(int k=0; k<4; k++) neighbors[k] = img.at<uchar>(i+di[k], j+dj[k]); AtenŃie la limitele imaginii! Nu le depășiți! ReŃineŃi etichetele într-o matrice capabilă de a reprezenta numărul maxim de etichete: 2 8 = 256 - uchar (CV_8UC1) 2 16 = 65536 - short (CV_16SC1) 2 32 ~ 2.1e9 - int (CV_32SC1) PuteŃi utiliza containerele std stack şi std queue pentru a reńine punctele pentru Algoritmul 1, (stivă pentru DFS, coadă pentru BFS). Un exemplu de cod pentru inińializarea unei cozi şi efectuarea de operańii pe aceasta: #include <queue> queue<point2i> Q; Q.push ({i,j}); // aduga element in coada(cel mai nou) Point2i p = Q.front(); // accesul la cel mai vechi element din coada Q.pop(); // scoate element din coada (cel mai vechi) RelaŃiile de echivalenńă care definesc muchiile grafului de echivalenta pot fi memorate folosind liste de adiacenńă, sub forma vector<vector<int>>. Exemplu de cod pentru inińializarea listei şi inserarea muchiilor: vector<vector<int>> edges; //ne asigurăm că vectorul are dimensiunea bună edges.resize(label+1); //dacă u este echivalent cu v edges[u].push_back(v); edges[v].push_back(u); Pentru a afişa matricea de etichete sub forma unei imagini color trebuie să generăm o culoare aleatoare pentru fiecare etichetă. Se poate utiliza generatorul implicit, care este mai bun decât apelul clasic rand()%256. #include <random> default_random_engine gen; uniform_int_distribtion<int> d(0,255); uchar x = d(gen);

Procesarea Imaginilor - Laborator 5: Etichetarea componentelor conexe 5 5.4. Exemple de etichetare 5.5. Activitate practică Fig. 5.4.2 Exemple de etichetare 1. ImplementaŃi algoritmul de traversare în lăńime (Algoritmul 1). ImplementaŃi astfel încât să puteńi schimba vecinătatea din 4 în 8 şi invers. 2. ImplementaŃi o funcńie care va genera o imagine color dintr-o matrice de etichete. AfişaŃi rezultatele. 3. ImplementaŃi algoritmul de etichetare cu două treceri. AfişaŃi rezultatele intermediare după prima parcurgere. ComparaŃi acest rezultat cu rezultatul final, şi cu rezultatul primului algoritm. 4. OpŃional, vizualizańi procesul de etichetare prin afişarea rezultatelor intermediare şi făcând o pauză după fiecare pas pentru a ilustra ordinea de traversare a punctelor. 5. OpŃional, schimbańi coada în stivă, pentru a implementa traversarea DFS. 6. SalvaŃi ceea ce ańi lucrat. UtilizaŃi aceeaşi aplicańie în laboratoarele viitoare. La sfârşitul laboratorului de procesare a imaginilor va trebui să prezentańi propria aplicańie cu algoritmii implementańi!!! Bibliografie [1]. Umbaugh Scot E, Computer Vision and Image Processing, Prentice Hall, NJ, 1998, ISBN 0-13-264599-8 [2]. Robert M. Haralick, Linda G. Shapiro, Computer and Robot Vision, Addison-Wesley Publishing Company, 1993.