Anda di halaman 1dari 109

Universit degli Studi di Palermo

Trattamento e Compressione
di Dati Multimediali
Parte 1

Prof. Edoardo Ardizzone

A.A. 2002-2003

Universit degli Studi


di Palermo

Alcuni richiami
9 Un sistema per la compressione-decompressione di immagini consiste di
due distinte unit strutturali: il codificatore (encoder) ed il decodificatore
(decoder):
f ( x, y )

Codificatore
di sorgente

Codificatore
di canale

Canale

Codificatore

Decodificatore
di canale

Decodificatore
di sorgente

f ( x, y )

Decodificatore

9 Limmagine di ingresso, f(x,y), elaborata dal codificatore, che genera un


set di simboli del codice i quali vengono trasmessi, attraverso il canale,
fino al decodificatore, che genera una immagine ricostruita f ( x, y )
9 In generale, f ( x, y ) pu essere oppure no una replica esatta della f(x,y)
E. Ardizzone

Universit degli Studi


di Palermo

Alcuni richiami
9 Se la replica esatta, il sistema si dice error free o information preserving,
in caso contrario esso manifesta un certo grado di distorsione nellimmagine
ricostruita
9 Sia il codificatore che il decodificatore sono costituiti da due sotto-blocchi
relativamente indipendenti
9 In particolare, lencoder costituito dal codificatore di sorgente, che
rimuove le ridondanze presenti nei dati di input generando una
rappresentazione codificata, e dal codificatore di canale, che incrementa
limmunit al rumore del segnale di uscita del codificatore di sorgente
9 Il decodificatore comprende il decodificatore di canale ed il decodificatore
di sorgente, che svolgono le funzioni inverse rispetto a quelle svolte dai
blocchi del codificatore
9 Se il canale di trasmissione senza errore, codificatore e decodificatore di
canale vengono omessi
E. Ardizzone

Universit degli Studi


di Palermo

Alcuni richiami

9 In generale, il codificatore di sorgente opera su tutte e tre le forme possibili


di ridondanza. La specificit dellapplicazione, e i connessi criteri di
fedelt, determinano la tecnica pi appropriata da utilizzare
9 Normalmente, possibile utilizzare un modello separato per ciascuna delle
tre operazioni di riduzione della ridondanza:

f ( x, y )

Mapper

Quantizzatore

Codificatore
di simbolo

Canale

Codificatore di sorgente

9 Compito del mapper quello di trasformare i dati di input in un formato


(normalmente non visuale) pensato per ridurre la ridondanza interpixel
9 Questa operazione pu direttamente effettuare una compressione, oppure
no
E. Ardizzone

Universit degli Studi


di Palermo

Alcuni richiami

9 Per esempio, le tecniche di run-length coding assicurano un certo grado di


compressione mentre contemporaneamente effettuano il mapping, invece la
rappresentazione di una immagine mediante i coefficienti di una sua
trasformata non d compressione diretta, bens predispone i dati alla
compressione che avviene negli stadi successivi del processo di codifica
9 Loperazione di mapping in genere reversibile
9 Il quantizzatore riduce la ridondanza psicovisuale presente alluscita del
mapper, in generale nel rispetto di un criterio di fedelt
9 Dato che la quantizzazione una operazione irreversibile, il quantizzatore
non pu essere presente se la compressione deve essere senza perdita di
informazione
9 Infine il codificatore di simbolo genera luscita complessiva del processo di
compressione, utilizzando un codice a lunghezza di parola fissa o, pi
frequentemente, variabile, che sfrutta la ridondanza della codifica
9 Anche la codifica di simbolo una operazione reversibile
E. Ardizzone

Universit degli Studi


di Palermo

Alcuni richiami

9 In questa schematizzazione, il processo di compressione stato


esplicitamente scomposto in tre fasi successive
9 Non necessariamente questo avviene negli algoritmi reali di compressione:
come gi detto, loperazione di quantizzazione pu non essere presente,
mentre in altri casi alcune fasi, per esempio mapping e quantizzazione,
possono essere effettuate contemporaneamente
9 Il decodificatore di sorgente contiene solo due blocchi, che effettuano in
ordine rovesciato linversione delle operazioni dei corrispondenti blocchi
del codificatore
9 Non pu esistere un
quantizzatore inverso, dato che
loperazione del quantizzatore
irreversibile

Canale

Decodificatore
di simbolo

Mapper inverso

f ( x, y )

Decodificatore di sorgente
E. Ardizzone

Universit degli Studi


di Palermo

Alcuni richiami
9 Quando il canale di trasmissione rumoroso, limmunit al rumore del
segnale pu essere incrementata dallazione del codificatore di canale, che
introduce un grado controllato di ridondanza nel segnale compresso dal
codificatore di sorgente, utilizzando tecniche di codifica (per esempio alla
Hamming) gi note da altre discipline
9 Questa operazione, che viene poi invertita in ricezione dal decodificatore
di canale, ovviamente costosa dal punto di vista del rapporto di
compressione complessivo

E. Ardizzone

Universit degli Studi


di Palermo

Alcuni richiami
9 Se E un evento casuale la cui probabilit P(E), linformazione ad esso
associata espressa da
1
I ( E ) = log
= log P ( E )
P( E )
9 I(E), detta anche la auto-informazione di E, si misura in unit di
informazione determinate dalla base del logaritmo. Se essa 2,
linformazione si misura in unit binarie o binit (da binary unit) o bit
9 Se levento la generazione di un simbolo da parte di una sorgente di
informazione discreta e a memoria zero, lentropia o incertezza della
sorgente, ovvero la quantit media di informazione associata alla singola
generazione di un simbolo da parte della sorgente, data da
J

H = P (a j ) log P (a j )
j =1

E. Ardizzone

Universit degli Studi


di Palermo

Alcuni richiami
9 Lentropia si misura in bit ed tanto maggiore quanto pi grande
lincertezza della sorgente, ovvero quanto maggiore linformazione ad
essa associata
9 Se i simboli della sorgente sono equiprobabili, lentropia massima: ad ogni
emissione la sorgente fornisce la massima informazione possibile
9 Supponiamo adesso che ad ogni simbolo della sorgente sia associata una
parola di un codice a lunghezza variabile
9 La lunghezza media delle parole del codice, espressa in bit per simbolo, il
bit rate del sistema di codifica:
J

Lavg = l (a j ) P (a j )
j =1

E. Ardizzone

Universit degli Studi


di Palermo

Alcuni richiami
9 In assenza di rumore nel canale di trasmissione e nel sistema di codifica, un
risultato fondamentale della teoria dellinformazione espresso dal teorema di
Shannon della codifica priva di rumore (noto anche come I teorema di
Shannon): per una sorgente di informazione discreta e a memoria zero, il bit
rate minimo pari allentropia della sorgente
9 Lesistenza di tale limite teorico inferiore consente di stabilire in modo
semplice una misura dellefficienza di una tecnica di codifica a lunghezza
variabile:
=

H
Lavg

H lentropia, mentre Lavg la lunghezza media


dei codeword del codice utilizzato

E. Ardizzone

10

Universit degli Studi


di Palermo

Alcuni richiami
9 La definizione pu essere generalizzata per valutare lefficienza relativa
del codice C2 rispetto al codice C1:
Lavg1
Lavg1 e Lavg2 sono le lunghezze medie dei codeword
=
dei due codici, e si suppone Lavg2 > Lavg1
Lavg 2
9 Un parametro complementare allefficienza la ridondanza del codice, che
pu essere definita semplicemente come:
= 1

Se un codice raggiungesse il limite teorico, la sua efficienza


sarebbe massima, e la sua ridondanza sarebbe nulla

E. Ardizzone

11

Universit degli Studi


di Palermo

Compressione senza perdita


9 Le tecniche di compressione senza perdita, peraltro le uniche accettabili o
legalmente possibili in alcune applicazioni, consentono di raggiungere rapporti
di compressione normalmente non superiori a 10 20
9 Possono essere applicate sia a immagini binarie sia ad immagini a livelli
9 Come si visto, prevedono normalmente sia una operazione di mapping sia
una codifica di simbolo
9 Supponiamo dapprima di voler ridurre solo la ridondanza della codifica.
Questo pu essere fatto con una codifica a lunghezza variabile (VLC), che
assegni i codeword pi brevi ai livelli di grigio pi probabili, in modo da
L 1
minimizzare la
Lavg = l ( rk ) pr ( rk )
k =0

9 In realt, tecniche di questo tipo possono operare direttamente sui pixel o su


una loro rappresentazione ottenuta attraverso un mapping capace di ridurre
anche la ridondanza interpixel
E. Ardizzone

12

Universit degli Studi


di Palermo

Compressione alla Huffman


9 La tecnica pi nota per la riduzione della ridondanza di codifica dovuta a
D.A. Huffman: essa realizza la migliore performance possibile in caso di
codifica individuale dei simboli emessi da una sorgente
9 I codici Huffman sono pertanto codici a codeword di lunghezza variabile: i
simboli dellalfabeto che costituiscono il messaggio sono codificati con
sequenze di bit di diversa lunghezza
9 La codifica Huffman ottima, secondo il teorema della codifica senza
perdite, in quanto permette di ottenere la lunghezza media di codeword
minima tra tutti i possibili sistemi di codifica di simbolo a blocchi, quindi
quella che meglio approssima lentropia della sorgente

E. Ardizzone

13

Universit degli Studi


di Palermo

Caratteristiche dei codici Huffman


9 La costruzione dei codici Huffman pu risultare computazionalmente molto
gravosa
9 Infatti, per una sorgente caratterizzata da un alfabeto di J simboli occorrono
J - 2 riduzioni della sorgente e J - 2 passi di assegnazione delle parole ai
simboli
9 Una immagine codificata con 8 bit/pixel richiede pertanto 254 riduzioni e
254 assegnazioni
9 Inoltre, la codifica alla Huffman richiede la conoscenza della statistica dei
livelli di grigio dellimmagine
9 Per contro, una volta costruito il codice, le operazioni di codifica e
decodifica sono estremamente semplici, e possono essere realizzate per
ispezione di appropriate tabelle di look-up

E. Ardizzone

14

Universit degli Studi


di Palermo

Caratteristiche dei codici Huffman


9 Un codice Huffman un codice a blocchi, istantaneo, univocamente
decodificabile:
9 A blocchi, in quanto ogni simbolo della sorgente associato ad una
sequenza fissata di simboli del codice
9 Istantaneo, in quanto in una stringa di simboli del codice, ogni parola
pu essere decodificata senza attendere simboli successivi
9 Univocamente decodificabile, in quanto ogni stringa di simboli del
codice pu essere decodificata in un solo modo
9 La complessit computazionale della costruzione non tuttavia lunico
problema dei codici Huffman, in quanto, per consentire la decodifica in
modo corretto, linsieme dei codeword (il cosiddetto codebook) deve essere
reso noto al decoder
9 In generale, questo significa che anche il codebook va trasmesso o
memorizzato, insieme con i dati codificati, costituendo un overhead per il
processo di codifica - decodifica
E. Ardizzone

15

Universit degli Studi


di Palermo

Caratteristiche dei codici Huffman

9 La memoria del codebook M, definita come la somma delle lunghezze di


tutte le parole del codice, diventa quindi un parametro significativo
9 Per ovviare alla complessit di generazione dei codici Huffman, si ricorre
spesso a varianti computazionalmente pi efficienti nella costruzione, e
quasi-ottime nella prestazione, alcune delle quali sono studiate in modo da
affrontare anche il problema della dimensione della memoria del codebook
9 Abbiamo esaminato alcuni di questi codici Huffman modificati, tutti meno
efficienti del codice Huffman per quanto riguarda lefficienza di
compressione, ma pi semplici da costruire

E. Ardizzone

16

Universit degli Studi


di Palermo

