100
http://imagelab ing unimo it http://imagelab.ing.unimo.it Dispense del corso di Elaborazione di Immagini e Audio Digitali La Compressione La Compressione Dispense del corso di Elaborazione di Immagini e Audio Digitali Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia Prof. Roberto Vezzani – Prof. Costantino Grana

Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

Embed Size (px)

Citation preview

Page 1: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

http://imagelab ing unimo ithttp://imagelab.ing.unimo.it

Dispense del corso di Elaborazione di Immagini e Audio Digitali

La Compressione La Compressione Dispense del corso di Elaborazione di Immagini e Audio Digitali

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Prof. Roberto Vezzani – Prof. Costantino Grana

Page 2: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

COMPRESSIONE DATICOMPRESSIONE DATI

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 3: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

IntroduzioneIntroduzione

• La compressione dati è una tecnica utilizzata in ambito informatico per la riduzione della quantità di bit necessari alla rappresentazioneper la riduzione della quantità di bit necessari alla rappresentazione in forma digitale di un'informazione.

• La compressione dati viene utilizzata sia per ridurre le dimensioni di un file, e quindi lo spazio necessario per la sua memorizzazione e l'occupazione di banda necessaria per la sua trasmissione, sia per ridurre l'occupazione di banda necessaria in una generica trasmissione p gdati come ad esempio una trasmissione televisiva in diretta.

• Le tecniche di compressione dati si dividono in due grandi categorie:compressione dati lossy: comprime i dati attraverso un processo con perdita– compressione dati lossy: comprime i dati attraverso un processo con perdita d'informazione che sfrutta le ridondanze nell'utilizzo dei dati;

– compressione dati lossless: comprime i dati attraverso un processo senza perdita d'informazione che sfrutta le ridondanze nella codifica del dato.d informazione che sfrutta le ridondanze nella codifica del dato.

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 4: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

Importanza della compressioneImportanza della compressione

• La quantità di dati con cui ci troviamo ad interagire sta aumentando vertiginosamentevertiginosamente.

• Le capacità di comunicazione non hanno lo stesso sviluppo.

• I dati multimediali hanno dato ulteriore spinta a questa necessità:p q– La Bibbia in formato testo occupa 4,41 MB (4.627.239 byte)

– Una foto a colori di dimensione 1280x1024 a 24 bit/pixel occupa 3,75 MB (3 932 160 byte)(3.932.160 byte)

– Una canzone di 4 minuti in formato CD (44,1 KHz, 16 bit/sample, Stereo) occupa 40,38 MB (42.336.000 byte)

U id di 1 i t i f t PAL (704 576 24 bit/ i l 25 f )– Un video di 1 minuto in formato PAL (704x576 a 24 bit/pixel, 25 fps) occupa 1,7 GB (1.824.768.000 byte)

• La tecnologia ha quindi seguito questa evoluzione anche nel campo della codifica generica, ma soprattutto con specifiche tecniche per l’audio e per il video.

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 5: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

TerminologiaTerminologia

• Messaggio: i dati di interesse nel nostro specifico blproblema.

• Codifica e decodifica: operazioni necessarie a trasformare il i i f “ difi t ” ibil t diil messaggio in forma “codificata” e possibilmente di dimensione inferiore e viceversa.

• Con il termine “compressione” si intendono tutte le• Con il termine compressione si intendono tutte le operazioni necessarie a ridurre (possibilmente) le dimensione di un messaggio.gg

• La ricostruzione di un messaggio compresso può avvenire in forma esatta (compressione lossless o senza perdita) o approssimata (compressione lossy o con perdita).

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 6: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

Non esiste la compressione perfetta!Non esiste la compressione perfetta!

• Non esiste e non può esistere un algoritmo in grado di comprimere tuttotutto.

• Per la precisione, dati tutti i possibili messaggi rappresentabili con nbit, non è possibile rappresentarli con n-1 bit.

• Dunque le compressioni che funzionano sempre non sono possibili.

