Skip to content

Convoluzione circolare e segnali multidimensionali

L’estensione del teorema di convoluzione al dominio discreto non è immediata. Dati un segnale discreto 𝑥[𝑛], 𝑛=0,…,𝑁𝑥−1 e un filtro ℎ[𝑛], 𝑛=0,…,𝑁ℎ−1. La loro convoluzione sarà:

𝑦[𝑛]=𝑥[𝑛]∗ℎ[𝑛]

Il teorema ci porterebbe a pensare che:

𝑌[𝑘]=𝑋[𝑘]𝐻[𝑘]⇒𝑦[𝑛]↔ℱ︀𝑌[𝑘]

Tuttavia c’è un problema: se le 2 sequenze non hanno la stessa lunghezza, si può eseguire la convoluzione ma non il prodotto.

Una soluzione potrebbe essere quella di portare le 2 sequenze alla stessa lunghezza aggiungendo degli zeri a quella più corta. Però il risultato non è ancora corretto.

Problema: Eseguire il prodotto in frequenza equivale a convoluire la periodizzazione di 𝑥[𝑛] per ℎ[𝑛] (diventano periodiche perché la DFT è appunto discretizzata).

Anche prendendo solo i primi 𝑁 valori, otteniamo comunque un risultato diverso da quello atteso. Il risultato dell’anti-trasformata sarà quindi il risultato di questa operazione, detta convoluzione circolare.

𝑦[𝑛]=𝑥[𝑛]⊛ℎ[𝑛]=∑𝑘=0𝑁−1𝑥[𝑘]ℎ[𝑛−𝑘]

Date 2 sequenze 𝑥[𝑛] e ℎ[𝑛] di lunghezza 𝑁𝑥 e 𝑁ℎ, il prodotto delle trasformate è la trasformata della convoluzione circolare tra le 2 sequenze:

𝑥[𝑛]⊛ℎ[𝑛]↔ℱ︀𝑋[𝑘]𝐻[𝑘]

Per far coincidere la convoluzione circolare bisogna evitare il sovrapporsi dei campioni lungo un periodo. Bisogna quindi aggiungere un ulteriore zero padding in entrambe le sequenze, in modo che i campioni delle sequenze originali siano separati da almeno 𝑁𝑥+𝑁ℎ−1 (lunghezza della convoluzione lineare).

  1. Generiamo 2 sequenze di lunghezza 𝑀≥𝑁𝑥+𝑁ℎ−1 aggiungendo gli zeri alla fine delle sequenze originali.
  2. Applichiamo la DFT ad entrambe le sequenze, ottenendo le trasformate di lunghezza 𝑀.
  3. Moltiplichiamo le 2 sequenze.
  4. Applichiamo la IDFT e selezioniamo i primi 𝑁𝑥+𝑁ℎ−1 campioni.

Con la convoluzione è possibile calcolare l’uscita di un sistema LTI con minore complessità computazionale. Tuttavia, il calcolo della DFT con la definizione data ha complessità 𝑂(𝑁2).

Un algoritmo più veloce per calcolare la trasformata viene chiamato Fast Fourier Transform (FFT) e riduce la complessità a 𝑂(𝑁log(𝑁)).

Dato che ora il filtro viene implementato in frequenza, è possibile definire filtri ideali con risposta impulsiva infinita (IIR) specificando direttamente la loro risposta in frequenza sui campioni della DFT, senza dover progettare un kernel a supporto finito come per i filtri FIR. La risposta impulsiva infinita, però, non può essere rappresentata esattamente in un blocco finito: la moltiplicazione in frequenza corrisponde comunque a una convoluzione circolare, quindi il risultato non coincide con la convoluzione lineare.

In pratica questi filtri hanno inoltre effetti indesiderati sul segnale, come la manifestazione di ripple e overshoot in prossimità delle discontinuità: un fronte netto richiede le armoniche ad alta frequenza, che il filtro taglia (fenomeno di Gibbs). Questo fenomeno viene chiamato ringing.

In natura, molti segnali si muovono su domini spaziali o spazio-temporali. Ciò significa che il valore di un segnale dipende da più di una variabile.

Un segnale multi-dimensionale in 𝑁 dimensioni sarà rappresentato da una funzione:

𝑥:ℝ𝑁→ℝ𝐾

dove 𝐾 rappresenta la dimensionalità dei valori assunti dal segnale.

Un sistema multi-dimensionale riceve in ingresso un segnale 𝑁-dimensionale e restituisce un segnale 𝑀-dimensionale.

D’ora in poi, per semplicità considereremo segnali e sistemi multi-dimensionali che danno un risultato scalare.

Il concetto di sistema LDI è praticamente identico a quello di un sistema LTI, solo che si parla di dominio-invarianza anziché di tempo-invarianza.

Questo significa che il sistema si comporterà allo stesso modo in qualsiasi punto del dominio.

Dato un sistema multi-dimensionale LDI, la risposta sarà sempre data dalla convoluzione tra l’ingresso e la risposta impulsiva.

𝑦(𝑣1,…,𝑣𝑁)=𝑥(𝑣1,…,𝑣𝑁)∗ℎ(𝑣1,…,𝑣𝑁)=∫𝜆1=−∞+∞…∫𝜆𝑁=−∞+∞𝑥(𝜆1,…,𝜆𝑁)ℎ(𝑣1−𝜆1,…,𝑣𝑁−𝜆𝑁)d𝜆𝑁…d𝜆1

Quindi il concetto rimane lo stesso: per ogni asse ribaltiamo la risposta impulsiva, facciamo scorrere il filtro su tutti i punti dello spazio e infine moltiplichiamo e integriamo su tutte le dimensioni.

Dato un segnale 𝑥(𝑣1,…,𝑣𝑁), la sua FT sarà:

𝑋(𝑓1,…,𝑓𝑁)=∫−∞+∞…∫−∞+∞𝑥(𝑣1,…,𝑣𝑁)𝑒−𝑗2𝜋(𝑓1𝑣1+…+𝑓𝑁𝑣𝑁)d𝑣1…d𝑣𝑁

L’operazione equivale a trasformare il segnale sequenzialmente su ogni dimensione. Quindi si dimostra facilmente che essa mantiene ed estende tutte le proprietà già viste per la trasformata mono-dimensionale.

Per esempio, la trasformata di un segnale bidimensionale (come un’immagine) è uno spettro bidimensionale dove convenzionalmente la frequenza fondamentale è posta al centro (all’intersezione con gli assi).