Tcdm Parte 1

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