• La cosa non è così banale, dato che ad esempio il brevetto USA 5 533 051 dal titolo “Methods for Data Compression” (realmente5,533,051 dal titolo Methods for Data Compression (realmente esistente) dice proprio di essere in grado di ridurre di almeno un bit qualsiasi messaggio.

• Ma allora come si fa a comprimere?

• Bisogna creare un modello del nostro sistema in grado di descrivere la probabilità con cui il messaggio viene incontrato, codificando poi conprobabilità con cui il messaggio viene incontrato, codificando poi con meno bit i messaggi più probabili e con più bit quelli meno probabili.

• Il codificatore è l’algoritmo che sceglie come rappresentare i messaggi.

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 7: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

Teoria dell’informazioneTeoria dell’informazione

• C. E. Shannon è stato uno dei pionieri in questo campo e ha formalizzato una grandezza in grado di rappresentare la quantità diformalizzato una grandezza in grado di rappresentare la quantità di informazione o incertezza di un insieme di possibili messaggi:

1logH S p scon p(s) la probabilità del messaggio s.

Q d h h i di i à i h h

2logs S

H S p sp s

• Questa grandezza che ha una serie di proprietà matematiche che non vedremo indica sostanzialmente che messaggi più probabili in un insieme contengono meno informazione.– La cosa può sembrare strana, ma se vi dico che domani ci saranno 30

gradi e siamo in inverno, vi sto dando più informazione rispetto ad una comunicazione che vi informa che domani ci saranno 10 gradi.

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 8: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

Teoria dell’informazioneTeoria dell’informazione

• Al di là di aspetti filosofici, questa misura consente poi a Shannon di sviluppare tutto un modello matematico che ha condizionato la storiasviluppare tutto un modello matematico che ha condizionato la storia della comunicazione successivamente.

• L’interesse principale, per noi, è che questa grandezza limita la massima capacità di trasmissione di un sistema di comunicazione.

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 9: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

Entropia e compressioneEntropia e compressione

• La grandezza H(s) è stata chiamata entropia da Shannon, per la somiglianza con l’entropia vista in fisica e per un malaugurato suggerimento di Voncon l entropia vista in fisica e per un malaugurato suggerimento di Von Neumann.

• In generale è possibile dire che la lunghezza media della codifica di un insieme di messaggi sarà data da:di messaggi sarà data da:

,s w C

L C p s L w

• dove C contiene tutte le coppie messaggio-codifica.

• Vale la relazione: H s L C

• Questa relazione limita sostanzialmente la massima compressione ottenibile con rappresentazioni a lunghezza variabile dei messaggi da trasmettere.

• L’unico modo di superare questo limite è definire un nuovo sistema di• L unico modo di superare questo limite è definire un nuovo sistema di messaggi ad entropia minore, in grado di trasmettere lo stesso concetto.

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 10: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

Algoritmo per la codifica ottimaAlgoritmo per la codifica ottima

• Nel 1952, David A. Huffman ha pubblicato un algoritmo in grado di generare una codifica (non compressione!!!) a lunghezza variabile ottimauna codifica (non compressione!!!) a lunghezza variabile ottima.

• Ovvero, non è possibile ottenere codifiche con lunghezza media inferiore.

• In realtà questo è vero solo se si considerano codici che rappresentano ogni i b l i t di bit M t difi èsimbolo con un numero intero di bit. Ma questa codifica è comunque una

pietra miliare della compressione dati, usata a tutt’oggi nella compressione JPEG per esempio.

Q l i d ll id i h i li di i • Questo algoritmo parte dalla considerazione che si vogliono generare codici a lunghezza variabile tali per cui non sia necessario aggiungere nulla tra l’uno e l’altro per indicare dove finisce uno e dove comincia l’altro.

d i l d difi i i di i i ili• Ad esempio, volendo codificare un insieme di 4 messaggi si possono utilizzare i codici 01, 102, 111, 202 (utilizzando 3 simboli).

• La sequenza 1111022020101111102 può essere interpretata solo come 111-102-202-01-01-111-102.

• Se utilizzassimo i codici 11, 111, 102, 02, questo non sarebbe possibile.

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 11: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

Codifica di HuffmanCodifica di Huffman

• L’algoritmo consiste in una stima a priori della probabilità di ogni messaggio seguita dalla costruzione di un sistema di codice che dipenda da questaseguita dalla costruzione di un sistema di codice che dipenda da questa probabilità, in modo da rappresentare con meno bit i messaggi più probabili.

• Si devono quindi ordinare i possibili messaggi in ordine crescente di probabilitàprobabilità.

• Si prendono i due messaggi con probabilità più bassa e li si combina in un nuovo messaggio con probabilità data dalla somma delle probabilità originali (ovvero la probabilità che si verifichi uno o l’altro evento)(ovvero la probabilità che si verifichi uno o l altro evento).

• Si riordinano i messaggi (eliminando i due combinati) e si ricomincia.

• Questa procedura produce un albero che può essere percorso dalla radice (l l i bi i ) ll f li d i li il(l’ultima combinazione) alle foglie assegnando uno 0 se si sceglie il ramo meno probabile e un 1 se si sceglie l’altro, o viceversa

• Il codice non è ovviamente mai univoco dato che la scelta di emettere 0 o 1 è arbitraria (ma una volta decisa bisogna mantenerla per tutto l’albero!).

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 12: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

EsempioEsempio

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 13: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

EsempioEsempio

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 14: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

Stima delle probabilitàStima delle probabilità

• Come detto è necessario stimare le probabilità dei diversi messaggi.

E i i i l 3 i• Esistono principalmente 3 approcci per questo scopo:– Stima statica a priori: nello sviluppare un algoritmo per uno specifico

compito, si possono stimare le probabilità dei diversi messaggi su una enorme mole di dati in modo da avere un modello statistico molto affidabile noto a priori sia al codificatore sia al decodificatore.

– Stima statica della sequenza: si eseguono due passate sui dati da comprimere. La prima passata esegue la stima delle probabilità, mentre la seconda esegue la codifica. E’ quindi necessario trasmettere anche le probabilità prima del messaggio.

– Stima dinamica: si parte con una stima statica a priori (ad esempio una distribuzione uniforme), si codifica/decodifica il primo messaggio, si aggiorna il modello di probabilità e quindi la codifica, e così via. Non è necessario trasmettere la distribuzione, ma il carico computazionale può diventare notevole. I metodi che utilizzano questa tecnica si chiamano adattativi (Adaptive Huffman Coding).

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 15: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

Esempio completoEsempio completo

• Si supponga di voler comprimere il seguente messaggio:

piccolo esempio di compressione dati con l'algoritmo di huffmanhuffman

• Il messaggio è composto di 63 caratteri contando anche gli spazi e l’apostrofo.

• I simboli sono 19 e la loro distribuzione è la seguente:

o spazio=8o,spazio=8

i=7

c,e,m=4, ,

p,l,s,d,n,a=3

r,t,f=2

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

',g,h,u=1

Page 16: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

Esempio completo (segue)Esempio completo (segue)o=8spazio=8i=7

o=8spazio=8i=7

o=8spazio=8i=7i 7

c=4e=4m=4

i 7c=4e=4m=4

i 7c=4e=4m=4

p=3l=3s=3

p=3l=3s=3

p=3l=3s=3

d=3n=3a=3

d=3n=3a=3

d=3n=3a=3

r=2t=2f=2' 1

(h+u)=2r=2t=2f 2

('+g)=2(h+u)=2r=2t 2'=1

g=1h=1

1

f=2'=1g=1

t=2f=2

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

u=1

Page 17: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

Esempio completo (segue)Esempio completo (segue)o=8spazio=8i=7

o=8spazio=8i=7

o=8spazio=8i=7i 7

(t+f)=4c=4e=4

i 7((h+u)+r)=4(t+f)=4c=4

i 7(a+('+g))=5((h+u)+r)=4(t+f)=4

m=4p=3l=3

e=4m=4p=3

( )c=4e=4m=4

s=3d=3n=3

l=3s=3d=3

p=3l=3s=3

a=3('+g)=2(h+u)=2

2

n=3a=3('+g)=2

d=3n=3

r=2

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 18: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

Esempio completo (segue)Esempio completo (segue)o=8spazio=8i=7

o=8spazio=8i=7

o=8spazio=8(m+p)=7i 7

(d+n)=6(a+('+g))=5((h+u)+r)=4

i 7(l+s)=6(d+n)=6(a+('+g))=5

(m p) 7i=7(l+s)=6(d+n)=6(( ) )

(t+f)=4c=4e=4

( ( g))((h+u)+r)=4(t+f)=4c=4

( )(a+('+g))=5((h+u)+r)=4(t+f)=4

m=4p=3l=3

e=4m=4p=3

c=4e=4

s=3

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 19: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

Esempio completo (segue)Esempio completo (segue)(c+e)=8o=8spazio=8

(((h+u)+r)+(t+f))=8(c+e)=8o=8

((d+n)+(a+('+g)))=11(((h+u)+r)+(t+f))=8(c+e)=8spazio 8

(m+p)=7i=7(l+s)=6

o 8spazio=8(m+p)=7i=7

(c e) 8o=8spazio=8(m+p)=7( )

(d+n)=6(a+('+g))=5((h+u)+r)=4

(l+s)=6(d+n)=6(a+('+g))=5

( p)i=7(l+s)=6

(t+f)=4

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 20: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

Esempio completo (segue)Esempio completo (segue)(i+(l+s))=13((d+n)+(a+('+g)))=11(((h+u)+r)+(t+f))=8

(spazio+(m+p))=15(i+(l+s))=13((d+n)+(a+('+g)))=11

((c+e)+o)=16(spazio+(m+p))=15(i+(l+s))=13(((h u) r) (t f)) 8

(c+e)=8o=8spazio=8

((d n) (a ( g))) 11(((h+u)+r)+(t+f))=8(c+e)=8o=8

(i (l s)) 13((d+n)+(a+('+g)))=11(((h+u)+r)+(t+f))=8

p(m+p)=7

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 21: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

Esempio completo (segue)Esempio completo (segue)

(((d+n)+(a+('+g)))+(((h+u)+r)+(t+f)))=19

((c+e)+o)=16((c+e)+o)=16

(spazio+(m+p))=15

(i+(l+s))=13

((spazio+(m+p))+ (i+(l+s)))=28

(((d+n)+(a+('+g)))+(((h+u)+r)+(t+f)))=19(((d+n)+(a+( +g)))+(((h+u)+r)+(t+f))) 19

((c+e)+o)=16

((((d ) ( ( ))) (((h ) ) ( f))) (( ) ))((((d+n)+(a+('+g)))+(((h+u)+r)+(t+f)))+((c+e)+o))=35

((spazio+(m+p))+(i+(l+s)))=28

(((((d+n)+(a+('+g)))+(((h+u)+r)+(t+f)))+((c+e)+o))+((spazio+(m+p))+(i+(l+s))))=63

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 22: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

Albero risultanteAlbero risultante

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 23: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

Codifica risultanteCodifica risultantesimbolo codifica lunghezza occorrenze l*o

o 011 3 8 24

spazio 100 3 8 24

i 110 3 7 21i 110 3 7 21

c 0100 4 4 16

e 0101 4 4 16

m 1010 4 4 16

p 1011 4 3 12p 1011 4 3 12

l 1110 4 3 12

s 1111 4 3 12

d 00000 5 3 15

n 00001 5 3 15

a 00010 5 3 15

r 00101 5 2 10

t 00110 5 2 10

f 00111 5 2 10

' 000110 6 1 6

g 000111 6 1 6

h 001000 6 1 6

u 001001 6 1 6

tot 252

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 24: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

Codifica classicaCodifica classicasimbolo codifica lunghezza occorrenze l*o

o 00000 5 8 40

spazio 00001 5 8 40

i 00010 5 7 35

c 00011 5 4 20

e 00100 5 4 20

m 00101 5 4 20

p 00110 5 3 15

l 00111 5 3 15

s 01000 5 3 15

d 01001 5 3 15

n 01010 5 3 15

a 01011 5 3 15

r 01100 5 2 10

t 01101 5 2 10

f 01110 5 2 10

' 01111 5 1 5

g 10000 5 1 5

h 10001 5 1 5

u 10010 5 1 5

tot 315

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 25: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

Il contestoIl contesto

• Nell’algoritmo di Huffman, si considerano messaggi che provengono da una sorgente senza memoria ovvero che genera messaggi indipendenti unosorgente senza memoria, ovvero che genera messaggi indipendenti uno dall’altro, con una certa probabilità.

• Mentre questa assunzione è molto comoda, quasi mai questo si verifica.

Q t t t d i i d t di t ti i f tti• Questo testo, ad esempio, non proviene da una sorgente di questo tipo; infatti esistono dei legami tra una lettera e la successiva: la probabilità di osservare una p dopo una n è nulla (a meno di errori grammaticali!).

S difi i l i di l difi iù• Se codificassimo le coppie di lettere potremmo ottenere una codifica più efficiente in termini di lunghezza media dei codici.

• Il contesto può essere utilizzato in diversi modi, sfruttandolo a priori per difi il i i d d d if l di ib imodificare il messaggio in modo da rendere meno uniforme la distribuzione

dei messaggi, oppure utilizzandolo per calcolare probabilità condizionate.

• In alcuni casi è possibile che il contesto sia sufficiente a ridurre le dimensioni dei messaggi da non richiedere ulteriori sistemi per la compressione.

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 26: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

Run Length EncodingRun Length Encoding

• E’ il più semplice sistema di compressione basato sul contesto.

• Si codificano non i singoli elementi ma sequenze (run) di elementi uguali• Si codificano non i singoli elementi, ma sequenze (run) di elementi uguali. Non funziona molto bene per il testo, ma ha effetti notevoli su immagini in bianco e nero.

A d l bbb i ò t d i (4 )(3 b)(5 )(4 )• Avendo la sequenza aaaabbbcccccaaaa si può tradurre in (4,a)(3,b)(5,c)(4,a).

• Con un algoritmo di questo tipo entrano in gioco parecchi aspetti implementativi in grado di fare la differenza:

– Come distinguo il numero di occorrenze dalle occorrenze stesse?

– Trasmetto sempre messaggi codificati o no?

– Inserisco quindi un codice in grado di passare da codifica a non-codifica?

• Diverse implementazioni sono possibili e queste devono essere adattate alla particolare applicazione.

• E’ inoltre necessario decidere come codificare i messaggi ottenuti. Sarebbe ggpossibile applicare l’algoritmo di Huffman ai diversi codici o coppie di codici ottenute.

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 27: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

EsempioEsempiopp• L’immagine qui accanto è una

scansione a 518x723 pixel a 1 bit per pixel, ovvero bianco o nero.pixel, ovvero bianco o nero.

• L’occupazione di memoria non compressa è quindi di 46.815 byte.

• Utilizzando un algoritmo RLE molto• Utilizzando un algoritmo RLE molto semplice si invia un byte per indicare il numero di pixel neri, poi uno per indicare il numero di pixel bianchi eindicare il numero di pixel bianchi e così via. Se ci sono 255 o più pixel con lo stesso colore il byte successivo indica ancora pixel disuccessivo indica ancora pixel di quel colore.

• Con questo algoritmo ho ottenuto un file di 10 519 bytefile di 10.519 byte.

• Questo file contiene molte run bianche e quindi funziona molto bene

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

bene.

Page 28: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

EsempioEsempiopp• Questa è una immagine sempre a

1 bpp di 360x494 pixel che occupa 22.230 byteoccupa 22.230 byte

• La “compressione” con l’algoritmo precedente produce un file di 78 920 byte!78.920 byte!

• Questo perché l’algoritmo usa come minimo un byte per ogni runrun.

• Ovviamente è possibile ottenere risultati migliori, ma in questo caso il problema è che il modellocaso il problema è che il modello che stiamo usando non corrisponde ai dati che vengono modellatimodellati.

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 29: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

Altra variante del RLE: PackbitsAltra variante del RLE: Packbits

• Nello standard PostScript è stata utilizzata una variante del RLE che si ispira ad un algoritmo noto come Packbitsispira ad un algoritmo noto come Packbits.

• Il filtro RunLengthEncode codifica i dati in un semplice formato a byte.

• Ogni run consiste di un byte che indica la lunghezza L seguito da 1-128 byte di dati.

• Se L è tra 0 e 127 i seguenti 1 128 byte vengono copiati così come sono• Se L è tra 0 e 127 i seguenti 1-128 byte vengono copiati così come sono (nessuna codifica).

• Se L è tra 129 e 255 il byte successivo viene inviato in output 257-Lvolte (2-128 volte).

• Quando la codifica è finita, scrive un byte finale con il valore 128 detto EOD marker, ovvero End Of Data: marcatore di fine fileEOD marker, ovvero End Of Data: marcatore di fine file.

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 30: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

Algoritmi di tipo LempelAlgoritmi di tipo Lempel--ZivZiv

• LZ77 (a finestra scorrevole o Sliding Window)V i i LZSS (L l Zi S S ki)– Varianti: LZSS (Lempel-Ziv-Storer-Szymanski)

– Applicazioni: gzip, Squeeze, LHA, PKZIP, ZOO

• LZ78 (tecnica a dizionario)– Varianti: LZW (Lempel-Ziv-Welch), LZC (Lempel-Ziv-Compress)– Applications: compress, GIF, CCITT (nei modem), ARC, PAK

T di i l l’LZ77 il i li d i• Tradizionalmente l’LZ77 era il migliore, ma decisamente lento. Nella versione utilizzata da gzip è però praticamente analogo all’LZ78.g

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 31: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

LZ77: LempelLZ77: Lempel--Ziv a finestra scorrevoleZiv a finestra scorrevole

a a c a a c a b c a b a b a cCursore

a a c a a c a b c a b a b a cDizionario

(codificato precedentemente)Lookahead

B ff(codificato precedentemente) Buffer

• La finestra che contiene il dizionario e il buffer sono di lunghezza fissata e scorrono con il cursore.

Ad ogni passo:• Ad ogni passo:– Manda in uscita la terna (P,L,C)

P = posizione della corrispondenza più lunga nel dizionario, relativa alla posizione attuale (quanti caratteri devo andare indietro)attuale (quanti caratteri devo andare indietro)L = lunghezza della corrispondenza più lungaC = carattere successivo da mettere nel buffer dopo la corrispondenza.

– Sposta avanti la finestra di L + 1

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

p

Page 32: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

LZ77: DecodificaLZ77: Decodifica

• Il decodificatore ha la stessa finestra dizionario del codificatore, e la costruisce dinamicamentecostruisce dinamicamente.

• Per ogni messaggio il decodificatore deve cercare nel dizionario, inserire una copia alla posizione corrente e poi il carattere aggiuntivo.

• Che cosa vuol dire se L>P, cioè se solo una parte del messaggio è presente nel dizionario?presente nel dizionario?

• Es.: dizionario = abcd, simbolo da decodificare = (2,9,e)• Si copia semplicemente dal dizionario (che è anche l’output corrente) p p ( p )

partendo dal cursore con qualcosa tipo questo:

for (i = 0; i < length; i++)out[cursor+i] = out[cursor-offset+i];

• Output = abcdcdcdcdcdc

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 33: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

LZ77: EsempioLZ77: Esempio

a a c a a c a b c a b a a a c (0 0 a)a a c a a c a b c a b a a a c (0,0,a)

a a c a a c a b c a b a a a c (1,1,c)

a a c a a c a b c a b a a a c (3,4,b)

a a c a a c a b c a b a a a c (3,3,a)

a a c a a c a b c a b a a a c (1,2,c)

Di i i (di i 6)Dizionario (dimensione = 6)

Corrispondenza Carattere successivo

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 34: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

LZ77: Ottimizzazioni usate da LZ77: Ottimizzazioni usate da gzipgzip

LZSS: Aggiunge una variante all’LZ77, inviando in output d di i i i di di idue diversi tipi di codici:(0, posizione, lunghezza) oppure (1,carattere)

Ti i t i l d f l l h èTipicamente si usa la seconda forma se la lunghezza è inferiore a 3.a a c a a c a b c a b a a a c (1,a)a a c a a c a b c a b a a a c (1,a)

a a c a a c a b c a b a a a c (1,a)

a a c a a c a b c a b a a a c (1,c)

a a c a a c a b c a b a a a c (0,3,4)

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 35: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

Ottimizzazioni usate da Ottimizzazioni usate da gzipgzip (segue)(segue)

• Si codifica con Huffman la posizione, la lunghezza e i icaratteri

• Alcune regole particolari (che non vedremo) che t di l t i iù l bit lconsentono di non usare la stringa più lunga subito, se al

passo successivo si può fare di meglio meglio una gallina domani che un uovo oggi!gallina domani che un uovo oggi!

• Dal punto di vista implementativo, si utilizzano tabelle hash per memorizzare il dizionario:p– Hash basato su stringhe di lunghezza 3.

– Si trova la corrispondenza migliore all’interno del bucket corretto.

– Si impongono dei limiti sulla lunghezza della ricerca.

– I dati sono memorizzati nel bucket in ordine di posizione

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 36: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

Teoria alla base dell’LZ77Teoria alla base dell’LZ77

• Si è dimostrato che l’algoritmo LZ a finestra scorrevole è asintoticamente ottimo [Wyner-Ziv 94]ottimo [Wyner-Ziv,94]

• Stringhe di lunghezza sufficiente verranno compresse fino al limite dell’entropia del messaggio al tendere all’infinito della finestra di ricerca:

nAX

n XpXpH

)(1log)(

• Questo utilizzando codifica logaritmica della posizione

nnHH

lim

• Questo utilizzando codifica logaritmica della posizione.

• Il problema è che “di lunghezza sufficiente” vuol dire veramente molto lunghe! Solitamente non trattabile dal punto di vista computazionale per il costo della ricercacosto della ricerca.

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 37: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

LZ78: LempelLZ78: Lempel--Ziv a dizionarioZiv a dizionario

• Algoritmo di base:– Si tiene un dizionario di parole con un identificatore intero per

ogni voce (dal punto di vista implementativo questo aspetto diventa fondamentale: una struttura come un trie può modificare le pprestazioni in modo drammatico)

– Ciclo di codifica

l i iù l S l di i i• trova la stringa più lunga S nel dizionario

• invia in uscita l’identificatore di S e il carattere c successivo alla corrispondenzap

• Aggiungi la stringa Sc al dizionario

– La decodifica usa lo stesso metodo per costruire il dizionario e li id tifi t i ( ’è bi di i i h ilcerca gli identificatori (non c’è bisogno di inviare anche il

dizionario)

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 38: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

LZ78: Esempio di codificaLZ78: Esempio di codifica

DizionarioOutput

a a b a a c a b c a b c b (0,a) 1 = aDizionarioOutput

a a b a a c a b c a b c b (1,b) 2 = aba a b a a c a b c a b c b (1,a) 3 = aaa a b a a c a b c a b c b (0,c) 4 = c

b b b b (2 ) 5 ba a b a a c a b c a b c b (2,c) 5 = abca a b a a c a b c a b c b (5,b) 6 = abcb

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 39: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

LZ78: Esempio di decodificaLZ78: Esempio di decodifica

I t Dizionario

a(0,a) 1 = aInput Dizionario

a a b(1,b) 2 = aba a b a a(1,a) 3 = aaa a b a a c(0,c) 4 = c

b b(2 ) 5 ba a b a a c a b c(2,c) 5 = abca a b a a c a b c a b c b(5,b) 6 = abcb

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 40: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

LZW (LempelLZW (Lempel--ZivZiv--Welch) [Welch84]Welch) [Welch84]

• Si può evitare di inviare il carattere aggiuntivo c in uscita, i S l di i i !ma comunque aggiungere Sc al dizionario!

• Il dizionario viene inizializzato con i valori dei byte da 0 a 255 (t tti i ibili b t i li h i i t )255 (tutti i possibili byte singoli che si possono incontrare). Questa inizializzazione è fissa e quindi non necessita di alcun invio di datialcun invio di dati.

• Il decodificatore ricostruisce il codice e il dizionario basandosi solo sui codici ricevuti.

• C’è un caso particolare che deve essere gestito separatamente.

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 41: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

LZW: Esempio di codificaLZW: Esempio di codifica

DizionarioOutput

a a b a a c a b c a b c b 112 256=aaDizionarioOutput

b b b b 257 b112a a b a a c a b c a b c b 257=aba a b a a c a b c a b c b 113 258=ba

b b b b 256 259

112

a a b a a c a b c a b c b 256 259=aaca a b a a c a b c a b c b 114 260=ca

2 261 ba a b a a c a b c a b c b 257 261=abca a b a a c a b c a b c b 260 262=cab

263 ba a b a a c a b c a b c b 113 263=bca a b a a c a b c a b c b 114 264=cb

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 42: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

LZW: Esempio di decodificaLZW: Esempio di decodifica

Input Dizionario

a a b a a c a b c a b c b256b b b b

112Input

112

Dizionario

256=aaa a b a a c a b c a b c b257=aba a b a a c a b c a b c b

b b b b113256

112

258=baa a b a a c a b c a b c b259=aaca a b a a c a b c a b c b

2561142 260=caa a b a a c a b c a b c b

261=abca a b a a c a b c a b c b257260

262=caba a b a a c a b c a b c b263=bca a b a a c a b c a b c b

113114

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

...

Page 43: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

Un problema da risolvere in LZ78 e LZWUn problema da risolvere in LZ78 e LZW

• Che cosa succede se il dizionario diventa troppo grande?– Quando il dizionario raggiunge una certa dimensione lo si elimina

e si ricomincia come se il file iniziasse qui (tecnica utilizzata nel GIF: semplice)p )

– Quando la compressione non è particolarmente efficace (soglia sul rapporto di compressione e sulla dimensione minima dell’input) si elimina il dizionario e si ricomincia (utilizzato nell’utility unixelimina il dizionario e si ricomincia (utilizzato nell utility unix compress)

– Si elimina la voce del dizionario utilizzata meno recentemente (least-recently-used o LRU) quando il dizionario raggiunge una certa dimensione (usato nel BTLZ, lo standard della British Telecom))

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 44: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

Riassunto sugli algoritmi LempelRiassunto sugli algoritmi Lempel--ZivZiv

• Sia l’LZ77 che LZ78 e le loro varianti tengono un “dizionario” delle stringhe viste recentementeviste recentemente.

• Le differenze sono:– Come viene memorizzato il dizionario

C i t– Come viene esteso

– Come viene indicizzato

– Come vengono rimossi gli elementi

Si d b i bi i ll di ib i di b bili à d i d i l• Si adattano bene ai cambiamenti nella distribuzione di probabilità dei dati nel file (per esempio in un archivio ZIP con diversi tipi di file).

• Le prime versioni di questi algoritmi non utilizzavano una codifica probablilistica (Huffman o similari) e avevano performance piuttosto scarse (es. 4,5 bit/carattere per i testi inglesi)

• Versioni più “moderne” (es. gzip) utilizzano le codifiche probabilistiche come seconda passata e comprimono molto di più.

• Stanno diventando ormai obsoleti, ma le idee utilizzate sono alla base di tutti gli algoritmi più recenti.

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 45: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

COMPRESSIONE AUDIOCOMPRESSIONE AUDIO

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 46: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

Formati non compressi / Formati non compressi / comprcompr. . lossylossy

• Non compressi: Esempio WAV

• Compressione Lossy (esempio Huffman)– Sono algoritmi senza perdita d’informazione in cui il segnale audio

decompresso risulta essere identico bit a bit a quello d’originedecompresso risulta essere identico, bit a bit, a quello d origine.

– Si basano sul concetto di entropia ed il loro obiettivo è quello di riconoscere ed eliminare le ridondanze numeriche presenti nel segnale attraverso opportune inferenze statisticheattraverso opportune inferenze statistiche.

– La qualità audio percepita dopo la compressione è identica all’originale ma i tassi di compressione forniti sono generalmente molto più bassi di quelli previsti dai codec lossyquelli previsti dai codec lossy.

• Compressione poco significativa -> La codifica Huffman è p p gimpiegata nei codec MPEG Layer-3 per comprimere ulteriormente la sequenza numerica ottenuta dopo la quantizzazione non lineare

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 47: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

MPEGMPEG

• MPEG (Moving Picture Experts Group) è un gruppo di lavoro gestito dalla ISO/IEC (ISO/IEC JTC1 SC 29 WG11) che si occupa dellodalla ISO/IEC (ISO/IEC JTC1 SC 29 WG11) che si occupa dello sviluppo di standard per la codifica audio-video digitale.

• Il primo progetto MPEG inizio nel 1988 e terminò nel 1992 con l’uscita dello standard internazionale MPEG-1 (ISO-IEC 11172), principalmente utilizzato nei prodotti basati su Video CD ed MP3.

• Successivamente vennero prodotti altri tre standard internazionaliSuccessivamente vennero prodotti altri tre standard internazionali, MPEG-2 (ISO-IEC 13818), che trova il suo maggiore utilizzo nelle codifiche televisive e satellitari, MPEG-4 (ISO-IEC 14496) ed MPEG-7 “Multimedia Content Description Interface” MPEG 217 Multimedia Content Description Interface . MPEG-21 “Multimedia Framework”invece è l’ultimo progetto, iniziato nel 2000, al quale MPEG sta attualmente lavorando.

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 48: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

Encoder MP3 (MPEG1 Encoder MP3 (MPEG1 –– layerlayer 3)3)

• L’encoder riceve in input un segnale PCM e lo legge a bl hi di 384 576 1152 l i f i d l fblocchi di 384, 576 o 1152 sample, in funzione del formato MPEG e Layer utilizzati. Per ognuno di questi blocchi effettua le seguenti operazioni:effettua le seguenti operazioni:

• FASE 1: Banco di Filtri Ibrido: questa fase ha il compito di convertire i campioni PCM nel corrispondente dominiodi convertire i campioni PCM nel corrispondente dominio frequenziale, utilizzando un “Banco di Filtri Polifasico seguito da una Trasformata Coseno Modificata (MDCT)”. In altre parole, questo blocco prende il segnale rappresentato nel dominio del tempo e lo trasforma nella co is o de te ese t io e el do i io delle corrispondente rappresentazione nel dominio delle frequenze (spettro).

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 49: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

MP3 MP3 –– Fase 2Fase 2

• FASE 2: Modello Psicoacustico: questo blocco “il ” d ll’ d di il irappresenta “il cuore” dell’encoder e di tutto il sistema

MPEG/Audio. Il suo compito è di analizzare lo spettro del segnale (calcolato con la Trasformata di Fourier) edel segnale (calcolato con la Trasformata di Fourier) e definire il livello di soglia di udibilità SMR (Signal to Mask Ratio) sfruttando i principi psicoacutici dell’apparato ) p p p ppuditivo umano.

• In pratica, il modello psicoacustico determina quali sono le sole informazioni che il nostro orecchio è in grado di percepire e quali no, e fornisce questa informazione al blocco “Q ti to e o Li e e” che l esti àblocco “Quantizzatore non Lineare” che la gestirà opportunamente.

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 50: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

MP3 MP3 –– FASE 3FASE 3

• Quantizzatore non Lineare: compito di questo blocco è di difi i l i d l blcodificare numericamente lo spettro ricevuto dal blocco

“Banco di Filtri Ibrido” in funzione dell’importanza di ogni banda di frequenze: se il blocco “Modelloogni banda di frequenze: se il blocco Modello Psicoacustico” indica che una particolare banda di frequenze è percepita poco, essa verrà codificata con pochi q p p p , pbit; viceversa, se il blocco “Modello Psicoacustico”, indica che una particolare banda di frequenze è percepita molto,

à difi i bi L’ bi i fi l èessa verrà codificata con tanti bit. L’obiettivo finale è quello di ottenere una quantizzazione dello spettro tale per cui il rumore di quantizzazione introdotto si trovi al dicui il rumore di quantizzazione introdotto si trovi al di sotto della soglia di udibilità (SMR) fornita dal modello psicoacustico

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

p

Page 51: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

MP3 MP3 –– FASE 4FASE 4

• Impacchettamento: compito di questo blocco è prendere l difi i d ll f i lla codifica numerica dello spettro frequenziale generato dal blocco “Quantizzatore non Lineare” ed impacchettarla secondo la sintassi dello standard MPEG utilizzatosecondo la sintassi dello standard MPEG utilizzato.

• In questa fase, il layer 3 prevede un ulteriore compressione con l’algoritmo di Huffmancon l algoritmo di Huffman

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 52: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

MP3 MP3 –– schema di un encoderschema di un encoder

http://www.lim.dico.unimi.it/didatt/materiali/MPEG_infoMusicale.pdf

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 53: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

La compressione JPEG

COMPRESSIONE IMMAGINICOMPRESSIONE IMMAGINILa compressione JPEG

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 54: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

Lo standard di compressione JPEGLo standard di compressione JPEG

• JPEG è una sigla che sta per Joint Photographic Experts Group ed è uno standard per la compressione di immagini statiche a toniuno standard per la compressione di immagini statiche a toni continui.Ovvero è stato pensato per codificare immagini fotografiche, in contrapposizione ad immagini sintetiche generate al calcolatore.

• Come noto, è uno standard molto diffuso.

• Non è un singolo algoritmo, ma utilizza diverse tecniche di codifica:– Codifica tramite Trasformata Coseni Discreta (DCT)– Codifica tramite Trasformata Coseni Discreta (DCT)

– Run Length Encoding (RLE)

– Codifica di Huffman

• Quattro diverse modalità di funzionamento:– Lossless JPEG

– Sequential (Baseline) JPEGSequential (Baseline) JPEG

– Progressive JPEG

– Hierarchical JPEG

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 55: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

Lossless JPEGLossless JPEG

• Utilizza una tecnica di predizione lineare0y

• Fornisce 8 diversi schemi di predizione

• Si costruisce l’immagine residua come

0yy ay b

differenza tra il pixel corrente x e il valore yottenuto con la predizione

L’i i id i

y cy a b c

• L’immagine residua viene compressa con Huffmann. 2

b cy a

a c

c b2

a cy b

a b

a x

b

2y

Schemi di predizione utilizzati nel Lossless JPEG

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 56: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

Baseline JPEGBaseline JPEG• Il JPEG è un algoritmo di compressione color-blind ovvero non si

interessa di che cosa sta comprimendo. L’input è una matrice di valori a n bit per pixel Se l’immagine è a colori (ad esempio RGB) ognia n bit per pixel. Se l’immagine è a colori (ad esempio RGB) ogni piano viene compresso separatamente.

• Ogni pixel viene scalato di livello sottraendogli 2n-1

• L’immagine viene divisa in blocchi 8x8 non sovrapposti.

• Ogni blocco viene elaborato con la trasformata DCT ottenendo 8x8 coefficienticoefficienti.

• I coefficienti vengono quantizzati (divisi) utilizzando una tabella specificata dallo standard che prevede un diverso valore di quantizzazione per ogni frequenza.

• I coefficienti vengono ordinati utilizzando un percorso a zig-zag.

• I coefficienti quantizzati e ordinati vengono codificati utilizzando un• I coefficienti quantizzati e ordinati vengono codificati utilizzando un codificatore entropico a lunghezza di bit variabile (tabelle di codifica di Huffman)

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 57: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

Schema di codifica e decodifica JPEGSchema di codifica e decodifica JPEG

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 58: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

Ordinamento convenzionale e zigOrdinamento convenzionale e zig--zag in una zag in una t i 8 8t i 8 8matrice 8x8matrice 8x8

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 59: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

Trasformata Coseno DiscretaTrasformata Coseno Discreta• E’ una variante della trasformata di Fourier che fornisce coefficienti

reali.

i à i i l i d h l• Ha proprietà interessanti per la compressione, dato che separa le frequenze spaziali polarizzando quelle più basse a valori più bassi dei coefficienti.

• Le equazioni diretta e inversa sono le seguenti (FDCT sta per Forward DCT mentre IDCT sta per Inverse DCT).

7 7

0 0

7 7

2 1 2 11 cos cos4 16 16

2 1 2 1

uv u v xyy x

x u y vFDCT S C C s

7 7

0 0

2 1 2 11 cos cos4 16 16

1 0

xy u v uvv u

x u y vIDCT s C C S

02

1x

xC

altrimenti

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 60: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

Valori dei coseni al variare della frequenzaValori dei coseni al variare della frequenza

-0 20

0,20,40,60,8

1

0 1 2 3 4 5 6 7 -0 20

0,20,40,60,8

1

0 1 2 3 4 5 6 7

-1-0,8-0,6-0,40,2 0 1 2 3 4 5 6 7

u=0 -1-0,8-0,6-0,40,2 0 1 2 3 4 5 6 7

u=1

0 81

0 81

0 8-0,6-0,4-0,2

00,20,40,60,8

0 1 2 3 4 5 6 7

0 8-0,6-0,4-0,2

00,20,40,60,8

0 1 2 3 4 5 6 7

-1-0,8

u=2 -1-0,8

u=3

0,40,60,8

1

0,40,60,8

1

-1-0,8-0,6-0,4-0,2

00,20,4

0 1 2 3 4 5 6 7

u=4 -1-0,8-0,6-0,4-0,2

00,20,4

0 1 2 3 4 5 6 7

u=5

0 20

0,20,40,60,8

1

0 20

0,20,40,60,8

1

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

-1-0,8-0,6-0,4-0,2 0 1 2 3 4 5 6 7

u=6 -1-0,8-0,6-0,4-0,2 0 1 2 3 4 5 6 7

u=7

Page 61: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

Valori dei coseni della DCT 2DValori dei coseni della DCT 2D• Nell’immagine qui accanto

vengono mostrati i valori dei coseni ordinati al variare deicoseni ordinati al variare dei coefficienti u e v della trasformata.

• Questi sono i valori cheQuesti sono i valori che moltiplicano i pixel dell’immagine originale.

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 62: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

Matrice di quantizzazioneMatrice di quantizzazione

• La matrice di quantizzazione descrive la precisione con cui verràdescrive la precisione con cui verrà rappresentato ogni coefficiente della trasformata DCT.

• La matrice mostrata qui accanto è

16 11 10 16 24 40 51 6112 12 14 19 26 58 60 55• La matrice mostrata qui accanto è

definita come esempio nello standard JPEG e serve come base di partenza per la maggior parte delle

12 12 14 19 26 58 60 5514 13 16 24 40 57 69 5614 17 22 29 51 87 80 6218 22 37 56 68 109 103 77partenza per la maggior parte delle

librerie di compressione.

• Quando si indica la qualità o il livello di compressione desiderato

24 35 55 64 81 104 113 9249 64 78 87 103 121 120 10172 92 95 98 112 100 103 99livello di compressione desiderato,

non si fa altro che moltiplicare o dividere i coefficienti di questa matrice, aumentandone omatrice, aumentandone o riducendone i valori in modo proporzionale.

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 63: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

Baseline JPEGBaseline JPEG

• Coefficiente DC: – E’ il coefficiente (0,0) di ogni blocco 8x8

– E’ proporzionale alla media dei valori dei pixel nel blocco

Deriva da Direct Current cioè corrente continua– Deriva da Direct Current, cioè corrente continua.

• Coefficienti AC: sono i restanti 63 coefficienti in ogni blocco 8x8blocco 8x8

• Il coefficiente DC viene compresso diversamente dagli altri, dato che il valore medio di un blocco sarà simile a ,quello dei blocchi vicini.

• I coefficienti DC vengono quindi codificati per differenza rispetto al blocco codificato precedentemente.

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 64: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

Codifica del coefficiente DCCodifica del coefficiente DC• Lavorando con mappe di valori a 8

bit/pixel si ottengono coefficienti DC con precisione a 11 bit

SSSS Differential DC coefficient values

0 0con precisione a 11 bit• La codifica differenziale quindi

richiederà una precisione di 12 bit• Viene definita una Category Table

01234

0-1,1

-3,-2,2,3-7...-4,4...7

15 8 8 15• Viene definita una Category Tableper i valori di DC con 12 possibili range di valori.

• Un indice a 4 bit consente di

45678

15...-8,8...15-31...-16,16...31-63...-32,32...63

-127...-33,33...127255 128 128 255• Un indice a 4 bit consente di

identificare a quale categoria appartenga il coefficiente attuale.SSSS indice che identifica la

891011

-255...-128,128...255-511...-256,256...511

-1023...-512,512...1023-2047...-1024,1024...2047

• SSSS: indice che identifica la categoria (4 s per indicare 4 bit)

• Viene poi definita una tabella di H ff l difi l hHuffman con la codifica a lunghezza variabile di SSSS

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 65: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

Codifica del coefficiente DCCodifica del coefficiente DC

• Si calcola il coefficiente DC per il blocco corrente

Si il l difi d d il• Si sottrae a questo il valore codificato precedentemente creando il coefficiente differenziale DC (lo chiamiamo DIFF)

• Si trova il valore della categoria SSSS a cui appartiene DIFFg pp

• Per ogni categoria, si aggiungono SSSS bit al codice di Huffman di SSSS per identificare quale DIFF è stata generata.

Q d DIFF è i i i i li SSSS bi• Quando DIFF è positiva, vengono aggiunti gli SSSS bit meno significativi di DIFF.

• Quando DIFF è negativa, vengono aggiunti gli SSSS bit meno Q g , g gg gsignificativi di DIFF -1.

• In pratica il primo bit di quelli aggiunti vale 0 se DIFF è negativa e 1 se è positivase è positiva.

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 66: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

Codifica dei coefficienti ACCodifica dei coefficienti AC• Come prima si raggruppano i

coefficienti in gruppi identificati da SSSS per cui è disponibile una

SSSS AC coefficient values

1 1 1SSSS per cui è disponibile una codifica di Huffman

• Ad ogni coefficiente AC non nulloposso associare una classe:

12345

-1,1-3,-2,2,3

-7...-4,4...715...-8,8...15

31 16 16 31posso associare una classe: NNNNSSSS

• NNNN rappresenta il numero di coefficienti nulli incontrati dall’ultimo

56789

-31...-16,16...31-63...-32,32...63

-127...-33,33...127-255...-128,128...255511 256 256 511coefficiente codificato e prima di

quello attuale.• Ci sono 16 possibli Run Lengths (0-

15) NNNN 10 t i i l i

910

-511...-256,256...511-1023...-512,512...1023

15): NNNN e 10 categorie per i valori AC: SSSS con due casi speciali:

– 16 zeri in fila (ZRL): 11110000– Fine blocco (EOB) : 00000000Fine blocco (EOB) : 00000000

• Dimensione della tabella di Huffman: 16 * 10 + 2 = 162 voci.

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 67: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

Codifica dei coefficienti ACCodifica dei coefficienti AC

• Si calcola per il coefficiente AC (Ai) la classe NNNNSSSS• Si determina il codice di Huffman corrispondente a

NNNNSSSS

• Come per il coefficiente DC, si aggiungono SSSS bit al codice di Huffman della classe per identificare quale Ai stiamo codificandostiamo codificando.

• Quando Ai è positivo, vengono aggiunti gli SSSS bit meno significativi di Ai Quando Ai è negativa vengonosignificativi di Ai. Quando Ai è negativa, vengono aggiunti gli SSSS bit meno significativi di Ai-1.

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 68: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

EsempioEsempioBlocco originale

95 91 91 91 84 84 84 84109 99 95 91 91 84 84 84109 109 99 99 91 91 91 91120 120 109 106 99 95 91 91131 131 120 109 106 99 95 91

Zig zag 0 1 2 3 4 5 6 7 8 9 1010 9 10 1 4 1 0 0 0 1 EOB131 131 120 109 106 99 95 91

145 139 131 120 109 106 99 95157 145 139 131 120 109 106 99169 157 145 131 131 120 109 106

-10 9 -10 1 -4 1 0 0 0 -1 EOB

Blocco scalato-33 -37 -37 -37 -44 -44 -44 -44-19 -29 -33 -37 -37 -44 -44 -44

-128

Trasformata quantizzata-10 9 1 0 0 0 0 0-10 -4 0 0 0 0 0 0

Zig-zag

19 29 33 37 37 44 44 44-19 -19 -29 -29 -37 -37 -37 -37

-8 -8 -19 -22 -29 -33 -37 -373 3 -8 -19 -22 -29 -33 -37

17 11 3 -8 -19 -22 -29 -3329 17 11 3 -8 -19 -22 -29

1 0 0 0 0 0 0 0-1 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 041 29 17 3 3 -8 -19 -22

Trasformata DCT

DCT

Matrice di quantizzazione

Quantizzazione

0 0 0 0 0 0 0 0

-155 101 13 6 2 0 -1 0-121 -46 -1 -6 1 2 -2 -3

11 0 -1 3 5 3 3 3-11 1 -3 -3 -2 3 2 0

2 -1 -1 1 -2 -4 0 0

q16 11 10 16 24 40 51 6112 12 14 19 26 58 60 5514 13 16 24 40 57 69 5614 17 22 29 51 87 80 6218 22 37 56 68 109 103 77applico

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

-2 -4 -3 -4 0 4 -1 -41 -4 1 -1 -3 -1 1 -4

-1 -3 0 -1 -1 1 -2 0

24 35 55 64 81 104 113 9249 64 78 87 103 121 120 10172 92 95 98 112 100 103 99

Page 69: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

EsempioEsempioZig zag 0 1 2 3 4 5 6 7 8 9 10

-10 9 -10 1 -4 1 0 0 0 -1 EOB

NNNN Valore SSSS Run/Size Categoria Valore Numero di bit

Ricostruisco la DCT-160 99 10 0 0 0 0 0-120 -48 0 0 0 0 0 0

14 0 0 0 0 0 0 0x ‐10 4 101 0101 70 9 4 0/4 1011 1001 80 ‐10 4 0/4 1011 0101 80 1 1 0/1 00 1 30 ‐4 3 0/3 100 011 6

-14 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 0

0 ‐4 3 0/3 100 011 60 1 1 0/1 00 1 33 ‐1 1 3/1 111010 0 7

EOB 1010 4Tot 46

IDCT

Blocco scalato ricostruito-33 -35 -38 -41 -43 -44 -45 -45

Dimensione originale: 8x8x8 bit 512 bitDimensione compressa 46 bit

-27 -29 -33 -36 -39 -41 -42 -42-18 -21 -25 -30 -34 -37 -39 -39

-9 -12 -17 -24 -30 -34 -37 -382 -2 -9 -17 -25 -31 -35 -37

14 9 1 -9 -18 -26 -31 -3427 22 13 2 9 18 24 27p

Rapporto di compressione:  8,98 %27 22 13 2 -9 -18 -24 -2735 30 21 9 -2 -12 -19 -22

Confronto con l’originale

Errore0 -2 1 4 -1 0 1 18 0 0 -1 2 -3 -2 -2

-1 2 -4 1 -3 0 2 21 4 -2 2 1 1 0 11 5 1 2 3 2 2 0

MSE (Mean Squared Error) 6,86RMSE (Root Mean Squared Error) 2,62PSNR (Peak Signal to Noise Ratio) 39,77

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

1 5 1 -2 3 2 2 03 2 2 1 -1 4 2 12 -5 -2 1 1 -1 2 -26 -1 -4 -6 5 4 0 0

Page 70: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

EsempioEsempio

DC coefficient differencesCategory Code len. Code word

AC coefficients

Run/Size Code len. Code word0/0 (EOB) 4 10100/1 2 00g y

0 2 0001 3 0102 3 0113 3 1004 3 101

0/1 2 000/2 2 010/3 3 1000/4 4 10110/5 5 110100/6 7 11110004 3 101

5 3 1106 4 11107 5 111108 6 111110

0/6 7 11110000/7 8 11111000

0/8 10 1111110110

0/9 16 1111111110000010

0/A 16 11111111100000119 7 111111010 8 1111111011 9 111111110

0/A 16 11111111100000111/1 4 11001/2 5 110111/3 7 1111001

1/4 9 111110110

1/5 11 11111110110

1/6 16 1111111110000100

1/7 16 1111111110000101

1/8 16 1111111110000110/

1/9 16 1111111110000111

1/A 16 1111111110001000

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 71: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

EsempioEsempioAC coefficients

Run/Size Code len. Code word2/1 5 111002/2 8 11111001

AC coefficients

Run/Size Code len. Code word4/1 6 1110114/2 10 11111110002/2 8 11111001

2/3 10 11111101112/4 12 1111111101002/5 16 11111111100010012/6 16 1111111110001010

4/2 10 11111110004/3 16 11111111100101104/4 16 11111111100101114/5 16 11111111100110004/6 16 1111111110011001

2/7 16 11111111100010112/8 16 1111111110001100

2/9 16 1111111110001101

2/A 16 1111111110001110

4/7 16 11111111100110104/8 16 1111111110011011

4/9 16 1111111110011100

4/A 16 1111111110011101

3/1 6 1110103/2 9 1111101113/3 12 1111111101013/4 16 1111111110001111

3/5 16 1111111110010000

5/1 7 11110105/2 11 111111101115/3 16 11111111100111105/4 16 1111111110011111

5/5 16 11111111101000003/5 16 1111111110010000

3/6 16 1111111110010001

3/7 16 1111111110010010

3/8 16 1111111110010011

3/9 6 00 0 00

5/5 16 1111111110100000

5/6 16 1111111110100001

5/7 16 1111111110100010

5/8 16 1111111110100011

/9 6 0 00 003/9 16 1111111110010100

3/A 16 1111111110010101

5/9 16 1111111110100100

5/A 16 1111111110100101

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 72: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

Byte stuffingByte stuffing

• La sintassi del bit stream è piuttosto complessa, ma, a grandi linee, il concetto è che i dati vengono suddivisi in blocchi ordinati gerarchicamente, ognuno

d d k h di d i i di if ipreceduto da un marker, che consente di avere dei punti di riferimento all’interno del file.

• Ogni marker identifica un segmento di file. Il marker è seguito da due Byte che indicano la lunghezza del segmento (misurata in Byte). I marker sono allineati al byte e iniziano tutti con FF (esadecimale) e poi hanno un secondo byte specifico.

• Quando, nel corso di una codifica viene creato il Byte FF nella stringa di output, si aggiunge anche uno 00 (la stringa viene “farcita” con un byte in più, da qui il termine byte stuffing).

• Se dopo un byte FF il decoder vede uno 00, lo ignora. Se il byte non è uno zero, deve essere un marker.

• Alla fine della codifica di un blocco qualsiasi, se non si è ottenuto un byte q , ycompletamente pieno, si aggiungono tanti 1 quanti ne servono a finire il byte corrente.

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 73: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

Gestione delle immagini a coloriGestione delle immagini a colori

• Se si considerano le componenti R, G e B si potrebbe fare:

Compressione JPEGR

I i l i

JPEG

G CompressioneImmagine a colori G Compressione JPEG

B Compressione JPEG

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 74: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

Gestione delle immagini a coloriGestione delle immagini a colori

• E’ però stato definito il formato JFIF, ovvero JPEG File Interchange Format che prevede la seguente trasformazione:Format che prevede la seguente trasformazione:

• Le componenti colore vengono sottocampionate riducendone la di i d d ll’ i i ldimensione ad un quarto dell’originale.

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 75: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

Esempio di sottocampionamento in Esempio di sottocampionamento in YCbCrYCbCrp pp p

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 76: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

Conversione in Conversione in YCbCrYCbCr

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 77: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

Sottocampionamento normale (1/2) di Sottocampionamento normale (1/2) di CbCb e Cre Cr

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 78: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

Ricostruzione RGBRicostruzione RGB

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 79: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

OriginaleOriginalegg

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia79

Page 80: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

Sottocampionamento esagerato (1/8) di Sottocampionamento esagerato (1/8) di CbCb e Cre Cr

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 81: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

Ricostruzione RGBRicostruzione RGB

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 82: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

OriginaleOriginalegg

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 83: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

Sottocampionamento assurdo (1/32) di Sottocampionamento assurdo (1/32) di CbCb e Cre Cr

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 84: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

Ricostruzione RGBRicostruzione RGB

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 85: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

OriginaleOriginalegg

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia85

Page 86: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 87: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

COMPRESSIONE VIDEOCOMPRESSIONE VIDEO

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 88: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

Ridondanza e compressione nei videoRidondanza e compressione nei video

• compressione spaziale: ricerca di relazioni spaziali tra il i d i i l di i di i ll’i d i i livalori dei pixel o di gruppi di questi all’interno dei singoli

frame

i t l i l i i t f• compressione temporale:cerca invece relazioni tra frame vicini temporalmente basandosi sull’ipotesi che tra un ‘immagine del filmato e quelle strettamente vicine siimmagine del filmato e quelle strettamente vicine siverifichino solamente alcuni cambiamenti locali oppurespostamenti di oggetti già precedentemente inquadrati

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 89: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

MPEG MPEG -- II

• Nasce nel 1991 dal Moving Picture Expert Groups (MPEG) fondato nel 1988

t tt i d t d L d Chi i li d l CSELT (IRI Ri h ) die tuttora presieduto da Leonardo Chiariglione del CSELT (IRI Ricerche) di

Torino

• Nato per codificare filmato con qualità simile al VHS e con bit rate di 1,5 Mbit p q ,

al secondo

• Inizialmente nasce come formato “constrained” in quanto definisce parametri

non modificabili e vincolanti come la dimensione e la frequenza dei frame (per

il sistema PAL la dimensione è fissata a 352 x 288 con frame rate di 25 fr/sec)

• È stato il primo perÈ stato il primo per

– prima riuscita unione segnali video e audio

– primo standard di signal processing fatto in software usando il C

– primo standard di codifica video indipendente dal formato del video

– primo standard a proporre anche un’immediata implementazione software

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 90: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

MPEG MPEG -- II

• Lo standard è diviso in 5 parti (o layers/strati):

Parte 1 - Sistema

Come sincronizzare lo stream di dati audio e video

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 91: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

MPEG MPEG -- II

• Parte 2 - Video

Come comprimere sequenze videoCome comprimere sequenze video

0) Conversione da RGB a YUV (4:2:0)

1) Eliminazione ridondanza spaziale e temporale

2) Suddivisione in blocchi di 8x8

3) DCT + quantizzazione (lossy compression) + run-length

coding (Huffman coding) + entropy compressiong ( g) py p

4) Frames I, P e B per la compressione temporale

(macroblocchi di 16x16); definizione di GOP(macroblocchi di 16x16); definizione di GOP

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 92: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

PredizionePredizione

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 93: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

PredizionePredizione

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 94: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

MPEG MPEG -- II

• Parte 2 - Video

Come comprimere sequenze videoCome comprimere sequenze video

5) Movimento come traslazione codificata come vettore +

difi DCTcodifica DCT

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 95: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

MPEG MPEG -- II

• Parte 2 - Video

Come comprimere sequenze videoCome comprimere sequenze video

Formato di un file MPEG-IFormato di un file MPEG I

U Sli è ll i di bl hi i i i i iUna Slice è una collezione di macroblocchi uniti per semantica, vicinanza,

similarità o altri criteri

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 96: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

MPEG MPEG -- II

• Parte 3 - Audio

Come comprimere sequenze audio sia mono che stereo tramite codificaCome comprimere sequenze audio, sia mono che stereo, tramite codifica

lossy (MP3)

• Parte 4 - Testing di conformità

Definisce come devono essere fatti i test per verificare la conformità con lo

standard (per produttori SW e HW di prodotti MPEG)

P t 5 I f ti T h l• Parte 5 - Information Technology

Definisce tutta la documentazione per la completa implementazione

software dei primi 3 layers (il software non è però distribuito p y ( p

pubblicamente)

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 97: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

MPEG MPEG -- IIIIFondamentalmente uguale all’MPEG-I, aggiunge però altre 4 parti o layers:

• Digital Storage Medium Command and Control (DSM-CC): sintassi per il controllo dei file come in un VCR;• Non-Backwards Compatible Audio (NBC): aggiunge ai due canali dei file MPEG-I i canali surround (Dolby AC-3) e il supporto per il multicanale;file MPEG I i canali surround (Dolby AC 3) e il supporto per il multicanale;• 10 bit video extension: serve per aumentare la precisione della codifica, ma non viene solitamente utilizzato;

R l Ti I t f (RTI) i t i il id d d i t i• Real-Time Interface (RTI): sintassi per il video on demand; interazione client-server con un protocollo di comunicazione standard.

Inoltre premette la gestione del video interallacciato (con macroblocchi da 16x8), la DCT con 10 bit di precisione, la quantizzazione non lineare dei coefficienti DCT la visualizzazione del filmato ad una risoluzione diversa dacoefficienti DCT, la visualizzazione del filmato ad una risoluzione diversa da quella originale, etc.

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 98: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

MPEG MPEG -- 44Nella versione 4 si passa dal concetto di dati audio e video al concetto di oggetti audio e video. In particolare, per il layer 2 si parla di MVOs (MovingVisual Objects)Visual Objects).

Con questo concetto e tramite sofisticate tecniche di shape coding, si punta a poter comporre una scena (intesa sia come 2D che come 3D) tramite “l’incollatura” di parti audio e video sia sintetiche che naturali.

Ad ogni forma (che non è necessariamente rettangolare come nell’MPEG-I e II) si può associare un canale audio.II) si può associare un canale audio.

All’utente è lasciata la facoltà di spostare, cancellare oggetti e di cambiare il suo punto di vista (una sorta di mondo virtuale mutuato dal VRML).

Si propone anche l’utilizzo di talking heads utilizzando complessi metodi di rendering facciale e del corpo.

Si dà importanza al concetto di scalabilità cioè la possibilità di ricostruire laSi dà importanza al concetto di scalabilità, cioè la possibilità di ricostruire la scena con risoluzione minore e quindi con qualità minore, ma a costi più contenuti in termini di hardware e di prestazioni richieste.

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 99: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

MPEGMPEG--44

• La parte piu’ importante dello standard MPEG-4 e’ che si basa su unarappresentazione object based permettendo in questo modo unrappresentazione object-based permettendo in questo modo un accesso diretto al contenuto della scena.

• La struttura generale di una scena MPEG-4 e’percio’ formata da:

• VOS (Visual Object Sequence) e’una collezione di uno o piu’ Visual Object (VO)Object (VO).

• Un VO puo’ esere formato da uno o piu’ strati corrispondenti ai Video Object Layer (VOL) o Texture Object Layer (SOL).

• Ogni VOL e’formato da una sequenza di immagini nel tempo detteVOPs (Video Object Plane) (VOP0, VOP1…) ognuna delle qualidefinisce l’oggetto in questione ad un particolare framedefinisce l oggetto in questione ad un particolare frame

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia

Page 100: Dispense del corso di Elaborazione di Immagini e …imagelab.ing.unimore.it/didattica/corsi/eia09/materiale/1...Introduzione • La compressione dati è una tecnica utilizzata in ambito

MPEGMPEG--44

• Scena

• http://www.cselt.it/mpeg/standards/mpeg-4/mpeg-4.htm

Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia