Sei sulla pagina 1di 20

1

Caratteristiche delle immagini: formazione delle


immagini

Quando la luce colpisce i fotorecettori posti su un sensore fotografico viene


convertita in un segnale elettrico interpretabile come un'onda. Tale onda ,
nella teoria, perfettamente pulita e precisa; nella pratica, invece, ci possono
essere disturbi di vario genere che causano il cosiddetto rumore, ovvero
piccole interferenze sui singoli pixel che causano un degrado della qualit.
Un'immagine pu essere pensata come una funzione f(x,y) corrispondente alla
luce che colpisce il sensore (sia esso un sensore elettronico, una pellicola o la retina).
Tale funzione varia da 0 a e pu essere scomposta in due parti: illuminazione e
riflettanza.
Illuminazione: funzione i(x,y) che varia tra 0 e . Rappresenta la quantit di luce
proveniente dalla fonte luminosa che colpisce gli oggetti e viene da questi riessa.
Riflettanza: funzione r(x,y) che varia tra 0 e 1. Rappresenta la capacit degli
oggetti nella scena di riflettere la luce: possono assorbirla tutta (valore 0)
oppure rifletterla tutta (valore 1).
L'illuminazione dipende dalle propriet della sorgente luminosa, la riflettanza
dalle propriet dell'oggetto colpito dalla luce.
Esempi:
Luminosit
Giorno soleggiato: 90'000 lm//m
Giorno nuvoloso: 10'000 lm/m
Ufficio: 1000 lm/m
Chiaro di luna: 0.1 lm/

Riflettanza
Velluto nero: 0,01
Acciaio: 0,65
Muro bianco pulito: 0,80
Neve: 0,93

L'intensit di un'immagine a livelli di grigio pu essere definita come

= f(x0, y0)
con compreso tra i valori Lmin e Lmax. Nello specifico,

Lmin = imin rmin e Lmax = imax rmax


Prendendo come esempio la luminosit in un ufficio (1000 lm/m) e la
riflettanza minima (velluto nero: 0,01), abbiamo Lmin = 10 e Lmax = 800 (muro
bianco pulito: 0,80).
L'intervallo [Lmin, Lmax] detto scala di grigi o scala d'intensit. Si considera di
solito compreso tra i valori [0, L-1] dove 0 il nero e L-1 il bianco, con tutte
le variazioni di grigio comprese tra i due.
2

Campionamento e quantizzazione delle immagini

Ogni immagine che viene catturata da un sensore digitale viene rappresentata


come una funzione che varia in ampiezza a seconda del colore e della
luminosit di ogni sua parte. Si pu quindi rappresentare ogni linea
dell'immagine come un grafico con una linea che percorre il piano. Il
campionamento la selezione di punti equidistanziati sulla funzione presi
orizzontalmente cio una quantizzazione spaziale, una trasformazione da
valore continuo a valore discreto (pixel). Il valore di ciascun pixel il valore di

x e rappresenta la posizione del pixel all'interno della specifica riga


