Sei sulla pagina 1di 12

ELABORAZIONE DELL’IMMAGINE DIGITALE

L’utilizzo di un sistema di visione comporta la necessità di elaborare le immagini acquisite in modo


da eliminarne gli effetti indesiderati come il rumore, lo scarso contrasto e la scarsa definizione dei
dettagli, per poter effettuare misure e controlli con un notevole grado di precisione.
Le elaborazioni possono essere classificate in tre tipi: puntuali, locali e globali. Nelle puntuali il
valore di uscita di ciascun pixel dipende solo dal valore di ingresso di quel pixel, nelle locali
dipende dai valori di ingresso di un (piccolo) intorno di esso, nelle globali il valore di uscita di
ciascun pixel dipende da tutta l’immagine di ingresso.
Nel nostro caso vengono prese in esame solo le elaborazioni locali. Queste fanno uso delle
cosiddette maschere spaziali, dette anche maschere di convoluzione o filtri spaziali. Il filtraggio è
considerato un’operazione di elaborazione delle immagini, con lo scopo di metterne in evidenza o
di attenuarne alcune caratteristiche.
L’elaborazione delle immagini avviene mediante l’utilizzo di maschere di convoluzione, ovvero
matrici quadrate o rettangolari da far convoluire con l’immagine stessa.
Possiamo avere filtraggi lineari, dove ad ogni pixel è associato un valore che è la combinazione
lineare dei valori pesati dei pixel che lo circondano, e filtraggi non lineari, dove il valore di ogni
pixel dipende dai valori dei pixel adiacenti ma non secondo una combinazione lineare.

Convoluzioni di Kernel
Una convoluzione di Kernel è un filtro 2D che è possibile applicare ad un’immagine in scala di
grigi ed i cui coefficienti ne definiscono le caratteristiche.
Il sistema disponibile al laboratorio offre la possibilità di utilizzare maschere di Kernel standard
oppure di crearle ad hoc in base alle necessità.
Il valore filtrato di un pixel è rappresentato da una combinazione ponderata del suo valore originale
e dei valori dei pixel ad esso vicini.
La dimensione della maschera di Kernel determina il numero di pixel che contribuiscono al valore
del pixel in esame ed i coefficienti definiscono il contributo di ciascun pixel.
Come si può osservare dalla precedente figura, nella prima contribuiscono al valore finale del pixel
nero 8 pixel adiacenti, mentre nel secondo caso ben 24.
Nell’applicazione di questi filtri bisogna prendere in considerazione il problema del filtraggio dei
pixel che si trovano vicino ai bordi dell’immagine. Infatti può capitare che nell’elaborare
l’immagine parte della maschera cada fuori dall’immagine stessa, come nella seguente figura:

Il software disponibile in laboratorio crea automaticamente una regione di confine profonda 3 pixel
e con valori pari a zero, in modo da avere comunque pixel per poter elaborare l’immagine. Fornisce,
inoltre, anche la possibilità di definire manualmente tale regione. Bisogna tenere presente che i
valori dei pixel sul bordo dell’immagine saranno comunque errati.

Filtraggio spaziale
Come detto i filtri possono essere di due tipi: lineari (detti anche di convoluzione) e non lineari.
Una convoluzione è un algoritmo che consiste nel ricalcolare il valore di un pixel tramite
combinazione lineare del valore del pixel di origine e dei valori dei pixel ad esso vicini, pesati
tramite opportuni coefficienti. Il valore ottenuta è poi diviso per il valore dato dalla somma dei
coefficienti dei singoli pixel coinvolti nell’elaborazione.
Non esistono limiti sulla dimensione della maschera di convoluzione di Kernel, che può essere
quadrata o rettangolare.
I filtri spaziali servono per una varietà di scopi, come la determinazione dei bordi dell’immagine, la
riduzione del rumore, la messa in evidenza dei dettagli o la riduzione del contrasto o sfocamento
dell’immagine.
Il filtraggio spaziale, in altre parole, altera i valori dei pixel in base alle variazioni dell’intensità
luminosa nelle regioni ad essi adiacenti.
I filtri spaziali possono essere ulteriormente suddivisi in due categorie:
 Filtri Highpass, enfatizzano le variazioni di intensità luminosa. Sono utilizzati per la
determinazione dei bordi dell’oggetto
 Filtri Lowpass, attenuano le variazioni di intensità luminosa, riducono il contrasto sfocando
i bordi ed eliminando i dettagli

La seguente tabella contiene le diverse tipologie di filtri spaziali:


