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