- In matematica, la convoluzione è un’operazione eseguita su due funzioni (f e g) per produrre una terza funzione. La convoluzione è una delle operazioni più importanti nell’elaborazione di segnali e immagini. Può operare in 1D (ad esempio l’elaborazione del discorso), 2D (ad esempio l’elaborazione delle immagini) o 3D (elaborazione video).
- Nell’elaborazione delle immagini, la convoluzione è il processo di trasformazione di un’immagine applicando un kernel su ogni pixel e i suoi vicini locali nell’intera immagine. Il kernel è una matrice di valori le cui dimensioni e valori determinano l’effetto di trasformazione del processo di convoluzione.
- Il processo di convoluzione comporta questi passi. (1)Pone la matrice del kernel su ogni pixel dell’immagine (assicurandosi che l’intero kernel sia all’interno dell’immagine), moltiplica ogni valore del kernel con il pixel corrispondente su cui si trova. (2) Poi, somma i valori moltiplicati risultanti e restituisce il valore risultante come nuovo valore del pixel centrale. (3) Questo processo viene ripetuto su tutta l’immagine.
- Come si vede nell’immagine, un kernel 3×3 viene convoluto su un’immagine sorgente 7×7. L’elemento centrale del kernel è posto sopra il pixel sorgente. Il pixel sorgente viene poi sostituito con una somma pesata di se stesso e dei pixel circostanti. L’output è posto nel valore del pixel di destinazione. In questo esempio, nella prima posizione, abbiamo 0 nel pixel sorgente e 4 nel kernel. 4×0 è 0, poi passando al pixel successivo abbiamo 0 e 0 in entrambi i posti. 0x0 è 0. Poi di nuovo 0x0 è 0. Poi al centro c’è 1 nell’immagine sorgente e 0 nella posizione corrispondente del kernel. 0x1 è 0. Poi di nuovo 0x1 è 0. Poi 0x0 è 0 e 0x1 è 0 e nell’ultima posizione è -4×2 che è -8. Ora sommando tutti questi risultati otteniamo -8 come risposta quindi l’output di questa operazione di convoluzione è -8. Questo risultato è aggiornato nell’immagine di destinazione.
- L’output del processo di convoluzione cambia con il cambiamento dei valori del kernel. Per esempio, un kernel Identity mostrato sotto, quando applicato ad un’immagine attraverso la convoluzione, non avrà alcun effetto sull’immagine risultante. Ogni pixel manterrà il suo valore originale come mostrato nella figura seguente.
Un kernel Sharpen come questo, quando applicato ad un’immagine tramite convoluzione, avrà un effetto di nitidezza sull’immagine risultante. I valori precisi possono essere personalizzati per vari livelli di nitidezza come mostrato nella figura seguente.