Skip to content Skip to navigation

Connexions

You are here: Home » Content » Signal Processing in Processing: Campionamento e Quantizzazione

Navigation

Recently Viewed

This feature requires Javascript to be enabled.

Signal Processing in Processing: Campionamento e Quantizzazione

Module by: Davide Rocchesso, Pietro Polotti. E-mail the authors

User rating (How does the rating system work?)
Ratings

Ratings allow you to judge the quality of modules. If other users have ranked the module then its average rating is displayed below. Ratings are calculated on a scale from one star (Poor) to five stars (Excellent).

How to rate a module

Hover over the star that corresponds to the rating you wish to assign. Click on the star to add your rating. Your rating should be based on the quality of the content. You must have an account and be logged in to rate content.

:
(0 ratings)

Summary: Elementi di campionamento, ricostruzione, e quantizzazione di segnali 1D (suoni) e 2D (immagini), con riferimento al linguaggio Processing.

Note: Your browser may not currently support MathML. See our browser support page for additional details. You can always view the correct math in the PDF version.

Campionamento

I suoni e le immagini possono essere considerati segnali, rispettivamente a una e due dimensioni. Il suono si può pensare come una fluttuazione di pressione acustica nel tempo, mentre le immagini si possono pensare come distribuzioni nello spazio di valori di luminanza o di colore, quest'ultimo nelle sue componenti RGB o HSB. I segnali, per poter essere trattati da dispositivi numerici di calcolo, debbono essere ridotti a sequenze di campioni discreti, e ciascun campione deve essere rappresentato da un numero finito di bit. La prima operazione si chiama campionamento, mentre la seconda rappresenta una quantizzazione del dominio dei numeri reali.

1-D: Suoni

Il campionamento, per i segnali mono-dimensionali è l'operazione che trasforma un segnale a tempo continuo (quale è ad esempio la fluttuazione di pressione atmosferica all'ingresso del nostro padiglione auricolare) in un segnale a tempo discreto, cioè in una sequenza di numeri. Esso restituisce i valori del segnale a tempo continuo letti a intervalli di T T secondi. Il reciproco dell'intervallo di campionamento è detto frequenza di campionamento F s =1T F s 1 T . In questa sede non esponiamo la teoria del campionamento ma cerchiamo solo di descriverne le manifestazioni. Per una trattazione più estesa, ma ancora accessibile, si rimanda a Introduction to Sound Processing. Per i nostri scopi, il campionamento di segnali 1-D può essere ridotto a tre fatti e un teorema.

  • Fatto 1: La Trasformata di Fourier di un segnale a tempo discreto è una funzione (detta spettro) di variabile continua ω ω, periodica di periodo 2π 2 π . Per un dato valore di ω ω, la trasformata di Fourier restituisce un numero complesso che si può interpretare come ampiezza e fase (traslazione nel tempo) della componente di segnale sinusoidale a tale frequenza.
  • Fatto 2: Il campionamento di un segnale a tempo continuo xt x t con intervallo T T produce il segnale a tempo discreto xn=xnT x n x n T , funzione della variabile discreta n n.
  • Fatto 3: Il campionamento con frequenza F s F s di un segnale a tempo continuo produce un segnale a tempo discreto il cui spettro è la ripetizione periodica con periodo F s F s dello spettro del segnale originale. La variabile di Fourier ω ω corrisponde alla frequenza in Hertz (o cicli al secondo) rappresentata dalla variabile f=ω2πT f ω 2 π T .

La Figura 1 mostra un esempio di spettro di segnale campionato con frequenza F s F s . Nell'esempio, il segnale a tempo continuo aveva tutte e sole le componenti in frequenza comprese tra - F b F b e F b F b . Le repliche dello spettro originale sono a volte chiamate immagini.

Figura 1
Spettro di un segnale campionato
Spettro di un segnale campionato (repeti.png)

Premessi i fatti, si può avere una comprensione intuitiva del Teorema del Campionamento, storicamente legato ai nomi degli scienziati Nyquist e Shannon.

Theorem 1: Teorema del Campionamento

Un segnale a tempo continuo xt x t , il cui contenuto spettrale è limitato a frequenze inferiori a F b F b (cioè limitato in banda a F b F b ) si può ricostruire a partire dalla sua versione campionata xn x n se la frequenza di campionamento è superiore a due volte la banda (cioè se F s >2 F b F s 2 F b )

La ricostruzione non può che avvenire mediante un filtro che elimini le immagini spettrali diverse da quella direttamente proveniente dal segnale a tempo continuo originale, cioè le immagini le cui componenti in frequenza siano in valore assoluto superiori alla frequenza di Nyquist definita come F s 2 F s 2 . La condizione imposta dal teorema del campionamento equivale a richiedere che non ci siano sovrapposizioni tra le immagini spettrali. Se sovrapposizioni ci fossero, non sarebbe possibile realizzare un filtro atto a eliminare le copie dello spettro del segnale originale. Un filtro che tagliasse tutte le frequenze superiori alla frequenza di Nyquist produrrebbe un segnale che, rispetto al segnale originale, risulta affetto da aliasing. Il concetto di aliasing è ben illustrato nella Aliasing Applet, dove una sinusoide a tempo continuo è soggetta a campionamento. Se la frequenza della sinusoide è troppo alta rispetto alla frequenza di campionamento, si vede che che la sinusoide ricostruita a partire dai campioni è ben diversa, e di frequenza bassa. Abbiamo tutti familiarità con l'aliasing per come esso si manifesta nelle immagini in movimento, ad esempio quando le ruote della diligenza nei film western sembrano girare al contrario. In quel caso la frequenza di campionamento è il frame rate, o numero di immagini al secondo, e va messa in relazione alla velocità di rotazione delle ruote. Questo si inquadra tra i fenomeni stroboscopici .