TIPO DI FILTRO FILTRI
Lineare
Highpass Gradiente, Laplaciano
Lowpass Smoothing, Gaussiano
Non lineare
Highpass Gradiente, Roberts, Sobel, Prewitt, Differenziazione, Sigma
Lowpass Mediano, Nth Order, Lowpass

Filtri Lowpass
Questi filtri, come detto, sono usati per la sfocatura dell’immagine attraverso una riduzione del
contrasto (operazione detta blurring) e per la riduzione del rumore (operazione detta noise
clearing).
Tramite la riduzione del contrasto vengono eliminati piccoli dettagli inutili al fine dell’elaborazione
dell’immagine e vengono compensate alcune piccole imperfezioni come le interruzioni che si
verificano sui bordi.
I principali filtri Lowpass sono:
 Filtro media
 Filtro mediano
 Filtro gaussiano

Filtro media
Questa tipologia di filtri sostituisce ad ogni pixel la media dei valori dei pixel dell’intorno
considerato.
L’effetto di Smoothing, cioè di evidenziazione degli elementi significati ed attenuazione del rumore,
dipende dai valori dei pixel del contorno e tanto più quest’ultimo è esteso tanto più marcato è
l’effetto prodotto.
Una condizione da rispettare nell’impiego di tali filtri è che la somma dei pesi della maschera sia
sempre uguale ad 1, in modo che l’uscita del filtraggio su di una regione a valore costante non vari
l’immagine.

Esempi di filtro media sono i seguenti:


Si noti come è presente il fattore di divisione che è sempre pari alla sommatoria dei pesi, in modo
da rispettare la condizione prima enunciata. Inoltre l’effetto di pulitura dal rumore è decrescente da
sinistra a destra (basta osservare il contributo percentuale del punto centrale).
Questo tipo di elaborazione ha il difetto di provocare uno sfocamento dell’immagine, facendo
perdere di definizione i contorni.

Filtro mediano
È un filtro non lineare attraverso il quale si sostituisce il valore del pixel il valore mediano
dell’intorno considerato (tipicamente 3x3). Da tener presente che il mediano di un insieme di valori
è tale che una metà dei valori sia minore di esso e l’altra metà sia maggiore.
L’effetto che si ha è quello di forzare i pixel ad assumere un valore uguale a quello di uno dei pixel
del contorno.
Questo tipo di filtraggio è molto efficace per un rumore di tipo impulsivo, non offusca i contorni e
non introduce livelli di grigio che non sono presenti nell’immagine originale.
Un esempio di filtro mediano è il seguente:

Filtro Gaussiano
Un filtro gaussiano è un filtro lineare che attenua le variazioni di intensità luminosa in prossimità di
un pixel.
È simile ad un filtro media ma l’effetto di sfocatura dell’immagine è più contenuto.
In questo caso si sostituisce ad ogni pixel la media pesata dei valori dei pixel del contorno
considerato.
La maschera ha la seguente struttura:
a d c
b x b
c d a
Con a, b, c, d interi e positivi e x>1.
I coefficienti di questa maschera rappresentano la migliore approssimazione possibile di una curva
gaussiana, con numeri interi.
Poiché i coefficienti sono tutti positivi, dopo l’elaborazione ogni pixel assume il valore della media
pesata dei suoi vicini, con il pixel con più peso che ha la maggiore influenza sul nuovo valore del
pixel centrale. Inoltre, dato che il coefficiente centrale di un filtro gaussiano è maggiore di 1, il
valore originale di un pixel viene moltiplicato per un peso superiore a quello dei pixel ad esso
vicini. Di conseguenza un maggior valore del coefficiente centrale corrisponde ad un più delicato
effetto di smoothing, mentre una dimensione più grande della maschera corrisponde ad un effetto di
smoothing maggiore.
Un esempio è il seguente:

Filtri highpass
Sono filtri, come detto, utilizzati per aumentare il contrasto locale dell’immagine e per mettere in
evidenza i contorni degli oggetti, pertanto le differenze tra pixel vicini sono aumentate. Sono filtri
passa-alto che mettono in evidenza il contenuto delle componenti ad alta frequenza spaziale
nell’immagine.
Questi filtri sono detti di sharpening e generalmente il loro utilizzo provoca un aumento del rumore
nell’immagine, quindi è opportuno limitare tale problema utilizzando anche un filtro di smoothing.
Loro caratteristica è che il coefficiente centrale della maschera utilizzata ha segno opposto rispetto a
quello dei pesi vicini.
Le maschere più adatte ad evidenziare i contorni sono quelle con somma dei pesi pari a zero, che
produce un’uscita nulla dove non sono presenti differenze di livello di grigio.
L’effetto prodotto dai filtri passa-alto è di tipo derivativo, cioè un’immagine filtrata passa-alto può
essere pensata come differenza tra l’immagine originale e una versione passa-basso dell’immagine
stessa. È per questo motivo che lo sviluppo delle tecniche di sharpening si è basato su operazioni di
derivazione, in particolare attraverso l’uso di operatori di derivata prima o seconda. I primi
producono bordi più spessi, mentre i secondi accentuano di più i dettagli fini, compreso il rumore.
Possiamo definire la derivata prima di una funzione discreta f(x) come:
Mentre la definizione di derivata seconda di una funzione discreta come:

La prima grande distinzione dei filtri di sharpening è tra quelli basati sul gradiente, operatore di
derivata prima, e quelli basati sul laplaciano, operatore di derivata seconda.

Filtri basati sul laplaciano


Il modo più semplice per effettuare l’operazione di derivata seconda di una f(x,y) in un punto è
quello di calcolare il laplaciano in quel punto, definito come segue:
∂2 f ∂2 f
L( x, y ) = ∇2 f = +
∂x 2 ∂y 2

Il laplaciano è un operatore isotropo, quindi la sua risposta è indipendente dalla direzione delle
discontinuità presenti nell’immagine.
Il modo più semplice di definire il laplaciano nel caso discreto consiste nel calcolare le derivate
seconde rispetto alle due direzioni e sommare i risultati.
Si ottiene la seguente espressione:

Il filtro Laplaciano ha due effetti diversi, a seconda che il coefficiente centrale è uguale o superiore
alla somma dei valori assoluti dei coefficienti esterni:
 Se il coefficiente centrale è pari alla somma dei valori assoluti degli altri coefficienti, il filtro
di Laplace estrae i pixel dove ci sono significative variazioni di intensità luminosa. Si perde
completamente l’informazione dello sfondo, ottenendo un’immagine con contorni bianchi
su sfondo nero, come nell’esempio seguente:

 Se il coefficiente centrale è maggiore della somma dei valori assoluti degli altri coefficienti,
il filtro laplaciano rileva le stesse variazioni viste prima ma ci sovrappone l’immagine di
origine, ottenendo un’immagine come quella di partenza ma con tutte le variazioni di
intensità luminosa messe in evidenza, come nel seguente caso:

Si noti che il laplaciano #4 può essere scomposto come segue:

La maschera a destra altro non fa che riprodurre l’immagine originale, infatti il termine centrale
resterebbe uguale a se stesso perché moltiplicato per 1, mentre gli altri verrebbero moltiplicati per
zero. Si somma ai bordi estratti dell’immagine l’immagine stessa.

Filtri basati sul gradiente


Un filtro basato sul gradiente, a differenza del laplaciano, non ha componenti isotrope ed evidenzia
le variazioni di intensità luminosa lungo una direzione specifica, mettendo in risalto i bordi e la
struttura dell’immagine.
Il modello di Kernel utilizzato è il seguente:

con a,b,c,d interi e x=0 oppure x=1.


Si nota che questo Kernel ha un asse di simmetria che tra i coefficienti positivi e quelli negativi
passando per l’elemento centrale e questo asse dà l’orientamento dei bordi da mettere in evidenza.
Quindi per una data direzione sarà possibile progettare un filtro basato sul gradiente in grado di
evidenziare o scurire i bordi lungo una specifica direzione. Assegnata la direzione che va dai
coefficienti negativi verso quelli positivi, il filtro evidenzia i pixel dove l’intensità luminosa
aumenta lungo la direzione, mentre scurisce i pixel dove l’intensità della luce decresce.
I filtri basati sul gradiente sono di due differenti tipi, a seconda se il coefficiente centrale è zero
oppure pari ad uno:
 Se pari a zero, il filtro mette in evidenza i pixel dove ci sono variazioni dell’intensità della
luce lungo la direzione specificata dai coefficienti ed il risultato è un’immagine con bordi
bianchi su sfondo nero
 Se pari ad uno, il filtro produce lo stesso effetto di prima ed in più sovrappone al risultato
ottenuto precedentemente l’immagine originale, la quale dunque risulterà con i dettagli
messi in evidenza

I principali filtri basati sul gradiente sono i filtri di Prewitt, di Sobel e di Roberts.

Filtri di Roberts
L’operatore di Roberts è il più semplice edge detector che sia possibile realizzare: si basa sull’idea
di derivata lungo direzioni ortogonali e consiste nell’applicazione di due maschere di convoluzione
2x2. Gli operatori di Roberts sono definiti nel modo seguente:

Solitamente nelle applicazioni vengono utilizzate maschere 3x3, poiché la piccolezza di queste
maschere si traduce in un’alta sensibilità al rumore.
Il pixel preso in esame assume il massimo valore assoluto tra la differenza con il suo vicino in alto a
sinistra e la differenza tra gli altri 2 pixel vicini, come segue:

Filtri di Prewitt
Insieme a quelli di Sobel sono i filtri più diffusi.
Gli operatori di Prewitt sono filtri passa-alto non lineari che estraggono i contorni esterni
dell’immagine, rilevando significative variazioni dell’intensità luminosa lungo gli assi orizzontali e
verticali, utilizzando maschere del seguente tipo:

Realizzano una differenziazione lungo una direzione e contemporaneamente una media spaziale
lungo la direzione ortogonale.
A ciascun pixel è assegnato il massimo valore del gradiente orizzontale e verticale:

Per i filtri di Prewitt si possono avere le seguenti maschere 3x3, dove le notazioni Ovest(W), Sud
(S), Est(E) e Nord (N) indicano i bordi che variano, mentre se l’elemento centrale è pari ad uno vuol
dire che ci sovrappone anche l’immagine originale:

Filtri di Sobel
Come gli operatori di Prewitt, i filtri di Sobel sono tra i più diffusi per la loro capacità di effettuare
simultaneamente la differenziazione lungo una direzione e una media spaziale lungo la direzione
ortogonale. Come i precedenti, questi filtri sono utilizzati per evidenziare i bordi dell’immagine
rilevando significative variazioni dell’intensità luminosa lungo determinati assi, con la differenza
che i filtri di Sobel assegnano un peso maggiore ai pixel vicini a quello centrale.
Le maschere sono del seguente tipo:
A ciascun pixel è assegnato il massimo valore del gradiente orizzontale e verticale

Per i filtri di Sobel si possono avere le seguenti maschere 3x3, dove, come per quelli di Prewitt le
notazioni Ovest(W), Sud (S), Est(E) e Nord (N) indicano i bordi che variano, mentre se l’elemento
centrale è pari ad uno vuol dire che ci sovrappone anche l’immagine originale:

Per i filtri che si basano sul gradiente, come quelli di Prewitt e Sobel, possiamo avere maschere più
grandi 5x5 oppure 7x7 il cui funzionamento è del tutto simile a quello appena descritto.
Filtri Differenziali
Sono filtri passa-alto di tipo non lineare. Essi producono contorni continui dell’immagine
evidenziando ogni pixel dove si riscontra una variazione di intensità luminosa tra il pixel stesso ed i
suoi tra vicini in alto a sinistra.
Il valore assunto dal pixel dopo l’elaborazione è il valore assoluto della massima differenza tre esso
ed i suoi vicini in alto a sinistra:

Filtri Sigma
Sono filtri passa-alto non lineari. Essi evidenziano i contorni ed i dettagli settando i pixel al valore
medio dell’intorno considerato, se la loro deviazione da questo valore non è significativa.
Opera secondo il seguente criterio:

Filtri di ordine n-esimo


E’ un’estensione del filtro mediano. È un filtro non lineare che assegna ad ogni pixel il valore
n-esimo del suo contorno (quando ordinato in ordine crescente). Il valore N specifica l’ordine del
filtro, che si può usare per moderare l’effetto del filtro sull’intensità totale dell’immagine. Un ordine
più basso corrisponde a una immagine più scura ; un ordine più alto corrisponde ad una immagine
più brillante.
Supponiamo di avere la seguente situazione:

Si ordinano i valori dei pixel in maniera crescente ed in base all’ordine del filtro avrò il nuovo
valore che assumerà il pixel. La tabella seguente mostra cosa accade nell’esempio precedente in
base all’ordine del filtro:
Per un filtro di taglia f, l’ordine n-esimo può andare da 0 a f2-1. Si possono avere le seguenti
situazioni:
 Se N <(f2-1)/2, il filtro ha la tendenza a dilatare le regioni scure
 Se N=0, ogni pixel è sostituito con il minimo valore locale
 Se N=(f2-1)/2, ogni pixel è sostituito dal suo valore mediano locale. Verranno in pache
parole eliminati i pixel più scuri ed i pixel più chiari.
 Se N >(f2-1)/2, il filtro ha la tendenza a dilatare le regioni chiare
 Se N=(f2-1), ogni pixel è sostituito con il massimo valore locale