dell'immagine.
Il valore dell'intensit in ciascun punto definito dalla quantizzazione, cio una
trasformazione in valore discreto (es: #f0fb5a) di un valore continuo (ovvero
l'infinita quantit di colori che sono presenti nelle sfumature che possiamo
osservare in natura) una quantizzazione d'intensit, che ottiene un valore e
lo rappresenta con il valore di y del punto individuato con il campionamento
all'interno del grafico. L'incrocio dei valori di x e di y porta all'individuazione di
un punto, di cui si conosce la posizione e il valore.
L'operazione ripetuta per ciascuna linea dell'immagine e questo porta ad
ottenere una matrice m*n di valori che rappresentano l'immagine. La qualit
finale dell'immagine digitalizzata dipende in larga parte dal livello di rumore
presente nell'immagine percepita dal sensore: maggiore il rumore, maggiori
sono le probabilit che la quantizzazione restituisca un risultato di bassa
qualit (con molto rumore d'immagine).
Il limite principale nell'acquisizione di immagini dato dal numero di elementi
del sensore: pi elementi costituiscono il sensore e maggiore la precisione
consentita, poich maggiori sono i pixel che vengono catturati e quindi pi fini
sono i dettagli che possono essere rappresentati.
Rappresentazione di immagini digitali
Se f(s, t) rappresenta la funzione di un'immagine continua su due variabili
continue s e t, possiamo convertire questa funzione in un'immagine digitale
tramite campionamento e quantizzazione.
Una rappresentazione grafica delle immagini digitali pu essere sia, da un lato,
la rappresentazione come immagini vere e proprie, dove ad ogni valore in una
certa posizione viene sostituito un colore ben definito, sia, dall'altro, una
rappresentazione numerica dell'immagine, che viene quindi rappresentata
come una matrice MxN di numeri, a ciascuno dei quali corrisponde poi un
colore. Quest'ultima rappresentazione quella che torna pi utile nel momento
in cui si vuole elaborare un'immagine, poich permette di avere una
rappresentazione elaborabile da un calcolatore.
Ciascun elemento della matrice detto picture element o, per brevit, pixel. Gli
elementi sono ordinati come su un piano cartesiano ruotato di 90: ad
esempio, il punto (1,0) corrisponde al punto (0,-1) su un piano cartesiano
normale.
Siano Z e R insiemi rispettivamente di interi e di reali. Il processo di
campionamento pu esser visto come il partizionamento del piano xy in una
griglia, con le coordinate del centro della griglia rappresentate da una coppia di
elementi del prodotto cartesiano Z2 (coppie di interi). f(x, y) quindi
un'immagine digitale se (x, y) sono interi di Z2 e f una funzione che assegna
un valore di intensit R a ciascuna coppia di coordinate (x, y).
L'assegnamento di un valore R ad una coordinata corrisponde al processo di
quantizzazione; nel caso in cui i valori di f(x, y) siano interi, allora l'immagine
digitale diventa una funzione bidimensionale in un dominio di interi.
Questo processo di digitalizzazione richiede che vengano definiti i valori di M e
N (dimensioni) e L (livelli discreti di intensit). Non ci sono limiti per M e N, ma
spesso i livelli di intensit L sono potenze di 2 per limiti hardware e di
memorizzazione. Possiamo quindi affermare che

L = 2k
Se poniamo i livelli discreti come equidistanziati e interi, abbiamo allora livelli
di grigio compresi tra 0 e L-1. Questo insieme di valori pu essere chiamato
anche range dinamico, nell'accezione di "rapporto tra la massima intensit
misurabile e quella minima nel sistema". La regola vuole che il massimo sia
determinato dalla saturazione, mentre il minimo dal rumore.
Direttamente collegato il concetto di contrasto, che la differenza in
intensit tra le intensit minima e massima in un'immagine.
Il numero di bit richiesto per memorizzare un'immagine

b=MxNxk
Se l'immagine quadrata serviranno b = N2k pixel.
Risoluzione
Esistono sia la risoluzione spaziale che la risoluzione d'intensit: ciascuna
una misura del pi piccolo dettaglio individuabile in un'immagine. Un esempio
di risoluzione spaziale il ppi (pixel-per-inch, pixel per pollice). Questo ,
effettivamente, l'unico metro per capire l'effettiva qualit di un'immagine: la
sola risoluzione pu essere adottata come metro di giudizio delle capacit di
catturare dettagli di un sensore, non come metro di qualit.
La risoluzione dell'intensit si riferisce, invece, al pi piccolo cambiamento
individuabile nel livello di intensit. Solitamente vengono usati 8 bit, con 16 bit
usati in alcune applicazioni particolari e 32 bit che sono estremamente rari. La
risoluzione non , per, un metro affidabile per giudicare la qualit di
un'immagine, dato che rappresenta al pi una descrizione dei livelli teorici di
dettaglio nella riproduzione dei colori nell'immagine.

Curve di isopreferenza
Uno studio condotto da Huang nel 1965 ha mostrato come si possano variare
in contemporanea N e k per ottenere immagini la cui qualit percepita dagli
utenti la stessa. Egli mise a confronto immagini di un volto, di un
cameraman e di una folla, con dettagli crescenti. Huang chiese ai soggetti di
mettere le immagini in ordine di preferenza soggettiva in base al livello
percepito di qualit. Tali preferenze furono quindi rappresentate su un piano
Nk come curve di isopreferenza. I punti che appartengono a ciascuna retta
rappresentano immagini della stessa qualit percepita. Il risultato pi
interessante dell'esperimento che le immagini con molti dettagli solitamente
non richiedono molti livelli di intensit: a causa dei molti dettagli, infatti,
l'uomo percepisce gi profondit e complessit che non vengono aumentati
con maggiori livelli di intensit. Al contrario, minori livelli di intensit
provocano un aumento del contrasto e fanno s che l'immagine appaia di
qualit maggiore agli occhi dell'osservatore. Questo fatto viene rappresentato
con curve di isopreferenza pressoch verticali: varia k, ma non N.
Interpolazione
L'interpolazione un processo che, in sostanza, consiste nell'usare dati
conosciuti per ottenere dati sconosciuti in una certa posizione di un'immagine.

Si tratta di uno strumento utilizzato per effettuare correzioni e ridimensionare


e ruotare immagini. Si tratta di una tecnica che prevede la ricostruzione di
alcuni pixel a partire dai pixel che li circondano. Tanti pi sono i pixel intorno
che si prendono in considerazione, tanto pi fedele all'originale sar il
risultato: prendendo in considerazione solo i 4 pixel immediatamente vicini si
otterr un'interpolazione di bassa qualit, mentre prendendone di pi (es. 8 o
16) si otterr una rappresentazione pi realistica del valore del pixel in quel
punto.
L'approccio pi semplice chiamato nearest neighbour e consiste nel
prendere il valore del pixel pi vicino; questo approccio semplice e
computazionalmente leggero, ma ha lo svantaggio di creare numerosi artefatti
che inficiano la qualit generale dell'immagine, soprattutto con elementi come
linee dritte. Questo fa s che sia, in realt, poco usato nella pratica.
L'interpolazione che sfrutta i quattro pixel pi vicini (sopra, sotto, destra,
sinistra) detta interpolazione bilineare. Siano (x, y) il punto di cui si vuole
ottenere l'intensit e v(x, y) il valore dell'intensit in tale punto. Tale valore si
ottiene tramite la seguente equazione:

v(x, y) = ax + by + cxy + d
I quattro coefficienti sono determinati sostituendo i valori di x e y con i valori
dei quattro punti vicini.
Un approccio pi elaborato l'interpolazione bicubica, che coinvolge i sedici
punti pi vicini. Il valore dell'intensit v(x, y) in un punto dato dall'equazione

v(x, y) = i=03j=03aijxiyj
dove i sedici coefficienti sono determinati dalle sedici equazioni in sedici
incognite che possono essere scritte usando i sedici punti pi vicini.
L'interpolazione bicubica riesce a mantenere pi dettagli rispetto alla
controparte lineare ed lo standard impiegato in programmi commerciali come
Photoshop.
2

Relazioni di base tra pixel

Vicinanza tra pixel


Un pixel p alle coordinate (x, y) ha quattro vicini orizzontali e verticali le cui
coordinate sono

(x+1, y), (x-1, y), (x, y+1), (x, y-1)


Questi pixel sono i pixel 4-vicini di p e vengono indicati con N4 (p). Viceversa, i
quattro vicini diagonali di p sono alle coordinate
(x+1, y+1), (x+1, y-1), (x-1, y+1), (x-1, y-1)
e sono indicati con ND(p). Insieme ai pixel 4-vicini formano i pixel 8-vicini,
indicati come N8 (p). Ciascun pixel un'unit di distanza da (x, y) e alcuni dei
vicini possono giacere fuori dall'immagine nel caso in cui p sia sul bordo.
Adiacenza, connettivit, regioni e bordi
Sia V l'insieme dei valori di intensit usati per definire l'adiacenza, con valori
che variano a seconda della risoluzione d'intensit (es: 8 bit = 256 possibili
valori inseriti in V). Un pixel adiacente (4-adiacente, 8-adiacente,

m-adiacente) ad un secondo pixel se il loro valore incluso in V. Ad esempio,


due pixel p e q sono 4-adiacenti se hanno valori compresi in V e sono 4-vicini.
La m-adiacenza una modifica della 8-adiacenza e due pixel sono m-adiacenti
se
q in N4 (p)
q in ND (p) e l'insieme N4 (p) N4 (q) non contiene pixel il cui valore
compreso in V.
Un percorso da un pixel p con coordinate (x, y) ad un pixel q con coordinate
(s, t) una sequenza di pixel distinti con coordinate

