Codifica analogica e codifica digitale
Il segnale analogico è una modalità
di rappresentazione di variabili fisiche (tempo, temperatura, suono
) in
cui una grandezza fisica è rappresentata mediante un segnale legato alla
prima da una relazione d'analogia.
Questo segnale varia in modo continuo assumendo tanti valori quanti sono quelli
assunti dalla grandezza fisica.
Il segnale analogico è quindi un segnale che varia con continuità
nel tempo.
Il segnale digitale è invece una modalità di rappresentazione
di variabili fisiche nel quale la grandezza fisica è rappresentata da
valori numerici (dall'inglese digit = cifra) che variano in modo discreto.
Il segnale digitale in pratica può assumere soltanto un numero finito
di valori su un tempo finito.
Poiché tali valori sono numerabili, il segnale prende anche il nome di
segnale numerico.
Questo è il tipo di segnale che può essere elaborato da un sistema
informatico e trasmesso tramite un moderno sistema di trasmissione digitale.
Solitamente l'informazione a disposizione non si trova già in formato
digitale, ma deve essere trasformata per essere rappresentata in questa modalità.
Vediamo quindi come è possibile convertire il segnale analogico stesso
in forma numerica.
La conversione analogico/digitale
Il processo di conversione di un segnale
analogico in uno digitale avviene tramite due fasi di discretizzazione: il campionamento
(discretizzazione temporale) e la quantizzazione (discretizzazione dei livelli).
Infine ci sarà una fase di codifica che permette di ottenere il segnale
nella forma numerica finale.
A tutto ciò provvedono due circuiti: il ADC (Analogic to Digital Converter)
che trasforma i segnali analogici in digitali e il DAC (Digital to Analogic
Converter) che trasforma i segnali digitali in analogici.
La quantizzazione
Il secondo processo è la quantizzazione.
Tramite il campionamento è possibile descrivere un segnale specificandone
il valore assunto in un numero finito di istanti opportunamente spaziati.
Anche dopo che è stato campionato, però, il segnale non è
in una forma utile per essere manipolato da un elaboratore elettronico.
Questo perché una rappresentazione esatta dei singoli campioni richiederebbe
una quantità di memoria infinita.
Si consideri, ad esempio, il caso di un campione che assume un valore pari a
sqrt(2): tale valore rappresenta un numero reale con infinite cifre decimali
e quindi la sua rappresentazione esatta richiederebbe una quantità di
memoria infinita.
In generale non siamo interessati al valore esatto del campione, ma siamo disposti
ad accettare anche un valore approssimato purché l'approssimazione sia
abbastanza accurata.
In pratica, si fissa una precisione ritenuta sufficiente al nostro uso e ci
si limita a specificare il valore dei campioni con tale precisione.
Questa operazione di limitazione del numero di cifre decimali usate per rappresentare
i campioni va sotto il nome di quantizzazione del segnale campionato.
Il processo di quantizzazione dei campioni di un segnale è ottenuto così:
per prima cosa si determina la precisione con la quale i campioni devono essere
rappresentati, dopodiché si suddivide l'asse delle ordinate in tanti
intervalli ognuno dei quali ha un'ampiezza pari alla precisione richiesta.
Se, ad esempio, si decide di rappresentare i campioni fino alla loro prima cifre
decimali, ogni intervallo unitario sarà suddiviso in dieci parti uguali
(0, 0.1, 0.2, ...).
Infine, a tutti i campioni che cadono in un certo intervallo viene assegnato
il valore quantizzato più vicino (arrotondamento) o il valore quantizzato
immediatamente inferiore al valore esatto (troncamento).
La codifica
L'ultimo processo è la codifica, che
ad ogni campione quantizzato fa corrispondere un numero binario, cioè
una sequenza di bit.
Più esattamente, una volta definiti i livelli di quantizzazione mediante
i quali approssimare i campioni del segnale, ad ognuno di essi viene fatto corrispondere
un diverso numero binario.
Sono tali numeri binari che vengono dati in pasto al computer per la loro eventuale
memorizzazione o elaborazione.
Dato il numero di livelli di quantizzazione usati, mediante l'equazione precedente
è possibile ricavare immediatamente il numero di bit necessari alla codifica
dei campioni.
Il numero di livelli, a sua volta, può essere determinato a partire dalla
precisione richiesta e dalla massima escursione del segnale in ingresso.
Se ad esempio, un segnale da convertire varia da +10V a -10V, e lo si vuole
quantizzare con una precisione di 0.1V, sono necessari 20/0.1= 200 livelli di
quantizzazione, per rappresentare i quali è necessario usare 8 bit.
É fondamentale notare che mentre il campionamento non comporta alcuna
perdita delle caratteristiche del segnale (il quale, purché siano verificate
le condizioni dettate dal Teorema del campionamento, può essere perfettamente
ricostruito a partire dai suoi campioni), la quantizzazione provoca una perdita,
in quanto i valori numerici quantizzati non sono uguali a quelli originali che
sono andati persi nel processo di arrotondamento o troncamento legato alla quantizzazione.
Compressione
Per cercare di risolvere il problema dato
dalla disponibilità insufficiente di memoria per poter utilizzare in
modo efficiente l'audio, in formato digitale, sono stati introdotti gli algoritmi
di compressione.
Compito specifico di un algoritmo di compressione è trasformare la sequenza
di byte che costituisce un file in una differente sequenza più breve,
sfruttando complessi algoritmi matematici.
Ovviamente, poiché una sequenza di byte che compone un file compresso
non sarà utilizzabile per riprodurre il contenuto nel file originale,
occorre che qualsiasi formato di compressione sia reversibile: in genere, se
un programma ha la capacità di salvare un file in un formato compresso,
è anche in grado di leggere i file che sono stati compressi con quel
particolare formato, ripristinando l'informazione in essi contenuta, cioè
decomprimendoli.
In linea di massima, comprimere un file vuol dire eliminare tutte le componenti
non essenziali (o ridondanti), tentando però di mantenere il più
possibile inalterata la qualità originaria utilizzando a questo scopo
i metodi più opportuni.
In virtù di quanto detto sopra, la principale differenza che possiamo
stabilire tra i formati di compressione è data dalla misura della loro
reversibilità.
Un formato che è in grado di restituire, al termine della decompressione,
un contenuto esattamente uguale - bit per bit - all'originale com'era prima
che venisse compresso, viene normalmente definito lossless, cioè senza
perdita.
Viceversa, un formato di compressione che non può assicurare una reversibilità
assoluta, viene definito lossy, ovvero, in italiano, con perdita.
La cosa che si perde o non si perde è la fedeltà all'originale
del contenuto ripristinato.
Occorre conoscere perfettamente le caratteristiche dei formati di compressione
che si adoperano, se si vuole ottenere il meglio dalle manipolazioni che si
effettuano sui file.
Sarebbe infatti un grave errore salvare e risalvare un file in un formato lossy,
per poi utilizzarlo alla fine in un formato "senza perdita".
É invece corretto fare il contrario, ovvero salvare quante volte si vuole
un lavoro in corso d'opera in un formato non distruttivo, per poi salvarlo solo
alla fine, se necessario, in un formato distruttivo.
La regola (e la logica) vuole, insomma, che l'archiviazione in un formato lossy
sia sempre l'anello conclusivo della catena di trasformazioni a cui è
sottoposto un file.
A questo punto nasce una domanda scontata: perché mai usare un formato
di compressione distruttivo, se esistono sistemi non distruttivi che permettono
di comprimere e decomprimere uno stesso file infinite volte, conservando tutte
le informazioni in esso contenute?
La risposta è che in molti casi la quantità di spazio che una
compressione non distruttiva (lossless) riesce a salvare è di molto inferiore
al risparmio di spazio ottenibile per mezzo di una compressione distruttiva
(lossy).
L'efficienza della compressione viene calcolata dividendo la grandezza originale
del file per la sua grandezza una volta compresso.
In inglese questo valore si chiama compression rate o, alla latina, ratio; in
italiano possiamo chiamarlo coefficiente o fattore di compressione.
Ben diversi sono i fattori di compressione che possiamo ottenere ricorrendo
all'uso di formati distruttivi.
Evidente, dunque, la necessità di usare per la fruizione su Internet,
soggetta alla lentezza delle connessioni via modem, i formati distruttivi, grazie
alle loro superiori capacità di compressione.
Bit rate
Il bit rate indica la quantità di dati
che possono transitare, nell'unità di tempo, attraverso un canale di
comunicazione e che normalmente è misurata in bit al secondo (bps).
Vediamo adesso alcuni esempi per renderci conto dei valori di bit rate necessari
per trasmettere i più comuni tipi di segnale.
Il bit rate di un segnale vocale telefonico è di circa 64.000bps: la
banda occupata dal segnale analogico vocale, trasmesso dal telefono, è
infatti B= 4KHz.
Per il Teorema del campionamento, occorre campionare il segnale con un passo
di campionamento TC = 1/(2B)= 1/8000 = 125 ms.
Ovvero, occorre trasmettere 8000 campioni al secondo.
Usualmente si quantizzano questi campioni con 256 livelli, per cui servono 8
bit per ogni campione.
Da cui il risultato, bit rate = 8*8000= 64Kbps.
Il bit rate di un segnale musicale monofonico è di circa 320.000bps:
la banda di un segnale musicale è infatti di circa 20KHz, per cui occorre
campionare il segnale analogico con circa 40000 campioni al secondo.
Se ancora una volta si utilizzassero 8 bit per campione, si otterrebbero 320Kbps.
Per trasferire un filmato a pieno schermo e a pieno movimento necessita invece
una ampiezza di banda di circa 10.000.000bps.
La quantità di banda necessaria ad un'applicazione varia molto a seconda
della grandezza dei frame, del frame rate e del metodo di compressione adottato.
Il bit rate è quindi la capacità di trasmettere informazioni lungo
un canale di comunicazione in un determinato tempo.