Codifica aritmetica
9 E un altro metodo di compressione che sfrutta la ridondanza della codifica
9 A differenza dei codici Huffman e degli altri codici a lunghezza di parola
variabile finora esaminati, la codifica aritmetica non genera codici a
blocchi, in quanto non esiste pi una corrispondenza uno a uno tra un
simbolo della sorgente e una parola del codice
9 E invece un messaggio, cio una sequenza di simboli della sorgente, a
corrispondere ad una singola parola del codice
9 In tal modo non pi necessario associare ad ogni simbolo della sorgente
un numero intero di bit, come nel caso dei codici Huffman, e pertanto la
codifica aritmetica teoricamente in grado di raggiungere il limite previsto
dal teorema della codifica priva di rumore, costituito dallentropia
9 Sotto questaspetto, stato dimostrato che la lunghezza media delle parole
di un codice Huffman soddisfa la disuguaglianza:
H Lavg < H + p max + 0.086
E. Ardizzone

17

Universit degli Studi


di Palermo

Codifica aritmetica
9 Pertanto il limite superiore della lunghezza media di parola ottenibile con
un codice Huffman dipende dallentropia H e da pmax, la probabilit
massima di occorrenza dei simboli della sorgente
9 Se in particolare le probabilit di occorrenza variano in un range molto
ampio, il limite superiore pu diventare elevato, impedendo una efficace
riduzione della ridondanza della codifica
9 Consideriamo un caso estremo: lalfabeto della sorgente fatto di due soli
simboli, uno con probabilit molto elevata, vicina a 1, laltro con
probabilit molto bassa, vicina a 0
9 Lentropia della sorgente in queste condizioni molto bassa, dato che
lincertezza pochissima. Tuttavia il codice Huffman, necessariamente,
sar costituito da due parole di un bit, una per ciascun simbolo, quindi con
Lavg = 1
9 Pertanto lefficienza del codice praticamente nulla, e la sua ridondanza
quasi del 100%
E. Ardizzone

18

Universit degli Studi


di Palermo

Codifica aritmetica

9 Questo esempio stressa il fatto che linefficienza del codice Huffman


dovuta alla necessit di codificare i simboli della sorgente con numeri
interi di bit
9 Invece la codifica aritmetica non ha questo vincolo. Per illustrare la
tecnica, consideriamo una sorgente con alfabeto di 6 simboli, con le
probabilit indicate:
S1

0.30

[0, 0.30)

S2

0.10 [0.30, 0.40)

S3

0.20

[0.40, 0.60)

S4

0.05

[0.60, 0.65)

S5

0.10

[0.65, 0.75)

S6

0.25

[0.75, 1)

Supponiamo che il messaggio da codificare sia


proprio S1 S2 S3 S4 S5 S6
Dato che la somma delle probabilit uguale a
1, utilizziamo un intervallo (reale) di lunghezza
pari a 1 per rappresentare la distribuzione delle
probabilit dei simboli della sorgente (si noti
che non necessario riordinare i simboli)
E. Ardizzone

19

Universit degli Studi


di Palermo

Codifica aritmetica

9 La probabilit di ogni simbolo rappresentata da un intervallo (chiuso a


sinistra, aperto a destra), mostrato nella tabella precedente e nella figura:
1

0.3

0.12

0.108

0.1059

0.1058250
S6

0.75

0.225

0.65
0.6

0.195
0.18

S5

0.1058175

S4
S3

0.4

0.12

0.3

0.09

S2

S1
0

0.09

0.102

E. Ardizzone

0.1056

0.105795

20

Universit degli Studi


di Palermo

Codifica aritmetica

9 Allinizio del processo di codifica, lintero intervallo [0, 1) occupato dal


messaggio da codificare: ci significa che un numero reale in questo
intervallo pu rappresentare il messaggio stesso. Quale numero?
9 Dato che il simbolo S1 il primo del messaggio, lintervallo del messaggio
ristretto inizialmente a [0, 0.3). Questo rappresentato graficamente
visualizzando lintervallo corrispondente a S1 in modo che esso venga ad
occupare lintera figura
9 Questa restrizione dellintervallo del messaggio significa che qualunque
numero reale maggiore o uguale a 0 e minore di 0.3 pu essere utilizzato per
rappresentare il simbolo S1 ovvero qualunque messaggio composto da
simboli della sorgente in esame e cominciante con S1
9 Lintervallo ristretto viene quindi nuovamente suddiviso in intervalli
semiaperti a destra, la cui dimensione rispetta la distribuzione delle
probabilit dei simboli della sorgente
E. Ardizzone

21

Universit degli Studi


di Palermo

Codifica aritmetica

9 Poich il secondo simbolo del messaggio S2, qualunque numero reale


maggiore o uguale di 0.09 e minore di 0.12 pu essere usato per
rappresentare la stringa S1 S2 ovvero qualunque messaggio composto da
simboli della sorgente in esame e cominciante con S1 S2
9 Il procedimento viene quindi reiterato prendendo in considerazione, uno
dopo laltro, i simboli che compongono il messaggio, restringendo i
relativi intervalli, e cos via, fino alla fine del messaggio
9 Luscita del processo quindi un intervallo, nellesempio [0.1058175,
0.1058250): qualunque numero in tale intervallo pu essere utilizzato per
codificare il messaggio originario
9 Spesso, per, il limite inferiore dellintervallo che viene utilizzato per
codificare il messaggio
9 Nellesempio si sono usati numeri decimali, ma il principio lo stesso
anche nel caso della codifica aritmetica binaria
E. Ardizzone

22

Universit degli Studi


di Palermo

Codifica aritmetica

9 Vediamo adesso il processo di decodifica, assumendo che il numero


utilizzato per la codifica sia lestremo inferiore dellintervallo finale
9 Per ipotesi, al decodificatore nota la distribuzione delle probabilit dei
simboli della sorgente, nonch la suddivisione dellintervallo del messaggio
9 Confrontando il codice (cio il numero 0.1058175) con gli estremi degli
intervalli semiaperti, il decoder determina lappartenenza del codice
allintervallo [0, 0.3), e stabilisce pertanto che il primo simbolo del
messaggio decodificato S1
9 A questo punto il decoder pu determinare la suddivisione del primo
intervallo ristretto [0, 0.3) in intervalli, e quindi confrontare il codice con gli
estremi di questi ultimi
9 In tal modo viene determinata lappartenenza del codice allintervallo [0.09,
0.12), per cui risulta stabilita la presenza di S2 come secondo simbolo del
messaggio
9 Gli stessi passi vengono reiterati, fino alla fine del processo di decodifica
E. Ardizzone

23

Universit degli Studi


di Palermo

Codifica aritmetica

9 Risulta evidente la necessit di un simbolo di fine messaggio noto al


decoder, affinch esso possa fermare il processo di decodifica
9 Lillustrazione del processo di codifica - decodifica, che si basa solo su
operazioni aritmetiche, giustifica la denominazione di questa tecnica
9 Ovviamente, al crescere della lunghezza del messaggio diminuisce la
dimensione dellintervallo finale, ossia cresce la precisione aritmetica
richiesta nella rappresentazione dei numeri. Questo ha a lungo costituito un
limite alla utilizzazione pratica della codifica aritmetica
9 Il problema stato risolto alla fine degli anni 70, con la cosiddetta
implementazione incrementale della codifica aritmetica, che consente
lutilizzazione di rappresentazioni numeriche di precisione finita
9 Limplementazione incrementale basata sullosservazione che con il
progredire del processo di codifica, le cifre iniziali degli estremi
dellintervallo ristretto corrente non vengono pi modificate, e possono
quindi essere trasmesse o memorizzate prima della conclusione della
codifica stessa
E. Ardizzone

24

Universit degli Studi


di Palermo

Codifica aritmetica

9 Nellesempio precedente, man mano che i simboli del messaggio vengono


codificati, la restrizione degli intervalli procede nel modo indicato in tabella:
Simb. Estr. inf.

Estr. sup.

S1

0.30

Usc. accum.
--

S2

0.09

0.12

--

S3

0.102

0.108

0.10

S4

0.1056

0.1059

0.105

S5

0.105795

0.105825

0.105

S6

0.1058175 0.1058250

0.1058

9 Dopo la codifica di S3 , le prime


due cifre degli estremi (cio 1 e 0)
non cambiano pi, e possono
essere accantonate
9 Dopo la codifica di S4, unaltra
cifra (cio 5) non cambia pi, e
pu essere accantonata

9 Luscita dellencoder viene quindi accumulata progressivamente (ultima


colonna della tabella precedente), e questo consente di trattare con precisione
finita gli estremi degli intervalli di restrizione, man mano che si generano,
indipendentemente dalla lunghezza del messaggio
E. Ardizzone

25

Universit degli Studi


di Palermo

Codifica aritmetica

9 Se lo stesso messaggio fosse codificato alla Huffman, si otterrebbe la


seguente assegnazione delle parole del codice:
La codifica della sequenza S1 S2 S3 S4 S5 S6
S1 0.30 00
darebbe luogo ad una stringa di 17 bit
S2 0.10 101
E invece possibile trovare, nellintervallo
S3 0.20 11
finale della codifica aritmetica [0.1058175,
S4 0.05 1001
0.1058250), almeno un numero, cio
0.1058211962, il cui valore binario, cio
0.10 1000
S5
0.000110111111111, ha una mantissa di 15 bit
0.25 01
S
6

9 Nellesempio, la codifica aritmetica si mostra pertanto pi efficiente della


codifica Huffman. In generale, si pu dimostrare che, al crescere della
lunghezza del messaggio, il codice aritmetico generato approssima
lentropia della sorgente meglio del codice Huffman, in particolare nel
caso di alfabeto con pochi simboli di probabilit molto differenti (per
esempio, immagini binarie di testi)
E. Ardizzone

26

Universit degli Studi


di Palermo

Codifica aritmetica

9 Bisogna per considerare loverhead portato dal simbolo di fine messaggio


9 Nelle versioni applicative dellalgoritmo, altri aspetti sono da tenere
presenti, per esempio la riduzione della complessit mediante eliminazione
delle operazioni di moltiplicazione, ladozione di aritmetica intera per
semplificare le realizzazioni hardware del sistema di codifica - decodifica,
etc.
9 Le implementazioni dellalgoritmo di codifica aritmetica prevedono quindi
un certo numero di soluzioni, che nella maggior parte dei casi sono state
brevettate. Il loro uso comporta quindi il pagamento di royalties
9 Questo ha comportato un ritardo nella diffusione della codifica aritmetica,
per quanto essa rappresenti il metodo di compressione a lunghezza
variabile pi efficiente
9 Per esempio, nella catena di operazioni previste dallo standard JPEG
presente una fase di compressione a lunghezza variabile, per la quale lo
standard lascia agli implementatori libert di scelta fra i sistemi esistenti.
Ovviamente nessuno ha preferito la codifica aritmetica
E. Ardizzone

27

Universit degli Studi


di Palermo

Codifica a dizionario
9 Le tecniche di compressione dictionary-based, molto adoperate nella codifica
di testi, operano rappresentando un simbolo o una stringa di simboli generati
da una sorgente mediante un indice alla parola di un dizionario, costruito a
partire dallalfabeto della sorgente
9 E qualcosa di analogo alla rappresentazione del nome di un mese, per
esempio settembre, con un numero, per esempio 9, ovvero alla
rappresentazione dei dati identificativi di una persona mediante il codice
fiscale
9 Sia la codifica aritmetica che le tecniche alla Huffman, basandosi sulla
probabilit di occorrenza dei simboli da codificare, ipotizzano una sorgente a
memoria zero
9 Questa ipotesi non per verificata in molte applicazioni, come per esempio
nella codifica di testi, in cui la struttura delle frasi o il contesto possono
giocare un ruolo importante
E. Ardizzone

28

Universit degli Studi


di Palermo