(x0, y0), (x1, y1), , (xn, yn)


dove (x0, y0) = (x, y),(xn, yn) = (s, t) e i pixel (xi, yi) sono adiacenti per 1 i n. n
la lunghezza del percorso. Se (x0, y0) = (xn, yn) allora si parla di un percorso
chiuso. Si possono definire 4-percorsi, 8-percorsi o m-percorsi a seconda del
tipo di adiacenza specificato.
Sia S un sottoinsieme di pixel in un'immagine. Due pixel p e q sono detti
connessi in S se esiste un percorso tra loro che consiste interamente di pixel
presenti in S. L'insieme dei pixel connessi ad un pixel p in S chiamato
componenti connessi di S. Se S ha un solo componente connesso, allora
detto insieme connesso.
Sia R un sottoinsieme di pixel in un'immagine. R detto regione dell'immagine
se R un insieme connesso. Due regioni R e Ri sono dette adiacenti se la loro
unione forma un insieme connesso. Regioni che non sono adiacenti sono dette
disgiunte. Nell'adiacenza tra regioni si usano la
4-adiacenza e la 8-adiacenza.
Sia Rk l'insieme di tutte le regioni disgiunte in un'immagine che non toccano il
bordo; l'unione di tutte le regioni Ru sia chiamato primo piano e il suo
complemento sfondo.
Il bordo di una regione R l'insieme dei punti adiacenti (solitamente
8-adiacenti) a punti che appartengono al complemento di R. Tale bordo detto
bordo interno per distinguerlo dal bordo esterno, che il bordo del
complemento di R intorno a R stesso. Negli algoritmi si usa spesso il bordo
esterno perch pu succedere che una regione corrisponda con il suo bordo e
questo non piace agli algoritmi che richiedono un percorso chiuso.
Se R un'intera immagine il suo bordo definito come la prima e l'ultima riga
e colonna (righe 0 e N, colonne 0 e M).
Uno spigolo formato da pixel i cui valori eccedono una soglia predefinita. Uno
spigolo pu corrispondere ad un bordo, ma non sempre questo il caso.

Trasformazioni d'intensit e filtraggio spaziale

Il termine dominio spaziale si riferisce al piano dell'immagine in cui vengono


eseguite le operazioni di manipolazione dei pixel, in contrasto con il dominio
delle trasformate che prevede che l'immagine sia prima fatta diventare una
trasformata su cui si effettuano le operazioni per poi riportare il tutto ad
un'immagine nel dominio spaziale. In parole povere, un'immagine nel dominio
spaziale un'immagine come la si penserebbe normalmente (un insieme di
colori distribuiti nello spazio), mentre un'immagine nel dominio delle
trasformate una funzione su cui intervengono altre funzioni per la
manipolazione.
L'elaborazione spaziale pu essere divisa in due categorie principali:
trasformazioni d'intensit e filtraggio spaziale. Le trasformazioni d'intensit
operano prevalentemente sui singoli pixel, mentre il filtraggio spaziale si
occupa di lavorare sugli intorni dei singoli pixel.
4

Le basi delle trasformazioni d'intensit e del filtraggio spaziale

I processi che operano nel dominio spaziale possono essere denotati


dall'espressione

g(x, y) = T[f(x, y)]


dove f(x, y) l'immagine in input, g(x, y) l'immagine in output e T un
operatore su f definito su un intorno del punto (x, y). L'operatore pu essere
applicato su una singola immagine o su un insieme di immagini.
La maggior parte delle operazioni di filtraggio spaziale (o maschera spaziale, o
kernel, o template, o finestra) prende un punto (x, y) di partenza (solitamente
il punto pi in alto a sinistra) e un suo intorno specificato (ad esempio 3x3). A
questo punto si applica la funzione T, quindi si sposta il punto a destra, si
procede fino alla fine della riga e si completano in questo modo tutte le righe
dell'immagine. Se ci sono parti dell'intorno che fuoriescono dai bordi
dell'immagine si usano valori nulli come riempimento oppure si crea un
padding riempito con i valori speculari nell'immagine rispetto alla riga o
colonna in questione (esempio: se la prima riga ad essere elaborata, si
prendono i valori delle righe da 2 a 4 e li si dispone specularmente come nello
schema [4-3-2-1-2-3-4]).
Se il valore della finestra (ovvero dell'intorno) di 1x1 si parla di funzione di
trasformazione dell'intensit (o del livello di grigio o di mapping) con forma

s = T(r)
dove s e r sono variabili che denotano, rispettivamente, le intensit di g e f in
qualunque punto
(x, y).
Funzioni di trasformazione dell'intensit
Le funzioni di trasformazione dell'intensit sono tra le pi semplici tra le
funzioni di elaborazione delle immagini. Il valore dei pixel prima
dell'elaborazione sar denotato con r, dopo con s all'interno della funzione s =

T(r), con T che mappa r in s.


1.

Negativi delle immagini


Il negativo di un'immagine con livelli di intensit nell'intervallo [0, L-1] si
ottiene tramite l'espressione

s=L-1r
Questo produce l'equivalente del negativo fotografico. Il processo
particolarmente indicato quando bisogna aumentare il livello di dettagli
grigi o bianchi in immagini con molte zone scure.
2. Trasformazioni logaritmiche
La forma generale delle trasformazioni logaritmiche

s = c log (1+r)
dove c una costante e r 0. Le trasformazioni logaritmiche permettono di
mappare pochi valori con bassa intensit (colori scuri) in molti pi valori,
permettendo in questo modo di aumentare il livello di risoluzione d'intensit dei
toni scuri. Di contro, la risoluzione d'intensit dei toni chiari diminuisce poich pi
valori vengono mappati in un unico valore. Questo signica che la funzione
logaritimica comprime il range dinamico di un'immagine con grandi variazioni di
intensit tra i pixel. Un esempio di applicazione nel miglioramento delle
immagini nello spettro di Fourier.
3. Trasformazioni con legge di potenza (gamma)
Le trasformazioni con legge di potenza sono espresse nella forma

s = cr
dove c e sono costanti positive. Gamma piccoli (es. 0.10) aumentano il
livello di dettaglio delle zone scure nelle immagini, mentre gamma grandi
(es. 5) aumentano il livello di dettaglio delle zone chiare.
Per convenzione gli esponenti delle leggi di potenza usate dai dispositivi
per interagire con le immagini (cattura, stampa, riproduzione) vengono
chiamati gamma, da cui correzione di gamma quando si correggono tali
esponenti nell'elaborazione delle immagini.
In generale, le trasformazioni con legge di potenza sono utili per
manipolare il contrasto nelle immagini.
4. Funzioni di trasformazione a linea spezzata
Un ulteriore metodo a disposizione quello delle funzioni di
trasformazione a linea spezzata, il cui principale vantaggio che si pu
alterare a piacere la forma per renderla arbitrariamente complessa; lo
svantaggio che le funzioni di trasformazione a linea spezzata
richiedono maggiore input da parte dell'utente.
1. Ampliamento del contrasto: l'ampliamento del contrasto consiste
nell'aumentare il range di livelli d'intensit in un'immagine in maniera
tale che esso si estenda per tutto il range di intensit consentito dal
dispositivo di cattura o di riproduzione. L'ampliamento del contrasto
varia tra una funzione nulla (che non provoca cambiamenti) e la
trasformazione dell'immagine originale in un'immagine binaria (in soli
bianco e nero).
2. Slicing dei livelli d'intensit: per esaltare porzioni di immagine o
dettagli presenti in certi range di intensit possibile binarizzare

un'immagine usando un colore (es. bianco) per ci che si vuole


esaltare ed un secondo colore (es. nero) per il resto, oppure alterare i
valori di intensit di un certo range portandoli ad un unico valore (es.
bianco) per renderli uniformi e farli risaltare.
3. Bit-plane slicing: possiamo immaginare un'immagine a 8 bit (256
livelli di grigio) come una sovrapposizione di 8 differenti piani,
ciascuno dei quali rappresenta un bit a uno tra 0000001 e 10000000
(per cui 00000010, 00000100, etc.). Decomporre l'immagine in una
serie di livelli sovrapposti rappresentanti un bit (bit planes) utile per
analizzare l'importanza relativa di ciascun bit nell'immagine e per
risparmiare spazio: al di l di problemi tecnici di memorizzazione, si
possono usare meno livelli di grigio per memorizzare informazioni che
appaiono pressoch identiche (o con una perdita di informazioni
accettabile) all'occhio umano con un notevole risparmio di memoria.
5

Elaborazione tramite istogrammi

Un istogramma di un'immagine con livelli di intensit compresi tra 0 e L-1


una funzione discreta h(rk)=nk, dove rk il k-esimo livello di intensit e nk il
numero di pixel nell'imagine con intensit rk. L'istogramma viene normalizzato
dividendo ciascuno dei suoi componenti per il numero totale di pixel
nell'immagine MN (dove M indica le righe e N le colonne dell'immagine). Un
istogramma normalizzato pu quindi essere indicato come p(rk) = nk / MN per k
= 0, 1, , L-1. In buona sostanza, p(rk) una stima della probabilit che il
livello di intensit rk sia presente nell'immagine. La somma di tutte le
componenti uguale a 1.
Gli istogrammi si usano in diversi campo: per il miglioramento delle immagini,
per la compressione e per la segmentazione. Questo dovuto alla semplicit di
calcolo e a implementazioni in hardware economiche.
Le immagini con buona parte dei pixel concentrati su livelli di intensit bassi
hanno un istogramma con la maggior parte delle componenti nella parte
sinistra (che indica proprio la bassa intensit), mentre immagini chiare con
pixel concentrati su alti livelli di intensit hanno un istogramma con le
componenti nella parte destra. Immagini con un basso contrasto avranno
buona parte delle componenti dell'istogramma verso il mezzo e appariranno
grigie, mentre un'immagine ad alto contrasto copre circa tutto lo spettro
dell'istogramma in maniera pressoch uniforme. Immagini ad alto contrasto,
quindi, appariranno con molti dettagli in tutti i livelli di intensit del grigio e
con un alto range dinamico.
Equalizzazione dell'istogramma
Consideriamo dei valori di intensit continui. Sia r una variabile che denota le
intensit di un'immagine da elaborare, con valori nell'intervallo [0, L-1] e r=0
che rappresenta il nero e r=L-1 che rappresenta il bianco. Affinch r soddisfi
queste condizioni, prendiamo in considerazione trasformazioni del tipo

s = T(r)

0 r L-1

che produce in output un livello di intensit s per ogni pixel nell'immagine con
intensit r. Sappiamo che:

T(r) una funzione monotona crescente nell'intervallo 0 r L-1, e


0 T(r) L-1 per 0 r L-1.
In alcuni casi si usa la formula inversa
1.
2.

r = T -1 (s)

0 s L-1

nel qual caso la condizione 1. cambia e diventa


1. T(r) una funzione strettamente monotona crescente nell'intervallo 0 r
L-1.
richiesto che T(r) sia monotona crescente perch cos l'output ha valori
d'intensit che non saranno mai inferiori ai valori in input; questo previene che
si creino artefatti dovuti ad una inversione dell'intensit. La condizione 2.,
invece, garantisce che l'intervallo delle intensit in output sia lo stesso che in
input. La seconda condizione 1., invece, garantisce che sia possibile
ri-mappare in r i valori in s senza ambiguit e che i valori siano mappati
singolarmente con una funzione uno-a-uno e non uno-a-molti.
I livelli di intensit in un'immagine possono essere visti come variabili casuali
nell'intervallo [0, L-1] che possono essere descritte dalla Probability Density
Function (PDF). Siano pr(r) e ps(s) le PDF di r e s. Se pr(r) e T(r) sono noti e
T(r) continua e differenziabile nell'intervallo di valori d'interesse, allora la
PDF della variabile s trasformata (mappata) pu essere ottenuta usando la
formula

ps(s) = pr(r) |dr/ds|


La PDF della variabile in output s determinata dalle intensit in input e dalla
funzione di trasformazione utilizzata.
Una funzioen di trasformazione di particolare rilevanza ha forma

s = T(r) = (L-1) 0 r pr (w) dw


