Skip to content

Quantizzazione e codifica PCM del segnale

Il segnale ottenuto tramite il campionatore ha ancora valori continui in ampiezza, quindi non lo si può rappresentare in forma numerica. La quantizzazione è il passaggio che si occupa di discretizzare i campioni in ampiezza, associandoli a un numero limitato di livelli.

Dato il segnale campionato 𝑥(𝑛𝑇𝑐) avremo:

𝑥(𝑛𝑇𝑐)=𝑥𝑞(𝑛𝑇𝑐)+𝜀𝑞(𝑛𝑇𝑐)

Il numero di livelli viene solitamente scelto come una potenza di 2, in modo che 2𝑁 livelli siano rappresentabili con 𝑁 bit. Il livello che viene assegnato è quello a distanza minore dal valore reale del segnale.

Nel quantizzatore uniforme, gli 𝑀 livelli sono equispaziati, quindi il massimo errore 𝜀𝑞 che si può commettere su un campione è |Δ2| (se il segnale in ingresso varia tra ±1, allora Δ=2𝑀 e l’errore massimo è 1𝑀).

La relazione ingresso-uscita è una funzione a scalini non lineare.

Se la distribuzione dei valori assunti dal segnale è uniforme (la densità di probabilità è un rettangolo), allora anche l’errore di quantizzazione sarà una variabile aleatoria 𝜀𝑞 con densità di probabilità 𝑓𝜀𝑞(𝜀) uniforme in [−Δ2,Δ2] e di altezza 1Δ.

Si può stimare la potenza media del rumore che coincide con la varianza e con il valore quadratico medio:

𝜎𝑞2=∫−Δ2Δ2𝜀2𝑓𝜀𝑞(𝜀)d𝜀=1Δ∫−Δ2Δ2𝜀2d𝜀=Δ212

Più che la potenza del rumore, è interessante misurare il suo rapporto con la potenza del segnale 𝑥(𝑡).

Questo rapporto viene chiamato rapporto segnale-rumore:

SNR=10log10(𝑃𝑥𝑃𝜀𝑞)

Più elevato è il rapporto, maggiore sarà la qualità di un segnale. Per un segnale a valor medio nullo, si può dimostrare che ogni bit aggiunto (raddoppio dei livelli) fa aumentare il rapporto di 6 dB.

Quando il segnale è distribuito in maniera non uniforme, il quantizzatore dovrebbe generare più livelli nella zona in cui il segnale ha maggiore probabilità di essere presente. Per realizzarlo bisogna ottimizzare congiuntamente la posizione dei punti di transizione e quella dei livelli rappresentativi in modo da minimizzare l’errore quadratico medio del quantizzatore.

L’algoritmo di Lloyd-Max è quello che ci permette di eseguire questa ottimizzazione. Per applicarlo bisogna definire a priori la distribuzione del segnale e il numero di livelli che si vuole supportare.

  1. Si scelgono arbitrariamente i valori dei livelli 𝑎𝑖, 𝑖=1,…,𝑛.
  2. Si impostano i punti di soglia 𝑏𝑗, 𝑗=1,…,𝑛−1 ai valori centrali tra livelli successivi: 𝑏𝑗=12(𝑎𝑗+1+𝑎𝑗).
  3. Si ricalcolano i livelli di quantizzazione 𝑎𝑖, 𝑖=1,…,𝑛 imponendoli pari al valor medio del segnale nell’intervallo [𝑏𝑖−1,𝑏𝑖], con 𝑏0=−∞ e 𝑏𝑛=+∞.
  4. Si calcola l’errore quadratico medio confrontandolo con il ciclo precedente. Se la variazione è inferiore a una certa soglia, allora ci si può fermare. Altrimenti si ripete il ciclo dal punto 2.

Una volta quantizzato il segnale abbiamo ottenuto campioni discreti con un numero finito di livelli di ampiezza. Quindi si può rappresentare il segnale in forma simbolica, associando ad ogni campione un codice (tipicamente binario).

Il codificatore deve quindi associare una sequenza biunivoca di 𝐵 bit a ogni campione, che codificherà il suo livello tra 2𝐵 possibili livelli.

L’intero processo di campionamento, quantizzazione e codifica prende il nome di PCM.

In uscita dalla PCM, avremo una sequenza di bit, emessi con una certa frequenza. Per un segnale con 𝑁 campioni al secondo e 𝑀 livelli, il bitrate sarà:

𝑟𝑏=𝑁log2(𝑀)=𝑁𝐵

Quindi il bitrate è legato alla massima frequenza (larghezza di banda) del segnale e alla qualità che vogliamo ottenere dopo la quantizzazione.