Elementi di grafica raster
Segnali mono-bidimensionali Segnale: variazione di una grandezza fisica rispetto al tempo e/o allo spazio cioè Valore della grandezza ad ogni istante di tempo (spazio) Un segnale è una funzione dipendente da una o più variabili Un segnale monodimensionale dipende da una unica variabile (tempo). Ad es. i segnali audio Un segnale bidimensionale dipende da due variabili (coordinate x,y). Ad es. le immagini stazionarie Un segnale tridimensionale dipende da tre variabili. Ad esempio (x,y,t) per i video
Segnali analogici e digitali Un segnale analogico è una funzione continua La funzione f : D D (che descrive il segnale) è una funzione continua, se i due insiemi D e D sono continui Un segnale digitale è una funzione discreta La funzione f : D D (che descrive il segnale) è una funzione digitale, se i due insiemi D e D sono discreti
Digitalizzazione Campionamento: il segnale viene misurato a intervalli discreti Frequenza di campionamento: numero di campioni in un intervallo di tempo ( o spazio) Quantizzazione: i valori o ampiezza del segnale sono quantizzati in un numero di livelli discreti Segnale analogico Campionamento Segnale digitale
Geometria digitale Una immagine digitale è una funzione digitale del tipo: f : D [0,255] dove D è un dominio discreto, costituito da coppie di coordinate x,y. D è chiamato griglia di campionamento Il punto della geometria corrisponde ad un vertice della griglia
Immagine digitale Una immagine digitale è una matrice di NxM elementi di valori non negativi Ogni elemento immagine è chiamato pixel (picture element) Sia g=numero di livelli di grigio di una immagine f se g=2 k ogni pixel occupa k bit Una immagine di NxM pixels occupa b = (N M k) bit
Immagine digitale Una immagine digitale f(j,k) si può rappresentare con una matrice di NxM elementi di valori non negativi k j f(0,0) f(0,n-1).... f(n-1,0)..f(n-1,n-1) Sistema di riferimento immagine (j,k): ascisse x= k (colonne); ordinate y= -j (righe)
Immagine digitale Dimensione numero di pixel della immagine Grandezza - misura in cm o inch di una riga e/o di una colonna Risoluzione si misura in punti/cm o punti/inch dpi dot per inch ( 1 inch ----- 2.54 cm) Si ha: dimensione(pixel) = grandezza (cm) * risoluzione (pixel/cm)
Grandezza di una immagine Grandezza (cm) = dimensione (pixel)/risoluzione (pixel/cm) risoluzione dimensione 72 dpi 300 dpi 1500 dpi 192x128 6.78 x 4.53 cm 1.63 x 1.09 cm 0.23 x 0.33 cm
Immagine a colori Una immagine a colori può essere rappresentata direttamente mediante 3 componenti - Rosso (R), Verde (G), Blu (B), generalmente si utilizza un byte per ciascuna componente Il formato BitMaP BMP utilizza la rappresentazione diretta del colore
Immagine a colori - RGB Ogni pixel è rappresentato da (r,g,b) r g b valore della componente red valore della componente green valore della componente blue
Indexed color I formati Gif, Tif, Png, usano una rappresentazione indexed del colore ed utilizzano una sola look-up table di 4 oppure 8 bit Un pixel di una immagine con il colore rappresentato in modo indexed è rappresentato con 4 oppure 8 bit Ogni valore è un indice in una palette di 16 oppure 256 colori
Palette tavolozza di colori Una delle più comuni Look up Table è la colormap o palette Una palette descrive 256 colori codificati con 0,1,..255- valori dei pixel di una immagine Ogni elemento della palette è una terna di valori RGB Palette Pixel value R G B 0 R 0 G 0 B 0.. 255 R 255 G 255 B 255
True color indexed color True color: ogni locazione nel frame buffer contiene il valore di colore assegnato al pixel corrispondente Falso colore: ogni locazione nel frame buffer contiene un indirizzo alla LUT nella quale viene registrato il valore di colore desiderato
Risoluzione e dinamica La dimensione del frame buffer determina la risoluzione spaziale della immagine La lunghezza di parola nel frame buffer determina il numero di colori simultaneamente visualizzabili: la dinamica Parole di 32 bit consentono di registrare informazioni sul canale alfa
Alfa channel Contiene valori tra 0 e 1 ed indica come miscelare più immagini con operatori aritmetici Ad esempio siano ima e im B 2 immagini senza alfa: ima+imb= def p A (x,y)+p B (x,y) clipping(255) = 0 se p A (x,y)+p B (x,y) 0 255 se p A (x,y)+p B (x,y) 255 con alfa p A (x,y) + p B (x,y) altrimenti a* ImA+(1-a) *ImB = def a p A (x,y)+(1-a) p B (x,y) clipping(255)
Operatori Un operatore op trasforma una immagine f in una nuova immagine g ff op g Operatori puntuali - operano su ciascun pixel indipendentemente da tutti gli altri Operatori locali operano su un intorno di ciascun pixel Operatori globali - operano sull intera immagine
Operatori puntuali e locali f(i,j) g(i,j) Ogni pixel i,j della immagine f è trasformato nel pixel i,j dell immagine g Ogni valore g(i,j) viene calcolato sulla base dei valori di un intorno del pixel f(i,j)
Operatori globali............ Ogni valore g(i,j) viene calcolato sulla base dei valori di tutti i pixel di f
Operatori puntuali Gli operatori puntuali riguardano le trasformazioni della scala di grigio e dell istogramma di una immagine Sia f una immagine a livelli di grigio Scala di grigio di una immagine f: intervallo (a,b) dei valori di f tale che a<= f(i,j)<= b Istogramma della immagine f: frequenza di occorrenza di ogni livello i
Operatori puntuali Le trasformazioni della scala di grigio e dell istogramma possono essere utilizzate per migliorare il contrasto di una immagine Il contrasto di una immagine è dato da una variazione locale della brillanza dei pixel
Trasformazione lineare della scala di grigio Sia [a,b] l intervallo dei valori della immagine f Si considerano 2 casi l intervallo [a,b] è contenuto nell intervallo [0,255] [a,b] [0,255] oppure l intervallo [a,b] contiene l intervallo [0,255] [0,255] [a,b] [0,255] è l intervallo dei dei livelli di di grigio standard per per la la visualizzazione
Trasformazione lineare dei livelli di grigio [a,b] [0,255] 255 Livelli finali l 255/(b-a) 255/(b-a) =l /(l-a) =l /(l-a) l l =255 =255 (l-a)/(b-a) (l-a)/(b-a) 0 a l b 255 Livelli di grigio originali a b Scala di grigio originale: [a,b] 0 255 Scala di grigio trasformata: [0,255]
Trasformazione lineare dei livelli di grigio con clipping [0,255] [a,b] Livelli finali 255 I I livelli livelli l 1 l < 1 0 sono sono posti posti a zero zero I I livelli livelli l 2 l >255 2 >255 sono sono posti posti a zero zero a 0 255 Livelli di grigio originali b
Look-up table Una trasformazione di scala T si può definire mediante una look-up table di L elementi Una look-up table è un vettore in cui ogni elemento i memorizza il livello T(i) trasformato di i Look-up(i) = T(i) per i = 0, L-1 Per Look-Up Table (LUT) si intende una struttura datigeneralmente un array- utilizzata per sostituire operazioni di calcolo a runtime con una più semplice operazione di consultazione (lookup, in inglese)
Trasformazioni di scala Una trasformazione di scala di grigio non dipende dalla posizione x,y del pixel nella immagine f a cui si applica E una trasformazione puntuale: si applica ad ogni pixel dell immagine indipendentemente da tutti gli altri
Istogramma Sia f(x,y) una immagine con L livelli di grigio: 0 f(x,y) L-1 L istogramma h(i) dei livelli di una immagine f rappresenta la frequenza di occorrenza di ogni livello i
Istogramma 1 4 2 1 1 4 0 0 2 5 2 0 0 1 2 4 2 1 1 0 Nella figura l istogramma mostra graficamente il numero di volte in cui un particolare livello di grigio occorre nella immagine 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 immagine istogramma
Istogramma di immagini a colori Nello spazio RGB si possono calcolare gli istogrammi individuali per ogni componente: ad esempio per la componente blue Blue
Modifica di un istogramma L istogramma costituisce una informazione globale relativa alla immagine f: tutti i pixel di un particolare valore i contribuiscono a popolare il bin i dell istogramma h(i) = n i - numero di pixel aventi valore i L istogramma può essere modificato per ottenere una differente distribuzione dei livelli di grigio
Trasformazioni di istogrammi Operazione puntuale: T(j) =k j k livelli di grigio T Si vuole una trasformazione T: j k tale che se il livello j ha frequenza h(j) allora il livello k ha frequenza g(k)
Istogramma cumulato Definizione di istogramma cumulato h c (i) per i=0..l max h c ( i) j= 0 Ogni elemento h c (i) è uguale alla somma degli elementi h(0), h(1),..h(i) h c (0) = h(0) h c (1) = h(0) + h(1). h c (L max ) = h(0) + h(1)+..+ h(l max ) = n = i h( i) Se l istogramma è uniforme allora l istogramma cumulato è una retta
Equalizzazione o linearizzazzione di un istogramma Per equalizzazione di un istogramma si intende la trasformazione di una distribuzione di livelli in una distribuzione uniforme: la frequenza g(i) di ogni livello dell istogramma trasformato è approssimativamente costante g(i) costante per i =0..(L max ) e L max uguale al livello di grigio massimo La trasformazione rende l istogramma della immagine di output approssimativamente corrispondente all istogramma uniforme
Equalizzazione o linearizzazzione di un istogramma Definizione di istogramma cumulato h c (i) per i=0..l max h c ( i) = Sia h(i) l istogramma di una immagine f. Se l istogramma h è uniforme allora l istogramma cumulato è una retta j= 0 L equalizzazione dell istogramma iniziale h(i) può essere ottenuta imponendo che l istogramma equalizzato h c (i) sia lineare i h( i)
Istogramma cumulato di una distribuzione uniforme n Istogramma cumulato h c i i h( j= 0 j ) = L n max 0 i Lmax Livelli di grigio
Equalizzazione di istogrammi La trasformazione si può ottenere dalla formula: i i h( j= 0 j ) = L n max h( i = 0,1,2,...,L max n imponendo che ogni livello i abbia istogramma cumulato uguale a i h( j= 0 j= 0 dove Lmax: numero dei livelli di grigio nella immagine (ad esempio 255) n j : numero di volte in cui il livello j appare nella immagine n: numero totale di pixel nella immagine i n L j ) j ) = * max i = i j= 0 j
Operatori locali f(i,j) Gli operatori locali associano ad ogni pixel (i,j) di una immagine f un valore calcolato sulla base dei valori di un intorno o finestra centrata nel pixel (i,j) Per eseguire una elaborazione locale l immagine viene esplorata in una sequenza prefissata ad esempio da sinistra a destra e dall alto verso il basso
Operatori locali w(i,j) è una maschera 3 x 3 h = w 1 w 2 w 3 w 4 w 5 w 6 w 7 w 8 w 9 Finestra immagine di dimensione 3 x 3 f(x-1,y-1) f(x,y-1) f(x+1,y-1) f(x-1,y) f(x,y) f(x+1,y) f(x-1,y+1) f(x,y+1) f(x+1,y+1) x (x,y) y Il valore del pixel centrale è calcolato come somma pesata di f secondo i coefficienti w i : g( x, y) = w + w + w 1 4 7 f ( x 1, y 1) + w f ( x, y 1) + w f ( x + 1, y 1) + w 5 2 f ( x, y) + w 8 f ( x 1, y) + w 6 3 f ( x, y + 1) f ( x + 1, y) + w 9 f ( x 1, y + 1) f ( x + 1, y + 1)
Convoluzione Siano f(x,y) una immagine di dimensione NxN w(x,y) una maschera spaziale di dimensione LxL L operazione di convoluzione della immagine f(x,y) con w(x,y) con origine nel centro della maschera si può esprimere nel modo seguente g( x, y) L 1 L 1 = = w( i, j)* f ( x L / 2 + i, y L / 2 + j) i= 0 j 0 L immagine di output g(x,y) è influenzata soltanto dai pixel che si trovano in un intorno di dimensione uguale a quella della maschera spaziale
Image Smoothing Se i valori della maschera w sono uguali a 1/9 la convoluzione di w con l immagine iniziale produce per ogni pixel (i,j) un valore pari al valore medio dei pixel dell intorno 3x3 di (i,j) 1 9 1 1 1 1 1 1 1 1 1 Si ottiene una immagine meno contrastata di quella iniziale con riduzione del rumore
Filtro Gaussiano Si utilizza quando si vuole che il pixel in esame abbia maggiore importanza nel calcolo del nuovo valore di grigio, rispetto a quelli del suo intorno: il peso di tale pixel sarà maggiore rispetto a quello dei pixel dell intorno 1 16 1 2 1 2 4 2 1 2 1 Il fattore moltiplicativo serve a normalizzare la somma dei pesi a 1. In tal modo il range dei valori di output risulta uguale a quello dei valori di input
Prewitt e Sobel Maschere di Prewitt per evidenziare linee orizzontale e linee verticali -1-1 -1 0 0 0 1 1 1-1 -2-1 0 0 0 1 2 1-1 0 1-1 0 1-1 0 1 Maschere di Sobel per evidenziare linee orizzontale e linee verticali -1 0 1-2 0 2-1 0 1