con w che una variabile di integrazione. La parte destra dell'equazione la
funzione di distribuzione cumulativa (cumulative distribution function, CDF)
della variabile casuale r. Poich le PDF sono sempre positive, la funzione di
trasformazione qui sopra soddisfa la condizione 1. perch l'area sotto la
funzione (definizione di integrale) non pu diminuire all'aumentare di r.
Quando il limite superiore r = (L-1), l'integrale ha valore 1 e quindi il valore
massimo di s (L-1) e la condizione 2. soddisfatta.
[] pag. 146

Histogram Matching da non fare (sigh...)


L'equalizzazione dell'istogramma cerca di bilanciare l'istogramma di
un'immagine in modo tale da renderlo uniforme e da ottenere quindi un
contrasto elevato. Talvolta, per, tale soluzione non la migliore, poich
potrebbe essere utile specificare la forma dell'istogramma che si desidera
ottenere. Il metodo usato per generare immagini elaborate a partire da un
istogramma chiamato histogram matching o specificazione dell'istogramma.
Siano r e z due variabili casuali continue e siano pr(r) e pz(z) le loro probability
density functions (PDF). r e z denotano i livelli di intensit delle immagini
rispettivamente in input e in output. possibile stimare pr(r) dall'immagine in

input, mentre pz(z) la PDF da noi specificata che desideriamo abbia


l'immagine in output.
Sia s una variabile casuale con la propriet

s = T(r) = (L-1) 0 r pr (w) dw


(1)
dove w una variabile d'integrazione. La formula identica a quella
dell'equalizzazione dell'istogramma riportata in precedenza. Supponiamo
quindi che ci sia una variabile casuale z con la propriet
G(z) = (L-1) 0t pt (w) dt = s

(2)

dove t una variabile d'integrazione. Si nota quindi che G(z) = T(r) e, quindi,
che z deve soddisfare la condizione

z = G-1 [T(r)] = G-1 (s)


La trasformazione T(r) pu essere ottenuta dall'equazione (1) una volta che
pr(r) stato stimato dall'immagine di input.
Le equazioni precedenti mostrano che un'immagine i cui livelli di intensit
hanno una PDF pu essere ottenuta da una data immagine usando la seguente
procedura:
1. Si ottiene pr(r) dall'immagine in input e si usa l'equazione (1) per
ottenere i valori di s.
2. Si usa la PDF specificata nell'equazione di G(z) per ottenere la funzione
di trasformazione G(z).
-1
3. Si ottiene la trasformazione inversa z = G (s); poich z ottenuta da s,
questo processo una mappatura da s a z, con quest'ultima che
contiene i valori desiderati.
4. Si ottiene l'immagine di output equalizzando l'immagine in input usando
l'equazione (1); i valori dei pixel in questa immagine sono i valori di s.
Per ogni pixel con valore s nell'immagine equalizzata, si esegue la
mappatura inversa z = G-1 (s) per ottenere i pixel corrispondenti
nell'immagine in output. Quando tutti i pixel sono stati elaborati in
questo modo, la PDF dell'immagine in output sar uguale alla PDF
specificata.
L'histogram matching presenta una difficolt nella pratica: difficile trovare
espressioni analitiche significative per T(r) e G-1. Il problema viene semplificato
usando quantit discrete. Lo svantaggio che si possono ottenere solo
approssimazioni dell'istogramma scelto.
La forma discreta dell'equazione (1)

sk = T(rk) = (L-1) j=0k pr (rj) = (L-1)/MN

k nj k=0, , L-1

j=0

(a)

dove MN il numero totale di pixel dell'immagine, nj il numero di pixel che


hanno valore di intensit rj e L il numero totale di livelli di intensit possibili
in un'immagine. Dato uno specifico valore di sk, la formulazione discreta di (2)
richiede l'elaborazione della funzione di trasformazione

G(zq) = (L-1)
per un valore di q tale che

q pz (zi)

i=0

(b)

G(zq) = sk
dove pz (zi) il i-esimo valore dell'istogramma specificato. Come prima,
troviamo il valore desiderato zq ottenendo la trasformazione inversa:

zq = G-1 (sk)
In altre parole, questa operazione d un valore di z per ogni valore di s, quindi,
effettua una mappatura di s in z.
Non c' reale bisogno di calcolare l'inverso di G, poich lavoriamo con livelli di
intensit che sono interi ed semplice elaborare tutti i possibili valori di G
usando l'equazione (b) per q = 0, , L-1. Tali valori sono scalati e arrotondati
al valore intero pi vicino nell'intervallo [0, L-1] e sono quindi archiviati in una
tabella. Dato quindi un particolare valore di sk, si cerca il pi vicino
corrispondente tra i valori nella tabella. Esempio: se il 64o valore quello pi
vicino a sk, allora z63 la migliore soluzione all'equazione e il valore di sk
associato con z63. Poich le z sono le intensit utilizzate come base per
specificare l'istogramma pz (z), segue che z0 = 0, z1 = 1, , zL-1 = L-1, quindi z63
avr valore di intensit 63. Ripetendo questa procedura si scopre la mappatura
di ciascun valore di sk nel valore di zq che la pi vicina soluzione
all'equazione: queste mappature sono la soluzione del problema di
specificazione dell'istogramma.
possibile riassumere la procedura di specificazione dell'istogramma come
segue:
1. Si calcola l'istogramma pr (r) dell'immagine data e si usa per trovare la
trasformazione di equalizzazione dell'istogramma nell'equazione (a). Si
arrotondano i valori risultanti sk all'intervallo intero [0, L-1].
2. Si calcolano tutti i valori della funzione di trasformazione G usando
l'equazione (b) per q = 0, 1, , L-1, dove pz (zi) sono i valori
dell'istogramma specificato. Si arrotondano i valori di G agli interi
nell'intervallo [0, L-1] e si memorizzano tali valori in una tabella.
3. Per ciascun valore di sk, k = 0, 1, , L-1, si usano i valori memorizzati di
G per trovare i valori corrispondenti di zq in maniera tale che G(zq) sia il
pi vicino possibile a sk e si memorizzano queste mappature da s a z.
Quando pi di un valore di zq soddisfa sk (ad es. perch la mappatura
non univoca), si sceglie il valore pi piccolo per convenzione.
4. Si forma l'immagine con istogramma specificato equalizzando
l'istogramma dell'immagine in input e quindi si mappa ciascun valore
equalizzato dei pixel, sk, di questa immagine nel valore corrispondente zq
nell'immagine con istogramma specificato usando la mappatura del
passo precedente. Il passo intermedio di equalizzare l'immagine in input
concettuale e pu essere saltato combinando le due funzioni di
trasformazione T e G-1.
Affinch G-1 soddisfi le condizioni 1a. E 2., G deve essere strettamente
monotona; questo significa che nessuno dei valori pz (zi) dell'istogramma
specificato pu essere zero, secondo l'equazione (b). Il fatto che questa
condizione possa non essere rispettata lavorando con quantit discrete non
un problema grave.

