Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoIvo Dini Modificato 5 anni fa
1
Analisi di regioni Luigi Cinque 23/02/2019 Analisi di regioni
2
Componenti connesse Data una immagine binaria, si vuole ottenere una nuova immagine dove ogni singola regione abbia una etichetta (colore) diversa 23/02/2019 Analisi di regioni
3
Algoritmo intuitivo Si trova un punto non etichettato
Si assegna una nuova etichetta al punto Si ripeta finché possibile Ad ogni punto vicino, non ancora etichettato, si assegna la stessa etichetta Si ricordano le due definizioni di vicino: 4 connessione 8 connessione 23/02/2019 Analisi di regioni
4
Implementazione ricorsiva
void etichetta(matrice, i, j, label) { if(matrice[i][j]!=non_etichettato) return; matrice[i][j] = label; etichetta(matrice, i+1, j, label); etichetta(matrice, i, j+1, label); etichetta(matrice, i-1, j, label); etichetta(matrice, i, j-1, label); // eventuali pixel diagonali: 8 connessione } 23/02/2019 Analisi di regioni
5
Algoritmo classico Utilizza due scansioni dell’immagine (raster scan: dall’alto al basso, da destra a sinistra) Per ogni pixel non classificato, si esaminano i pixel vicini già classificati Se non ne esistono si introduce una nuova etichetta e la si assegna al pixel Altrimenti si classifica il pixel con il minimo fra le etichette trovate 17 15 115 18 1 0: pixel di sfondo 1: pixel ‘oggetto’ Altri valori: pixel già classificati 23/02/2019 Analisi di regioni Pixel da classificare
6
Algoritmo classico Se uso la 4 connessione la classificazione è diversa Se un pixel ha più vicini già classificati devo tenere memoria di questo fatto, per fondere etichette diverse in una sola (classi di equivalenza) Nell’esempio 15 e 17 La seconda passata serve per riclassificare tutti i pixel in base alle equivalenze trovate 17 15 115 18 1 23/02/2019 Analisi di regioni
7
Algoritmo classico Si è usata la 4 connessione 23/02/2019
5 6 7 8 1 2 3 23/02/2019 Si è usata la 4 connessione Analisi di regioni
8
Proprietà di regioni Ogni singola regione può essere descritta tramite alcuni parametri: Area (numero di pixel) Baricentro (r, c) Bounding box (il rettangolo in cui è completamente inclusa la regione Perimetro (numero di pixel che hanno per vicini pixel che non appartengono alla regione) 23/02/2019 Analisi di regioni
9
Il bounding box è caratterizzato da 4 parametri:
Proprietà di regioni Bounding box I bounding box possono essere sovrapposti Il bounding box è caratterizzato da 4 parametri: imin, imax, jmin, jmax 23/02/2019 Analisi di regioni
10
Momenti Un momento di ordine k, l è definito come
Si può dimostrare che conoscendo tutti i momenti si può ricostruire la forma dell’oggetto I momenti di ordine (1,0) e (0,1) rappresentano il baricentro 23/02/2019 Analisi di regioni
11
Momenti I momenti di ordine superiore sono generalmente riferiti al baricentro (si ha invarianza rispetto alla traslazione) 23/02/2019 Analisi di regioni
12
Momenti Normalmente si utilizzano solo i momenti di secondo ordine (momenti di inerzia della fisica) 23/02/2019 Analisi di regioni
13
Momenti I momenti non sono invarianti per rotazione 23/02/2019
Analisi di regioni
14
Momenti Si noti è invariante per rotazione
Esiste un angolo per cui il momento rc è nullo 23/02/2019 Analisi di regioni
15
Momenti Si noti Se calcolo i momenti per tale angolo ottengo gli assi principali di inerzia Se la regione ha simmetria circolare i momenti principali sono uguali e il momento misto è nullo 23/02/2019 Analisi di regioni
16
Immagini a toni di grigio
Per ogni regione si possono valutare due parametri: Il valor medio e La varianza 23/02/2019 Analisi di regioni
17
Immagini a toni di grigio
Si possono introdurre molti altri parametri, per esempio il baricentro pesato … … Se I(i,j)=1 i,j si ricade nelle definizioni precedenti 23/02/2019 Analisi di regioni
18
Test Trovare i cerchi e i quadrati (non sovrapposti) 23/02/2019
Analisi di regioni
19
Applet con immagine animata
public class CC extends Applet implements Runnable { public void init() { … … source = new MemoryImageSource(width, height, pixels, 0, width); source.setAnimated(true); // deve essere prima di createImage image = createImage(source); // immagine da visualizzare new Thread(this).start(); } public void run() { while (condizione) { // modifica vettore pixels source.newPixels(0, 0, width, height); // aggiorna immagine showStatus(“messaggio di stato”); // opzionale sleep(1000); // eventuale sospensione showStatus("finito!"); 23/02/2019 Analisi di regioni
20
Applet con immagine animata
public class CC extends Applet implements Runnable { void labels(int i, int color) { // algoritmo ricorsivo if((pixels[i]&0xffffff) != 0xffffff) return; pixels[i]=color; labels(i+1, color); labels(i-1, color); labels(i+width, color); labels(i-width, color); if(fourConnection) return; … … // gestione 8 connessione } public void sleep(int msec) { try { Thread.sleep(msec); } catch( InterruptedException e ) { return; } 23/02/2019 Analisi di regioni
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.