Codifica a dizionario
9 Infatti, in qualunque testo molto probabile che la lettera q sia seguita
dalla lettera u, e in certi contesti probabile che una certa parola, per
esempio immagine, sia seguita da altre parole, per esempio a livelli di
grigio
9 La strategia adottata nelle tecniche di codifica a dizionario quella di
costruire un dizionario contenente simboli o sequenze di simboli, cio
frasi, dellalfabeto della sorgente, di uso frequente
9 In fase di compressione, quando si incontra un simbolo o una frase
presente nel dizionario, la si codifica utilizzando lindice corrispondente (o
una sua versione codificata), altrimenti si ricorre ad una rappresentazione
meno efficiente
9 In maniera pi formale, dato una alfabeto A, un dizionario definito come
D = (P,C), dove P un insieme finito di frasi generate a partire da A e C
la funzione di codifica che effettua il mapping di P su un insieme di
codeword
E. Ardizzone

29

Universit degli Studi


di Palermo

Codifica a dizionario
9 E chiaro che la formulazione del dizionario il punto cruciale: se esso
non ben costruito, la procedura di codifica pu dare luogo ad una
espansione dei dati, invece che ad una compressione
9 In base al modo in cui il dizionario costruito, le tecniche di codifica a
dizionario si distinguono in statiche e adattive
9 La codifica a dizionario statica si basa sulluso di un dizionario fisso,
completamente costruito prima del processo di codecodifica, durante il
quale esso si suppone disponibile sia allencoder che al decoder
9 Si tratta quindi di tecniche molto semplici, ma scarsamente flessibili (cio
poco adatte alla applicazione in contesti anche non troppo differenti) e
poco efficienti, se confrontate con le tecniche adattive
9 La codifica a dizionario adattiva ipotizza invece la presenza, prima del
processo di codifica, solo di una versione iniziale del dizionario, che non
fisso e viene aggiornato durante la codifica, adattandosi allinput
E. Ardizzone

30

Universit degli Studi


di Palermo

Codifica a dizionario
9 Le tecniche di codifica a dizionario necessitano in ogni caso di una analisi
dellinput, in grado di rilevare la presenza di stringhe di simboli uguali a
voci del dizionario
9 Vengono normalmente privilegiate tecniche semplici, anche se non ottime,
di parsing, come il cosiddetto greedy parsing, in cui ad ogni passo di
codifica lencoder cerca la stringa di simboli di ingresso pi lunga uguale
ad una voce del dizionario
9 Consideriamo un dizionario caratterizzato da P = {a, b, ab, ba, bb, aab,
bbb}, con una funzione di codifica C espressa in forma tabellare da:
P
C

ab

ba

bb

aab

bbb

10 11

010

0101

01

11

0110

E. Ardizzone

31

Universit degli Studi


di Palermo

Codifica a dizionario
9 Supponiamo inoltre che linput da codificare sia abbaab
9 Utilizzando una tecnica di greedy parsing, la codifica procede accodando
progressivamente i codeword:
C (ab)

C (ba)

C (ab)

010

0101

010

9 Si pu facilmente vedere che la soluzione offerta dalla tecnica di greedy


parsing non ottima, infatti risulta pi efficiente la seguente:
C (a)

C (bb)

10

01

C (aab)
11

che d luogo ad una stringa di 6 bit, contro i 10 bit precedenti


E. Ardizzone

32

Universit degli Studi


di Palermo

Algoritmo LZ77
9 Praticamente tutte le tecniche esistenti di codifica a dizionario adattiva si
basano sui lavori di Ziv e Lempel, che hanno dato luogo a due classi di
algoritmi, rispettivamente noti come LZ77 e LZ78
9 Negli algoritmi LZ77, detti anche a finestra scorrevole, il dizionario
costituito dalla parte pi recentemente codificata del testo di input,
contenuta nel search buffer, mentre la porzione di testo da codificare al
passo corrente presente nel look-ahead buffer
9 Il testo da codificare confrontato con gli item del dizionario: la stringa di
matching pi lunga presente nel dizionario associata ad un indice o
puntatore o token, costituito da una tripla di valori
9 I due buffer insieme costituiscono una finestra, di dimensione fissa, che
scorre sullintero testo di input, dallinizio alla fine, durante il processo di
codifica
9 La dimensione dei due buffer normalmente molto diversa: il search
buffer tipicamente dellordine di qualche migliaio di simboli, il lookahead buffer di qualche decina o centinaio di simboli
E. Ardizzone

33

Universit degli Studi


di Palermo

Algoritmo LZ77
9 Illustriamo lapproccio LZ77 con un esempio. Supponiamo che il testo di
input sia quello indicato, e che ad un certo istante la posizione della
finestra scorrevole sia quella mostrata:
ikaccbadaccbaccbaccgikmoabcc
Search buffer

Look-ahead buffer

9 Il search buffer ha una dimensione di 9 simboli, che sono stati gi


codificati e costituiscono il dizionario, mentre il look-ahead buffer
contiene 6 simboli da codificare nel passo di codifica corrente
9 Il primo dei simboli da codificare b, pertanto si ricerca nel dizionario la
sua prima occorrenza, a partire dalla fine del dizionario stesso, cio dalla
posizione immediatamente a sinistra dello stesso b
9 Il match si verifica ad una distanza (o offset) dal primo simbolo del lookahead buffer pari a 6, e a partire da questa si individua anche la pi lunga
stringa di match, cio ba
E. Ardizzone

34

Universit degli Studi


di Palermo

Algoritmo LZ77
9 Non vi sono in questo caso altri match possibili, pertanto loffset (6) e la
lunghezza della stringa di match (2) vengono assegnati ai primi due item
della tripla che rappresenta il puntatore
9 Il terzo item il codeword assegnato al simbolo (in questo caso c)
immediatamente successivo alla stringa di match nel look-ahead buffer,
qui rappresentato da C(c), essendo C la funzione di codifica
9 Il puntatore, dopo questo passo, assume quindi il valore < 6, 2, C(c) >
9 Il terzo item viene incluso nel puntatore per consentire al decoder di poter
svolgere il suo lavoro anche se non si fosse trovato alcun match nel search
buffer
9 In tal caso, infatti, i due primi item del puntatore sarebbero entrambi 0, e il
terzo item rimarrebbe pari al codeword del primo simbolo del look-ahead
buffer (a questi valori infatti inizializzato il puntatore prima di iniziare la
ricerca)
E. Ardizzone

35

Universit degli Studi


di Palermo

Algoritmo LZ77
9 La finestra scorrevole quindi spostata verso destra di un numero di
posizioni pari a alla lunghezza della stringa di match pi 1 (3
nellesempio):
ikaccbadaccbaccbaccgikmoabcc
9 Il primo simbolo da codificare adesso c
9 Si ha immediatamente un primo match, di lunghezza 1, a distanza 1
9 Il secondo match, a distanza 4, per preferibile, in quanto consente una
stringa di match di lunghezza 5 (la ricerca del match pu infatti continuare
oltre il confine tra i due buffer)
9 C un terzo match possibile, a distanza 5, ma viene scartato come il
primo, in quanto anchesso di lunghezza 1
9 Il puntatore relativo a questo secondo passo assume pertanto il valore < 4,
5, C(g) >
E. Ardizzone

36

Universit degli Studi


di Palermo

Algoritmo LZ77
9 La finestra quindi spostata di 6 posizioni:
ikaccbadaccbaccbaccgikmoabcc
9 Non c alcun matching possibile in questo caso, per cui il valore assunto
dal puntatore <0, 0, C(i) >
9 Il processo di codifica continua allo stesso modo fino al termine dello
stream di input
9 La fase di decodifica molto pi semplice di quella di codifica, in quanto
non comporta la ricerca di situazioni di matching
9 Serviamoci dello stesso esempio per illustrare il processo di decodifica.
Supponiamo pertanto che ad un certo istante il search buffer contenga la
stringa, gi decodificata, a c c b a d a c c, e che si debba decodificare la
tripla < 6, 2, C(c) >
E. Ardizzone

37

Universit degli Studi


di Palermo

Algoritmo LZ77
9 La situazione dunque la seguente:
ikaccbadacc^
9 Ricevuta la tripla < 6, 2, C(c) >, il decoder sposta il puntatore di decodifica,
posizionato allinizio del look-ahead buffer (^), indietro di 6 posizioni
9 Viene cos individuato il simbolo b, e la stringa (lunga 2) che ha inizio a
partire da questa posizione viene copiata nel look-ahead buffer, mentre il
simbolo c, decodificato dal terzo item del puntatore di codifica, viene
scritto nella posizione immediatamente successiva
9 La finestra viene quindi fatta scorrere di 2 + 1 posizioni verso destra:
ikaccbadaccbac^
E. Ardizzone

38

Universit degli Studi


di Palermo

Algoritmo LZ77
9 Il valore del puntatore di codifica, da decodificare a questo punto, < 4, 5,
C(g) >
9 Pertanto il puntatore di decodifica spostato indietro di 4 posizioni,
localizzando il simbolo c, e la stringa lunga 5 che inizia in questa
posizione viene copiata nel look-ahead buffer
9 In realt solo 4 simboli sembrano al momento disponibili (cbac), per, una
volta copiato il primo di essi, la stringa pu essere considerata nella sua
totalit (cbacc)
9 Infine, il simbolo g viene accodato alla stringa appena copiata, e la finestra
viene spostata in avanti di 6 posizioni:
ikaccbadaccbaccbaccg^
9 Il valore del puntatore di codifica, da decodificare a questo punto, < 0, 0,
C(i) >
E. Ardizzone

39

Universit degli Studi


di Palermo

Algoritmo LZ77
9 Il decoder riconosce che non c possibilit di match nel dizionario, e
quindi si limita a copiare nel look-ahead buffer il simbolo i
9 La finestra quindi spostata di 1 posizione:
ikaccbadaccbaccbaccgi^
9 Il decoder a questo punto predisposto per il prossimo passo, e cos via
fino al termine del processo di decodifica, che come mostrato in grado di
ricostruire esattamente lo stream iniziale
9 Allinizio del processo di codifica, il contenuto del search buffer pu
essere del tutto arbitrario, per esempio una sequenza di blank
9 Indichiamo con SB la dimensione del search buffer, con L la dimensione
del look-ahead buffer e con S la dimensione dellalfabeto della sorgente
E. Ardizzone

40

Universit degli Studi


di Palermo

Algoritmo LZ77
9 Se la codifica realizzata in binario naturale, lapproccio LZ77 codifica
stringhe di simboli di lunghezza variabile con codeword di lunghezza fissa
9 Infatti loffset codificato utilizzando log2 SB bit, la lunghezza della
stringa di matching con log2 (SB+L) bit, ogni simbolo con log2 S bit,
dove z indica il pi piccolo intero maggiore di z
9 Dato che sono le sequenze di simboli pi recentemente codificati a
costituire il dizionario, lapproccio LZ77 in grado di adattarsi bene allo
stream di input
9 Daltro canto, se la distanza tra pattern ripetuti nello stream di ingresso
maggiore della dimensione del search buffer, lapproccio diviene
inefficiente, in quanto la struttura dellinput non di fatto utilizzata
9 Per tale motivo, per la compressione di testi la dimensione del search
buffer deve essere consistente: valori tipici sono SB + L 8192
E. Ardizzone

41

Universit degli Studi


di Palermo

Algoritmo LZ78
9 La dimensione (fissa) della finestra scorrevole non pu essere
incrementata a dismisura, in quanto ci comporta un aumento del numero
di bit richiesti per la codifica delloffset e della lunghezza della stringa di
matching, oltre che della complessit del parsing
9 Gli algoritmi LZ78 provvedono a risolvere gli inconvenienti legati alla
dimensione fissa della finestra, eliminando la finestra stessa: tutte le
stringhe di simboli codificate entrano nel dizionario (che quindi non ha
una dimensione fissa), man mano che il processo di codifica procede, fino
a che il dizionario non raggiunge una dimensione massima prefissata
9 A questo punto, se il codice sufficientemente efficiente, il dizionario
viene considerato fisso per il resto della codifica, altrimenti viene azzerato,
e la sua costruzione ricomincia
9 Lapproccio LZ78 utilizza coppie, e non triple, di valori per i puntatori di
codifica: vengono utilizzati solo la posizione del simbolo di inizio della
stringa di matching e il simbolo successivo ad essa, e non la lunghezza che
implicitamente nota al decoder
E. Ardizzone