Elaborazione locale degli istogrammi


Le tecniche di elaborazione degli istogrammi viste precedentemente sono
globali, poich modificano gli istogrammi di tutta l'immagine. Ci sono alcuni
casi, tuttavia, in cui preferibile agire solo su piccole aree di un'immagine
poich si vuole ottenere un miglioramento locale e non solo generale. La
soluzione utilizzare funzioni di trasformazione basate sulla distribuzione
d'intensit in un intorno di ciascun pixel in un'immagine.
La maggior parte delle tecniche fin qui viste pu essere adattata
all'elaborazione locale degli istogrammi, con una procedura che prende in
considerazione un certo intorno del pixel utilizzato come centro (una finestra
intorno al pixel) e quindi procede per righe o colonne elaborando tutta
l'immagine, aggiornando l'istogramma ad ogni passo.
Usare la statistica per migliorare le immagini
I dati statistici ottenuti direttamente dall'istogramma di un'immagine possono
essere usati per migliorare un'immagine.
Sia r una variabile discreta casuale che rappresenta valori d'intensit
nell'intervallo [0, L-1] e sia p(ri) la componente dell'istogramma normalizzato
che corrisponde al valore ri. Possiamo vedere p(ri) come una stima della
probabilit che l'intensit ri sia presente nell'immagine da cui ottenuto
l'istogramma. [pag.162]

Filtraggio spaziale

Il filtraggio spaziale uno dei principali metodi usati per elaborare le immagini.
Il termine filtro preso in prestito dal mondo dell'elaborazione delle
frequenze, dove filtro si riferisce all'accettare o rifiutare il passaggio di certe
componenti delle frequenze: per esempio, un filtro che passa le basse
frequenze chiamato filtro passa basso, il cui effetto quello di sfocare
un'immagine. Possiamo ottenere lo stesso effetto usando dei filtri spaziali
(chiamati anche maschere spaziali, kernel, template e finestre) direttamente
sull'immagine. I filtri spaziali lineari sono molto pi versatili delle controparti
che si basano sulle frequenze.
Le meccaniche del filtraggio spaziale
Un filtro spaziale consiste fondamentalmente di
1. un intorno di un pixel, tipicamente un piccolo rettangolo;
2. un'operazione predefinita che viene eseguita sui pixel dell'immagine
evidenziati dall'intorno.
Il filtraggio crea un nuovo pixel con coordinate uguali a quelle del centro
dell'intorno, e il cui valore il risultato dell'operazione di filtraggio.
Un'immagine elaborata viene generata ogni volta che il centro del filtro viene
applicato ad un nuovo pixel dell'immagine. Se il filtro impiegato lineare si
parla di filtro spaziale lineare, altrimenti di filtro spaziale non-lineare.
L'output g(x, y) del filtro in un certo punto dell'immagine la somma dei
prodotti dei coefficienti del filtro e dei pixel su cui viene applicato il filtro:

g(x, y) = w(-1, 1) f(x-1, y-1)+w(-1, 0) f(x-1, y) +


+ + w(0,0) f(x, y) + + w(1, 1) f(x+1, y+1)

Per una maschera di dimensioni m x n supponiamo che m = 2a + 1 e n = 2b


+1, dove a e b siano interi positivi: i filri saranno quindi di dimensioni dispari e
il pi piccolo sar di 3x3. In generale, il filtraggio spaziale lineare di
un'immagine di dimensioni MxN, con la dimensione del filtro mxn, dato
dall'espressione
g(x, y) = s=-a a ts=-b b w(s, t) f(x+s, y+t)
dove x e y variano in maniera tale che ogni pixel in w visiti ogni pixel in f.
Correlazione spaziale e convoluzione
La correlazione il processo di muovere la maschera di un filtro su
un'immagine da sinistra a destra e di calcolare la somma dei prodotti in
ciascun luogo. La convoluzione identica alla correlazione ma prevede che il
filtro sia ruotato di 180.
[] pag. 168
7

Filtri spaziali di smoothing (sfocatura)

I filtri spaziali di smoothing vengono usati per sfocare e per ridurre il rumore
d'immagine. Altri usi sono nella pre-elaborazione di immagini, ad esempio per
eliminare dettagli fini quando si vuole estrarre oggetti di grandi dimensioni.
Filtri di smoothing lineari
L'output di un filtro di smoothing lineare spaziale la media dei pixel contenuti
nell'intorno della maschera di filtraggio. Questi filtri sono anche detti filtri di
media (averaging filters) e filtri passa-basso.
Rimpiazzando i pixel di un'immagine con un valore medio ottenuto da tutto ci
che circonda tale pixel si ottengono transizioni di intensit da un pixel all'altro
pi morbide e, quindi, si ottiene una sfocatura. Peraltro il rumore d'immagine
consiste spesso proprio in transizioni d'intensit molto nette e, quindi, i filtri di
smoothing (appiattimento, omogeneizzazione) riescono a ridurre il rumore
appiattendo le transizioni. L'effetto collaterale che anche i bordi, che
normalmente sono composti proprio da separazioni nette, vengono anch'essi
sfumati.
Si crea la maschera di dimensione n x n, in questo caso 3x3. In questo
esempio usiamo una maschera in cui ciascun pixel ha valore 1.
1

A questo punto si somma il peso dei pixel: in questo caso si ottiene il valore 9.
Si ottiene quindi la seguente equazione:

R = 1/9 i=1 9 zi
che non altro che la media dei pixel sotto la maschera. Per ottenere una
media pesata, in cui certi pixel (es. quello centrale) abbiano un peso maggiore
rispetto agli altri per ottenere un minore effetto di sfocatura, si possono
moltiplicare i singoli elementi della maschera per coefficienti decrescenti al

