Il filtraggio spaziale consiste nell'applicare un'operazione su ogni singolo pixel prendendo come riferimento un intorno di quel pixel per calcolare il valore di intensità finale.
Il filtraggio crea quindi un nuovo pixel con le stesse coordinate del centro dell'intorno, e il valore di intensità del pixel invece viene determinato sulla base di un operazione applicata sui valori dei pixel nell'intorno.
Il fitraggio spaziale di un immagine MxN
con un filtro mxn
è dato da:
m = 2a+1
n = 2b+1
Come è possibile intuire dalla formula, non si tratta di convoluzione ma di correlazione.
Calcolare la correlazione equivale a calcolare la convoluzione su una
funzione maschera w(s,t)
ruotata di 180°
.
Valgono le seguenti relazioni:
L'utilizzo della correlazione o convoluzione per il filtraggio spaziale è
indifferente a patto di ruotare la maschera di 180°
.
Il concetto che sta dietro a queste operazioni è di sommare i prodotti tra i valori dei pixel vicini e il valore della maschera per quei pixel (e quindi possiamo vederla anche come una somma di coefficienti per i valori dei pixel vicini). Naturalmente si considera pure il valore del pixel stesso.
Questo filtro assegna il valore del pixel centrale sulla base di una media pesata dei valori del pixel centrale e dei vicini.
Simile alla media ponderata ma con pesi uguali.
Un esempio di filtro non lineare è il filtro mediano che sostituisce il pixel centrale con il valore mediano delle intensità della regione intorno al pixel.
Il filtro mediano è molto comodo per l'eliminazione dei rumori.
Altri filtri utilizzati sono il max e il min.
Lo smoothing è ottenibile tramite filtri lineari come le medie o con filtri non lineari come i mediani.
Lo sharpening nel dominio spaziale avviene tramite metodi che utilizzano derivate del primo e secondo ordine, in modo da amplificare i punti dove si hanno le massime variazioni di intensità.
Un tipico processo utilizzato dall'industria grafica e pubblicitaria per applicare lo sharpening è l'unsharp masking.
Sfochiamo l'immagine originale (smoothing) e creiamo una maschera a partire dalla differenza tra l'immagine originale e la sfocata.
A questo punto avremo una maschera del tipo:
Il filtro si applica infine in questo modo:
- per
k = 1
abbiamo un unsharp masking - per
k > 1
abbiamo un effetto high-boost, ovvero un'amplificazione delle altre frequenze (e quindi delle alte differenze di intensità) - per
k < 1
il contributo di sharpening si riduce