Nel caso del suono, per rendersi conto di quali siano le conseguenze del fatto che lo spettro di un segnale discreto sia periodico di periodo 2π 2 π (vedi Figura 1) e di cosa avvenga nel caso di violazione del teorema del campionamento, esaminiamo un caso semplice. Consideriamo un suono generato da una somma di sinusoidi in rapporto armonico tra loro (ovvero, le cui frequenze sono multiple intere della frequenza più bassa, detta fondamentale). Lo spettro del suono così ottenuto sarà costituito da picchi in corrispondenza della frequenza fondamentale e dei suoi multipli interi. Tanto per fissare le idee, poniamo di lavorare ad una frequenza di campionamento di 44100 Hz e di voler sommare 10 sinusoidi. Dal teorema di campionamento sappiamo che, nel nostro caso, potremmo rappresentare correttamente (senza incorrere nel fenomeno dell'aliasing) tutte le frequenze fino a 22050 Hz. Quindi, onde evitare l'aliasing, la fondamentale del suono sintetico prodotto dovrà essere inferiore o uguale a 2205 Hz. Il codice Processing (+ Sonia) riportato nella tabella Tabella 1 realizza un generatore di suoni costituiti da 10 sinusoidi in rapporto armonico tra loro. Per produrre i suoni è sufficiente cliccare con il mouse in un punto qualsiasi della schermata. L'ascissa del punto corrisponderà alla frequenza della fondamentale e sulla schermata compariranno i picchi spettrali corrispondenti alle sinusoidi generate e sommate. Quando clicchiamo su di un punto approssimativamente di ascissa maggiore di 1/10 della larghezza della finestra, continuiamo a vedere dieci picchi spettrali. Abbiamo violato il teorema del campionamento e l'aliasing ha fatto capolino nella nostra rappresentazione.

Tabella 1
Aliasing test: Applet che permette di verificare l'effetto dell'aliasing su suoni ottenuti mediante somma di 10 sinusoidi con frequenze in rapporto armonico

                 
import pitaru.sonia_v2_9.*;

int L = 1024; // lunghezza della FFT (frequenze positive)
int L2 = int(L*4); // lunghezza della tabella
int sr = 44100;
int H = 10; //numero delle armoniche
int ampiezza;
float[] Data;
float freq = 10.00; // frequenza fondamentale [Hz]
Sample mySample;
float oneCycle = TWO_PI/L; 

void setup() {
  size(1024,200);
  frameRate(1);
  colorMode(HSB, 360, height, height);
  Sonia.start(this);
  mySample = new Sample(L2); // empty sample with L2 frames.
  Data = new float[L2]; // array with as many frames as samples.
  //populate the array with sample data, i.e. a sine wave 
  for(int k = 1; k <=H; k++){      // SINTESI ADDITIVA
    for(int i = 0; i < L2; i++){
      Data[i] = Data[i] + sin(i*oneCycle*freq*k)/10;
    }
  }
  mySample.write(Data); // write from 'Data' array into sample
  mySample.getSpectrum(L); // initial steps
  mouseReleased();
}

void draw()
{
  background(0,20,0);
  strokeWeight(0);
  stroke(0,230,0);
  mySample.getSpectrum(L);  // FFT
  stroke(255); //println();
  for ( int i = 1; i < L; i++){
    ampiezza = int(mySample.spectrum[i]*L);
    line(i, height, i, height - 2*ampiezza/(0.003*i));
  }
}

void mouseReleased()
{
  freq = (float)(mouseX/2);  // per cambiare la fondamentale
  println(freq + " Hz");
  for (int i = 0; i < L2; i++) Data[i] = 0;
  for(int k = 1; k <=H; k++){      // SINTESI ADDITIVA
    for(int i = 0; i < L2; i++){
      Data[i] = Data[i] + sin(i*oneCycle*freq*k)/20;
    }
  }
  mySample.write(Data); // write from 'Data' array into sample
  mySample.repeat(); // loop the sample
}

// safely stop the Sonia engine upon shutdown.
public void stop(){
  Sonia.stop();
  super.stop();
}

           	      
	    

2-D: Immagini

Supponiamo di avere una distribuzione continua, su un piano, di valori di luminanza cioè, più semplicemente, una immagine. Per poterla trattare con un calcolatore dobbiamo ridurla ad una sequenza di numeri, mediante campionamento. Ci sono molti modi per campionare una immagine, cioè per leggerne i valori di luminanza in punti discreti. Il più semplice dei modi è la lettura dei valori secondo una griglia regolare, con maglie di larghezza X X e Y Y. In modo analogo a quanto fatto per i suoni, si definiscono le frequenza spaziali di campionamento F X =1X F X 1 X e F Y =1Y F Y 1 Y . Come nel caso monodimensionale, anche per i segnali bidimensionali, o immagini, il campionamento può essere descritto mediante tre fatti e un teorema.

  • Fatto 1: La Trasformata di Fourier di un segnale a spazio discreto è una funzione (detta spettro) di due variabili continue ω X ω X e ω Y ω Y , periodica in due dimensioni con periodi 2π 2 π . Per una data coppia di valori ω X ω X e ω Y ω Y , la trasformata di Fourier restituisce un numero complesso che si può interpretare come ampiezza e fase (traslazione nello spazio) della componente di segnale sinusoidale a tali frequenze spaziali.
  • Fatto 2: Il campionamento di un segnale a spazio continuo sxy s x y con griglia di maglia X X, Y Y, produce il segnale a spazio discreto smn=smXnY s m n s m X n Y , funzione delle variabili discrete m m e n n.
  • Fatto 3: Il campionamento con frequenze spaziali F X F X e F Y F Y di un segnale a spazio continuo produce un segnale a spazio discreto il cui spettro è la ripetizione periodica secondo la griglia di maglia F X F X per F Y F Y dello spettro del segnale originale. Le variabili di Fourier ω X ω X e ω Y ω Y corrispondono alle frequenze in cicli per metro rappresentate dalle variabili f X = ω X 2πX f X ω X 2 π X e f Y = ω Y 2πY f Y ω Y 2 π Y .

La Figura 2 mostra un esempio di spettro di segnale bidimensionale campionato. Nell'esempio, il segnale a spazio continuo aveva tutte e sole le componenti in frequenza comprese nell'esagono centrato sullo zero. La forma esagonale del supporto spettrale (regione con energia spettrale non nulla) è meramente esemplificativa. Le repliche dello spettro originale sono a volte chiamate immagini spettrali.

Figura 2
Spettro di una immagine campionata
Spettro di una immagine campionata (repeti2D.png)

Premessi i fatti, si può avere una comprensione intuitiva del Teorema del Campionamento.

Theorem 2: Teorema del Campionamento (in 2D)

Un segnale a spazio continuo sxy s x y , il cui contenuto spettrale è limitato a frequenze spaziali contenute nel rettangolo di semilati F bX F bX e F bY F bY (cioè limitato in banda) si può ricostruire a partire dalla sua versione campionata smn s m n se le frequenze di campionamento spaziale sono superiori a due volte le rispettive bande (cioè se F X >2 F bX F X 2 F bX e F Y >2 F bY F Y 2 F bY )

In pratica, la maglia di campionamento non può essere più larga di un semi-periodo della più fine frequenza spaziale (cioè del più fine dettaglio) che è rappresentato nell'immagine. La ricostruzione non può che avvenire mediante un filtro che elimini le immagini spettrali diverse da quella direttamente proveniente dal segnale a spazio continuo originale, cioè le immagini le cui componenti in frequenza siano in valore assoluto superiori alla frequenza di Nyquist definita come F X 2 F X 2 e F Y 2 F Y 2 lungo le due direzioni. La condizione imposta dal teorema del campionamento equivale a richiedere che non ci siano sovrapposizioni tra le immagini spettrali. Se sovrapposizioni ci fossero, non sarebbe possibile realizzare un filtro atto a eliminare le copie dello spettro del segnale originale. Un filtro che tagliasse tutte le frequenze superiori alla frequenza di Nyquist produrrebbe un segnale che, rispetto al segnale originale, risulta affetto da aliasing.

Si fa notare come si possa produrre aliasing per sotto-campionamento (o decimazione) di una immagine campionata. Cioè, a partire da una immagine a spazio discreto, utilizzare solo una parte dei campioni selezionati secondo una griglia regolare corrisponde a creare ripetizioni periodiche delle immagini spettrali, che quindi possono finire con il sovrapporsi.

Per esplorare in maniera visuale i concetti di campionamento, sotto-campionamento, e aliasing, si consideri la applet che disegna ellissi . Con le frecce si possono raddoppiare o dimezzare i passi di sotto-campionamento orizzontale e verticale.

Una semplicissima introduzione a concetti elementari di elaborazione di immagini si trova in Digital Image Processing Basics.

Quantizzazione

Con gli aggettivi "numerico" ovvero "digitale" indichiamo sistemi che lavorano su segnali rappresentati mediante numeri, con la precisione (finita) consentita dai sistemi di calcolo. Fino ad ora abbiamo considerato i segnali a tempo discreto o spazio discreto come se fossero collezioni di numeri a precisione infinita, o numeri reali. Purtroppo, con i calcolatori si possono rappresentare al più sottoinsiemi finiti dei numeri razionali. Ciò significa che i nostri segnali vengono quantizzati.

Per i nostri scopi, la quantizzazione più interessante è quella lineare che si verifica, ad esempio, nel processo di conversione di un segnale analogico in segnale digitale. Se la parola di memoria che rappresenta un numero è fatta di b b bit, allora il campo di variazione di tale numero può essere discretizzato in 2b 2 b livelli di quantizzazione. Ogni valore compreso tra due livelli di quantizzazione può essere approssimato per troncamento o arrotondamento al livello più vicino. La Figura 3 mostra un esempio di quantizzazione con rappresentazione su 3 3 bit in complemento a due.

Figura 3
Campionamento e quantizzazione di un segnale analogico
Campionamento e quantizzazione di un segnale analogico (quant.png)

L'approssimazione introdotta dalla quantizzazione si manifesta in forma di rumore, detto appunto rumore di quantizzazione. Spesso, per l'analisi dei circuiti di elaborazione del suono, tale rumore si assume essere bianco e non correlato al segnale, ma nella realtà fenomenica esso è percettivamente assai legato al segnale stesso, tanto che la quantizzazione può essere percepita come un effetto.

Per esplorare in maniera visuale e uditiva il fenomeno della quantizzazione, si consideri la applet che consente di variare tra 1 1 e 8 8 il numero di bit dedicati alla rappresentazione di ciascuno dei tre canali RGB con cui si rappresenta il colore. Lo stesso numero di bit è anche dedicato alla rappresentazione di un segnale audio abbinato all'immagine. L'effetto visuale che si ottiene riducendo il numero dei bit è simile a una solarizzazione.

Exercise 1

Si estenda il codice dell'applet Tabella 1, in modo da aggiungere alcune modalità interattive:

  • Si renda la generazione dei suoni automatica variando ad ogni frame la frequenza fondamentale in modo casuale (si veda la random()).
  • Si renda dipendente dalla posizione orizzontale del mouse (mouseX) il frame rate (e quindi il metronomo con cui vengono generate le note).
  • Si renda dipendente dalla posizione verticale del mouse (mouseY) il numero delle armoniche presenti nel suono (e quindi la ricchezza spettrale, ovvero la brillantezza, delle note generate).
  • Si colori la finestra di background in modo che, da sinistra a destra, si passi progressivamente dal blu al rosso. In questo modo al colore blu corrisponderà un metronomo lento e al colore rosso un metronomo veloce.
  • Si renda il valore di saturazione dei colori della finestra dipendente dalla posizione verticale del mouse. In questo modo ad un suono con poche armoniche (timbro poco brillante) corrisponderà un colore tendente al grigio, mentre ad un timbro ricco di armoniche (timbro brillante) corrisponderà una colore intenso.
  • Si aggiunga un controllo per interrompere il calcolo dello spettro e creare un effetto di fermo immagine, mentre il suono continua ad essere generato (per esempio un click tenuto del mouse).
  • Si aggiunga un controllo per poter annullare la dipendenza dalla posizione del mouse del metronomo, della ricchezza spettrale e della variazione della saturazione del colore (per esempio la pressione di un qualsiasi tasto della tastiera).
  • Si aggiunga un controllo tale che, in caso di fermo immagine (mouse premuto) si interrompa anche la generazione di nuove note e si abbia un effetto di "fermo nota", ovvero di nota tenuta (per esempio la pressione di un tasto preciso della tastiera).
  • Infine, si aggiunga un controllo tale che, in caso di fermo immagine (mouse premuto) si interrompa del tutto la riproduzione del suono e si abbia silenzio (per esempio la pressione di un altro tasto della tastiera).

Solution

Le estensioni proposte sono realizzate nel codice Processing.

References

  1. Davide Rocchesso. (2003). Introduction to Sound Processing. [http://www.mondo-estremo.com]. Mondo Estremo.

Content actions

Give Feedback:

E-mail the module authors | Rate module ( How does the rating system work?)

Rating system

Ratings

Ratings allow you to judge the quality of modules. If other users have ranked the module then its average rating is displayed below. Ratings are calculated on a scale from one star (Poor) to five stars (Excellent).

How to rate a module

Hover over the star that corresponds to the rating you wish to assign. Click on the star to add your rating. Your rating should be based on the quality of the content. You must have an account and be logged in to rate content.

(0 ratings)

Download:

Add module to:

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 (?)

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.

What are tags? tag icon

Tags are descriptors added by lens makers to help label content, attaching a vocabulary that is meaningful in the context of the lens.

| External bookmarks