Tipi di elaborazioni Operatori puntuali Look Up Table Istogramma
Analisi di Basso Livello In ingresso abbiamo le immagini provenienti dai sensori. In uscita si hanno un insieme di matrici ognuna delle quali descrive un particolare attributo (feature) rilevato sulla scena. Dal punti di vista computazionale: è indipendente dal tipo di applicazione finale; si basa su modelli statistici legati a proprietà locali; è legata al processo di riduzione dei disturbi e distorsioni del processo di acquisizione e trasmissione; prepara per l elaborazione successiva e è costituita da una trasformazione: IMMAGINE/IMMAGINE 2
Analisi di Basso Livello 3
Elaborazione di Livello Intermedio La descrizione per pixel della scena è troppo complessa per essere utile in applicazioni pratiche; Il primo passo per ottenere una descrizione significativa è la segmentazione. Per i segmenti si applicano dei descrittori. Complessivamente è una trasformazione: IMMAGINE/PARAMETRI 4
Elaborazione di Livello Intermedio Oggetto1: area:.. baricentro: Oggetto2: area:.. baricentro: Oggetto3: area:.. baricentro: 5
Elaborazione di Alto Livello Viene definita di alto livello in analogia alla visione umana. Utilizza tecniche di intelligenza artificiale. Richiede un modello della scena da analizzare. In ingresso ha dei descrittori, in uscita da una classificazione o una interpretazione. La quantità di dati proveniente dalla scena è limitata, spesso però è elevata la quantità di dati necessaria per descrivere il contesto operativo. Complessivamente è una trasformazione: PARAMETRI/SIMBOLI 6
Classificazione delle Tecniche di EI Per modalità di interazione: metodi automatici; metodi interattivi. Per tipo di operatore e estensione dell area coinvolta: puntuali; locali; globali. Per tipo di implementazione: seriali - paralleli - L elaborazione di un pixel dipende dalla elaborazione dei pixel precedenti (l ordine di elaborazione può cambiare il risultato) Ogni elaborazione è indipendente 7
Operatori Puntuali Definiamo con I(i,j) la funzione che restituisce il valore associato ad un particolare pixel. Una operazione puntuale genera una nuova immagine in cui il valore di ogni pixel dipende solo dal corrispondente valore dell immagine di partenza: O(i,j) = f[i(i,j)] Una operazione puntuale ha una complessità molto ridotta e può essere facilmente realizzata attraverso una tabella (LUT: Look Up Table) che associa ad ogni valore il risultato della funzione stessa. In(i, j) = f(iv(i,j)) imgnew[i][i] = lut[imgold[i][j]] 8
Implementazione Una trasformazione puntuale in generale può essere implementata in due passi Definizione di una LUT (regola di trasformazione) Utilizzo della LUT // immagine negativa (in toni di grigio) static public int[] lutnegativa() { int[] lut = new int[256]; for(int i=0; i<256; i++) lut[i] = 255 i; return lut; } // attenzione modifica i pixel originali static void applicalut(int[] pixels, int[] lut) { for(int i=0; i<pixels.length; i++) { pixels[i] = lut[pixels[i]]; } } // uso int[] LUT = lutnegativa(); applicalut(pixels, LUT); 9
Implementazione // immagine negativa (in toni di grigio) int* lutnegativa() { int *lut = malloc(256*sizeof(int)); for(int i=0; i<256; i++) lut[i] = 255 i; return lut; } // attenzione modifica i pixel originali void applicalut(int* pixels, int length, int* lut) { for(int i=0; i<length; i++) { pixels[i] = lut[pixels[i]]; } } // uso int* LUT = lutnegativa(); applicalut(pixels, w*h, LUT); 10
L istogramma L istogramma trasforma l immagine in un vettore. Ogni elemento i del vettore contiene il numero delle volte che il valore i è presente nell immagine stessa (o se il vettore è normalizzato la sua frequenza). Da un punto di vista implementativo data una immagine I(i,j) e il vettore istogramma H è necessario scandire l immagine e per ogni pixel incrementare H(I(i,j)). Per normalizzare il vettore al termine basta dividere per il prodotto righe per colonne. Per immagini multispettrali (per esempio a colori RGB) si opera un istogramma per ogni componente (o si converte preventivamente l immagine a colori in una a toni di grigio). 11
Immagine originale 12
Immagine negativa L istogramma risulta simmetrico rispetto all asse verticale LUT (n) = 255 n 13
Immagine normalizzata n min LUT (n) = 255 max min L istogramma copre l intero intervallo di valori disponibili 14
Immagine intensificata LUT (n) = 255 n L istogramma risulta traslato verso i valori alti (immagine più chiara) L operazione non è invertibile 15
Immagine oscurata L istogramma risulta traslato verso i valori bassi (immagine più scura) L operazione non è invertibile 2 n LUT (n) = 255 16
Lineare a banda ristretta 0 n a LUT (n) = 255 b a 255 se n< a se a n b se n> b b a Si evidenzia con il massimo di contrasto una porzione della banda dei grigi Caso limite con b=a-1 (si ottiene una immagine con 2 soli valori) 17
Correzione gamma n LUT (n) = 255 255 γ 18
Correzione gamma Permette di compensare le differenze di luminosità in monitor diversi Si applica ad ogni singolo canale (colore) 19
Correzione gamma γ=1/2 Originale (γ=1) γ=1/3 γ=1/4 20
Immagine equalizzata n LUT (n) = 255 hist è il vettore istogramma hist (i ) hist (i ) i= 0 255 i= 0 Si cerca di ottenere una immagine in cui ogni tonalità è presente con la stessa frequenza 21
Immagine equalizzata 22
Rappresentazione bit-plane 23
Segmentazione Ricerca di regioni uniformi Binarizzazione Ricerca di contorni Accrescimento di regioni Inseguimento di contorni 24
Binarizzazione Vi sono applicazioni che per loro natura possono essere considerate binarie: Stampati, dattiloscritti Parti meccaniche piatte di superficie omogenea Immagini microscopiche di cellule, cromosomi... Difatti spesso appaiono numerosi livelli di grigio a causa di: Rumore elettrico generato dalla telecamera Illuminazione non omogenea della scena Ineguale sensibilità dell'obiettivo al centro e ai bordi 25
Distribuzione bimodale Possibili approcci: Ricerca del minimo Criteri statistici 26
Distribuzione bimodale 27
Binarizzazione a soglia costante È la soluzione più semplice y(x) = 0 se x < S // x valori del pixel originale y(x) = 255 altrimenti // y valore del pixel prodotto il problema è la scelta della soglia (threshold) S per esempio trovare l immagine a due valori che minimizza la differenza rispetto all immagine originale y(x) = a? x < s : b; Voglio minimizzare: err ( S ) = ( imm(i) bin(i, S )) 2 i I valori dell'immagine binarizzata sono le medie dei valori dell'immagine originaria sulle due regioni (si veda il metodo di Otsu 28
Esempio pezzo Immagine originale Immagine binarizzata 29
Esempio Vela Soglia = 140 30
Esempio Orso 31
Esempio Cerchio 32
Binarizzazione a soglia variabile La soglia è una funzione dell intorno del pixel considerato 33