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