crescere della distanza dal centro. I vicini diagonali sono pi lontani dei vicini
ortogonali e, quindi, pesano di meno.
1

necessario ripetere l'operazione di somma dei coefficienti per ottenere il


divisore: in questo caso pari a 16. Avremo quindi

R = 1/16 i=1 9 zi
Il valore di R quindi il valore del pixel centrale.
Filtri non-lineari (con statistica d'ordine)
[pag 178]

Filtro Gaussiano
Il filtro gaussiano opera con una maschera di dimensione predefinita (es. 5x5)
e riporta su questa i valori che si trovano in una curva di distribuzione
gaussiana, con la classica forma a campana: il valore pi grande quello del
punto centrale, mentre gli altri degradano progressivamente con l'avvicinarsi ai
bordi della finestra.
La formula
1

f(x,y)=12exp(x+y2)
con che la varianza (ovvero il quadrato della deviazione standard) e x e y
che sono le coordinate dei punti dell'immagine.
Il vantaggio del filtro gaussiano sui filtri normali la sua maggiore
progressivit, che permette di ottenere sfocature pi tenui.
8

Filtri di sharpening (affilatura)

L'affilatura, al contrario della sfocatura, consiste nel rendere pi evidenti i


passaggi di intensit e di dare quindi maggiore rilievo ai bordi e, come effetto
collaterale, al rumore d'immagine.
I filtri di affilatura possono essere implementati sia tramite maschere
d'intensit che tramite filtri derivativi. I filtri che si basano su maschere
d'intensit sfruttano gli stessi principi dei filtri di sfocatura, ma pongono tutte
le celle della maschera esclusa quella centrale a valori nulli o negativi (es. -1,
-2) a seconda del peso che si vuole dar loro.
Le maschere la cui somma degli elementi maggiore di zero si limitano ad
affilare i bordi, mentre le maschere la cui somma degli elementi uguale a
zero eliminano lo sfondo lasciando intatti solo i bordi.
Filtraggio high-boost
Come dice il nome stesso, i filtri high-boost si occupano di aumentare le alte
luci e, in generale, di dare pi risalto ai colori chiari e di schiarire l'immagine.
I filtri di high-boost possono essere spiegati con la seguente formula:

HP = O LP
con HP che sta per High Pass, O che sta per Originale e LP che sta per Low
Pass. A questo punto possiamo dire che:
High-Boost = A * O LP
(A-1) * O + O LP
(A-1) O + HP
con A fattore di guadagno. Se A = 1 il filtro di high-boost equivale ad un filtro
di high-pass, mentre se A > 1 il filtro di high-boost equivale al filtro di
high-pass pi vO.
2

Filtri derivativi

Come i filtri di sfocatura sono basati sugli integrali, cos i filtri di affilatura sono
basati sulle derivate.
Derivate di funzioni digitali
Una derivata prima:
deve essere zero in un'area di intensit costante;
deve essere diversa da zero all'inizio di un cambiamento o gradino di
intensit (es. bordo);
deve essere diversa da zero in corrispondenza di cambiamenti (ramps) di
intensit.
Una derivata seconda, invece:
deve essere zero in aree di intensit costante;
deve essere diversa da zero all'inizio e alla fine di cambiamenti e
gradini di intensit;
deve essere zero in aree di diminuzione o aumento costante d'intensit.
Si possono usare queste caratteristiche delle derivate per avere i seguenti
effetti:
derivate prime: contorni pi spessi, risposta pi forte agli edge ripidi;
derivate seconde: risposta pi forte ai dettagli fini, risposta doppia agli
edge.
In buona sostanza, la derivata prima individua le zone di cambiamento,
mentre la derivata seconda individua i punti precisi in cui il cambiamento
avviene (e quindi pi sensibile ai dettagli). Per questo motivo la derivata
prima si utilizza per estrarre i contorni, ma la derivata seconda quella pi
indicata per lo sharpening perch individua i singoli punti di passaggio di
intensit.

Gradienti
Gli operatori seguenti si basano sul concetto di gradiente. Il gradiente pu
essere intuitivamente definito come un vettore che rappresenta l'andamento
dell'intensit della funzione, orientato verso la zona di intensit maggiore. La
sua magnitudo l'inclinazione del grafico.
La definizione formale di gradiente la seguente:
f=[fxfy]
La derivata prima come segue:
3

fx=f(x+1)f(x)
La derivata seconda pu essere ricavata dalla derivata prima:
fx=x(fx)=x(f(x+1)f(x))=x(f(x+1))x(f(x))f(x+2)f(x+1)(f(x+1)f(x))=f(
x+2)2f(x+1)+f(x)f(x+1)2f(x)+f(x1)
La formula pressoch identica per derivate a due componenti (x, y).
2fx2=f(x+1,y)2f(x,y)+f(x1,y)2fy2=f(x,y+1)2f(x,y)+f(x,y1)

z1 z2

z3

z4 z5

z6

z7 z8

z9

Le componenti del gradiente rispetto alla tabella qui sopra possono essere
calcolate come segue:
f=[(z8z5)2+(z6z5)2]|z8z5|+|z6z5|
Il filtro gradiente utilizza una maschera derivata dalle equazioni di cui sopra e
mette in evidenza le variazioni di intensit nella direzione specificata (es.
verticale, orizzontale). Questo permette di evidenziare bordi e testo (che
solitamente ha una differenza di intensit notevole rispetto a ci che lo
circonda).
Il kernel ha un asse di simmetria che divide coefficienti positivi e negativi;
questo asse che fornisce l'orientamento.
Operatori di Prewitt e Sobel
Gli operatori di Prewitt e Sobel sono tra i pi diffusi nelle operazioni di
rilevamento dei bordi e del testo per via della loro capacit di individuare
correttamente bordi e testo e di essere meno sensibili al rumore rispetto ad
altri operatori.
Prewitt
-1 -1 -1

-1 0

-1 0

-1 0

-1 -2 -1

-1 0

-2 0

Sobel

-1 0

Laplaciano
Il filtro laplaciano consiste nella discretizzazione della derivata seconda del
gradiente.
L(x,y)=2fx2+2fy2=f(x+1,y)+f(x1,y)+f(x,y+1)+f(x,y1)4f(x,y)
L'operazione isotropa ed quindi indipendente dalla direzione delle
discontinuit delle immagini.
Il laplaciano ha una maschera isotropa per rotazioni di 90 come quella qui
sotto:
0

-4 1

Si pu rendere il laplaciano isotropo rispetto anche alle rotazioni di 45


prendendo in considerazione anche le derivate seconde lungo le direzioni
diagonali.
1

-8 1

Dal momento che usa la derivata seconda, il laplaciano elimina completamente


l'immagine di sfondo. Per recuperare tale informazione si pu sommare il
risultato del laplaciano all'immagine originale, in maniera tale da ottenere una
via di mezzo che metta in risalto i dettagli ma non perda lo sfondo.
possibile ripristinare informazioni usando maschere derivate da questa
equazione:
f(x,y)={f(x,y)L(x,y)seilcoefficientecentrale<0f(x,y)+L(x,y)seilcoefficientecentrale>0}
Le maschere che si possono derivare sono:
0

-1 0

-1 5
0

-1

-1 0

-1 -1 -1
-1 9

-1

-1 -1 -1

Il laplaciano pu quindi essere utilizzato sia per estrarre i contorni che per
evidenziarli.

La tabella qui sopra aiuta a capire quale sia il comportamento del laplaciano:
sex=2(|a|+|b|+|c|+|d|) allora estrae i contorni;
sex2(|a|+|b|+|c|+|d|) allora evidenzia i contorni.
Se la somma dei coefficienti uguale a 0, le zone costanti saranno poste a 0.
Marr
Il modello di Marr cerca di replicare il funzionamento della visione umana
applicandolo all'elaborazione delle immagini. Per questo motivo cerca di
riprodurre un primo schizzo dell'immagine (chiamato, per l'appunto, primal
sketch) all'interno del quale individua gli elementi pi grossolani e che
risaltano subito: bordi e linee che definiscono gli elementi principali
dell'immagine. Dopo questo passaggio procede a ricostruire mano a mano
l'immagine con dettagli sempre maggiori, fino a ritornare all'immagine
originale che, per, stata scomposta e ricomposta in tutte le sue parti.
Per ottenere il primal sketch necessario eliminare il rumore d'immagine, che
pu falsare i risultati di rilevazione dei bordi, e i dettagli pi fini. Per fare ci si
utilizzano filtri di smoothing, in particolare il gaussiano. A questo punto
bisogna individuare i bordi e l'operatore pi adatto il laplaciano.
L'operatore di Marr si pu quindi definire come l'applicazione del laplaciano
sull'operatore gaussiano: per limitare l'influenza negativa che ha il rumore
d'immagine sulla rilevazione dei bordi, si applica un filtro di smoothing con
kernel gaussiano; successivamente si procede ad impiegare il laplaciano per
rilevare i bordi. Il laplaciano del gaussiano detto Laplacian of Gaussian in
inglese e per questo motivo chiamato LoG; se lo proiettiamo su un piano e lo
facciamo ruotare intorno a se stesso otteniamo come risultato un grafico che
ricorda un sombrero e, per questo, si chiama anche Mexican hat operator.
4