42

Universit degli Studi


di Palermo

Algoritmo LZ78

9 Illustriamo anche lapproccio LZ78 con un esempio, riguardante la


codifica dello stream di input baccbaccacbcabccbbacc riportata nella
seguente tabella:
Indice

Puntatore

1
2
3
4
5
6
7
8
9
10
11

<0,C (b)>
<0,C (a)>
<0,C (c)>
<3,1>
<2,3>
<3,2>
<4,3>
<2,1>
<3,3>
<1,1>
<5,3>

Simboli codificati
b
a
c
cb
ac
ca
cbc
ab
cc
bb
acc
E. Ardizzone

43

Universit degli Studi


di Palermo

Algoritmo LZ78
9 Il primo simbolo da codificare b, per il quale allinizio del processo di
codifica non c alcun match possibile nel dizionario, che vuoto
9 Pertanto il puntatore di codifica relativo al primo simbolo assume il valore
<0, C(b)>, dove 0 indica lassenza di match nel dizionario e C(b) la
parola di codice attribuita a b. b a questo punto nel dizionario
9 Lo stesso processo si ripete per i due simboli seguenti, a e c
9 Il quarto simbolo, c, ha a questo punto un match nel dizionario, litem n. 3,
per cui pu iniziare la ricerca della stringa di match pi lunga possibile,
prendendo in considerazione dapprima il simbolo seguente, b, che viene
concatenato al precedente
9 La stringa di cui cercare il match dunque cb, a partire dalla entry n.3 del
dizionario
9 Nel dizionario non esiste match per la stringa cb, per cui essa viene
inserita nel dizionario come una nuova entry ed codificata con la coppia
<3,1>, dove 3 lindice del primo simbolo di match, c, e 1 lindice del
simbolo seguente nella stringa, b E. Ardizzone
44

Universit degli Studi


di Palermo

Algoritmo LZ78
9 Lo stesso avviene nel passo successivo: per il simbolo a esiste un match,
alla entry 2, ma non per la stringa ac, per cui essa inserita come nuova
entry nel dizionario ed codificata con la coppia <2, 3>
9 Analogamente si procede per la successiva stringa ca
9 Al passo successivo, la stringa di match pi lunga la cb, che a questo
punto gi esiste nel dizionario alla entry n. 4. Non c invece match per la
stringa cbc, che quindi viene aggiunta e codificata con la coppia <4,3>
9 Il processo di codifica prosegue nel modo indicato fino al termine dello
stream di input
9 E da notare che man mano che la codifica procede, aumenta la lunghezza
delle entry nel dizionario, e quindi lefficienza del processo di codifica
9 Durante il processo di decodifica, il dizionario viene costruito in maniera
analoga, a partire dalle coppie progressivamente ricevute, e nello stesso
tempo il testo viene decodificato
E. Ardizzone

45

Universit degli Studi


di Palermo

Algoritmo LZ78
9 Nellesempio, la prima coppia ricevuta la <0,C(b)>. La presenza dello 0
informa il decoder che non c match, per cui esso utilizza C(b) per
decodificare b, che diviene anche la prima entry del dizionario
9 Analogamente per i successivi simboli, a e c
9 Quando riceve la coppia <3,1>, il decoder apprende che i successivi
simboli del testo sono la entry n.3 e la entry n.1 del dizionario, cio c e b
9 La stringa cb quindi decodificata, ed inserita come nuova entry nel
dizionario
9 Analogamente per le successive stringhe, ac e ca
9 Quando riceve la coppia <4, 3>, il decoder apprende che i successivi
simboli del testo sono la entry n. 4 (stringa cb) e la entry n. 3 (simbolo c),
per cui cbc decodificata e appesa al dizionario
9 Il processo continua in modo analogo fino alla completa ricostruzione del
testo
E. Ardizzone

46

Universit degli Studi


di Palermo

Algoritmo LZW
9 Agli approcci LZ77 e LZ78, essenzialmente teorici, fu data consistenza
applicativa da parte di Welch negli anni 80
9 Lalgoritmo risultante, noto come LZW, oggi comunemente adoperato in
molte applicazioni (per esempio, in alcuni strumenti di compressione di
Unix, nei formati di immagini GIF e TIFF, in alcuni standard di
compressione dati per modem)
9 La principale variante introdotta nellalgoritmo LZW leliminazione del
secondo elemento della coppia utilizzata come puntatore di codifica,
ottenendo cos un significativo incremento dellefficienza di codifica
9 In altre parole, vengono inviati al decoder solo gli indici relativi alle entry
del dizionario
9 A tal fine, viene predisposto un dizionario iniziale, che consiste
normalmente dei soli simboli dellalfabeto utilizzato dalla sorgente
9 La codifica comincia prendendo in considerazione il primo simbolo del
testo di input
E. Ardizzone

47

Universit degli Studi


di Palermo

Algoritmo LZW
9 Questo simbolo ha ovviamente una entry nel dizionario (iniziale), per cui
lo si pu ritenere linizio di una stringa di matching, che comprende anche
il simbolo del testo immediatamente successivo
9 I due simboli vengono rispettivamente detti simbolo matched e simbolo
cascaded
9 La stringa cos ottenuta non ha match nel dizionario, al quale viene
aggiunta, e viene codificata utilizzando lindice del simbolo matched
9 Per illustrare lalgoritmo LZW, supponiamo di dover codificare il testo
accbadaccbaccbacc
9 Lalfabeto di sorgente dunque S = {a, b, c,d}
9 Lesempio illustrato nella tabella seguente, che mostra anche il
dizionario iniziale
E. Ardizzone

48

Universit degli Studi


di Palermo

Algoritmo LZW
Indice

Entry

1
2
3
4

a
b
c
d

5
6
7
8
9
10
11
12
13
14
15

ac
cc
cb
ba
ad
da
acc
cba
accb
bac

Simboli di input

accbadaccbaccbacc
Codifica

Dizionario
iniziale
a
c
c
b
a
d
a,c
c,b
a,c,c
b,a

E. Ardizzone

1
3
3
2
1
4
5
7
11
8

49

Universit degli Studi


di Palermo

Algoritmo LZW
9 Quando il primo simbolo, a, si presenta in input, lencoder trova un match
alla entry n. 1 del dizionario, e cerca quindi di costruire una stringa di
match pi lunga, utilizzando il simbolo di input immediatamente
successivo, c
9 La stringa ac non ha match, per cui viene aggiunta al dizionario (entry n.
5), mentre lindice del simbolo matched, a, viene codificato
9 Il secondo simbolo, c, presente nel dizionario, quindi viene costruita una
possibile stringa di match, utilizzando il simbolo successivo, c
9 La stinga cc non ha match, per cui viene aggiunta al dizionario (entry n. 6),
mentre lindice del simbolo matched, c, viene codificato
9 Il processo di codifica continua nello stesso modo. Per esempio, la entry n.
11 del dizionario costruita partendo da un simbolo di input che a. Esso
ha un entry nel dizionario, per cui si considera ac come una possibile
stringa di match
E. Ardizzone

50

Universit degli Studi


di Palermo

Algoritmo LZW
9 Dato che anche la stringa ac ha un entry nel dizionario, si amplia la stringa
di matching, che diviene acc
9 La stringa acc non ha match, per cui viene aggiunta al dizionario (entry n.
11) e codificata mediante lindice della stringa matched, 5
9 Come per lalgoritmo LZ78, al progredire della codifica gli item del
dizionario diventano pi lunghi, migliorando lefficienza della codifica
9 In fase di decodifica, disponibile il dizionario iniziale
9 Allarrivo del primo indice, 1, il decoder decodifica il simbolo
corrispondente, a
9 Allarrivo del secondo indice, 3, il decoder decodifica il simbolo
corrispondente, c.
9 Inoltre, conoscendo la regola usata dallencoder, il decoder sa anche che i
due simboli devono essere concatenati in una stringa, ac, che va aggiunta
al dizionario, come entry n. 5
E. Ardizzone

51

Universit degli Studi


di Palermo

Algoritmo LZW
9 In generale, ad ogni passo di decodifica il decoder deve partire dallultima
delle due stringhe di simboli utilizzate al passo precedente, ai fini della
costruzione della stringa, detta stringa presente, da aggiungere al
dizionario, mentre lindice appena ricevuto, detto indice presente,
utilizzato per individuare nel dizionario la stringa di simboli da aggiungere
al testo decodificato. E il primo di questa stringa di simboli che viene
utilizzato per completare la stringa presente
9 Pertanto, allarrivo del terzo indice, 3, il decoder decodifica il simbolo
corrispondente. Inoltre aggiunge la stringa cc al dizionario, come entry
n.6, e cos via
9 In questo modo il decoder pu costruire un dizionario esattamente uguale a
quello utilizzato in fase di codifica, e contemporaneamente decodificare il
testo
E. Ardizzone

52

Universit degli Studi


di Palermo

Codifica Bit-Plane
9 Una tecnica di codifica (senza perdita) in grado di ridurre la ridondanza
interpixel presente in una immagine a livelli (di grigio o di colore) consiste
nella rappresentazione dellimmagine mediante un set di immagini binarie
e nella codifica individuale di queste ultime, con metodi di compressione
appropriati per le immagini a due livelli (compressione binaria)
9 La rappresentazione di una immagine a livelli mediante pi immagini
binarie pu essere considerata una derivazione diretta della
rappresentazione per piani di bit che abbiamo gi analizzato, e che viene
adesso brevemente richiamata
9 Una immagine a 8 bit/pixel si pu considerare costituita da 8 piani di 1 bit,
dal piano 0 (che contiene il bit meno significativo di ogni pixel) al piano 7
(che contiene il bit pi significativo di ogni pixel)
9 Per esempio, in unimmagine i cui primi pixel abbiano rispettivamente i
valori 192, 65, 63, 64, .... si ha:
E. Ardizzone

53

Universit degli Studi


di Palermo

Codifica Bit-Plane
Decimale
192 65 63 64 .

Binario
Piano
1 0 0 0.....
7
1 1 0 1.
6
0 0 1 0.
5
0 0 1 0.
4
0 0 1 0.
3
0 0 1 0.
2
0 0 1 0.
1
0 1 1 0.
0
9 Pi formalmente, la scomposizione una conseguenza del fatto che, per una
immagine a livelli di grigio a m bit/pixel, la rappresentazione polinomiale dei
livelli di grigio :
a m 1 2 m 1 + a m 2 2 m 2 + K + a1 21 + a0 2 0
E. Ardizzone

54

Universit degli Studi


di Palermo

Codifica Bit-Plane
Un esempio:

1
E. Ardizzone

55

Universit degli Studi


di Palermo

Codifica Bit-Plane
9 I coefficienti ai da ogni pixel dellimmagine originaria sono pertanto anche i
valori dei pixel ad esso corrispondenti nelle m immagini binarie nelle quali
scomposta limmagine di partenza
9 Se la compressione dellimmagine a livelli viene effettuata applicando
metodi di compressione binaria alle immagini binarie componenti, chiaro
che il rapporto di compressione ottenibile legato alla efficienza di questi
ultimi
9 Daltra parte, in una immagine binaria lo sfruttamento della ridondanza
interpixel implicitamente associato alla ripetizione di pixel dello stesso
valore: ampie regioni tutte bianche o tutte nere possono essere codificate con
pochi bit (al limite uno solo: se tutta limmagine bianca oppure nera, basta
un solo bit, 1 oppure 0, per rappresentarla)
9 Viceversa, se nellimmagine binaria sono presenti frequenti cambiamenti del
valore dei pixel, per esempio lungo una linea, non possibile ottenere
codifiche efficienti
E. Ardizzone

