Convoluzione

Che cos’è la convoluzione?

La convoluzione è un’operazione matematica che combina due funzioni per descrivere la sovrapposizione tra loro. La convoluzione prende due funzioni e le fa “scorrere” l’una sull’altra, moltiplicando i valori della funzione in ogni punto di sovrapposizione e aggiungendo i prodotti per creare una nuova funzione. Questo processo crea una nuova funzione che rappresenta il modo in cui le due funzioni originali interagiscono tra loro.

Formalmente, la convoluzione è un integrale che esprime la quantità di sovrapposizione di una funzione, \(f(t)\), mentre viene spostata sulla funzione \(g(t)\), ed è espressa in questo modo:

$$(f*g)(t) \approx^{def} \int_{-\infty}^{\infty}f(\tau)g(t-\tau)d\tau$$

Rappresentazione grafica della convoluzione.

A seconda dell’ambito di applicazione della convoluzione, le funzioni possono essere sostituite da segnali, immagini o altri tipi di dati. La convoluzione e le sue applicazioni possono essere implementate in diversi modi in MATLAB®.

La convoluzione nell’elaborazione di segnali

La convoluzione è utilizzata nell’elaborazione di segnali digitali per studiare e progettare sistemi lineari non variabili nel tempo (LTI) come i filtri digitali.

Il segnale di output, \(y[n]\), nei sistemi LTI è la convoluzione del segnale di input \(x[n]\) e la risposta all’impulso \(h[n]\) del sistema.

Rappresentazione attraverso un diagramma a blocchi della convoluzione per sistemi lineari non variabili nel tempo. X(n) è convoluto con h(n) per produrre Y(n).

Convoluzione per sistemi lineari non variabili nel tempo.

In pratica, il teorema di convoluzione è utilizzato per progettare filtri nel dominio della frequenza. Il teorema di convoluzione afferma che la convoluzione nel dominio del tempo è uguale alla moltiplicazione nel dominio della frequenza.

Il dominio della frequenza può anche essere utilizzato per migliorare il tempo di esecuzione delle convoluzioni. Con l’algoritmo FFT, i segnali possono essere trasformati nel dominio della frequenza, moltiplicati e ritrasformati nel dominio del tempo. Per i segnali abbastanza grandi, questo può determinare un notevole aumento della velocità.

Le funzioni MATLAB come conv e filter consentono di eseguire la convoluzione e di costruire filtri partendo da zero. Signal Processing Toolbox™ e DSP System Toolbox™ offrono diverse funzioni e blocchi Simulink® per l’implementazione diretta di filtri digitali come designfilt, passa-basso e passa-alto.

La convoluzione nell’elaborazione di immagini

Nell’elaborazione di immagini, è possibile utilizzare il filtraggio convoluzionale per implementare algoritmi come il rilevamento dei contorni, l’ottimizzazione delle immagini e la sfocatura delle immagini.

Ciò viene eseguito selezionando il kernel appropriato (matrice di convoluzione).

Operazione di convoluzione con un kernel del filtro di ottimizzazione 3x3.

Image Processing Toolbox™ offre funzioni come fspecial e imfilter per progettare filtri per evidenziare determinate feature delle immagini o rimuoverne altre.

Due immagini affiancate raffiguranti una serie di peperoni e cipolle. L’immagine sulla sinistra è nitida e quella sulla destra è sfocata.

Sfocatura dell’immagine eseguita attraverso la convoluzione con un filtro di media. Guarda l’esempio MATLAB.

Reti neurali convoluzionali (CNN)

La convoluzione ricopre un ruolo fondamentale nelle reti neurali convoluzionali (CNN). Le CNN sono un tipo di rete profonda comunemente utilizzato per l’analisi delle immagini. Le CNN eliminano la necessità di effettuare l’estrazione manuale delle feature, motivo per il quale si prestano molto bene a problemi complessi come la classificazione di immagini e l’analisi di immagini mediche. Le CNN sono efficaci per l’analisi dei dati non immagine come dati audio, serie storiche e segnali.

Le CNN sono costituite da vari layer, i più comuni dei quali sono convoluzione, ReLu e condivisione.

Diagramma dei layer CNN. Da sinistra a destra: input, layer di apprendimento delle feature e layer di classificazione.

Layer in una rete neurale convoluzionale (CNN).

I layer di convoluzione fungono da filtri: ciascuno di essi applica un filtro ed estrae feature specifiche dall’immagine. Quando la rete viene addestrata, apprende questi valori dei filtri. Solitamente i layer iniziali estraggono feature di basso livello, mentre quelli più profondi estraggono feature di alto livello dai dati.

Per ulteriori informazioni sulla convoluzione e le sue applicazioni nell’elaborazione di segnali, l’elaborazione di immagini, il Deep Learning e altri settori, fai riferimento a Signal Processing Toolbox, DSP System Toolbox, Image Processing Toolbox e Deep Learning Toolbox™ da utilizzare con MATLAB.


Vedere anche: reti neurali convoluzionali, rilevamento dei contorni, integrale, MATLAB e Simulink per l’elaborazione di segnali, MATLAB per l’elaborazione di immagini e Computer Vision, MATLAB per il Deep Learning

Image Processing Onramp

Impara le nozioni base delle tecniche pratiche di elaborazione delle immagini in MATLAB.

Signal Processing Onramp

Un’introduzione interattiva ai metodi pratici di elaborazione di segnali per l’analisi spettrale.