Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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
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.
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.
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:
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.
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:
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