56

Universit degli Studi


di Palermo

Codifica Bit-Plane

9 Daltro canto questo in generale vero per lo sfruttamento della ridondanza


interpixel: pi simili sono i valori dei pixel, cio maggiore la loro
correlazione, pi efficientemente si riesce a prevederli
9 Da questo punto di vista, la rappresentazione bit-plane ha uno svantaggio
intrinseco: piccole variazioni del livello di grigio possono ripercuotersi in
maniera significativa sulla complessit dei piani di bit
9 Si consideri nellesempio precedente la situazione dei piani di bit, per quanto
riguarda i pixel di valore 65, 63, 64: una variazione assolutamente marginale
del livello di grigio si traduce in transizioni 0 - 1 oppure 1 - 0 in quasi tutti i
piani di bit
9 Un metodo di rappresentazione alternativo, che riduce leffetto delle piccole
variazioni dei livelli di grigio, consiste nelleffettuare, prima della
scomposizione vera e propria, una codifica Gray a m bit dellimmagine
9 Questo codice, come noto, gode della propriet che due parole consecutive
differiscono solo per un bit
E. Ardizzone

57

Universit degli Studi


di Palermo

Codifica Bit-Plane

9 Per esempio, i codici Gray corrispondenti a 127 e 128 sono, rispettivamente,


11000000 e 01000000: si ha una transizione solo su uno dei piani, mentre
nella codifica binaria le transizioni sono su tutti i piani
9 La conversione da binario a Gray pu essere effettuata nel modo seguente:

OR esclusivo

g i = ai ai +1 , per 0 i m 2
g m 1 = am 1

9 Naturalmente, la complessit dei piani di bit decresce, sia per la codifica


binaria che per la codifica Gray, allaumentare del peso dei bit, ed inoltre la
complessit dei piani Gray inferiore a quella dei corrispondenti piani binari

E. Ardizzone

58

Universit degli Studi


di Palermo

Codifica run-length
9 Uno dei metodi pi noti di compressione di immagini binarie si basa sulla
rappresentazione di ogni riga dellimmagine mediante la sequenza delle
lunghezze delle successioni (o run) di pixel consecutivi bianchi o neri
9 Il metodo, detto della codifica run - length (RLC o RLE), si basa sulla
osservazione che una immagine binaria contiene regioni di intensit
costante, per cui una rappresentazione pi efficiente pu essere costruita
effettuando un mapping dei pixel presenti lungo ogni riga in una sequenza
di coppie del tipo (g1, r1), (g2, r2), .
9 Qui gi li-mo livello di grigio incontrato lungo la riga dellimmagine, e ri
la lunghezza delli-mo run
9 La rappresentazione mediante lunghezze di run ovviamente non visuale
9 Si tratta di una rappresentazione molto efficiente, soprattutto nella codifica
di documenti finalizzata alla trasmissione via fax, che in genere avviene
mediante immagini a risoluzione abbastanza elevata
E. Ardizzone

59

Universit degli Studi


di Palermo

Codifica run-length
9 La RLC che sfrutta solo la correlazione tra pixel lungo la stessa riga
detta RLC 1-D, mentre la RLC 2-D sfrutta anche la correlazione verticale
RLC 1-D
9 In linea di principio, ogni gruppo di 0 o di 1 incontrati in una scansione da
sinistra a destra viene codificato mediante una coppia di interi, del tipo (gi,
ri)
9 Per esempio, una riga con il profilo di grigio indicato
diventa una sequenza di coppie valore
220
- lunghezza di run:
(1, 85), (0, 63), (1, 27), (0, 213), (1, 92), (0, 32)

50
0

84

147 174

387

479 511

Qual il rapporto di compressione ?

9 In pratica, dato che i valori dei pixel possono essere 1 oppure 0, basta
codificare le lunghezze di run e stabilire una convenzione per determinarne il
E. Ardizzone
60
valore

Universit degli Studi


di Palermo

Codifica run-length
9 Gli approcci pi comuni per la determinazione del valore di un run sono:
9 la specifica del valore del primo run di ogni riga
9 lassunzione di un run bianco iniziale, di lunghezza eventualmente
nulla
9 Alla conclusione di ogni riga, un codeword speciale, noto al decoder,
segnala la situazione di fine linea (EOL, End -Of -Line)
9 Oltre alla compressione diretta, si pu ottenere una ulteriore riduzione dei
dati effettuando una codifica a lunghezza variabile delle lunghezze di run
9 A tale scopo, le possibili lunghezze di run possono essere utilizzate per
costruire un alfabeto di sorgente, di questi simboli si possono calcolare le
probabilit, etc.
9 In effetti, misure effettuate su tipici documenti binari mostrano che il
massimo dellefficienza di compressione si raggiunge quando run bianchi
e run neri sono codificati separatamente
E. Ardizzone

61

Universit degli Studi


di Palermo

Codifica run-length
9 Se aj un simbolo che indica un run nero di lunghezza j, con j = 1, , J ,
essendo J la massima lunghezza dei run neri, si pu stimare la probabilit
di emissione di aj da parte di una immaginaria sorgente di run neri, PB(aj),
dividendo il numero di run neri di lunghezza j presenti nellimmagine per
il numero totale di run neri
9 Si pu quindi stimare lentropia di questa sorgente di run neri:
J

H B = PB (a j ) log PB (a j )
j =1

9 Inoltre la lunghezza media dei run neri data da:


J

LB = jPB ( a j )
j =1

9 Le stesse grandezze per i run bianchi, HW e LW, possono essere definite e


calcolate in modo analogo
E. Ardizzone

62

Universit degli Studi


di Palermo

Codifica run-length

9 Una misura (approssimata) dellentropia delle lunghezze di run di entrambi i


tipi data da:
H + HW
H= B
LB + LW
9 Questo pu dare unidea del migliore bit rate ottenibile per la codifica delle
lunghezze di run di una immagine binaria, utilizzando codici a lunghezza
variabile
9 Nella versione dellalgoritmo RLC 1-D adottato in alcuni importanti
standard di codifica per la trasmissione via fax, le lunghezze dei run (i
bianchi distinti dai neri) vengono codificate utilizzando una tecnica alla
Huffman applicata ai due alfabeti di sorgente
9 Poich lo standard prevede 1728 pixel per ogni linea di scansione, questa
anche la massima lunghezza di run, sia nero che bianco. Ne conseguono due
alfabeti a 1729 simboli che porterebbero a un codebook con una memoria
troppo grande
E. Ardizzone

63

Universit degli Studi


di Palermo

Codifica run-length
9 Si ricorre quindi ad un codice Huffman modificato, detto MH, nel quale,
se la lunghezza di run minore di 63, il codeword desunto direttamente
dalla tabella dei codici di terminazione, di cui viene di seguito mostrato un
frammento:
Indicando con r la lunghezza
Lung. run
Run bianchi
Run neri
di run, si ha in altri termini:
0
00110101
0000110111
1
2
3
4
5
6
7
8

61
62
63

000111
0111
1000
1011
1100
1110
1111
10011
.
00110010
00110011
00110100

010
11
10
011
0011
0010
00011
000101
.
000001011010
000001100110
000001100111

E. Ardizzone

r=
M 64 + T

per r 63
per r > 63

dove T = 0, , 63 ed detta
run-length di terminazione,
mentre M = 1, , 27 e M x 64
detta run-length di makeup

64

Universit degli Studi


di Palermo

Codifica run-length
9 Nel primo caso, r direttamente rappresentata da un codice di
terminazione, mentre nel secondo caso r rappresentata da un codeword
di makeup (corrispondente nella tabella dei codici di makeup, parte della
quale riportata qui sotto, alla lunghezza di makeup pi grande non
superiore ad r), seguito da un codeword di terminazione che rappresenta la
differenza tra la lunghezza r e la lunghezza di makeup
Lung. run
64
128
192
256
.
1600
1664
1728
EOL

Run bianchi
11011
10010
010111
0110111
.
010011010
011000
010011011

Run neri
0000001111
000011001000
000011001001
000001011011
.
0000001011011
0000001100100
0000001100101

00000000001

00000000001
E. Ardizzone

Per esempio, un run bianco


lungo 189 pixel sar codificato
mediante il codeword di
makeup 10010, seguito dal
codeword di terminazione
corrispondente a 189 - 128 = 61,
ovvero 00110010
65

Universit degli Studi


di Palermo

Codifica run-length

9 Lo standard richiede che ogni linea cominci con un run bianco, eventualmente
di lunghezza nulla, mentre il codice di EOL ovviamente unico
RLC 2-D
9 Per aumentare lefficienza, la codifica RLC 2-D sfrutta la correlazione tra i
pixel posti su righe consecutive dellimmagine, che deriva dalla elevata
probabilit della continuit verticale di regioni bianche o nere
9 Esistono diverse tecniche per lestensione al caso 2-D dei concetti che stanno
alla base della codifica run-length, in particolare ne vedremo una, della
tipologia delle codifiche ad indirizzo relativo (RAC), nella versione adottata
per la codifica fax, denominata MR (Modified READ, dove READ sta per
Relative Element Address Designate)

E. Ardizzone

66

Universit degli Studi


di Palermo

Codifica run-length
9 La tecnica opera su due linee consecutive di scansione, la linea di
riferimento (reference line), che si suppone gi codificata, e la linea da
codificare (coding line):
b1
b2
9 Un gruppo di cinque pixel, detti di
rif.
variazione, devono essere identificati nelle
cod.
due linee, ad ogni passo di codifica
a0
a1
a2
Modo pass
9 Le loro posizioni relative definiscono infatti
b2
b1
quale di tre possibili modi (pass, verticale,
rif.
orizzontale) deve essere usato per la
cod.
a0
a1
a2
codifica
Modo verticale
9 Un pixel di variazione definito come il
primo pixel di un run (nero o bianco)
b2
b1
incontrato durante la scansione di una riga
rif.
cod.
da sinistra a destra
a0

a1

Modo orizzontale

a2

E. Ardizzone

67

Universit degli Studi


di Palermo

Codifica run-length

9 La definizione dei 5 pixel di variazione la seguente:


a0: il pixel di riferimento per la codifica, che si muove dallalto al basso e da
sinistra a destra man mano che la codifica procede. La sua posizione
determinata dal modo di codifica precedente, come si vedr tra breve. Allinizio
di una linea di codifica, invece un pixel bianco (immaginario) posto a sinistra
del primo pixel reale della linea di codifica
a1: il successivo pixel di variazione nella linea di codifica. E sicuramente a destra
di a0, ed di colore necessariamente opposto
a2: il pixel di variazione successivo ad a1 nella linea di codifica. E a destra di a1,
ed dello stesso colore di a0
b1: il pixel di variazione (di valore opposto ad a0) nella linea di riferimento
immediatamente a destra di a0. Ha lo stesso colore di a1
b2: il pixel di variazione successivo a b1 nella linea di riferimento
9 Se qualcuno dei 5 elementi di variazione non pu essere determinato, viene
posto nella posizione di un immaginario pixel a destra dellultimo pixel della
E. Ardizzone
68
linea considerata

Universit degli Studi


di Palermo

Codifica run-length
9 I tre modi di codifica possibili sono:
Pass: Se b2 a sinistra di a1, significa che il run nella linea di riferimento che
comincia con b1 non adiacente al run nella linea di codifica che comincia
con a1 (i due run sono dello stesso colore). Questo il modo di codifica di
pass: viene generato dallencoder il codeword speciale 0001. In tal modo il
decoder viene a sapere che il run che inizia con a0 non termina nel pixel sotto
b2. Esattamente in questo pixel sotto b2 viene posizionato a0 per il prossimo
passo
b1
rif.
cod.

a0

b2

a1

Modo pass

a2

E. Ardizzone

69

Universit degli Studi


di Palermo

Codifica run-length
Verticale: Se la distanza relativa lungo la direzione orizzontale tra a1 e b1
non maggiore di 3 pixel, il modo di codifica quello verticale: la
posizione di a1 codificata in relazione alla posizione di b1. A ciascuno dei
sette casi possibili viene assegnato un codeword, e infine a0 per il prossimo
passo posizionato in a1
Orizzontale: Se la distanza relativa lungo la direzione orizzontale tra a1 e b1
maggiore di 3 pixel, il modo di codifica quello orizzontale. Viene usata
una tecnica RLC 1-D
b1
rif.
cod.

a0

a1

Modo verticale

b2

b1

b2
a2

rif.
cod.

E. Ardizzone

a0

a1

Modo orizzontale

a2

70

Universit degli Studi


di Palermo

Codifica run-length

9 La tecnica RLC 1-D utilizzata nel modo orizzontale prevede in realt la


seguente combinazione: un prefisso 001, un codice MH per la lunghezza
del run tra a0 e a1, un codice MH per il run tra a1 e a2. Infine a0
posizionato in a2 per il prossimo passo di codifica
9 Riassumendo, la tabella di codifica RLC 2-D la seguente:
Modo

Codeword

Pass

0001

Orizzontale

001 + M(a0a1)+M(a1a2)

Verticale
a1b1 = 0
a1b1 = 1
a1b1 = 2
a1b1 = 3
a1b1 = -1
a1b1 = -2
a1b1 = -3

1
011
000011
0000011
010
000010
0000010

Sono i codici MH visti prima

E. Ardizzone

71

Universit degli Studi


di Palermo

Codifica run-length

9 Lintera procedura di codifica, riferita ad una singola linea di scansione, pu


essere infine cos schematizzata:
Inizio
nuova linea
di codifica

a0 posto
in a1

Modo
orizzontale

a0 posto a
sinistra del
primo pixel

a0 posto
sotto b2

Modo
verticale

a1, b1 e b2
sono
identificati

Modo
pass

a2
identificato

a0 posto
in a2

si
si

b2 a sinistra
di a1

no

si

a 1 b1 3

no

E. Ardizzone

Fine linea
di codifica

Fine
linea ?
no
72

Universit degli Studi


di Palermo

Codifica run-length
9 Per completare il discorso sugli standard di codifica di immagini binarie per
la trasmissione in facsimile sulla rete telefonica, c da dire che gli apparati
fax sono classificati in quattro gruppi dal CCITT (Comit Consultatif
International de la Tlgraphie et de la Tlphonie), oggi ITU (International
Telecommunication Union)
9 I primi due utilizzano tecniche analogiche, con velocit di trasmissione di
una pagina A4 di 6 e 3 minuti, rispettivamente, e risoluzione di 3.85
linee/mm
9 Il Gruppo 3 e il Gruppo 4 sono quelli che ci interessano di pi. Usano
tecniche digitali di codifica, con campionamento di 1728 pixel per linea, e
velocit di una pagina al minuto. Sono oggetto di standardizzazione nelle
raccomandazioni CCITT T4 e T6
9 I due standard si differenziano per la tecnica di codifica utilizzata: il Gruppo
3 usa una RLC 1-D in cui le ultime K - 1 linee di ogni gruppo di K linee sono
(opzionalmente) codificate in 2-D (K = 2 oppure 4)
E. Ardizzone

73

Universit degli Studi


di Palermo

Codifica run-length
9 Invece il Gruppo 4 usa soltanto la RLC-2D
9 La tecnica base di codifica la Huffman modificata (MH) precedentemente
illustrata
9 Pu essere interessante notare che durante il processo di standardizzazione
stato necessario valutare diverse tecniche alternative di compressione binaria
9 A tal fine, 8 documenti di test, rappresentativi di varie combinazioni di testo,
disegni, immagini, sono stati utilizzati per le valutazioni
9 I due standard CCITT lavorano abbastanza bene su tutti i documenti di test,
con rapporti di compressione dellordine di 15:1
9 Il difetto fondamentale degli algoritmi utilizzati negli standard CCITT di
compressione di immagini a due livelli la non adattivit, che li rende poco
efficienti in alcune situazioni critiche, in cui invece che una compressione si
pu avere una espansione dei dati, e incapaci di codificare immagini a mezzi
toni
E. Ardizzone

74

Universit degli Studi


di Palermo

Codifica run-length
9 E stato in effetti gi da da tempo concluso un nuovo processo di
standardizzazione, affidato ad un comitato denominato JBIG (Joint Bilevel
Imaging Group), di tecniche di compressione di immagini binarie
9 Lo standard JBIG (oggi noto come JBIG-1, perch nel frattempo stato
avviata una revisione dello standard, che porter ad una nuova versione
nota come JBIG-2) utilizza una variante adattiva della tecnica RLC - 2D,
con codifica aritmetica per la parte a lunghezza variabile
9 Esso risulta molto pi efficiente degli standard CCITT, ottenendo
miglioramenti sulle immagini test dal 20 all80% del rapporto di
compressione, e riuscendo a comprimere anche immagini a mezzi toni
9 In realt JBIG pu essere anche visto come uno standard per immagini a
livelli, con un numero limitato di bit/pixel, pensate scomposte in piani di bit
(alla Gray)
9 Altre informazioni sugli standard JBIG possono essere reperite a partire dal
sito http://www.jpeg.org/public/jbighomepage.htm
E. Ardizzone

75

Universit degli Studi


di Palermo

Altri metodi di compressione binaria


9 Tecniche di compressione di immagini binarie (o di piani di bit) semplici ed
abbastanza efficaci utilizzano specifici codeword per identificare aree
dellimmagine di intensit costante, cio costituite da pixel contigui di valore 0
oppure 1
9 Nellapproccio noto come codifica di area costante (CAC), limmagine
suddivisa in blocchi di m x n pixel, che vengono classificati come interamente
bianchi oppure interamente neri oppure misti
9 Alla categoria con la frequenza di occorrenza (o con la probabilit) pi elevata
viene fatta corrispondere una parola di un bit, per esempio 0 alle aree bianche
(supponendo che siano le pi probabili), mentre alle altre due vengono
associate parole di due bit, per esempio 10 alle aree nere e 11 alle aree miste
9 Il codice a due bit associato alle aree miste viene in realt utilizzato come
prefisso, seguito dal pattern del blocco in questione, ossia dalla sequenza degli
mn bit che rappresentano per esteso i pixel del blocco, considerati dallalto in
basso e da sinistra verso destra
E. Ardizzone

76

Universit degli Studi


di Palermo

Altri metodi di compressione binaria

9 La compressione si realizza se, grazie ad una scelta appropriata delle


dimensioni m ed n, si ottiene un numero sufficiente di regioni codificabili con
i codeword pi brevi
9 In una variante di questo metodo, chiamata white block skipping (WBS) e
finalizzata alla codifica di immagini di documenti, quindi con prevalenza di
parti bianche, si associa 0 alle aree completamente bianche, e si usa 1 come
prefisso del pattern dei bit per tutte le altre aree, sia nere che miste
9 La motivazione di questa scelta la presenza presumibilmente rara di blocchi
interamente neri nei documenti, per cui da una loro codifica con codeword
breve non si otterrebbe la riduzione dei dati che si realizza risparmiando un bit
per ogni prefisso dei codeword riservati alle aree miste ed alle aree nere
9 Una possibile scelta il dimensionamento 1 x n dei blocchi, che si traduce
nella codifica delle linee bianche mediante il codeword 0, mentre tutte le altre
sono codificate mediante il prefisso 1 seguito dagli n bit del pattern del blocco
E. Ardizzone

77

Universit degli Studi


di Palermo

Altri metodi di compressione binaria


9 Un altro approccio prevede la scomposizione gerarchica dellimmagine in
blocchi di dimensione decrescente, in modo che ogni blocco codificato
mediante un prefisso seguito da una codifica dello stesso tipo del suo interno,
fino a quando una successiva scomposizione non pi possibile oppure si
raggiunto un prefissato livello di precisione: in tal caso la codifica del blocco
pi interno il prefisso seguito dal pattern dei bit del blocco
9 Per esempio, una immagine interamente bianca codificata con un bit 0, un
bit 1 indica un sotto-blocco di 1 livello, etc. In tal caso, un sottoblocco di 1
livello interamente bianco codificato con 10

E. Ardizzone

78

Universit degli Studi


di Palermo

Codifica predittiva senza perdita


9 Sfrutta la ridondanza interpixel, operando direttamente sulla immagine a
livelli di grigio, senza una scomposizione in piani di bit
9 La riduzione della ridondanza interpixel tra pixel vicini effettuata
estraendo e codificando solo la nuova informazione che ogni pixel
aggiunge a quella complessiva dellimmagine
9 La nuova informazione di ogni pixel definita come la differenza tra il
valore reale e quello predetto (o previsto) del pixel
9 Il modello del sistema di codifica il seguente:
Immagine
di input

fn

+
Predittore

Intero pi
vicino
E. Ardizzone

en

Codificatore
di simbolo

Immagine
compressa

fn
79

Universit degli Studi


di Palermo

Codifica predittiva senza perdita


9 Il modello del sistema di decodifica il seguente:
Immagine
compressa

Decodificatore
di simbolo

en

fn

Immagine
di output

+
fn

Predittore

9 Lencoder ed il decoder contengono un identico predittore


9 Per ogni nuovo pixel, qui indicato con fn, dellimmagine di input, il predittore
genera il valore previsto, basandosi su un certo numero di pixel precedenti
9 Luscita del predittore, arrotondata allintero pi vicino, viene utilizzata per
costruire lerrore di predizione:
en = f n fn
E. Ardizzone

80

Universit degli Studi


di Palermo

Codifica predittiva senza perdita

9 Lerrore di predizione viene poi codificato dal codificatore di simbolo,


utilizzando un codice VLC
9 Il decodificatore, una volta ricostruito lerrore di predizione (decodifica di
simbolo), compie loperazione inversa, ricostruendo limmagine:
f n = en + fn
9 Il meccanismo fondamentale naturalmente la predizione. Diversi metodi
sono illustrati in letteratura, tra questi uno dei pi utilizzati basa la
predizione su una combinazione lineare degli m pixel precedenti quello
corrente:
m

fn = round i f n i

i =1
9 m lordine del predittore lineare, round indica larrotondamento allintero
pi vicino, e i coefficienti i, per i = 1, , m, sono i coefficienti di
predizione
E. Ardizzone

81

Universit degli Studi


di Palermo

Codifica predittiva senza perdita

9 In questa formulazione, del tutto generale, fn identifica il generico pixel di


una sequenza, spaziale o temporale, di pixel, per cui lo schema illustrato pu
fare riferimento sia ad una codifica interframe che ad una codifica intraframe
9 Nella codifica predittiva lineare 1-D, per esempio, in cui la predizione usa
soltanto alcuni pixel che precedono quello corrente sulla stessa riga
dellimmagine, la dipendenza dalle coordinate spaziali dei pixel pu essere
esplicitata nel modo seguente:
m
f ( x, y ) = round i f ( x, y i )

i =1

9 La precedente dunque lequazione di un predittore lineare di ordine m


9 Lequazione pi generale pu naturalmente essere formulata in modo da
esplicitare in modo appropriato le relazioni spaziali 2-D, se la predizione
riguarda anche i pixel che precedono quello corrente sulla stessa colonna
(predizione 2-D o planare), o la relazione temporale con i pixel che lo
precedono in frame precedenti (predizione 3-D)
E. Ardizzone

82

Universit degli Studi


di Palermo

Codifica predittiva senza perdita