Algoritmo di Marr-Hildreth
Siano I l'immagine in ingresso e G(x, y) il filtro gaussiano che vi viene
applicato. Otteniamo quindi:
2(IG(x,y))
con IG(x,y) che indica il filtraggio con la gaussiana e
2=2x2+2y2
A questo punto possiamo ottenere in forma esplicita il laplaciano del
gaussiano:
I(2G(x,y))
Il risultato il seguente:
2G(x,y)=x2+y22226exp(x2+y222)

possibile emulare il funzionamento della funzione LoG usando maschere di


questo tipo:
0

-1 0

-1 -2 -1 0

-1 -2 16 -2 -1
0

-1 -2 -1 0

-1 0

Il valore positivo molto alto ed circondato da valori negativi che vanno via
via decrescendo fino a raggiungere lo zero.
La ricerca degli zero crossing, ovvero dei bordi, deve avvenire tenendo conto
delle diverse inclinazioni che possono avere i bordi e, pertanto, deve avvenire
seguendo questo schema:

Chiaramente la scelta del valore di influisce sul tipo di dettaglio evidenziato.


Per avere risultati pi affidabili si possono effettuare pi passate con valori di
differenti e combinare quindi i risultati ottenuti.
Per evitare il troncamento si devono utilizzare maschere con dimensioni WxW,
con W 3c dove c = 22 l'ampiezza della parte positiva del sombrero.
9

Filtri non lineari

I filtri non lineari sono filtri che effettuano operazioni sul pixel centrale
comparando e selezionando i pixel che ha intorno.
Tali filtri agiscono seguendo le seguenti fasi:

definiscono una finestra W;


centrano W nella posizione (x, y) e ordinano i valori presenti;
selezionano il nuovo valore di (x, y).
Tale selezione pu avvenire in maniere differenti e da questo dipende il tipo di
filtro.

Filtro mediano

Il filtro mediano seleziona come valore di (x, y) il valore di mezzo tra quelli
ordinati presenti in W.
Ad esempio:

26 15

14 68 35
23 89 8
Ordiniamo i valori in modo che siano crescenti: 5 8 14 15 23 26 35 68 89. Il
valore di mezzo 23. A questo punto si inserisce 23 al posto di 68.
La stessa tecnica si pu utilizzare in maniere differenti:
Min: si prende il valore minimo (es. 5). Questo fa s che si cancelli il
rumore, ma si cancellano anche i dettagli fini e si espandono le zone
scure dell'immagine.
Mediano: si prende il valore di mezzo. Elimina il rumore impulsivo.
Max: si prende il valore massimo (es. 89). Questo pu aumentare il
rumore, cancellare i dettagli fini e aumentare le zone chiare
dell'immagine.
Propriet del mediano:
elimina il rumore impulsivo senza sfocare l'immagine;
lascia inalterate le rampe;
lascia le transizioni rapide inalterate;
distrugge le linee sottili;
dipende fortemente dalla dimensione della finestra per la rimozione del
rumore o la cancellazione dell'informazione.
Si pu pensare anche al filtro media: al posto di prendere il valore in mezzo, si
effettua una media aritmetica con i valori vicini. Il problema di questo
approccio che si modificano anche i pixel non rumorosi e si ottiene una netta
sfocatura.