Immagini ed elaborazione delle immagini

Completato

Annotazioni

Per altri dettagli, vedi la scheda Testo e immagini .

Per un computer, un'immagine è una matrice di valori di pixel numerici. Si consideri ad esempio la matrice seguente:

 0   0   0   0   0   0   0  
 0   0   0   0   0   0   0
 0   0  255 255 255  0   0
 0   0  255 255 255  0   0
 0   0  255 255 255  0   0
 0   0   0   0   0   0   0
 0   0   0   0   0   0   0

La matrice è costituita da sette righe e sette colonne, che rappresentano i valori pixel per un'immagine di 7x7 pixel (nota come risoluzione dell'immagine). Ogni pixel ha un valore compreso tra 0 (nero) e 255 (bianco); con valori compresi tra questi limiti che rappresentano le sfumature di grigio. L'immagine rappresentata da questa matrice è simile all'immagine di ingrandimento seguente:

Diagramma di un'immagine a scala di grigi.

La matrice di valori di pixel per questa immagine è bidimensionale (che rappresenta righe e colonne o coordinate x e y ) e definisce un singolo rettangolo di valori pixel. Un singolo livello di valori di pixel come questo rappresenta un'immagine in scala di grigi. In realtà, la maggior parte delle immagini digitali sono multidimensionali e sono costituite da tre livelli (noti come canali) che rappresentano tonalità di colore rosso, verde e blu (RGB). Ad esempio, è possibile rappresentare un'immagine a colori definendo tre canali di valori pixel che creano la stessa forma quadrata dell'esempio precedente di gradazioni di grigio:

Red:
 150  150  150  150  150  150  150  
 150  150  150  150  150  150  150
 150  150  255  255  255  150  150
 150  150  255  255  255  150  150
 150  150  255  255  255  150  150
 150  150  150  150  150  150  150
 150  150  150  150  150  150  150

Green:
 0    0    0    0    0    0    0          
 0    0    0    0    0    0    0
 0    0   255  255  255   0    0
 0    0   255  255  255   0    0
 0    0   255  255  255   0    0
 0    0    0    0    0    0    0
 0    0    0    0    0    0    0

Blue:
 255  255  255  255  255  255  255  
 255  255  255  255  255  255  255
 255  255   0    0    0   255  255
 255  255   0    0    0   255  255
 255  255   0    0    0   255  255
 255  255  255  255  255  255  255
 255  255  255  255  255  255  255

Ecco l'immagine risultante:

Diagramma di un'immagine a colori.

I quadrati viola sono rappresentati dalla combinazione:

Red: 150 
Green: 0 
Blue: 255 

I quadrati gialli al centro sono rappresentati dalla combinazione:

Red: 255
Green: 255
Blue: 0

Filtri

Un modo comune per eseguire attività di elaborazione delle immagini consiste nell'applicare filtri che modificano i valori pixel dell'immagine per creare un effetto visivo. Un filtro viene definito da una o più matrici di valori dei pixel, chiamati kernel di filtro . Ad esempio, è possibile definire il filtro con un kernel 3x3, come illustrato in questo esempio:

-1 -1 -1
-1  8 -1
-1 -1 -1

Il kernel viene quindi convoluto attraverso l’immagine, calcolando una somma ponderata per ogni patch di 3x3 pixel e assegnando il risultato a una nuova immagine. È più facile comprendere il funzionamento del filtro esplorando un esempio dettagliato.

Si inizierà con l'immagine in scala di grigi esaminata in precedenza:

 0   0   0   0   0   0   0  
 0   0   0   0   0   0   0
 0   0  255 255 255  0   0
 0   0  255 255 255  0   0
 0   0  255 255 255  0   0
 0   0   0   0   0   0   0
 0   0   0   0   0   0   0

Prima di tutto, applichiamo il kernel del filtro alla patch superiore sinistra dell'immagine, moltiplicando ogni valore pixel per il valore di peso corrispondente nel kernel e aggiungendo i risultati:

(0 x -1) + (0 x -1) + (0 x -1) +
(0 x -1) + (0 x 8) + (0 x -1) +
(0 x -1) + (0 x -1) + (255 x -1) = -255

Il risultato (-255) diventa il primo valore in una nuova matrice. Si sposta quindi il kernel del filtro lungo un pixel a destra e si ripete l'operazione:

(0 x -1) + (0 x -1) + (0 x -1) +
(0 x -1) + (0 x 8) + (0 x -1) +
(0 x -1) + (255 x -1) + (255 x -1) = -510

Anche in questo caso, il risultato viene aggiunto alla nuova matrice, che ora contiene due valori:

-255  -510

Il processo viene ripetuto fino a quando il filtro non viene convoluto nell'intera immagine, come illustrato in questa animazione:

Diagramma di un filtro.

Il filtro viene convoluto nell'immagine, calcolando una nuova matrice di valori. Alcuni valori potrebbero non rientrare nell'intervallo di valori da 0 a 255 pixel, quindi i valori vengono modificati in base a tale intervallo. A causa della forma del filtro, il bordo esterno dei pixel non viene calcolato, quindi viene applicato un valore di riempimento (in genere 0). La matrice risultante rappresenta una nuova immagine in cui il filtro ha trasformato l'immagine originale. In questo caso, il filtro ha avuto l'effetto di evidenziare i bordi di forme nell'immagine.

Per visualizzare più chiaramente l'effetto del filtro, ecco un esempio dello stesso filtro applicato a un'immagine reale:

Immagine originale Immagine filtrata
Foto di un cane. Fotografia di un cane con un filtro Laplace applicato.

Poiché il filtro viene convoluto nell'immagine, questo tipo di manipolazione delle immagini viene spesso definito filtro convoluzionale. Il filtro usato in questo esempio è un particolare tipo di filtro (denominato filtro Laplace ) che evidenzia i bordi degli oggetti in un'immagine. Ci sono molti altri tipi di filtro che è possibile usare per creare sfocatura, nitidezza, inversione del colore e altri effetti.