La convoluzione è un'operazione matematica su due funzioni (tipicamente rappresentate come f e g) che produce una terza funzione, esprimendo quanto la forma di una funzione viene modificata dall'altra. Può essere interpretata come una media pesata di una funzione, dove la pesatura è data dall'altra funzione. Ha applicazioni in molti campi, tra cui:
La convoluzione di due funzioni f(t) e g(t) è definita come:
(Integrale):
(f * g)(t) = ∫ f(τ) g(t - τ) dτ
dove l'integrale è calcolato su tutti i valori di τ.
(Discreto):
(f * g)[n] = Σ f[k] g[n - k]
dove la sommatoria è calcolata su tutti i valori di k.
La convoluzione può essere implementata direttamente utilizzando la definizione matematica (sommatoria o integrale). Tuttavia, per segnali o immagini di grandi dimensioni, questa implementazione può essere computazionalmente costosa. Esistono metodi più efficienti, come l'utilizzo della <a href="https://it.wikiwhat.page/kavramlar/Trasformata%20di%20Fourier">Trasformata di Fourier</a> e la sua proprietà di trasformare la convoluzione in una moltiplicazione nel dominio della frequenza.
La convoluzione può essere estesa a funzioni di più variabili. Ad esempio, in <a href="https://it.wikiwhat.page/kavramlar/Elaborazione%20delle%20Immagini">elaborazione delle immagini</a>, la convoluzione viene eseguita su matrici bidimensionali che rappresentano le immagini. In questo caso, il kernel di convoluzione (una piccola matrice) viene fatto scorrere sull'immagine, e per ogni posizione, viene calcolata la somma dei prodotti tra i valori del kernel e i valori dell'immagine sottostante.
Siano f = [1, 2, 3] e g = [0, 1, 0]. Calcoliamo la convoluzione f * g:
(f * g)[0] = f[0]g[0] + f[1]g[-1] + f[2]g[-2] = 1*0 + 2*0 + 3*0 = 0 (f * g)[1] = f[0]g[1] + f[1]g[0] + f[2]g[-1] = 1*1 + 2*0 + 3*0 = 1 (f * g)[2] = f[0]g[2] + f[1]g[1] + f[2]g[0] = 1*0 + 2*1 + 3*0 = 2 (f * g)[3] = f[0]g[3] + f[1]g[2] + f[2]g[1] = 1*0 + 2*0 + 3*1 = 3 (f * g)[4] = f[0]g[4] + f[1]g[3] + f[2]g[2] = 1*0 + 2*0 + 3*0 = 0
Quindi, f * g = [0, 1, 2, 3, 0].
In molte applicazioni, come l'elaborazione delle immagini, la funzione g (o f) è chiamata <a href="https://it.wikiwhat.page/kavramlar/Kernel%20di%20Convoluzione">Kernel di Convoluzione</a> o filtro. La scelta del kernel determina l'effetto della convoluzione. Ad esempio, un kernel gaussiano produce un effetto di sfocatura, mentre un kernel di Sobel può essere utilizzato per rilevare bordi.
La convoluzione è uno strumento potente e versatile che trova applicazioni in una vasta gamma di discipline. La comprensione dei suoi principi fondamentali è essenziale per chiunque lavori con segnali, immagini o altre forme di dati.