Elementi di grafica raster L Caponetti Le immagini Una immagine è una rappresentazione spaziale di un oggetto o di una scena Una immagine digitale è una rappresentazione di una scena anche 3D dopo il processo di acquisizione un segnale digitale 2D L Caponetti 1 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 L Caponetti 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 L Caponetti 2 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 L Caponetti Segnale analogico Campionamento Segnale digitale Processo di acquisizione Scena Segnaleanalogico di una singola linea di scansione Telecamera Segnale analogico 20 30 22 28 40 27 28 27 Segnale digitale Matrice risultante L Caponetti 3 Digitalizzazione Il segnale acquisito da una telecamera è tipicamente un segnale continuo che descrive l’intensità del segnale luminoso secondo una scansione per linee La digitalizzazione trasforma un segnale continuo in uno digitale discretizzandolo nel dominio spaziale – campionamento nel dominio dei livelli di grigio - quantizzazione L Caponetti 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 L Caponetti 4 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=2k ogni pixel occupa k bit Una immagine di NxM pixels occupa b = (N ×M × k) bit L Caponetti Immagine digitale Una immagine digitale f(j,k) si può rappresentare con una matrice di NxM elementi di valori non negativi k f(0,0) …………… f(0,N-1) ………………………….. ………………………….. f(N-1,0)……………..f(N-1,N-1) j Sistema di riferimento immagine (j,k): ascisse x= k (colonne); ordinate y= -j (righe) L Caponetti 5 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) L Caponetti 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 L Caponetti 6 Risoluzione spaziale La grandezza in cm è uguale Varia il numero di pixel L Caponetti Risoluzione nella scala di grigio Una immagine binaria è una immagine in cui ogni pixel può assumere solo due valori: (0,1) una immagine binaria utilizza solo un bit per pixel Una immagine a toni di grigio è una immagine in cui ogni pixel assume valori in un intervallo valori tipici sono [0, 63], [0, 255], [0, 1023], rispettivamente 6, 8, 10 bit per pixel Un osservatore umano percepisce una scala continua di grigi osservando immagini memorizzate con 8 bit L Caponetti 7 Risoluzione nella scala di grigio o range dinamico Numero di livelli distinti utilizzati dai pixel dell’immagine all’interno dell’intervallo di rappresentazione: Ad esempio nell’intervallo [0,255] Una immagine che utilizza 256 livelli ha un range dinamico elevato Una immagine che utilizza 64 livelli ha un range dinamico basso Una immagine che utilizza 4 livelli ha un range dinamico molto basso L Caponetti 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 si possono rappresentare 256x256x256 colori diversi (circa 16 milioni) Il formato BitMaP – BMP – utilizza la rappresentazione diretta del colore L Caponetti 8 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 L Caponetti Immagini a colori Spesso per limitare l’occupazione di memoria si utilizza un numero limitato di colori, memorizzando l’immagine con 8, 4, 1 bit In questo caso però il formato dell’immagine contiene anche la Look-Up-Table dei colori L Caponetti 9 LUT dei colori LUT valore pixel R1 G1 B1 R2 G2 B2 R3 G3 B3 R4 G4 B4 R5 G5 B5 R6 G6 B6 R7 G6 B7 Valore effettivamente visualizzato (R5, G5, B5) L Caponetti Immagini bitmap (bmp) typedef struct { short magic; /* "BM" */ long file_dim; /* dimensione file */ long l0; /* 0 */ long header_dim; /* dimensione header */ long l40; /* 40 */ long xsize; /* numero colonne */ long ysize; /* numero righe */ short nchan; /* 1 */ short zsize; /* 1-4-8-24 */ long compression; /* 0 -> non compresso */ long data_dim; /* dimensione dati */ long xppi; long yppi; long colors; /* dimensione lut */ long colors1; } bmp_header; Struttura del file: intestazione, lut dei colori utilizzati dati dell’immagine per righe (le righe devono essere di dimensione multipla di 4 byte) L Caponetti 10 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 L Caponetti 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 R0 G0 B0 R255 G255 B255 …….. 255 L Caponetti 11 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 L Caponetti 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” L Caponetti 12 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 pA(x,y)+pB(x,y) clipping(255) = 0 se pA(x,y)+pB(x,y) ≤ 0 255 se pA(x,y)+pB(x,y) ≥ 255 con alfa pA(x,y) + pB(x,y) altrimenti a* ImA+(1-a) *ImB =def a pA(x,y)+(1-a) pB(x,y) clipping(255) L Caponetti Immagini gif Permettono di memorizzare immagini con al più 256 colori diversi Iniziano con “GIF89a” Segue un header con le informazioni sulla struttura dell’immagine (righe, colonne, numero di colori, …) Una tabella di lut con le terne dei colori utilizzati i dati dell’immagine (logicamente 1 byte per pixel) in formato compresso L Caponetti 13 Immagini a colori e Java Java normalmente utilizza un int per trattare immagini: il byte meno significativo per la componente blu, poi la verde, quindi la rossa Il byte più significativo (componente alfa) è il grado di trasparenza del pixel (255 pixel opaco, 0 pixel trasparente cioè invisibile) L Caponetti Immagini a toni di grigio Un immagine a toni di grigio è una immagine in cui le tre componenti sono uguali Un metodo intuitivo per operare la trasformazione Î grigio è G = (R+G+B)/3 Poichè l’occhio ha una sensibilità diversa per i diversi colori si preferisce una media pesata Una scelta frequente è G = 0.299*R + 0.587*G + 0.114*B L Caponetti 14 Istogramma L Caponetti Operatori Un operatore op trasforma una immagine f in una nuova immagine g ff op gg 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 L Caponetti 15 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) L Caponetti Operatori globali ………………… ………………… ………………… ………………… ………………… ……………….. ……………….. ……………….. ………………... ………………... Ogni valore g(i,j) viene calcolato sulla base dei valori di tutti i pixel di f L Caponetti 16 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 L Caponetti 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 è in relazione alla variazione della intensità dei pixel e quindi al valore di grigio minimo e massimo. Una immagine completamente contrastata fa uso dell’intero intervallo di livelli di grigio L Caponetti 17 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] [0,255] èè l’intervallo l’intervallo dei dei livelli livelli di di grigio grigio standard standard per la visualizzazione per la visualizzazione L Caponetti Trasformazione lineare dei livelli di grigio [a,b] ⊂ [0,255] - contranst stretching 255 Livelli finali 255/(b-a) 255/(b-a)=l’/(l-a) =l’/(l-a) l’l’=255 =255(l-a)/(b-a) (l-a)/(b-a) l’ 0 a l b 255 Livelli di grigio originali Scala di grigio originale: [a,b] Scala di grigio trasformata: [0,255] a 0 b 255 L Caponetti 18 Trasformazione lineare dei livelli di grigio con clipping [0,255] ⊂ [a,b] 255 IIlivelli livellil1l1<<00sono sonoposti postiaa zero zero IIlivelli livellil2l2 >255 >255sono sonoposti postiaa zero zero Livelli finali a 0 255 b Livelli di grigio originali L Caponetti Inversione Il negativo di un’immagine si ottiene invertendo l’ordine dal nero al bianco in modo da avere una scala di livelli decrescenti l’=T(l) l L Caponetti 19 Compressione della dinamica Potrebbe essere necessario comprimere utilizzando una trasformazione logaritmica la scala l ' = c log (1 + l ) l’=T(l) l L Caponetti Soglia - thresholding E’ un caso particolare di contrast stretching: Si definisce un valore di soglia t – ai livelli minori o uguali a t si associa il livello minimo, ai livelli maggiori di t si associa il livello massimo 0 l' = Lmax l’=T(l) L Caponetti t se l ≤ t altrimenti l 20 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) L Caponetti 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 L Caponetti 21 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 L Caponetti Istogramma Nella figura l’istogramma mostra graficamente il numero di volte in cui un particolare livello di grigio occorre nella immagine 0 1 1 2 4 2 1 0 0 2 5 2 0 0 4 1 1 2 4 1 7 6 5 4 3 2 1 0 0 immagine 1 2 3 4 5 6 istogramma L Caponetti 22 Istogramma di immagini a colori Nello spazio RGB si possono calcolare gli istogrammi individuali per ogni componente: ad esempio per la componente blue L Caponetti Blue Istogramma - esempi L Caponetti 23 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 - numero di pixel aventi valore i h(i) = ni La presenza di picchi in un istogramma può rappresentare una zona chiara o scura una zona molto o poco contrastata L’istogramma può essere modificato per ottenere una differente distribuzione dei livelli di grigio L Caponetti 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) L Caponetti 24 Istogramma cumulato Definizione di istogramma cumulato hc(i) per i=0..Lmax i hc (i ) = ∑ h(i ) j =0 Ogni elemento hc(i) è uguale alla somma degli elementi h(0), h(1),..h(i) hc(0) = h(0) hc(1) = h(0) + h(1) ……. hc(Lmax) = h(0) + h(1)+..+ h(Lmax) = n Se l’istogramma è uniforme allora l’istogramma cumulato è una retta L Caponetti 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..(Lmax) e Lmax uguale al livello di grigio massimo La trasformazione rende l’istogramma della immagine di output approssimativamente corrispondente all’istogramma uniforme Questa trasformazione permette una migliore definizione aumentando il contrasto dell’immagine ed eliminando zone molto chiare o molto scure L Caponetti 25 Equalizzazione o linearizzazzione di un istogramma Definizione di istogramma cumulato hc(i) per i=0..Lmax i hc (i ) = ∑ h(i ) j =0 Sia h(i) l’istogramma di una immagine f. Se l’istogramma h è uniforme allora l’istogramma cumulato è una retta L’equalizzazione dell’istogramma iniziale h(i) può essere ottenuta imponendo che l’istogramma equalizzato hc(i) sia lineare L Caponetti Istogramma cumulato di una distribuzione uniforme n Istogramma cumulato h i i c ∑ h( j ) = L max n j =0 0 i Lmax Livelli di grigio L Caponetti 26 Equalizzazione di istogrammi La trasformazione si può ottenere dalla formula: i i ∑ h( j ) = L max n i i j =0 j =0 ∑ h( j ) = ∑ nj j =0 i = 0,1,2,...,Lmax imponendo che ogni livello i abbia istogramma cumulato uguale a i ∑ h( j ) = j =0 n *i L max dove Lmax: numero dei livelli di grigio nella immagine (ad esempio 255) nj: numero di volte in cui il livello j appare nella immagine L Caponetti n: numero totale di pixel nella immagine L Caponetti 27