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 2Il 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.
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.
|
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 2Il 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.
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.