9.2. Matrice di convoluzione

9.2.1. Panoramica

Qui è il dominio del matematico. La maggioranza dei filtri utilizzano matrici di convoluzione. Con il filtro Matrice di convoluzione, se si vuole, si può costruire un filtro personalizzato.

Cos'è una matrice di convoluzione? È possibile avere un'idea di cosa sia senza usare strumenti matematici che pochi conoscono. La convoluzione è il processamento di una matrice attraverso un'altra che viene chiamata «kernel».

Il filtro Matrice di convoluzione utilizza come prima matrice l'immagine da processare. L'immagine è un insieme bidimensionale di pixel in coordinate rettangolari. Il kernel usato dipende dall'effetto che si vuole ottenere.

GIMP utilizza matrici 5x5 o 3x3. Considereremo solo matrici 3x3 che sono le più utilizzate e sono sufficienti per la maggior parte di effetti. Se tutti i valori di bordo di un kernel sono impostati a zero allora il sistema lo considererà come una matrice 3x3.

Il filtro esamina in sequenza ogni pixel dell'immagine. Per ciascuno di essi, che denomineremo "pixel iniziale", si moltiplica il valore di quest'ultimo e i valori degli 8 pixel confinanti per i valori corrispondenti nel kernel. I risultati vengono poi sommati e il pixel iniziale viene impostato a questo risultato finale.

Un semplice esempio:

Alla sinistra la matrice dell'immagine: ogni pixel è marcato con il suo valore. Il pixel iniziale ha un bordo rosso. L'area di azione del kernel è quella con il bordo verde. AL centro il kernel e a destra il risultato della convoluzione.

Ecco cosa accade: il filtro legge successivamente da sinistra a destra e dall'alto verso il basso tutti i pixel dell'area di azione del kernel. Moltiplica il valore di ciascuno per i corrispondenti valori del kernel poi somma i risultati. Il pixel iniziale assume valore 42: (40*0)+(42*1)+(46*0) + (46*0)+(50*0)+(55*0) + (52*0)+(56*0)+(58*0) = 42 (il filtro non lavora sull'immagine ma su una sua copia). Il risultato grafico è che il pixel si sposta di una posizione in basso.

9.2.2. Attivazione del filtro

Questo filtro si trova nel menu principale sotto FiltriGenericiMatrice di convoluzione....

9.2.3. Opzioni

Figura 17.172. Opzioni della «matrice di convoluzione»

Opzioni della «matrice di convoluzione»

Preimpostazioni, «Tipo di ingresso», Ritaglio, Opzioni di fusione, Anteprima, Filtro fusione, Dividi vista
[Nota] Nota

Queste opzioni sono descritte in Sezione 2, «Caratteristiche comuni».

Matrice

Questa è la matrice 5x5 del kernel: i valori si immettono direttamente nei riquadri.

Divisore

Il risultato del calcolo precedente verrà diviso per questo valore. Di solito si usa 1, che lascia invariato il risultato, e 9 o 25, a seconda della dimensione della matrice, che restituisce la media dei valori del pixel. Il divisore può essere cambiato solo quando Normalizza non è spuntato.

Compensazione

Questo valore viene aggiunto al risultato della divisione. Ciò è utile se il risultato può diventare negativo. Il valore di offset può esso stesso essere negativo. Può essere cambiato solo quando Normalizza non è spuntato.

Canali

Si possono selezionare i canali che il filtro dovrebbe cambiare.

Normalizza

Se questa opzione è selezionata il Divisore prende il risultato della convoluzione. Se questo risultato è uguale a zero (non è possibile dividere per zero) allora viene applicato un offset di 128. Se è negativo (un colore negativo non è possibile) allora viene applicato un offset di 255 (inverte il risultato).

Ponderazione-alfa

Se questa opzione non è selezionata il filtro non tiene conto della trasparenza e ciò può causare degli artefatti durante la sfocatura.

Bordo

Quando il pixel iniziale è su un bordo, una parte del kernel è al di fuori dell'immagine. Occorre decidere come il filtro si debba comportare:

Figura 17.173. Esempi di bordi

Esempi di bordi

Immagine sorgente

Esempi di bordi

Bordo nessuno

Esempi di bordi

Bordo Morsa

Esempi di bordi

Bordo ciclo


Niente

Questa parte del kernel non viene presa in considerazione.

Morsa

I pixel sul bordo non sono modificati ma vengono ritagliati.

Ciclo

Questa parte del kernel verrà interessata da pixel del bordo opposto, ottenendo che i pixel che scompaiono da un lato ricompaiono dall'altro.

Nero

I pixel sul bordo vengono cambiati in nero.

Bianco

I pixel sul bordo vengono cambiati in bianco.

9.2.4. Esempi

La progettazione dei kernel si basa su matematica di alto livello. Si possono trovare kernel preconfezionati sul web. Di seguito alcuni esempi:

Figura 17.174. Contrasta

Contrasta
Contrasta

Figura 17.175. Sfoca

Sfoca
Sfoca

Figura 17.176. Evidenzia bordi

Evidenzia bordi
Evidenzia bordi

Figura 17.177. Rileva bordi

Rileva bordi
Rileva bordi

Figura 17.178. Bassorilievo

Bassorilievo
Bassorilievo