Upload
fikir-fikir
View
214
Download
0
Embed Size (px)
Citation preview
7/21/2019 Tcdm Parte 1
1/109
Universit degli Studi di Palermo
Trattamento e Compressione
di Dati MultimedialiParte 1
Prof. Edoardo Ardizzone A.A. 2002-2003
7/21/2019 Tcdm Parte 1
2/109
E. Ardizzone 2
Universit degli Studi
di Palermo
Alcuni richiami Un sistema per la compressione-decompressione di immagini consiste di
due distinte unit strutturali: il codificatore (encoder) ed il decodificatore
(decoder):
Codificatore
di sorgenteCodificatore
di canaleCanale Decodificatore
di canaleDecodificatore
di sorgente
),( yxf ),( yxf
Codificatore Decodificatore
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
In generale, pu essere oppure no una replica esatta dellaf(x,y)
),( yxf
),(
yxf
7/21/2019 Tcdm Parte 1
3/109
E. Ardizzone 3
Universit degli Studi
di Palermo
Alcuni richiami 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
Sia il codificatore che il decodificatore sono costituiti da due sotto-blocchi
relativamente indipendenti
In particolare, lencoder costituito dal codificatore di sorgente, che
rimuove le ridondanze presenti nei dati di input generando unarappresentazione codificata, e dal codificatore di canale, che incrementa
limmunit al rumore del segnale di uscita del codificatore di sorgente
Il decodificatore comprende il decodificatore di canale ed il decodificatore
di sorgente, che svolgono le funzioni inverse rispetto a quelle svolte daiblocchi del codificatore
Se il canale di trasmissione senza errore, codificatore e decodificatore di
canale vengono omessi
7/21/2019 Tcdm Parte 1
4/109
E. Ardizzone 4
Universit degli Studi
di Palermo
Alcuni richiami In generale, il codificatore di sorgente opera su tutte e tre le forme possibilidi ridondanza. La specificit dellapplicazione, e i connessi criteri di
fedelt, determinano la tecnica pi appropriata da utilizzare
Normalmente, possibile utilizzare un modello separato per ciascuna delletre operazioni di riduzione della ridondanza:
Mapper Quantizzatore
Codificatore di sorgente
Codificatoredi simbolo
Canale),( yxf
Compito del mapper quello di trasformare i dati di input in un formato
(normalmente non visuale) pensato per ridurre la ridondanza interpixel
Questa operazione pu direttamente effettuare una compressione, oppureno
7/21/2019 Tcdm Parte 1
5/109
E. Ardizzone 5
Universit degli Studi
di Palermo
Alcuni richiami 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 allacompressione che avviene negli stadi successivi del processo di codifica
Loperazione di mapping in genere reversibile
Il quantizzatore riduce la ridondanza psicovisuale presente alluscita del
mapper, in generale nel rispetto di un criterio di fedelt
Dato che la quantizzazione una operazione irreversibile, il quantizzatore
nonpu essere presente se la compressione deve essere senza perdita di
informazione 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
Anche la codifica di simbolo una operazione reversibile
7/21/2019 Tcdm Parte 1
6/109
E. Ardizzone 6
Universit degli Studi
di Palermo
Alcuni richiami In questa schematizzazione, il processo di compressione stato
esplicitamente scomposto in tre fasi successive
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
Il decodificatore di sorgente contiene solo due blocchi, che effettuano inordine rovesciato linversione delle operazioni dei corrispondenti blocchi
del codificatore
Decodificatore
di simboloMapper inverso ),( yxf
Decodificatore di sorgente
Canale
Non pu esistere un
quantizzatore inverso, dato cheloperazione del quantizzatore
irreversibile
7/21/2019 Tcdm Parte 1
7/109
E. Ardizzone 7
Universit degli Studi
di Palermo
Alcuni richiami
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 dalcodificatore di sorgente, utilizzando tecniche di codifica (per esempio alla
Hamming) gi note da altre discipline
Questa operazione, che viene poi invertita in ricezione dal decodificatore
di canale, ovviamente costosa dal punto di vista del rapporto dicompressione complessivo
7/21/2019 Tcdm Parte 1
8/109
E. Ardizzone 8
Universit degli Studi
di Palermo
Alcuni richiami
SeE un evento casuale la cui probabilit P(E), linformazione ad essoassociata espressa da
I(E), detta anche la auto-informazione diE, si misura in unit diinformazione determinate dalla base del logaritmo. Se essa 2,
linformazione si misura in unit binarie obinit (da binary unit) obit
Se levento la generazione di un simbolo da parte di una sorgente diinformazione discreta e a memoria zero, lentropia o incertezza dellasorgente, ovvero la quantit media di informazione associata allasingola
generazione di un simbolo da parte della sorgente, data da
)(log)(
1log)( EPEP
EI ==
=
=J
j
jj aPaPH1
)(log)(
7/21/2019 Tcdm Parte 1
9/109
7/21/2019 Tcdm Parte 1
10/109
E. Ardizzone 10
Universit degli Studi
di Palermo
Alcuni richiami 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
Lesistenza di tale limite teorico inferiore consente di stabilire in modo
semplice una misura dellefficienza di una tecnica di codifica a lunghezzavariabile:
avgL
H= H lentropia, mentreLavg la lunghezza media
dei codeword del codice utilizzato
7/21/2019 Tcdm Parte 1
11/109
E. Ardizzone 11
Universit degli Studi
di Palermo
Alcuni richiami La definizione pu essere generalizzata per valutare lefficienza relativa
del codice C2 rispetto al codice C1:
2
1
avg
avg
L
L
=L
avg1
eLavg2
sono le lunghezze medie dei codeword
dei due codici, e si supponeLavg2 >Lavg1
Un parametro complementare allefficienza la ridondanza del codice, che
pu essere definita semplicemente come:
Se un codice raggiungesse il limite teorico, la sua efficienzasarebbe massima, e la sua ridondanza sarebbe nulla
= 1
7/21/2019 Tcdm Parte 1
12/109
E. Ardizzone 12
Universit degli Studi
di Palermo
Compressione senza perdita 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 Possono essere applicate sia a immagini binarie sia ad immagini a livelli
Come si visto, prevedono normalmente sia una operazione di mapping sia
una codifica di simbolo
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
minimizzare la
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
==
1
0
avg )()(
L
k
krk rprlL
7/21/2019 Tcdm Parte 1
13/109
E. Ardizzone 13
Universit degli Studi
di Palermo
Compressione alla Huffman
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
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
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
7/21/2019 Tcdm Parte 1
14/109
E. Ardizzone 14
Universit degli Studi
di Palermo
Caratteristiche dei codici Huffman La costruzione dei codici Huffman pu risultare computazionalmente molto
gravosa
Infatti, per una sorgente caratterizzata da un alfabeto diJsimboli occorronoJ- 2 riduzioni della sorgente eJ- 2 passi di assegnazione delle parole ai
simboli
Una immagine codificata con 8 bit/pixel richiede pertanto 254 riduzioni e
254 assegnazioni Inoltre, la codifica alla Huffman richiede la conoscenza della statistica dei
livelli di grigio dellimmagine
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
7/21/2019 Tcdm Parte 1
15/109
E. Ardizzone 15
Universit degli Studi
di Palermo
Caratteristiche dei codici Huffman Un codice Huffman un codice a blocchi, istantaneo, univocamente
decodificabile:
A blocchi, in quanto ogni simbolo della sorgente associato ad una
sequenza fissata di simboli del codice Istantaneo, in quanto in una stringa di simboli del codice, ogni parola
pu essere decodificata senza attendere simboli successivi
Univocamente decodificabile, in quanto ogni stringa di simboli del
codice pu essere decodificata in un solo modo La complessit computazionale della costruzione non tuttavia lunico
problema dei codici Huffman, in quanto, per consentire la decodifica inmodo corretto, linsieme dei codeword (il cosiddetto codebook) deve essere
reso noto al decoder In generale, questo significa che anche il codebook va trasmesso o
memorizzato, insieme con i dati codificati, costituendo un overheadper ilprocesso di codifica - decodifica
7/21/2019 Tcdm Parte 1
16/109
E. Ardizzone 16
Universit degli Studi
di Palermo
Caratteristiche dei codici Huffman
La memoria del codebookM, definita come la somma delle lunghezze di
tutte le parole del codice, diventa quindi un parametro significativo
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
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
7/21/2019 Tcdm Parte 1
17/109
E. Ardizzone 17
Universit degli Studi
di Palermo
Codifica aritmetica E un altro metodo di compressione che sfrutta la ridondanza della codifica
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
E invece un messaggio, cio una sequenza di simboli della sorgente, a
corrispondere ad una singola parola del codice 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 Sotto questaspetto, stato dimostrato che la lunghezza media delle parole
di un codice Huffman soddisfa la disuguaglianza:
086.0maxavg
++
7/21/2019 Tcdm Parte 1
18/109
E. Ardizzone 18
Universit degli Studi
di Palermo
Codifica aritmetica Pertanto il limite superiore della lunghezza media di parola ottenibile con
un codice Huffman dipende dallentropiaHe dapmax, la probabilitmassima di occorrenza dei simboli della sorgente
Se in particolare le probabilit di occorrenza variano in un range moltoampio, il limite superiore pu diventare elevato, impedendo una efficaceriduzione della ridondanza della codifica
Consideriamo un caso estremo: lalfabeto della sorgente fatto di due soli
simboli, uno con probabilit molto elevata, vicina a 1, laltro conprobabilit molto bassa, vicina a 0
Lentropia della sorgente in queste condizioni molto bassa, dato chelincertezza pochissima. Tuttavia il codice Huffman, necessariamente,
sar costituito da due parole di un bit, una per ciascun simbolo, quindi conLavg = 1
Pertanto lefficienza del codice praticamente nulla, e la sua ridondanzaquasi del 100%
7/21/2019 Tcdm Parte 1
19/109
E. Ardizzone 19
Universit degli Studi
di Palermo
Codifica aritmetica Questo esempio stressa il fatto che linefficienza del codice Huffman
dovuta alla necessit di codificare i simboli della sorgente con numeri
interi di bit
Invece la codifica aritmetica non ha questo vincolo. Per illustrare latecnica, 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 lunghezzapari a 1 per rappresentare la distribuzione delle
probabilit dei simboli della sorgente (si noti
che non necessario riordinare i simboli)
7/21/2019 Tcdm Parte 1
20/109
E. Ardizzone 20
Universit degli Studi
di Palermo
Codifica aritmetica La probabilit di ogni simbolo rappresentata da un intervallo (chiuso a
sinistra, aperto a destra), mostrato nella tabella precedente e nella figura:
0.3
0.4
0.60.65
0.75
0
1 0.10590.108
S1
S2
0.225
0.1950.18
0.12
0.09
0
0.3
0.09
0.12
S3
0.102
S4
0.1056
S5
S6
0.1058250
0.1058175
0.105795
7/21/2019 Tcdm Parte 1
21/109
7/21/2019 Tcdm Parte 1
22/109
E. Ardizzone 22
Universit degli Studi
di Palermo
Codifica aritmetica
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 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
Luscita del processo quindi un intervallo, nellesempio [0.1058175,0.1058250): qualunque numero in tale intervallo pu essere utilizzato per
codificare il messaggio originario
Spesso, per, il limite inferiore dellintervallo che viene utilizzato per
codificare il messaggio
Nellesempio si sono usati numeri decimali, ma il principio lo stesso
anche nel caso della codifica aritmetica binaria
7/21/2019 Tcdm Parte 1
23/109
E. Ardizzone 23
Universit degli Studi
di Palermo
Codifica aritmetica Vediamo adesso il processo di decodifica, assumendo che il numero
utilizzato per la codifica sia lestremo inferiore dellintervallo finale
Per ipotesi, al decodificatore nota la distribuzione delle probabilit deisimboli della sorgente, nonch la suddivisione dellintervallo del messaggio
Confrontando il codice (cio il numero 0.1058175) con gli estremi degliintervalli semiaperti, il decoder determina lappartenenza del codiceallintervallo [0, 0.3), e stabilisce pertanto che il primo simbolo delmessaggio decodificato S1
A questo punto il decoder pu determinare la suddivisione del primointervallo ristretto [0, 0.3) in intervalli, e quindi confrontare il codice con gliestremi di questi ultimi
In tal modo viene determinata lappartenenza del codice allintervallo [0.09,
0.12), per cui risulta stabilita la presenza di S2 come secondo simbolo delmessaggio
Gli stessi passi vengono reiterati, fino alla fine del processo di decodifica
7/21/2019 Tcdm Parte 1
24/109
E. Ardizzone 24
Universit degli Studi
di Palermo
Codifica aritmetica Risulta evidente la necessit di un simbolo di fine messaggio noto al
decoder, affinch esso possa fermare il processo di decodifica
Lillustrazione del processo di codifica - decodifica, che si basa solo suoperazioni aritmetiche, giustifica la denominazione di questa tecnica
Ovviamente, al crescere della lunghezza del messaggio diminuisce ladimensione dellintervallo finale, ossia cresce laprecisione aritmeticarichiesta nella rappresentazione dei numeri. Questo ha a lungo costituito unlimite alla utilizzazione pratica della codifica aritmetica
Il problema stato risolto alla fine degli anni 70, con la cosiddettaimplementazione incrementale della codifica aritmetica, che consentelutilizzazione di rappresentazioni numeriche diprecisione finita
Limplementazione incrementale basata sullosservazione che con il
progredire del processo di codifica, le cifre iniziali degli estremidellintervallo ristretto corrente non vengono pi modificate, e possonoquindi essere trasmesse o memorizzateprima della conclusione dellacodifica stessa
7/21/2019 Tcdm Parte 1
25/109
E. Ardizzone 25
Universit degli Studi
di Palermo
Codifica aritmetica Nellesempio precedente, man mano che i simboli del messaggio vengono
codificati, la restrizione degli intervalli procede nel modo indicato in tabella:
S1 0 0.30 --
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
Simb. Estr. inf. Estr. sup. Usc. accum. Dopo la codifica di S3, le prime
due cifre degli estremi (cio 1 e 0)
non cambiano pi, e possono
essere accantonate
Dopo la codifica di S4, unaltracifra (cio 5) non cambia pi, e
pu essere accantonata
Luscita dellencoder viene quindi accumulataprogressivamente (ultimacolonna 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
7/21/2019 Tcdm Parte 1
26/109
E. Ardizzone 26
Universit degli Studi
di Palermo
Codifica aritmetica
Se lo stesso messaggio fosse codificato alla Huffman, si otterrebbe laseguente assegnazione delle parole del codice:
S1 0.30 00
S2 0.10 101
S3 0.20 11
S4 0.05 1001
S5 0.10 1000
S6 0.25 01
La codifica della sequenza S1 S2 S3 S4 S5 S6
darebbe luogo ad una stringa di 17 bitE invece possibile trovare, nellintervallo
finale della codifica aritmetica [0.1058175,
0.1058250), almeno un numero, cio
0.1058211962, il cui valore binario, cio0.000110111111111, ha una mantissa di 15 bit
Nellesempio, la codifica aritmetica si mostra pertanto pi efficiente della
codifica Huffman. In generale, si pu dimostrare che, al crescere dellalunghezza 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)
7/21/2019 Tcdm Parte 1
27/109
E. Ardizzone 27
Universit degli Studi
di Palermo
Codifica aritmetica
Bisogna per considerare loverhead portato dal simbolo di fine messaggio
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 persemplificare le realizzazioni hardware del sistema di codifica - decodifica,etc.
Le implementazioni dellalgoritmo di codifica aritmetica prevedono quindi
un certo numero di soluzioni, che nella maggior parte dei casi sono statebrevettate. Il loro uso comporta quindi il pagamento di royalties
Questo ha comportato un ritardo nella diffusione della codifica aritmetica,per quanto essa rappresenti il metodo di compressione a lunghezza
variabile pi efficiente Per esempio, nella catena di operazioni previste dallo standard JPEG
presente una fase di compressione a lunghezza variabile, per la quale lostandard lascia agli implementatori libert di scelta fra i sistemi esistenti.
Ovviamente nessuno ha preferito la codifica aritmetica
7/21/2019 Tcdm Parte 1
28/109
E. Ardizzone 28
Universit degli Studi
di Palermo
Codifica a dizionario 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
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
Sia la codifica aritmetica che le tecniche alla Huffman, basandosi sulla
probabilit di occorrenza dei simboli da codificare, ipotizzano una sorgente a
memoria zero Questa ipotesi non per verificata in molte applicazioni, come per esempio
nella codifica di testi, in cui la struttura delle frasi o il contestopossono
giocare un ruolo importante
7/21/2019 Tcdm Parte 1
29/109
E. Ardizzone 29
Universit degli Studi
di Palermo
Codifica a dizionario
Infatti, in qualunque testo molto probabile che la lettera q sia seguitadalla lettera u, e in certi contesti probabile che una certa parola, per
esempio immagine, sia seguita da altre parole, per esempio a livelli digrigio
La strategia adottata nelle tecniche di codifica a dizionario quella dicostruire un dizionario contenente simboli o sequenze di simboli, cio
frasi, dellalfabeto della sorgente, di uso frequente In fase di compressione, quando si incontra un simbolo o una frase
presente nel dizionario, la si codifica utilizzando lindice corrispondente (ouna sua versione codificata), altrimenti si ricorre ad una rappresentazionemeno efficiente
In maniera pi formale, dato una alfabetoA, un dizionario definito comeD = (P,C), doveP un insieme finito di frasi generate a partire daA e Cla funzione di codifica che effettua il mapping diPsu un insieme dicodeword
7/21/2019 Tcdm Parte 1
30/109
E. Ardizzone 30
Universit degli Studi
di Palermo
Codifica a dizionario
E chiaro che la formulazione del dizionario il punto cruciale: se essonon ben costruito, la procedura di codifica pu dare luogo ad una
espansione dei dati, invece che ad una compressione
In base al modo in cui il dizionario costruito, le tecniche di codifica adizionario si distinguono in statiche e adattive
La codifica a dizionario statica si basa sulluso di un dizionario fisso,completamente costruitoprima del processo di codecodifica, durante ilquale esso si suppone disponibile sia allencoder che al decoder
Si tratta quindi di tecniche molto semplici, ma scarsamente flessibili (ciopoco adatte alla applicazione in contesti anche non troppo differenti) e
poco efficienti, se confrontate con le tecniche adattive
La codifica a dizionario adattiva ipotizza invece la presenza, prima delprocesso di codifica, solo di una versione iniziale del dizionario, che non fisso e viene aggiornato durante la codifica, adattandosi allinput
7/21/2019 Tcdm Parte 1
31/109
E. Ardizzone 31
Universit degli Studi
di Palermo
Codifica a dizionario 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
Vengono normalmente privilegiate tecniche semplici, anche se non ottime,
diparsing, come il cosiddettogreedy parsing, in cui ad ogni passo di
codifica lencoder cerca la stringa di simboli di ingressopi lunga uguale
ad una voce del dizionario Consideriamo un dizionario caratterizzato daP= {a, b, ab, ba, bb, aab,
bbb}, con una funzione di codifica Cespressa in forma tabellare da:
P a b ab ba bb aab bbb
C 10 11 010 0101 01 11 0110
7/21/2019 Tcdm Parte 1
32/109
E. Ardizzone 32
Universit degli Studi
di Palermo
Codifica a dizionario
Supponiamo inoltre che linput da codificare sia abbaab
Utilizzando una tecnica di greedy parsing, la codifica procede accodandoprogressivamente i codeword:
C (ab) C (ba) C (ab)
010 0101 010
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) C (aab)
10 01 11
che d luogo ad una stringa di 6 bit, contro i 10 bit precedenti
7/21/2019 Tcdm Parte 1
33/109
E. Ardizzone 33
Universit degli Studi
di Palermo
Algoritmo LZ77 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 dialgoritmi, rispettivamente noti come LZ77 e LZ78
Negli algoritmi LZ77, detti anche afinestra scorrevole, il dizionario costituito dalla parte pi recentemente codificata del testo di input,contenuta nelsearch buffer, mentre la porzione di testo da codificare al
passo corrente presente nel look-ahead buffer
Il testo da codificare confrontato con gli item del dizionario: la stringa dimatching pi lunga presente nel dizionario associata ad un indice o
puntatore o token, costituito da una tripla di valori
I due buffer insieme costituiscono una finestra, di dimensione fissa, chescorre sullintero testo di input, dallinizio alla fine, durante il processo dicodifica
La dimensione dei due buffer normalmente molto diversa: il searchbuffer tipicamente dellordine di qualche migliaio di simboli, il look-ahead buffer di qualche decina o centinaio di simboli
U i i d li S di
7/21/2019 Tcdm Parte 1
34/109
E. Ardizzone 34
Universit degli Studi
di Palermo
Algoritmo LZ77 Illustriamo lapproccio LZ77 con un esempio. Supponiamo che il testo di
input sia quello indicato, e che ad un certo istante la posizione dellafinestra scorrevole sia quella mostrata:
i k a c c b a d a c c b a c c b a c c g i k m o a b c c
Search buffer Look-ahead buffer
Il search buffer ha una dimensione di 9 simboli, che sono stati gicodificati e costituiscono il dizionario, mentre il look-ahead buffercontiene 6 simboli da codificare nel passo di codifica corrente
Il primo dei simboli da codificare b, pertanto si ricerca nel dizionario la
sua prima occorrenza, a partire dalla fine del dizionario stesso, cio dallaposizione immediatamente a sinistra dello stesso b
Il match si verifica ad una distanza (o offset) dal primo simbolo del look-ahead buffer pari a 6, e a partire da questa si individua anche la pi lunga
stringa di match, cio ba
U i it d li St di
7/21/2019 Tcdm Parte 1
35/109
E. Ardizzone 35
Universit degli Studi
di Palermo
Algoritmo LZ77
Non vi sono in questo caso altri match possibili, pertanto loffset (6) e lalunghezza della stringa di match (2) vengono assegnati ai primi due item
della tripla che rappresenta il puntatore
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 Cla funzione di codifica
Il puntatore, dopo questo passo, assume quindi il valore < 6, 2, C(c) >
Il terzo item viene incluso nel puntatore per consentire al decoder di potersvolgere il suo lavoro anche se non si fosse trovato alcun match nel search
buffer
In tal caso, infatti, i due primi item del puntatore sarebbero entrambi 0, e ilterzo item rimarrebbe pari al codeword del primo simbolo del look-ahead
buffer (a questi valori infatti inizializzato il puntatore prima di iniziare laricerca)
Uni ersit degli St di
7/21/2019 Tcdm Parte 1
36/109
E. Ardizzone 36
Universit degli Studi
di Palermo
Algoritmo LZ77 La finestra scorrevole quindi spostata verso destra di un numero di
posizioni pari a alla lunghezza della stringa di match pi 1 (3
nellesempio):
i k a c c b a d a c c b a c c b a c c g i k m o a b c c
Il primo simbolo da codificare adesso c
Si ha immediatamente un primo match, di lunghezza 1, a distanza 1
Il secondo match, a distanza 4, per preferibile, in quanto consente unastringa di match di lunghezza 5 (la ricerca del match pu infatti continuare
oltre il confine tra i due buffer)
C un terzo match possibile, a distanza 5, ma viene scartato come il
primo, in quanto anchesso di lunghezza 1
Il puntatore relativo a questo secondo passo assume pertanto il valore < 4,
5, C(g) >
Universit degli Studi
7/21/2019 Tcdm Parte 1
37/109
E. Ardizzone 37
Universit degli Studi
di Palermo
Algoritmo LZ77
La finestra quindi spostata di 6 posizioni:
i k a c c b a d a c c b a c c b a c c g i k m o a b c c
Non c alcun matching possibile in questo caso, per cui il valore assunto
dal puntatore
Il processo di codifica continua allo stesso modo fino al termine dello
stream di input
La fase di decodifica molto pi semplice di quella di codifica, in quanto
non comporta la ricerca di situazioni di matching
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) >
Universit degli Studi
7/21/2019 Tcdm Parte 1
38/109
E. Ardizzone 38
Universit degli Studi
di Palermo
Algoritmo LZ77
La situazione dunque la seguente:
i k a c c b a d a c c ^
Ricevuta la tripla < 6, 2, C(c) >, il decoder sposta il puntatore di decodifica,
posizionato allinizio del look-ahead buffer (^), indietro di 6 posizioni
Viene cos individuato il simbolo b, e la stringa (lunga 2) che ha inizio apartire 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
La finestra viene quindi fatta scorrere di 2 + 1 posizioni verso destra:
i k a c c b a d a c c b a c ^
Universit degli Studi
7/21/2019 Tcdm Parte 1
39/109
E. Ardizzone 39
Universit degli Studi
di Palermo
Algoritmo LZ77 Il valore del puntatore di codifica, da decodificare a questo punto, < 4, 5,
C(g) >
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
In realt solo 4 simboli sembrano al momento disponibili (cbac), per, unavolta copiato il primo di essi, la stringa pu essere considerata nella suatotalit (cbacc)
Infine, il simbolo g viene accodato alla stringa appena copiata, e la finestraviene spostata in avanti di 6 posizioni:
i k a c c b a d a c c b a c c b a c c g ^
Il valore del puntatore di codifica, da decodificare a questo punto, < 0, 0,C(i) >
Universit degli Studi
7/21/2019 Tcdm Parte 1
40/109
E. Ardizzone 40
Universit degli Studi
di Palermo
Algoritmo LZ77
Il decoder riconosce che non c possibilit di match nel dizionario, e
quindi si limita a copiare nel look-ahead buffer il simbolo i
La finestra quindi spostata di 1 posizione:
i k a c c b a d a c c b a c c b a c c g i ^
Il decoder a questo punto predisposto per il prossimo passo, e cos viafino al termine del processo di decodifica, che come mostrato in grado di
ricostruire esattamente lo stream iniziale
Allinizio del processo di codifica, il contenuto del search buffer pu
essere del tutto arbitrario, per esempio una sequenza di blank
Indichiamo con SB la dimensione del search buffer, conL la dimensione
del look-ahead buffer e con Sla dimensione dellalfabeto della sorgente
Universit degli Studi
7/21/2019 Tcdm Parte 1
41/109
E. Ardizzone 41
g
di Palermo
Algoritmo LZ77
Se la codifica realizzata in binario naturale, lapproccio LZ77 codificastringhe di simboli di lunghezza variabile con codeword di lunghezza fissa
Infatti loffset codificato utilizzando log2 SBbit, la lunghezza dellastringa di matching con log2 (SB+L)bit, ogni simbolo con log2 Sbit,dove z indica il pi piccolo intero maggiore diz
Dato che sono le sequenze di simboli pi recentemente codificati a
costituire il dizionario, lapproccio LZ77 in grado di adattarsi bene allostream di input
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 Per tale motivo, per la compressione di testi la dimensione del search
buffer deve essere consistente: valori tipici sono SB +L 8192
7/21/2019 Tcdm Parte 1
42/109
7/21/2019 Tcdm Parte 1
43/109
Universit degli Studi
7/21/2019 Tcdm Parte 1
44/109
E. Ardizzone 44
di Palermo
Algoritmo LZ78 Il primo simbolo da codificare b, per il quale allinizio del processo di
codifica non c alcun match possibile nel dizionario, che vuoto
Pertanto il puntatore di codifica relativo al primo simbolo assume il valore
, dove 0 indica lassenza di match nel dizionario e C(b) laparola di codice attribuita a b. b a questo punto nel dizionario
Lo stesso processo si ripete per i due simboli seguenti, a e c
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 vieneconcatenato al precedente
La stringa di cui cercare il match dunque cb, a partire dalla entry n.3 del
dizionario 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, dove 3 lindice del primo simbolo di match, c, e 1 lindice del
simbolo seguente nella stringa, b
Universit degli Studi
7/21/2019 Tcdm Parte 1
45/109
E. Ardizzone 45
di Palermo
Algoritmo LZ78
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 Analogamente si procede per la successiva stringa ca
Al passo successivo, la stringa di match pi lunga la cb, che a questopunto 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 Il processo di codifica prosegue nel modo indicato fino al termine dello
stream di input
E da notare che man mano che la codifica procede, aumenta la lunghezza
delle entry nel dizionario, e quindi lefficienza del processo di codifica
Durante il processo di decodifica, il dizionario viene costruito in manieraanaloga, a partire dalle coppie progressivamente ricevute, e nello stessotempo il testo viene decodificato
Universit degli Studi
7/21/2019 Tcdm Parte 1
46/109
E. Ardizzone 46
di Palermo
Algoritmo LZ78 Nellesempio, la prima coppia ricevuta la . La presenza dello 0
informa il decoder che non c match, per cui esso utilizza C(b) perdecodificare b, che diviene anche la prima entry del dizionario
Analogamente per i successivi simboli, a e c Quando riceve la coppia , 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
La stringa cb quindi decodificata, ed inserita come nuova entry nel
dizionario Analogamente per le successive stringhe, ac e ca
Quando riceve la coppia , il decoder apprende che i successivisimboli del testo sono la entry n. 4 (stringa cb) e la entry n. 3 (simbolo c),
per cui cbc decodificata e appesa al dizionario Il processo continua in modo analogo fino alla completa ricostruzione del
testo
Universit degli Studi
7/21/2019 Tcdm Parte 1
47/109
E. Ardizzone 47
di Palermo
Algoritmo LZW Agli approcci LZ77 e LZ78, essenzialmente teorici, fu data consistenza
applicativa da parte di Welch negli anni 80
Lalgoritmo risultante, noto come LZW, oggi comunemente adoperato in
molte applicazioni (per esempio, in alcuni strumenti di compressione diUnix, nei formati di immagini GIF e TIFF, in alcuni standard dicompressione dati per modem)
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
In altre parole, vengono inviati al decoder solo gli indici relativi alle entrydel dizionario
A tal fine, viene predisposto un dizionario iniziale, che consistenormalmente dei soli simboli dellalfabeto utilizzato dalla sorgente
La codifica comincia prendendo in considerazione il primo simbolo deltesto di input
7/21/2019 Tcdm Parte 1
48/109
Universit degli Studi
di P l
7/21/2019 Tcdm Parte 1
49/109
E. Ardizzone 49
di Palermo
Algoritmo LZW accbadaccbaccbaccIndice Entry Simboli di input Codifica
1 a
2 b Dizionario
3 c iniziale
4 d
5 ac a 1
6 cc c 3
7 cb c 3
8 ba b 2
9 ad a 1
10 da d 4
11 acc a,c 512 cba c,b 7
13 accb a,c,c 11
14 bac b,a 8
15
Universit degli Studi
di Palermo
7/21/2019 Tcdm Parte 1
50/109
E. Ardizzone 50
di Palermo
Algoritmo LZW 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 dimatch pi lunga, utilizzando il simbolo di input immediatamente
successivo, c La stringa ac non ha match, per cui viene aggiunta al dizionario (entry n.
5), mentre lindice del simbolo matched, a, viene codificato
Il secondo simbolo, c, presente nel dizionario, quindi viene costruita una
possibile stringa di match, utilizzando il simbolo successivo, c La stinga cc non ha match, per cui viene aggiunta al dizionario (entry n. 6),
mentre lindice del simbolo matched, c, viene codificato
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. Essoha un entry nel dizionario, per cui si considera ac come una possibilestringa di match
Universit degli Studi
di Palermo
7/21/2019 Tcdm Parte 1
51/109
E. Ardizzone 51
di Palermo
Algoritmo LZW
Dato che anche la stringa ac ha un entry nel dizionario, si amplia la stringa
di matching, che diviene acc
La stringa acc non ha match, per cui viene aggiunta al dizionario (entry n.11) e codificata mediante lindice della stringa matched, 5
Come per lalgoritmo LZ78, al progredire della codifica gli item deldizionario diventano pi lunghi, migliorando lefficienza della codifica
In fase di decodifica, disponibile il dizionario iniziale
Allarrivo del primo indice, 1, il decoder decodifica il simbolocorrispondente, a
Allarrivo del secondo indice, 3, il decoder decodifica il simbolocorrispondente, c.
Inoltre, conoscendo la regola usata dallencoder, il decoder sa anche che idue simboli devono essere concatenati in una stringa, ac, che va aggiuntaal dizionario, come entry n. 5
Universit degli Studi
di Palermo
7/21/2019 Tcdm Parte 1
52/109
E. Ardizzone 52
di Palermo
Algoritmo LZW 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 stringapresente, da aggiungere al
dizionario, mentre lindice appena ricevuto, detto indicepresente,
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
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
In questo modo il decoder pu costruire un dizionario esattamente uguale aquello utilizzato in fase di codifica, e contemporaneamente decodificare il
testo
Universit degli Studi
di Palermo
7/21/2019 Tcdm Parte 1
53/109
E. Ardizzone 53
di Palermo
CodificaBit-Plane
Una tecnica di codifica (senza perdita) in grado di ridurre la ridondanzainterpixelpresente in una immagine a livelli (di grigio o di colore) consiste
nella rappresentazione dellimmagine mediante un set di immagini binariee nella codifica individuale di queste ultime, con metodi di compressioneappropriati per le immagini a due livelli (compressione binaria)
La rappresentazione di una immagine a livelli mediante pi immagini
binarie pu essere considerata una derivazione diretta dellarappresentazione perpiani di bit che abbiamo gi analizzato, e che vieneadesso brevemente richiamata
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)
Per esempio, in unimmagine i cui primi pixel abbiano rispettivamente ivalori 192, 65, 63, 64, .... si ha:
Universit degli Studi
di Palermo
7/21/2019 Tcdm Parte 1
54/109
E. Ardizzone 54
di Palermo
CodificaBit-Plane
Decimale Binario Piano
192 65 63 64 . 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
Pi formalmente, la scomposizione una conseguenza del fatto che, per unaimmagine a livelli di grigio a mbit/pixel, la rappresentazione polinomiale dei
livelli di grigio :0
0
1
1
2
2
1
1 2222 aaaam
m
m
m ++++
K
Universit degli Studi
di Palermo
7/21/2019 Tcdm Parte 1
55/109
E. Ardizzone 55
CodificaBit-Plane
57 6
Un esempio:
4 23
10
Universit degli Studi
di Palermo
7/21/2019 Tcdm Parte 1
56/109
E. Ardizzone 56
CodificaBit-Plane
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
Se la compressione dellimmagine a livelli viene effettuata applicandometodi di compressione binaria alle immagini binarie componenti, chiaro
che il rapporto di compressione ottenibile legato alla efficienza di questi
ultimi
Daltra parte, in una immagine binaria lo sfruttamento della ridondanzainterpixel 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)
Viceversa, se nellimmagine binaria sono presenti frequenti cambiamenti del
valore dei pixel, per esempio lungo una linea, non possibile ottenere
codifiche efficienti
Universit degli Studi
di Palermo
7/21/2019 Tcdm Parte 1
57/109
E. Ardizzone 57
CodificaBit-Plane
Daltro canto questo in generale vero per lo sfruttamento della ridondanzainterpixel: pi simili sono i valori dei pixel, cio maggiore la lorocorrelazione, pi efficientemente si riesce a prevederli
Da questo punto di vista, la rappresentazione bit-plane ha uno svantaggiointrinseco: piccole variazioni del livello di grigio possono ripercuotersi inmaniera significativa sulla complessit dei piani di bit
Si consideri nellesempio precedente la situazione dei piani di bit, per quanto
riguarda i pixel di valore 65, 63, 64: una variazione assolutamente marginaledel livello di grigio si traduce in transizioni 0 - 1 oppure 1 - 0 in quasi tutti ipiani di bit
Un metodo di rappresentazione alternativo, che riduce leffetto delle piccolevariazioni dei livelli di grigio, consiste nelleffettuare, prima dellascomposizione vera e propria, una codifica Gray a mbit dellimmagine
Questo codice, come noto, gode della propriet che due parole consecutivedifferiscono solo per un bit
Universit degli Studi
di Palermo
7/21/2019 Tcdm Parte 1
58/109
E. Ardizzone 58
CodificaBit-Plane
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
La conversione da binario a Gray pu essere effettuata nel modo seguente:
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
11
1 20per,
+
=
=
mm
iii
ag
miaagOR esclusivo
Universit degli Studi
di Palermo
7/21/2019 Tcdm Parte 1
59/109
E. Ardizzone 59
Codifica run-length
Uno dei metodi pi noti di compressione di immagini binarie si basa sullarappresentazione di ogni riga dellimmagine mediante la sequenza dellelunghezze delle successioni (o run) di pixel consecutivi bianchi o neri
Il metodo, detto della codifica run - length (RLC o RLE), si basa sullaosservazione che una immagine binaria contiene regioni di intensitcostante, per cui una rappresentazione pi efficiente pu essere costruitaeffettuando un mapping dei pixel presenti lungo ogni riga in una sequenza
di coppie del tipo (g1, r1), (g2, r2), . Quigi li-mo livello di grigio incontrato lungo la riga dellimmagine, e ri
la lunghezza delli-mo run
La rappresentazione mediante lunghezze di run ovviamente non visuale
Si tratta di una rappresentazione molto efficiente, soprattutto nella codificadi documenti finalizzata alla trasmissione via fax, che in genere avvienemediante immagini a risoluzione abbastanza elevata
Universit degli Studi
di Palermo
7/21/2019 Tcdm Parte 1
60/109
E. Ardizzone 60
Codifica run-length
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 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)
Per esempio, una riga con il profilo di grigio indicato
0 511
50
220
84 147 174 387 479
diventa una sequenza di coppie valore
- lunghezza di run:
(1, 85), (0, 63), (1, 27), (0, 213), (1, 92), (0, 32)
Qual il rapporto di compressione ?
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
valore
Universit degli Studi
di Palermo
7/21/2019 Tcdm Parte 1
61/109
E. Ardizzone 61
Codifica run-length Gli approcci pi comuni per la determinazione del valore di un run sono:
la specifica del valore del primo run di ogni riga
lassunzione di un run bianco iniziale, di lunghezza eventualmente
nulla Alla conclusione di ogni riga, un codeword speciale, noto al decoder,
segnala la situazione di fine linea (EOL, End -Of -Line)
Oltre alla compressione diretta, si pu ottenere una ulteriore riduzione dei
dati effettuando una codifica a lunghezza variabile delle lunghezze di run A tale scopo, le possibili lunghezze di run possono essere utilizzate per
costruire un alfabeto di sorgente, di questi simboli si possono calcolare leprobabilit, etc.
In effetti, misure effettuate su tipici documenti binari mostrano che ilmassimo dellefficienza di compressione si raggiunge quando run bianchie run neri sono codificatiseparatamente
Universit degli Studi
di Palermo
7/21/2019 Tcdm Parte 1
62/109
E. Ardizzone 62
Codifica run-length Se aj un simbolo che indica un run nero di lunghezzaj, conj = 1, ,J ,
essendoJla 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 lunghezzajpresenti nellimmagine peril numero totale di run neri
Si pu quindi stimare lentropia di questa sorgente di run neri:
Inoltre la lunghezza media dei run neri data da:
Le stesse grandezze per i run bianchi,HWeLW, possono essere definite e
calcolate in modo analogo
==J
j
jBjBB aPaPH1
)(log)(
==J
jjBB ajPL
1)(
Universit degli Studi
di Palermo
Codifica run-length
7/21/2019 Tcdm Parte 1
63/109
E. Ardizzone 63
Codifica run-length
Una misura (approssimata) dellentropia delle lunghezze di run di entrambi i
tipi data da:
Questo pu dare unidea del migliore bit rate ottenibile per la codifica dellelunghezze di run di una immagine binaria, utilizzando codici a lunghezza
variabile
Nella versione dellalgoritmo RLC 1-D adottato in alcuni importanti
standard di codifica per la trasmissione via fax, le lunghezze dei run (ibianchi distinti dai neri) vengono codificate utilizzando una tecnica alla
Huffman applicata ai due alfabeti di sorgente
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
WB
WB
LL
HHH
++
=
7/21/2019 Tcdm Parte 1
64/109
Universit degli Studi
di Palermo
C difi l h
7/21/2019 Tcdm Parte 1
65/109
E. Ardizzone 65
Codifica run-length Nel primo caso, r direttamente rappresentata da un codice di
terminazione, mentre nel secondo caso r rappresentata da un codeworddi makeup (corrispondente nella tabella dei codici di makeup, parte dellaquale riportata qui sotto, alla lunghezza di makeup pi grande non
superiore ad r), seguito da un codeword di terminazione che rappresenta ladifferenza tra la lunghezza r e la lunghezza di makeup
Lung. run Run bianchi Run neri
64 11011 0000001111
128 10010 000011001000
192 010111 000011001001
256 0110111 000001011011
. . .
1600 010011010 00000010110111664 011000 0000001100100
1728 010011011 0000001100101
EOL 00000000001 00000000001
Per esempio, un run biancolungo 189 pixel sar codificato
mediante il codeword di
makeup 10010, seguito dal
codeword di terminazionecorrispondente a 189 - 128 = 61,
ovvero 00110010
7/21/2019 Tcdm Parte 1
66/109
Universit degli Studi
di Palermo
C difi l th
7/21/2019 Tcdm Parte 1
67/109
E. Ardizzone 67
Codifica run-length 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):
rif.
cod.
rif.
cod.
Un gruppo di cinque pixel, detti divariazione, devono essere identificati nelle
due linee, ad ogni passo di codifica
Le loro posizioni relative definiscono infatti
quale di trepossibili modi (pass, verticale,orizzontale) deve essere usato per la
codifica
Un pixel di variazione definito come il
primopixel di un run (nero o bianco)incontrato durante la scansione di una riga
da sinistra a destra
Modo pass
Modo verticale
Modo orizzontale
a0 a1 a2
b1 b2
a0 a1 a2
b2b1
rif.
a0 a1 a2
b2b1
cod.
Universit degli Studi
di Palermo
Codifica run-length
7/21/2019 Tcdm Parte 1
68/109
E. Ardizzone 68
g
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 codificaprecedente, come si vedr tra breve. Allinizio
di una linea di codifica, invece un pixel bianco (immaginario) posto a sinistradel 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 a1b2: il pixel di variazione successivo a b1 nella linea di riferimento
Se qualcuno dei 5 elementi di variazione non pu essere determinato, viene
posto nella posizione di un immaginario pixel a destra dellultimo pixel della
linea considerata
7/21/2019 Tcdm Parte 1
69/109
Universit degli Studi
di Palermo
7/21/2019 Tcdm Parte 1
70/109
E. Ardizzone 70
Codifica run-lengthVerticale: 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 a0per il prossimopasso 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
Modo verticalea0 a1 a2
rif.
cod.
b2b1
Modo orizzontalea0 a1 a2cod.
b2b1rif.
Universit degli Studi
di Palermo
Codifica run length
7/21/2019 Tcdm Parte 1
71/109
E. Ardizzone 71
Codifica run-length 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 a2per il prossimo passo di codifica
Riassumendo, la tabella di codifica RLC 2-D la seguente:
Modo Codeword
Pass 0001
Orizzontale 001 +M(a0a1)+M(a1a2)
Verticale
a1b1 = 0 1
a1b1 = 1 011
a1b1 = 2 000011a1b1 = 3 0000011
a1b1 = -1 010
a1b1 = -2 000010
a1b1 = -3 0000010
Sono i codici MH visti prima
Universit degli Studi
di Palermo
Codifica run-length
7/21/2019 Tcdm Parte 1
72/109
E. Ardizzone 72
Lintera procedura di codifica, riferita ad una singola linea di scansione, puessere infine cos schematizzata:
a0 posto a
sinistra del
primo pixel
a1, b1 e b2sono
identificati
a0 posto
sotto b2
Modo
pass
Modo
verticale
a0 posto
in a1
Inizio
nuova linea
di codifica
b2 a sinistra
di a1
3ba 11 nonosi
si Fine
linea ?si
noFine linea
di codifica
a2
identificato
Modo
orizzontale
a0 posto
in a2
Universit degli Studi
di Palermo
7/21/2019 Tcdm Parte 1
73/109
E. Ardizzone 73
Codifica run-length
Per completare il discorso sugli standard di codifica di immagini binarie perla trasmissione in facsimile sulla rete telefonica, c da dire che gli apparatifax sono classificati in quattro gruppi dal CCITT (Comit ConsultatifInternational de la Tlgraphie et de la Tlphonie), oggi ITU (InternationalTelecommunication Union)
I primi due utilizzano tecniche analogiche, con velocit di trasmissione diuna pagina A4 di 6 e 3 minuti, rispettivamente, e risoluzione di 3.85linee/mm
Il Gruppo 3 e il Gruppo 4 sono quelli che ci interessano di pi. Usanotecniche digitali di codifica, con campionamento di 1728 pixel per linea, evelocit di una pagina al minuto. Sono oggetto di standardizzazione nelle
raccomandazioni CCITT T4 e T6
I due standard si differenziano per la tecnica di codifica utilizzata: il Gruppo3 usa una RLC 1-D in cui le ultimeK- 1 linee di ogni gruppo diKlinee sono(opzionalmente) codificate in 2-D (K= 2 oppure 4)
Universit degli Studi
di Palermo
7/21/2019 Tcdm Parte 1
74/109
E. Ardizzone 74
Codifica run-length Invece il Gruppo 4 usa soltanto la RLC-2D
La tecnica base di codifica la Huffman modificata (MH) precedentemente
illustrata
Pu essere interessante notare che durante il processo di standardizzazione
stato necessario valutare diverse tecniche alternative di compressione binaria
A tal fine, 8 documenti di test, rappresentativi di varie combinazioni di testo,
disegni, immagini, sono stati utilizzati per le valutazioni I due standard CCITT lavorano abbastanza bene su tutti i documenti di test,
con rapporti di compressione dellordine di 15:1
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
Universit degli Studi
di Palermo
7/21/2019 Tcdm Parte 1
75/109
E. Ardizzone 75
Codifica run-length E stato in effetti gi da da tempo concluso un nuovo processo di
standardizzazione, affidato ad un comitato denominato JBIG (Joint BilevelImaging Group), di tecniche di compressione di immagini binarie
Lo standard JBIG (oggi noto come JBIG-1, perch nel frattempo statoavviata una revisione dello standard, che porter ad una nuova versionenota come JBIG-2) utilizza una variante adattiva della tecnica RLC - 2D,con codifica aritmetica per la parte a lunghezza variabile
Esso risulta molto pi efficiente degli standard CCITT, ottenendomiglioramenti sulle immagini test dal 20 all80% del rapporto dicompressione, e riuscendo a comprimere anche immagini a mezzi toni
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)
Altre informazioni sugli standard JBIG possono essere reperite a partire dalsito http://www.jpeg.org/public/jbighomepage.htm
Universit degli Studi
di Palermo
7/21/2019 Tcdm Parte 1
76/109
E. Ardizzone 76
Altri metodi di compressione binaria
Tecniche di compressione di immagini binarie (o di piani di bit) semplici edabbastanza efficaci utilizzano specifici codeword per identificare areedellimmagine di intensit costante, cio costituite da pixel contigui di valore 0oppure 1
Nellapproccio noto come codifica di area costante (CAC), limmagine suddivisa in blocchi di m x npixel, che vengono classificati come interamente
bianchi oppure interamente neri oppure misti
Alla categoria con la frequenza di occorrenza (o con la probabilit) pi elevataviene fatta corrispondere una parola di un bit, per esempio 0 alle aree bianche(supponendo che siano le pi probabili), mentre alle altre due vengonoassociate parole di due bit, per esempio 10 alle aree nere e 11 alle aree miste
Il codice a due bit associato alle aree miste viene in realt utilizzato comeprefisso, seguito dalpattern del blocco in questione, ossia dalla sequenza deglimnbit che rappresentano per esteso i pixel del blocco, considerati dallalto in
basso e da sinistra verso destra
Universit degli Studi
di Palermo
7/21/2019 Tcdm Parte 1
77/109
E. Ardizzone 77
Altri metodi di compressione binaria 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
In una variante di questo metodo, chiamata white block skipping (WBS) efinalizzata 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
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 Una possibile scelta il dimensionamento 1 x n dei blocchi, che si traduce
nella codifica delle lineebianche mediante il codeword 0, mentre tutte le altre
sono codificate mediante il prefisso 1 seguito dagli nbit del pattern del blocco
Universit degli Studi
di Palermo
7/21/2019 Tcdm Parte 1
78/109
E. Ardizzone 78
Altri metodi di compressione binaria 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
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
Universit degli Studi
di Palermo
Codifica predittiva senza perdita
7/21/2019 Tcdm Parte 1
79/109
E. Ardizzone 79
p p
Sfrutta la ridondanza interpixel, operando direttamente sulla immagine a
livelli di grigio, senza una scomposizione in piani di bit
La riduzione della ridondanza interpixel tra pixel vicini effettuata
estraendo e codificando solo la nuova informazione che ogni pixelaggiunge a quella complessiva dellimmagine
La nuova informazione di ogni pixel definita come la differenza tra il
valore reale e quellopredetto (o previsto) del pixel
Il modello del sistema di codifica il seguente:
Immagine
di input
-+
Codificatore
di simbolo
Predittore Intero pi
vicino
Immagine
compressa
enfn
nf
Universit degli Studi
di Palermo
Codifica predittiva senza perdita
7/21/2019 Tcdm Parte 1
80/109
E. Ardizzone 80
Il modello del sistema di decodifica il seguente:
Immagine
di output+
Decodificatore
di simbolo
Predittore
Immagine
compressa
en fn
nf
+
Lencoder ed il decoder contengono un identicopredittore
Per ogni nuovo pixel, qui indicato confn, dellimmagine di input, il predittore
genera il valore previsto, basandosi su un certo numero di pixel precedenti Luscita del predittore, arrotondata allintero pi vicino, viene utilizzata per
costruire lerrore di predizione:
nnn ffe=
Universit degli Studi
di Palermo
Codifica predittiva senza perdita
7/21/2019 Tcdm Parte 1
81/109
E. Ardizzone 81
Lerrore di predizione viene poi codificato dal codificatore di simbolo,utilizzando un codice VLC
Il decodificatore, una volta ricostruito lerrore di predizione (decodifica di
simbolo), compie loperazione inversa, ricostruendo limmagine:
Il meccanismo fondamentale naturalmente la predizione. Diversi metodisono illustrati in letteratura, tra questi uno dei pi utilizzati basa la
predizione su una combinazione lineare degli mpixel precedenti quellocorrente:
m lordine del predittore lineare, round indica larrotondamento allinteropi vicino, e i coefficienti i, per i = 1, , m, sono i coefficienti dipredizione
nnn fef+=
=
=
m
i
inin ff1
round
Universit degli Studi
di Palermo
Codifica predittiva senza perdita
7/21/2019 Tcdm Parte 1
82/109
E. Ardizzone 82
In questa formulazione, del tutto generale,fn identifica il generico pixel diunasequenza,spaziale o temporale, di pixel, per cui lo schema illustrato pufare riferimento sia ad una codifica interframe che ad una codifica intraframe
Nella codifica predittiva lineare 1-D, per esempio, in cui la predizione usa
soltanto alcuni pixel che precedono quello corrente sulla stessa rigadellimmagine, la dipendenza dalle coordinate spaziali dei pixel pu essereesplicitata nel modo seguente:
La precedente dunque lequazione di un predittore lineare di ordine m
Lequazione pi generale pu naturalmente essere formulata in modo daesplicitare 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 oplanare), o la relazione temporale con i pixel che lo
precedono in frame precedenti (predizione 3-D)
=
=
m
i
i iyxfyxf
1
),(round),(
Universit degli Studi
di Palermo
Codifica predittiva senza perdita
7/21/2019 Tcdm Parte 1
83/109
E. Ardizzone 83
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
Il caso probabilmente pi semplice quello delpredittore lineare del I ordine:
Per la forma della sua equazione, questo encoder chiamato anchepredittore
del pixel precedente, e la codifica viene detta in questo caso differenziale
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
[ ])1,(round),( = yxfyxf
Universit degli Studi
di Palermo
Codifica predittiva senza perdita
7/21/2019 Tcdm Parte 1
84/109
E. Ardizzone 84
Errore di predizione
Il valore medio dellaimmagine dellerrore 128.02, quindi in medialerrore di predizione
solo di 0.02 bit Dai due istogrammi si
evidenzia come lavarianza dellerrore sia
molto pi contenuta dellavarianza dei griginellimmagine di partenza,e che anche la stimadellentropia notevolmente inferiore,3.96 contro 6.81 bit/pixel
Originale
Universit degli Studi
di Palermo
7/21/2019 Tcdm Parte 1
85/109
E. Ardizzone 85
Codifica predittiva senza perdita
La diminuzione dellentropia riflette lavvenuta riduzione della ridondanza
interpixel da parte della codifica predittiva
In realt, finora c stata soltanto una operazione di mapping, dai pixel aivalori 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
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
Universit degli Studi
di Palermo
Codifica predittiva con perdita
7/21/2019 Tcdm Parte 1
86/109
E. Ardizzone 86
Fa ovviamente parte della categoria delle tecniche di codifica con perdite,le sole che riescono a dare rapporti di compressione veramentesignificativi (tipicamente dellordine di 20:1 o superiori, per immagini alivelli di grigio, e di 40:1 o superiori, per immagini a colori, senza
apprezzabile degrado visuale dellimmagine ricostruita rispettoalloriginale)
La maggiore efficienza di compressione deve essere valutata in relazioneallentit della distorsione introdotta, per esempio ricorrendo ad uno dei
criteri di fedelt visti a suo tempo In particolare, il sistema di codifica - decodifica predittiva con perdita
prevede luso di un quantizzatore, che viene inserito nel modelloprecedentemente esaminato
Il quantizzatore, che assorbe la funzione dellarrotondamento allintero pivicino, va inserito nel decoder e nellencoder in modo da garantire che lerispettive previsioni siano equivalenti
Universit degli Studi
di Palermo
Codifica predittiva con perdita
I i l il i i i d l f i d ll di
7/21/2019 Tcdm Parte 1
87/109
E. Ardizzone 87
In particolare, il quantizzatore inserito dopo la formazione dellerrore dipredizione, eprima del codificatore di simbolo. Esso effettua unatrasformazione (irreversibile) dellerrore di predizione in un numero limitatodi valori quantizzati. E questo che consente la compressione
Immagine
di input
-+
Codificatore
di simboloQuantizzatore Immagine
compressa
en
fn
nf Predittore +
+
ne&
nf&
Lingresso al predittore generato come una funzione delle predizioni
precedenti e dei corrispondenti errori quantizzati:
nnn fef+= && dove ha il significato gi vistonf
Universit degli Studi
di Palermo
Codifica predittiva con perdita
7/21/2019 Tcdm Parte 1
88/109
E. Ardizzone 88
Il decodificatore lo stesso visto in precedenza, ma questa volta generauna approssimazione dellimmagine originaria:
Immaginedi output+Decodificatoredi simbolo
Predittore
Immaginecompressa
nf
+
ne&
nf&
nnn fef
+= &&
Un esempio ben noto di codifica predittiva con perdita la modulazione delta
(DM), in cui il predittore e il quantizzatore sono cos definiti:
>+=
altrimenti
0per
nn
ee&1
= nn ff &
Universit degli Studi
di Palermo
Modulazione delta
Il ffi i t di di i l t i di 1 t il li ll
7/21/2019 Tcdm Parte 1
89/109
E. Ardizzone 89
Il coefficiente di predizione normalmente minore di 1, mentre il livellodi uscita del quantizzatore una costante positiva
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
e&
0
ff&
Nellesempio mostrato, si suppone = 6.5. Vengono inoltre mostrati gliandamenti dellingresso e delluscita del codificatore, in corrispondenza alla
sequenza mostrata nella seguente tabella, con = 1:
16.5
- 6.5
Universit degli Studi
di Palermo
Modulazione delta
7/21/2019 Tcdm Parte 1
90/109
E. Ardizzone 90
Input Encoder Decoder Errore
n f f f
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
0 14 -- -- -- 14.0 -- 14.0 0.01 15 14.0 1.0 6.5 20.5 14.0 20.5 -5.5
2 14 20.5 -6.5 -6.5 14.0 20.5 14.0 0.0
3 15 14.0 1.0 6.5 20.5 14.0 20.5 -5.5
. . . .. . . .
14 29 20.5 8.5 6.5 27.0 20.5 27.0 2.0
15 37 27.0 10.0 6.5 33.5 27.0 33.5 3.5
16 47 33.5 13.5 6.5 40.0 33.5 40.0 7.0
17 62 40.0 22.0 6.5 46.5 40.0 46.5 15.5
18 75 46.5 28.5 6.5 53.0 46.5 53.0 22.0
19 77 53.0 24.0 6.5 59.6 53.0 59.6 17.5
... .. .. . .. .. . .
e e& f& f& ff &
Universit degli Studi
di Palermo
Modulazione delta
7/21/2019 Tcdm Parte 1
91/109
E. Ardizzone 91
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:
nnn ffe =1 = nn ff &
>+=
altrimenti5.6
0per5.6 nn
ee& nnn fef
+= &&
Per esempio, per n = 1 si hanno i seguenti valori:
5.20145.6111 =+=+= fef &&11415111 === ffe141=f 5.61=e&
5.55.2015 == ff &da cui risulta un errore di ricostruzionepari a:
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
7/21/2019 Tcdm Parte 1
92/109
Universit degli Studi
di Palermo
Predittori ottimi
Il progetto del predittore ottimo viene condotto come un processo di
7/21/2019 Tcdm Parte 1
93/109
E. Ardizzone 93
Il progetto del predittore ottimo viene condotto come un processo di
minimizzazione dellerrore di predizione dellencoder:
soggetto al vincolo di errore di quantizzazione trascurabile, e dipredizione lineare:
La codifica predittiva che ne risulta anche detta modulazione impulsiva
differenziale (DPCM)
Si tratta quindi di minimizzare lespressione seguente, mediante una
opportuna scelta dei coefficienti di predizione:
{ } [ ]22 nnn ffEeE =
nn ee & inm
i
in ff =
=1
{ }
= 2
2 m
ffEeE
=
1
1
n
i
inn
Universit degli Studi
di Palermo
Predittori ottimi
Differenziando rispetto a ciascuno dei coefficienti di predizione
7/21/2019 Tcdm Parte 1
94/109
E. Ardizzone 94
Differenziando rispetto a ciascuno dei coefficienti di predizione,
uguagliando a zero le derivate, e risolvendo il sistema di equazioni che ne
risulta, nellipotesi chefn abbia media nulla e varianza pari a 2, si ha:
dove R la matrice di autocorrelazione (m x m):
ed r e sono i vettori ad m elementi:
rR1
=
{ } { } { }
{ } { } { }
{ } { } { }
=
mnmnnmnnmn
mnnnnnn
mnnnnnn
ffEffEffE
ffEffEffE
ffEffEffE
L
MLMM
L
L
21
22212
12111
R
{ } { } { }[ ]Tmnnnnnn ffEffEffE = L21r
[ ]Tm L21=
7/21/2019 Tcdm Parte 1
95/109
Universit degli Studi
di Palermo
Predittori ottimi
La predizione quindi effettuata sulla base di alcuni degli 8-vicini del
7/21/2019 Tcdm Parte 1
96/109
E. Ardizzone 96
La predizione quindi effettuata sulla base di alcuni degli 8 vicini del
pixel corrente:
x
y Nellipotesi che la funzione di autocorrelazione
dellimmagine sia separabile:
{ } jhi
vjyixfyxfE 2),(),( =
dove h e v sono i coefficienti di correlazione
orizzontale e verticale dellimmagine, e 2 la
varianza dellimmagine, si dimostra che icoefficienti di predizione ottimi valgono:
h =1 04 =hv =2 v =3
Infine, per garantire un valore delluscita del predittore compatibile con ladinamica dellimmagine normalmente richiesto che:
11
=
m
i
i
Universit degli Studi
di Palermo
Predittori ottimi
A titolo di esempio consideriamo lapplicazione dei quattro seguenti
7/21/2019 Tcdm Parte 1
97/109
E. Ardizzone 97
A titolo di esempio, consideriamo l applicazione dei quattro seguenti
predittori allimmagine mostrata, sempre nellipotesi di errore di
quantizzazione nullo:
)1,(97.0),( = yxfyxf1)),1(5.0)1,(5.0),( yxfyxfyxf +=2)
)1,1(5.0
),1(75.0)1,(75.0),(
++=
yxf
yxfyxfyxf3)
=
altrimenti),1(97.0
se)1,(97.0),(
yxf
vhyxfyxf4)
)1,1(),1( = yxfyxfh )1,( = yxfvsono i gradienti orizzontale e verticale nel punto (x,y)
dove e )1,1( yxf
Universit degli Studi
di Palermo
Predittori ottimi
Il predittore 4) un esempio di predittore adattivo, progettato per un migliore
7/21/2019 Tcdm Parte 1
98/109
E. Ardizzone 98
Il predittore 4) un esempio dipredittore adattivo, progettato per un migliorerendimento in corrispondenza ai contorni grazie alla misura locale delle
propriet direzionali dellimmagine
Gli errori di predizione, in forma di immagini di intensit, sono mostrati di
seguito:
Si pu notare la diminuzione dellerrore visualmente percettibile al cresceredellordine del predittore
Predittori di ordine superiore al 4 in genere forniscono un guadagno
nellefficienza di compressione non significativo, a fronte dellaumentata
complessit computazionale
Universit degli Studi
di Palermo
Quantizzazione La quantizzazione essenzialmente un processo di discretizzazione di
ampiezza: luscita di un quantizzatore si presenta pertanto come una versione
7/21/2019 Tcdm Parte 1
99/109
E. Ardizzone 99
ampiezza: l uscita 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
La quantizzazione si dice scalare, quando input e output sono scalari, si dicevettoriale quando applicata a grandezze vettoriali
La figura mostra la tipica curva non lineare
caratteristica di un quantizzatore scalare
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, dettiyi
x
y
0.5 1.5 2.5 3.5
-0.5-1.5-3.5
1
2
3
4
-1
-2
-3
-4
Universit degli Studi
di Palermo
Quantizzazione
Indicando con di il generico livello di decisione, con yi il generico livello
7/21/2019 Tcdm Parte 1
100/109
E. Ardizzone 100
Indicando con di il generico livello di decisione, conyi il generico livellodi ricostruzione, e con ilpasso del quantizzatore, lequazione delquantizzatore la seguente, avendo indicato con Q(x) la dipendenza dax:
Gli intervalli di input sono per convenzione semi-aperti a sinistra
Nellesempio precedente, = 1, e i = 1, , 9 Il quantizzatore uniforme se tutti i livelli di decisione, con la possibile
eccezione del primo e dellultimo, sono uniformemente distribuiti sullassex, e lo stesso avviene per i livelli di ricostruzione. Inoltre, ogni livellointerno di ricostruzione la media aritmetica dei livelli di decisione delcorrispondente intervallo di input
Il quantizzatore uniforme mostrato in precedenza denominato midtread:uno dei livelli di ricostruzione pari a 0
],(per)(1+
=iii
ddxxQy
Universit degli Studi
di Palermo
Quantizzazione
In alternativa, si pu considerare il quantizzatore midrise, mostrato nella
7/21/2019 Tcdm Parte 1
101/109
E. Ardizzone 101
, p q ,figura seguente:
x
y
0.5
1.5
2.5
3.5
-2.5-1.5
-3.5
1 2 3
-1-2-3
I quantizzatori midtread sono in genere
utilizzati per un numero dispari di livelli di
ricostruzione, i quantizzatori midrise nel caso
opposto
In entrambi i casi mostrati la caratteristica ha
simmetria dispari rispetto allasse verticale, maquesta assunzione non limitativa, in quanto
pu sempre essere rispettata con opportune
operazioni di normalizzazione dei dati di
ingresso, seguite da denormalizzazionedelluscita
Pertanto, se il numeroNdei livelli di ricostruzione pari, il livello di decisione
d(N/2)+1 posto inx = 0, mentre per N dispari si hay(N+1)/2 = 0
Universit degli Studi
di Palermo
Quantizzazione
La quantizzazione provoca una perdita irreversibile di informazione, quindi leimmagini di uscita dal processo manifestano una distorsione o errore di
7/21/2019 Tcdm Parte 1
102/109
E. Ardizzone 102
q p p qimmagini di uscita dal processo manifestano una distorsione o errore di
quantizzazione del quale abbiamo pi volte parlato
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
E quindi importante determinare in quali condizioni la distorsione pu essereresa minima, ovvero stabilire dei criteri per ilprogetto ottimo del
quantizzatore
Il progetto del quantizzatore consiste nella scelta del numeroNdei livelli di
ricostruzione (e quindi degliN+ 1 livelli di decisione), e nella determinazione
dei rispettivi valori
Il progetto equivale quindi alla specifica della curva caratteristica
Universit degli Studi
di Palermo
Quantizzatori ottimi
In questo quadro, il problema del progetto ottimo pu essere cos espresso:
7/21/2019 Tcdm Parte 1
103/109
E. Ardizzone 103
q q , p p g p p
Per una data densit di probabilitp(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 naturasoggettiva (psicovisuale) o oggettiva (statistica)
Rimanendo in questultimo ambito, un criterio di ottimizzazione spesso
utilizzato la minimizzazione dellerrore di quantizzazione
Lerrore di quantizzazione definito come la differenza tra il segnale diinput e luscita quantizzata:
Si consideri come al solito la forma quadratica media (rms) dellerrore:
iq yxxQxe == )(
{ } =
+
==N
i
d
d
iiq
i
i
dxxpyxyxEMSE1
221
)()()(
Universit degli Studi
di Palermo
Quantizzatori ottimi
Le condizioni di ottimo, ricavate separatamente da Max e Loyd nelle ipotesi
7/21/2019 Tcdm Parte 1
104/109
E. Ardizzone 104
dip(x) con simmetria pari e di Q(x) con simmetria dispari, definiscono il
cosiddetto quantizzatore di Lloyd-Max aNlivelli:
+
==
1
,...,1per0)()(
i
i
d
d
i Nidxxpyx
Niyyd iii ,...,2per)(2
11 =+=
1)
2)
3) +== +11 ; Ndd
La condizione 1) indica che i livelli di ricostruzione sono i centroidi delle
aree delimitate dap(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
La soluzione delle equazioni precedenti non in generale semplice.
Universit degli Studi
di Palermo
Quantizzatori ottimi
Soluzioni numeriche sono state comunque individuate per le densit dib bili i i ( if i l l i )
7/21/2019 Tcdm Parte 1
105/109
E. Ardizzone 105
probabilit pi comuni (uniforme, gaussiana, laplaciana, etc.)
Per esempio, per unap(x) laplaciana:
i quantizzatori di Lloyd-Max a 2, 4 e 8 livelli, che assicurano rispettivamente
un bit rate