Skip to content Skip to navigation

Connexions

You are here: Home » Content » Signal Processing in Processing: Convolution and Filtering

Navigation

Content Actions

  • Download module PDF
  • Add to ...
    Add the module to:
    • My Favorites
    • A lens
    • An external social bookmarking service
    • My Favorites (What is 'My Favorites'?)
      'My Favorites' is a special kind of lens which you can use to bookmark modules and collections directly in Connexions. 'My Favorites' can only be seen by you, and collections saved in 'My Favorites' can remember the last module you were on. You need a Connexions account to use 'My Favorites'.
    • A lens (What is a lens?)

      Definition of a lens

      Lenses

      A lens is a custom view of Connexions content. You can think of it as a fancy kind of list that will let you see Connexions through the eyes of organizations and people you trust.

      What is in a lens?

      Lens makers point to Connexions materials (modules and collections), creating a guide that includes their own comments and descriptive tags about the content.

      Who can create a lens?

      Any individual Connexions member, a community, or a respected organization.

    • External bookmarks
  • E-mail the authors

Recently Viewed

Signal Processing in Processing: Convolution and Filtering

Module by: Davide Rocchesso, Pietro Polotti

Summary: Discrete-time systems and their description with the impulse response. The convolution operator. Filtering. (in Italian)

Nota: You are viewing an old version of this document. The latest version is available here.

Sistemi

Per i nostri scopi, un sistema è un qualsiasi blocco di elaborazione che, presa in ingresso una sequenza di campioni xn x n , produce in uscita una sequenza di campioni yn y n . Se i campioni vengono da una serie temporale si parla di sistemi a tempo discreto. In questo modulo non ci occuperemo di elaborazione nel tempo continuo, anche se i principi descritti si possono generalizzare anche al caso di segnali di variabile continua. Invece, la sequenza di numeri può provenire dal campionamento di una immagine, e in questo caso sarà opportuno parlare di sistemi a spazio discreto e usare due indici m m e n n se il campionamento avviene mediante griglia rettangolare di righe e colonne.

In questo modulo ci occupiamo soltanto di sistemi lineari, intendendo con questo che vale il

Definition 1: Principio di sovrapposizione degli effetti
Se y 1 y 1 e y 2 y 2 sono le risposte del sistema agli ingressi x 1 x 1 e x 2 x 2 allora la risposta all'ingresso composito a 1 x 1 + a 2 x 2 a 1 x 1 a 2 x 2 è l'uscita composita a 1 y 1 + a 2 y 2 a 1 y 1 a 2 y 2

Un altro concetto importante è quello della invarianza rispetto al tempo ovvero, analogamente, rispetto allo spazio.

Definition 2: Invarianza rispetto al tempo
Un sistema è invariante rispetto al tempo se la traslazione temporale di D D campioni del segnale di ingresso produce una identica traslazione nel segnale di uscita, cioè xn-D x n D produce in uscita yn-D y n D .
Casi di non invarianza si riscontrano laddove il sistema cambia le proprie caratteristiche nel tempo (o nello spazio), per esempio per effetto di controllo umano. Sono non invarianti anche quei sistemi per i quali la frequenza di campionamento del segnale di ingresso è diversa da quella del segnale di uscita. Ad esempio, i decimatori sono sistemi varianti nel tempo.

Una connessione in serie di blocchi lineari e invarianti rispetto al tempo (Linear Time-Invariant - LTI) è essa stessa un sistema lineare e invariante rispetto al tempo, e l'ordine dei blocchi può essere variato senza che cambi il comportamento ingresso-uscita complessivo.

I sistemi LTI possono essere descritti completamente dalla risposta che forniscono ad un impulso di ampiezza unitaria.

Definition 3: Impulso nel tempo (nello spazio) discreto
è il segnale δ δ che vale 1 1 all'istante zero (nel punto di coordinate 00 0 0 ), e 0 0 in ogni altro istante (punto).

Risposta all'impulso e convoluzione

Chiamiamo h h il segnale di uscita di un sistema LTI il cui ingresso sia costituito da un impulso. Tale segnale di uscita viene detto risposta all'impulso. Dal momento che qualsiasi segnale a tempo (spazio) discreto si può pensare come costituito dalla somma pesata di impulsi traslati, ogni campione che si presenta in ingresso attiva una risposta all'impulso con una certa ampiezza determinata dal valore del campione stesso. Dal momento che le risposte all'impulso si attivano a distanza di un campione l'una dall'altra ed hanno una estensione di svariati campioni, l'effetto di ciascun campione di input si protrae nel tempo, ovvero si estende su un certo numero di campioni successivi del segnale di output. Vista la linearità e l'invarianza temporale del sistema, le successive risposte all'impulso sommano i loro effetti. In altri termini, il sistema mantiene memoria dei campioni passati, cioè immessi in precedenza nel sistema, e usa questa memoria per influenzare il presente.

Per avere una analogia fisica, si può pensare alla percussione a intervalli regolari di un piatto musicale. La risposta ad ogni singolo colpo si protrae nel tempo e si sovrappone alle risposte ad ogni colpo successivo.

Esempio 1

Si consideri il segnale x x che sia nullo ovunque esclusi gli istanti -1 1 , 0 0, e 1 1 in cui vale, rispettivamente 1 1, 0.5 0.5, e 0.25 0.25. In ogni istante n n, xn x n si può esprimere come 1δn+1+0.5δn+0.25δn-1 1 δ n 1 0.5 δ n 0.25 δ n 1 . Per linearità l'uscita si può quindi ottenere per composizione di risposte all'impulso opportunamente traslate e pesate: yn=1hn+1+0.5hn+0.25hn-1 y n 1 h n 1 0.5 h n 0.25 h n 1 .

Per generalizzazione dell'esempio Esempio 1 si può definire l'operazione di convoluzione.

Definition 4: Convoluzione di due segnali h h e x x
yn=h * xn=m=-xmhn-m y n h * x n m x m h n m

L'operazione di convoluzione può essere pienamente intesa attraverso la costruzione esplicita di qualche esempio di prodotto di convoluzione. Il modulo Discrete-Time Convolution offre la costruzione grafica di un esempio e rimanda a ulteriori esempi disponibili in rete.

Proprietà

Le proprietà dell'operazione di convoluzione sono ben illustrate nel modulo Properties of Convolution. Quella più interessante in questa sede è la estensione:

property 1

Se xn x n è estesa su M 1 M 1 campioni, e hn h n è estesa su M 2 M 2 campioni, allora il prodotto di convoluzione yn y n è esteso su M 1 + M 2 -1 M 1 M 2 1 campioni.

Quindi il segnale prodotto di convoluzione sarà più lungo sia del segnale di ingresso sia della risposta all'impulso.

Un'altra proprietà interessante è la commutatività dell'operatore di convoluzione, secondo la quale segnale di ingresso e risposta all'impulso possono scambiare i loro ruoli senza che cambi il segnale di uscita.

Risposta in Frequenza e Filtraggio

La trasformata di Fourier della risposta all'impulso viene chiamata Risposta in Frequenza e si indica con Hω H ω . La trasformata di Fourier dell'uscita del sistema si ottiene dalla trasformata di Fourier dell'ingresso mediante moltiplicazione per la risposta in frequenza, cioè Yω=HωXω Y ω H ω X ω .

La risposta in frequenza sagoma, in maniera moltiplicativa, lo spettro del segnale di ingresso o, in altri termini, opera un filtraggio esaltando talune frequenze ed attenuandone altre. Il filtraggio può operare anche sulla fase delle componenti spettrali, ritardandole in misura diversa.

Il filtraggio può avvenire nel dominio del tempo (o dello spazio), mediante operazione di convoluzione, o nel dominio delle frequenze mediante moltiplicazione per la risposta in frequenza.

Exercise 1