9 Lequazione del predittore lineare 1-D non pu essere valutata per i primi m
pixel della riga, che quindi vanno codificati con altra tecnica o non codificati,
costituendo cos un overhead per il processo di codifica. Analogo
ragionamento si pu fare per la predizione di dimensione superiore
9 Il caso probabilmente pi semplice quello del predittore lineare del I ordine:
f ( x, y ) = round[ f ( x, y 1)]
9 Per la forma della sua equazione, questo encoder chiamato anche predittore
del pixel precedente, e la codifica viene detta in questo caso differenziale
9 Nellesempio illustrato di seguito, una immagine a livelli di grigio viene
sottoposta a codifica differenziale (con = 1), e lerrore di predizione viene
mostrato in forma di immagine di intensit. Per i noti motivi legati alla
visualizzazione, lerrore nullo rappresentato in grigio intermedio (128),
mentre grigi pi chiari rappresentano errori positivi, e grigi pi scuri
rappresentano errori negativi
E. Ardizzone

83

Universit degli Studi


di Palermo

Codifica predittiva senza perdita

Originale

Errore di predizione

E. Ardizzone

9 Il valore medio della


immagine dellerrore
128.02, quindi in media
lerrore di predizione
solo di 0.02 bit
9 Dai due istogrammi si
evidenzia come la
varianza dellerrore sia
molto pi contenuta della
varianza dei grigi
nellimmagine di partenza,
e che anche la stima
dellentropia
notevolmente inferiore,
3.96 contro 6.81 bit/pixel
84

Universit degli Studi


di Palermo

Codifica predittiva senza perdita


9 La diminuzione dellentropia riflette lavvenuta riduzione della ridondanza
interpixel da parte della codifica predittiva
9 In realt, finora c stata soltanto una operazione di mapping, dai pixel ai
valori dellerrore. Ad essa deve seguire una codifica di simbolo. A tal fine
pu essere in linea di principio usata una qualunque delle tecniche viste in
precedenza
9 E tuttavia da notare che il risultato della compressione pu essere
previsto: se limmagine inizialmente codificata con 8 bit/pixel, ed il
limite teorico della codifica di simbolo dato dallentropia, cio 3.96, il
massimo rapporto di compressione possibile 8/3.96, quindi poco pi di 2

E. Ardizzone

85

Universit degli Studi


di Palermo

Codifica predittiva con perdita


9 Fa ovviamente parte della categoria delle tecniche di codifica con perdite,
le sole che riescono a dare rapporti di compressione veramente
significativi (tipicamente dellordine di 20:1 o superiori, per immagini a
livelli di grigio, e di 40:1 o superiori, per immagini a colori, senza
apprezzabile degrado visuale dellimmagine ricostruita rispetto
alloriginale)
9 La maggiore efficienza di compressione deve essere valutata in relazione
allentit della distorsione introdotta, per esempio ricorrendo ad uno dei
criteri di fedelt visti a suo tempo
9 In particolare, il sistema di codifica - decodifica predittiva con perdita
prevede luso di un quantizzatore, che viene inserito nel modello
precedentemente esaminato
9 Il quantizzatore, che assorbe la funzione dellarrotondamento allintero pi
vicino, va inserito nel decoder e nellencoder in modo da garantire che le
rispettive previsioni siano equivalenti
E. Ardizzone

86

Universit degli Studi


di Palermo

Codifica predittiva con perdita

9 In particolare, il quantizzatore inserito dopo la formazione dellerrore di


predizione, e prima del codificatore di simbolo. Esso effettua una
trasformazione (irreversibile) dellerrore di predizione in un numero limitato
di valori quantizzati. E questo che consente la compressione
Immagine
di input

fn +

en

fn

e&n

Quantizzatore

Predittore

f&n

Codificatore
di simbolo

Immagine
compressa

9 Lingresso al predittore generato come una funzione delle predizioni


precedenti e dei corrispondenti errori quantizzati:
dove fn ha il significato gi visto
f&n = e&n + fn
E. Ardizzone

87

Universit degli Studi


di Palermo

Codifica predittiva con perdita


9 Il decodificatore lo stesso visto in precedenza, ma questa volta genera
una approssimazione dellimmagine originaria:
Immagine
compressa

Decodificatore
di simbolo

e&n

f&n

Immagine
di output

+
f&n = e&n + fn

fn

Predittore

9 Un esempio ben noto di codifica predittiva con perdita la modulazione delta


(DM), in cui il predittore e il quantizzatore sono cos definiti:
fn = f&n 1

+
e&n =

E. Ardizzone

per en > 0
altrimenti
88

Universit degli Studi


di Palermo

Modulazione delta

9 Il coefficiente di predizione normalmente minore di 1, mentre il livello


di uscita del quantizzatore una costante positiva
9 Dato che il quantizzatore presenta solo due livelli, la sua uscita, cio
lerrore quantizzato, pu essere rappresentato con un solo bit dal
codificatore di simbolo, per cui il bit rate della DM 1 bit/pixel:
e&
1

6.5
0

- 6.5

f&

9 Nellesempio mostrato, si suppone = 6.5. Vengono inoltre mostrati gli


andamenti dellingresso e delluscita del codificatore, in corrispondenza alla
sequenza mostrata nella seguente tabella, con = 1:
E. Ardizzone

89

Universit degli Studi


di Palermo

Modulazione delta
Input

n
0
1
2
3

14
15
16
17
18
19
...

f
14
15
14
15

29
37
47
62
75
77

Encoder

f
-14.0
20.5
14.0
.
20.5
27.0
33.5
40.0
46.5
53.0
..

e&

-1.0
-6.5
1.0
.
8.5
10.0
13.5
22.0
28.5
24.0
..

-6.5
-6.5
6.5
.
6.5
6.5
6.5
6.5
6.5
6.5
.

Decoder

Errore

f&

f&

f f&

14.0
20.5
14.0
20.5
..
27.0
33.5
40.0
46.5
53.0
59.6
..

-14.0
20.5
14.0
.
20.5
27.0
33.5
40.0
46.5
53.0
..

14.0
20.5
14.0
20.5
.
27.0
33.5
40.0
46.5
53.0
59.6
.

0.0
-5.5
0.0
-5.5
.
2.0
3.5
7.0
15.5
22.0
17.5
.

9 La codifica inizia con il trasferimento diretto, senza errore, del primo pixel al
decoder. Occorre infatti stabilire delle condizioni iniziali sia per il codificatore
che per il decodificatore
E. Ardizzone

90

Universit degli Studi


di Palermo

Modulazione delta
9 Le successive uscite dellencoder e del decoder possono a questo punto
essere calcolate, in sequenza, a partire dalle equazioni gi scritte, e qui
ripetute per comodit:
en = f n fn
fn = f&n 1
+ 6.5 per en > 0
e&n =
6.5 altrimenti

f&n = e&n + fn

9 Per esempio, per n = 1 si hanno i seguenti valori:


e&1 = 6.5 f&1 = e&1 + f1 = 6.5 + 14 = 20.5
f1 = 14 e1 = f1 f1 = 15 14 = 1
da cui risulta un errore di ricostruzione pari a: f f& = 15 20.5 = 5.5
9 Dal grafico e dalla tabella si pu notare che in corrispondenza alle zone in
cui il valore dei pixel varia rapidamente, come tra n = 14 e n = 19, il valore
scelto per risulta troppo piccolo per consentire un veloce adeguamento
delluscita decompressa allinput E. Ardizzone
91

Universit degli Studi


di Palermo

Modulazione delta
9 Questo causa una distorsione nellimmagine decompressa, nota come
slope overload
9 Inoltre, nelle regioni con livello di grigio sufficientemente regolare, come
tra n = 0 e n = 3, il valore di risulta troppo grande per rappresentare le
variazioni di grigio pi piccole, il che causa la comparsa di rumore
granulare nellimmagine di uscita
9 Conseguenze della quantizzazione sono quindi il blurring delle immagini,
in corrispondenza ai contorni degli oggetti, e la presenza di rumore nelle
regioni molto regolari
9 Questi due tipi di distorsione sono comuni a tutti i tipi di codifica
predittiva con perdita, e si manifestano in modo direttamente legato ai
metodi di predizione e quantizzazione adoperati
9 E pertanto importante accennare alle tecniche di progetto di predittori e
quantizzatori

E. Ardizzone

92

Universit degli Studi


di Palermo

Predittori ottimi

9 Il progetto del predittore ottimo viene condotto come un processo di


minimizzazione dellerrore di predizione dellencoder:
2
E {en2 } = E f n fn
soggetto al vincolo di errore di quantizzazione trascurabile, e di
predizione lineare:
m
fn = i f n i
e&n en

{[

]}

i =1

9 La codifica predittiva che ne risulta anche detta modulazione impulsiva


differenziale (DPCM)
9 Si tratta quindi di minimizzare lespressione seguente, mediante una
opportuna scelta dei coefficienti di predizione: 2
m


2
E {en } = E f n i f n 1


i =1
E. Ardizzone

93

Universit degli Studi


di Palermo

Predittori ottimi

9 Differenziando rispetto a ciascuno dei coefficienti di predizione,


uguagliando a zero le derivate, e risolvendo il sistema di equazioni che ne
risulta, nellipotesi che fn abbia media nulla e varianza pari a 2, si ha:
= R 1r
dove R la matrice di autocorrelazione (m x m):

E{ f n 1 f n 1 } E{ f n 1 f n 2 }
E{ f f } E{ f f }
n 2 n 1
n2 n2
R=
M
M

E{ f f } E{ f f }

n m n 1
nm n2
ed r e sono i vettori ad m elementi:

E{ f n 1 f n m }
L E{ f n 2 f n m }

L
M

L E{ f n m f n m }
L

r = [E{ f n f n 1 } E{ f n f n 2 } L E{ f n f n m }]

= [1 2 L m ]

E. Ardizzone

94

Universit degli Studi


di Palermo

Predittori ottimi
9 I coefficienti che rendono ottimo il predittore possono pertanto essere
determinati per ogni immagine di input, e dipendono soltanto dalle
autocorrelazioni fra i pixel dellimmagine
9 Naturalmente un approccio locale come questo, in cui i coefficienti di
autocorrelazione sono calcolati per ogni immagine, computazionalmente
insostenibile
9 Si preferisce allora calcolare un set di coefficienti globali, assumendo
valido un certo modello dellimmagine, per esempio in quanto
rappresentativo di una certa categoria di immagini, e utilizzando le
autocorrelazioni calcolate a partire da esso nelle equazioni precedenti
9 Per esempio, lequazione di un predittore lineare (spaziale) del 4 ordine :
f ( x, y ) = 1 f ( x, y 1) + 2 f ( x 1, y 1) + 3 f ( x 1, y ) + 4 f ( x 1, y + 1)
E. Ardizzone

95

Universit degli Studi


di Palermo

Predittori ottimi
9 La predizione quindi effettuata sulla base di alcuni degli 8-vicini del
pixel corrente:
9 Nellipotesi che la funzione di autocorrelazione
y
dellimmagine sia separabile:

E{ f ( x, y ) f ( x i, y j )} = 2 vi hj
x

dove h e v sono i coefficienti di correlazione


orizzontale e verticale dellimmagine, e 2 la
varianza dellimmagine, si dimostra che i
coefficienti di predizione ottimi valgono:
1 = h

2 = v h 3 = v 4 = 0
9 Infine, per garantire un valore delluscita del predittore compatibile con la
dinamica dellimmagine normalmente richiesto che:
m

i =1

1
E. Ardizzone

96

Universit degli Studi


di Palermo

Predittori ottimi
9 A titolo di esempio, consideriamo lapplicazione dei quattro seguenti
predittori allimmagine mostrata, sempre nellipotesi di errore di
quantizzazione nullo:
1) f ( x, y ) = 0.97 f ( x, y 1)
2)