Si utilizzi la risposta all'impulso nulla ovunque esclusi gli istanti -1 1 , 0 0, e 1 1 in cui valga, rispettivamente 1 1, 0.5 0.5, e 0.25 0.25, per ridefinire l'operazione di filtraggio filtra() del Sound Chooser presentato nel modulo Media Representation in Processing. In questo caso il filtraggio è realizzato nel dominio del tempo mediante convoluzione diretta.

Solution 1


                 
	  void filtra(float[] DATAF, float[] DATA, float WC, float RO) {
	    //WC and R0 are useless, here kept only to avoid rewriting other
	    //parts of code
	    for(int i = 2; i < DATA.length-1; i++){
	      DATAF[i] = DATA[i+1] + 0.5*DATA[i] + 0.25*DATA[i-1];
	      }
	    }
             	      
	  

Causalità

La nozione di causalità è piuttosto intuitiva: essa corrisponde all'esperienza di stimolare un sistema ed ottenere una risposta a tale stimolazione solo per istanti del tempo futuro. Per sistemi LTI a tempo discreto, ciò corrispondere ad avere la risposta all'impulso nulla per istanti di tempo (discreto) negativi. Sistemi LTI causali possono produrre senza ritardo un'uscita campione per campione, in quanto la convoluzione va ad elaborare solo valori dell'ingresso passato e presente. Nell'Exercise 1 la risposta all'impulso è non causale, ma ciò non costituisce un problema perché è già a disposizione l'intero segnale di ingresso e l'elaborazione opera sull'intero blocco di campioni.

Filtraggio in 2D

Le nozioni di risposta all'impulso, convoluzione, risposta in frequenza, e filtraggio si estendono in maniera naturale dal 1D al 2D, e costituiscono concetti fondamentali dell'elaborazione di immagini.

Definition 5: Convoluzione di due segnali 2D (immagini)
ymn=h * xmn=k=-l=-xklhm-kn-l y m n h * x m n k l x k l h m k n l
Se x x è l'immagine di interesse, è facile rendersi conto che la convoluzione avviene tramite moltiplicazione e traslazione nello spazio di una maschera di convoluzione o kernel h h (la risposta all'impulso del sistema di elaborazione). Così come nel caso 1D il filtraggio può essere pensato come una combinazione di un gruppo di campioni contigui (dove la estensione del gruppo dipende dalla estensione della risposta all'impulso del filtro) che viene ripetuta nel tempo, campione per campione, così nello spazio il filtraggio può essere visto come una combinazione di una porzione di campioni (insieme pixel contigui), la cui estensione è data dalla maschera di convoluzione. Quella che nel tempo era un effetto della memoria del sistema, nel caso delle immagini diventa una influenza a distanza.

Come nel caso 1D, la trasformata di Fourier della risposta all'impulso viene chiamata Risposta in Frequenza e si indica con H ω X ω Y H ω X ω Y . La trasformata di Fourier dell'uscita del sistema si ottiene dalla trasformata di Fourier dell'ingresso mediante moltiplicazione per la risposta in frequenza, cioè Y ω X ω Y =H ω X ω Y X ω X ω Y Y ω X ω Y H ω X ω Y X ω X ω Y .

Exercise 2

Considerato il codice Processing dell'esempio di blurring, si isolino le linee che realizzano l'operazione di convoluzione.

Solution 2


                 
for(int y=0; y<height; y++) { 
  for(int x=0; x<width/2; x++) { 
    float sum = 0; 
    for(int k=-n2; k<=n2; k++) { 
      for(int j=-m2; j<=m2; j++) { 
        // Reflect x-j to not exceed array boundary 
        int xp = x-j; 
        int yp = y-k; 
        //... omissis ...
	//auxiliary code to deal with image boundaries   
        sum = sum + kernel[j+m2][k+n2] * red(get(xp, yp)); 
      } 
    } 
    output[x][y] = int(sum);  
  } 
} 
             	      
	  

Comments, questions, feedback, criticisms?

Send feedback