f ( x, y ) = 0.5 f ( x, y 1) + 0.5 f ( x 1, y )

3)

f ( x, y ) = 0.75 f ( x, y 1) + 0.75 f ( x 1, y ) +
0.5 f ( x 1, y 1)

4)

f ( x, y ) = 0.97 f ( x, y 1) se h v
0.97 f ( x 1, y ) altrimenti
dove h = f ( x 1, y ) f ( x 1, y 1) e v = f ( x, y 1) f ( x 1, y 1)
sono i gradienti orizzontale e verticale nel punto (x,y)
E. Ardizzone

97

Universit degli Studi


di Palermo

Predittori ottimi
9 Il predittore 4) un esempio di predittore adattivo, progettato per un migliore
rendimento in corrispondenza ai contorni grazie alla misura locale delle
propriet direzionali dellimmagine
9 Gli errori di predizione, in forma di immagini di intensit, sono mostrati di
seguito:

9 Si pu notare la diminuzione dellerrore visualmente percettibile al crescere


dellordine del predittore
9 Predittori di ordine superiore al 4 in genere forniscono un guadagno
nellefficienza di compressione non significativo, a fronte dellaumentata
E. Ardizzone
98
complessit computazionale

Universit degli Studi


di Palermo

Quantizzazione

9 La quantizzazione essenzialmente un processo di discretizzazione di


ampiezza: luscita di un quantizzatore si presenta pertanto come una versione
compressa dellingresso, con conseguente perdita di informazione, dato che
non c modo, nota luscita, di ripristinare lingresso
9 La quantizzazione si dice scalare, quando input e output sono scalari, si dice
vettoriale quando applicata a grandezze vettoriali
y

La figura mostra la tipica curva non lineare


caratteristica di un quantizzatore scalare

4
3

-3.5

2
1
-1.5 -0.5
0.5 1.5 2.5 3.5
-1
-2
-3
-4

Quando linput compreso in uno degli


intervalli, luscita assume il valore corrispondente
Gli estremi degli intervalli di input, indicati
genericamente con di, sono detti livelli di
decisione, mentre luscita caratterizzata dai
livelli di ricostruzione o di quantizzazione, detti yi
E. Ardizzone

99

Universit degli Studi


di Palermo

Quantizzazione
9 Indicando con di il generico livello di decisione, con yi il generico livello
di ricostruzione, e con il passo del quantizzatore, lequazione del
quantizzatore la seguente, avendo indicato con Q(x) la dipendenza da x:
yi = Q( x) per x (d i , d i +1 ]
9 Gli intervalli di input sono per convenzione semi-aperti a sinistra
9 Nellesempio precedente, = 1, e i = 1, , 9
9 Il quantizzatore uniforme se tutti i livelli di decisione, con la possibile
eccezione del primo e dellultimo, sono uniformemente distribuiti sullasse
x, e lo stesso avviene per i livelli di ricostruzione. Inoltre, ogni livello
interno di ricostruzione la media aritmetica dei livelli di decisione del
corrispondente intervallo di input
9 Il quantizzatore uniforme mostrato in precedenza denominato midtread:
uno dei livelli di ricostruzione pari a 0

E. Ardizzone

100

Universit degli Studi


di Palermo

Quantizzazione

9 In alternativa, si pu considerare il quantizzatore midrise, mostrato nella


figura seguente:
y

9 I quantizzatori midtread sono in genere


utilizzati per un numero dispari di livelli di
3.5
2.5
ricostruzione, i quantizzatori midrise nel caso
1.5
opposto
0.5

-3 -2 -1

9 In entrambi i casi mostrati la caratteristica ha


x
1 2 3
-1.5
simmetria dispari rispetto allasse verticale, ma
-2.5
questa assunzione non limitativa, in quanto
-3.5
pu sempre essere rispettata con opportune
operazioni di normalizzazione dei dati di
ingresso, seguite da denormalizzazione
delluscita
9 Pertanto, se il numero N dei livelli di ricostruzione pari, il livello di decisione
d(N/2)+1 posto in x = 0, mentre per N dispari si ha y(N+1)/2 = 0
E. Ardizzone

101

Universit degli Studi


di Palermo

Quantizzazione

9 La quantizzazione provoca una perdita irreversibile di informazione, quindi le


immagini di uscita dal processo manifestano una distorsione o errore di
quantizzazione del quale abbiamo pi volte parlato
9 I falsi contorni, per esempio, sono un effetto (soggettivo) dellinsufficiente
numero di livelli di ricostruzione adoperati in regioni uniformi dellimmagine,
mentre la distorsione di quantizzazione, incontrata nella modulazione Delta
sotto forma di rumore granulare o di slope overload, dipende dal passo del
quantizzatore ma anche dallandamento del segnale di ingresso
9 E quindi importante determinare in quali condizioni la distorsione pu essere
resa minima, ovvero stabilire dei criteri per il progetto ottimo del
quantizzatore
9 Il progetto del quantizzatore consiste nella scelta del numero N dei livelli di
ricostruzione (e quindi degli N + 1 livelli di decisione), e nella determinazione
dei rispettivi valori
9 Il progetto equivale quindi alla specifica della curva caratteristica
E. Ardizzone

102

Universit degli Studi


di Palermo

Quantizzatori ottimi
9 In questo quadro, il problema del progetto ottimo pu essere cos espresso:
9 Per una data densit di probabilit p(x) dei livelli di grigio di ingresso al
quantizzatore, determinare numero e valori dei livelli di ricostruzione e di
decisione che soddisfano il prescelto criterio di ottimizzazione, di natura
soggettiva (psicovisuale) o oggettiva (statistica)
9 Rimanendo in questultimo ambito, un criterio di ottimizzazione spesso
utilizzato la minimizzazione dellerrore di quantizzazione
9 Lerrore di quantizzazione definito come la differenza tra il segnale di
input e luscita quantizzata:
eq = x Q ( x ) = x y i
9 Si consideri come al solito la forma quadratica media (rms) dellerrore:
N d i +1

MSEq = E {( x yi ) 2 } = ( x yi ) 2 p ( x)dx
i =1 d i

E. Ardizzone

103

Universit degli Studi


di Palermo

Quantizzatori ottimi
9 Le condizioni di ottimo, ricavate separatamente da Max e Loyd nelle ipotesi
di p(x) con simmetria pari e di Q(x) con simmetria dispari, definiscono il
cosiddetto quantizzatore di Lloyd-Max a N livelli:
d i +1

1)

d ( x yi ) p( x)dx = 0

per i = 1,..., N

2)

1
d i = ( yi 1 + yi ) per i = 2,..., N
2

3)

d1 = ; d N +1 = +

9 La condizione 1) indica che i livelli di ricostruzione sono i centroidi delle


aree delimitate da p(x) tra due intervalli di decisione adiacenti, mentre la
condizione 2) indica che ogni livello (interno) di decisione la media
aritmetica dei due livelli di ricostruzione adiacenti
9 La soluzione delle equazioni precedenti non in generale semplice.
E. Ardizzone

104

Universit degli Studi


di Palermo

Quantizzatori ottimi
9 Soluzioni numeriche sono state comunque individuate per le densit di
probabilit pi comuni (uniforme, gaussiana, laplaciana, etc.)
9 Per esempio, per una p(x) laplaciana:
2x
1

p( x) =
exp
2

i quantizzatori di Lloyd-Max a 2, 4 e 8 livelli, che assicurano rispettivamente
un bit rate fisso di 1, 2 e 3 bpp, sono i seguenti (supponendo = 1):
N
2

di

yi

-0.707 1.414
0 0.707

-1.087
0
1.087

-1.631 1.087
-0.544
0.544
1.631
E. Ardizzone

di

yi

-2.994 0.731
-2.285 -1.576
-1.181 -0.785
-0.504 -0.222
0 0.222
0.504 0.785
1.181 1.576
2.285 2.994

105

Universit degli Studi


di Palermo

Quantizzatori ottimi
9 In caso di pdf a varianza non unitaria, i livelli di decisione e di ricostruzione si
calcolano moltiplicando i valori tabulati per la deviazione standard della pdf in
considerazione
9 Quanto visto finora attiene a quantizzatori uniformi. Si pu in realt
dimostrare come, ad eccezione del caso in cui la distribuzione dellinput sia
uniforme, le prestazioni dei quantizzatori non uniformi risultino migliori
9 Per i quantizzatori non uniformi sono state trovate condizioni di ottimo
analoghe a quelle viste nel caso uniforme, che si trovano tabulate nella
letteratura specializzata
9 Qualche vantaggio in pi si pu ottenere rendendo adattiva la quantizzazione,
ossia regolando i livelli di quantizzazione sulla base delle caratteristiche locali
dellimmagine: in teoria, regioni lentamente variabili vanno quantizzate pi
finemente, regioni con variazioni di grigio molto rapide possono essere
quantizzate pi grossolanamente
E. Ardizzone

106

Universit degli Studi


di Palermo

Quantizzatori ottimi
9 Solo un approccio di questo tipo pu simultaneamente ridurre rumore
granulare e slope overload, ovviamente al prezzo di una maggiore
complessit del quantizzatore
9 Un semplice metodo di quantizzazione adattiva pu essere implementato
nel modo seguente
9 Limmagine viene divisa in blocchi di 16 pixel, e per ogni blocco viene
scelto il migliore, nel senso della minimizzazione dellerrore di
quantizzazione, tra quattro possibili quantizzatori
9 I quattro possibili quantizzatori sono versioni scalate dei quantizzatori di
Lloyd-Max, ottenute moltiplicando i valori visti in precedenza per quattro
fattori di scala, rispettivamente: 0.5, 1.0, 1.75, 2.5
9 E ovviamente necessario consentire al decoder di individuare quale
quantizzatore stato utilizzato, a tal fine un codice a due bit aggiunto ai
bit che codificano il blocco di 16 pixel
E. Ardizzone

107

Universit degli Studi


di Palermo

Quantizzatori ottimi

9 Ci costituisce un overhead del processo di codifica, nella misura di 2bit


ogni 16 pixel, cio 2/16 = 0.125 bpp. Pertanto il bit rate dei quantizzatori
adattivi basati sui quantizzatori di Lloyd-Max a 2, 4 e 8 livelli ,
rispettivamente, di 1.125, 2.125 e 3.125 bpp
9 Un confronto tra diversi sistemi DPCM ottenibili combinando i vari metodi
di quantizzazione con i quattro predittori visti in precedenza pu essere
effettuato misurando lerrore (rms) di ricostruzione in termini della
differenza tra i pixel dellimmagine ricostruita e i pixel dellimmagine
originaria
9 Per limmagine gi utilizzata per illustrare i quattro predittori si ha:
Predittore

Quantizzatore L-M

Quantizzatore adattivo

2 liv. 4 liv. 8 liv.

2 liv. 4 liv. 8 liv.

30.88

6.86

4.08

7.49

3.22

1.55

14.59

6.94

4.09

7.53

2.49

1.12

3
4

9.90 4.30
38.18 9.25

2.31
3.36

4.61
11.46

1.70
2.56

0.76
1.14

Compressione:

8:1

4:1

2.70:1E. Ardizzone 7.11:1 3.77:1 2.56:1

108

Universit degli Studi


di Palermo

Quantizzatori ottimi
9 Come si pu notare, almeno da un punto di vista quantitativo lerrore
compiuto utilizzando il quantizzatore adattivo a due livelli di pochissimo
superiore a quello del quantizzatore non adattivo a quattro livelli, mentre
addirittura il quantizzatore adattivo a quattro livelli si comporta meglio di
quello non adattivo a otto livelli
9 Non esistono invece significative differenze nel comportamento dei
quattro predittori
9 Infine, il netto miglioramento nella performance dei quantizzatori dal
punto di vista dellerrore avviene a spese di un non sostanziale
peggioramento del bit rate

E. Ardizzone

109

Anda mungkin juga menyukai