Formati e file grafici
• Memorizzare un’immagine su disco – per archiviazione
– per invio ad un altro utente
• Come si registrano i dati ? Quale formato utilizzare ? GIF, JPEG, ecc.
• Ciascun formato si preoccupa di definire – quali sono le informazioni necessarie – in che modo vengono memorizzate
Il formato raw
• Elenco valori numerici di ciascun pixel
• Un formato grafico di questo tipo è detto raw
• Sembra un modo semplice ed universale per descrivere un’immagine
Problemi con il formato raw
• Non si tratta di una rappresentazione assoluta
• Chi legge il file dell’immagine non conosce … – le dimensioni in pixel dell’immagine
– quanti bit per pixel
– cosa rappresenta un valore numerico
• Senza queste informazioni non si sa … – quando inizia o termina un pixel
– quando inizia o termina una linea
File grafici: esigenza di un formato
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 11 11 11 11 00
1 1 1 2 1 1 1 1 0 00 0 0
00 00 00 00 0 00 00 00 00 0 00 00 00 00 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 11 11 11 1 11 11 11 1 22 22 22 2 12 22 21 1
11 1 1 11 12 22 11 11 11 2
11 11 11 111 11 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 12
0
34 56 78 90 1
Immagine Quantizzata Immagine
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 2 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 00 0 0 0 0 0 0 00000 0 0 00 0 0 0 0 0 0 0000 0 0 0 11 11211110000 0 0 11 1222 11 10000 0 0 11 1222 1 11000 0 0 0 11 1222 1110000 0 0 11 122211 10000 0 0 11 11211 1 1000 0 0 0 11 11211 1 1000
Bitmap
15 x 12
Rendering (20 x 9) Rendering (15 x 12)
Raw come formato implicito
• Implicito perché occorre conoscere alcune informazioni essenziali non contenute nel file
• Alternativa: inserire nel file le informazioni per l’interpretazione del contenuto
• File grafico con header – dati veri e propri
– insieme di specifiche per interpretare questi dati
File grafici con formato esplicito
• Esistono più di 200 formati di file grafici
• Le differenze esistenti tra questi formati sono di diverso tipo (solo formati bitmap)
– profondità di pixel – palette (esistenza e tipo)
– compressione dati (esistenza e tipo) – formati utilizzabili su una o più piattaforme – formati per applicazioni specifiche
Elementi di un file grafico
• Sequenza di strutture dati che forma il file grafico
• Tre categorie di strutture – field (campo)
– tag (etichetta) – stream (flusso)
Campo (field)
• Struttura di dati di dimensione fissa e posizione fissa nel file
• Dimensione fissata nelle specifiche del formato
• Posizione specificata come offset da un punto di riferimento (esempio: inizio del file)
Etichetta (tag)
• Struttura dati la cui posizione e dimensione possono variare da un file ad un altro (specificate all’interno del file)
• I campi e le etichette facilitano l’accesso diretto ai dati (nota la posizione)
Flusso (stream)
• Costituito da pacchetti di dimensioni variabili
• Hanno significato per il programma che legge il file
• Inizio e fine di un flusso possono essere noti, mentre non lo sono per i pacchetti
• Un file organizzato a flussi deve essere trattato in modo sequenziale
Il formato grafico
• Si possono immaginare file fatti solo di campi, o solo di etichette, o solo di flussi, ma in genere sono misti
• I formati TIFF e TGA usano etichette e campi
• Il formato GIF usa campi e flussi
File bitmap
• I formati bitmap variano molto nei dettagli ma condividono la stessa struttura generale
• Un file bitmap è organizzato – componenti base
– componenti specifiche
• Componenti base presenti in tutti i formati di tipo bitmap
• Componenti specifiche dipendono dalla complessità del formato
Componenti di base
• l’intestazione (header)
• i dati bitmap
• la coda (footer) (non sempre presente)
HEADER DATI BITMAP
HEADER DATI BITMAP
FOOTER
Componenti specifiche
• la palette dei colori
• la tabella delle scan-line
• la tabella di correzione dei colori
• l’indice delle bitmap (immagini multiple)
File bitmap
FOOTER HEADER PALETTE INDICE BITMAP DATI BITMAP 1 DATI BITMAP 2
DATI BITMAP N HEADER ...
DATI BITMAP
PALETTE FOOTER
HEADER PALETTE TABELLA SCAN-LINE
TABELLA CORREZIONE
COLORI DATI BITMAP
Header (Intestazione)
• Dati binari o ASCII in genere all’inizio del file
• Informazioni sui dati bitmap nel file
• Formato da campi fissi (i più comuni):
– identificatore del file
– num. linee per immagine, num. pixel per linea – num. bit per pixel, num. di piani di colore – tipo di compressione
– origine X e Y dell’immagine – spazio utilizzato
Organizzazione dei dati bitmap
• La parte più consistente di un file bitmap
• Esistono due metodi per organizzare i dati dei pixel di un’immagine:
– organizzazione di tipo scan line – organizzazione di tipo planare
Organizzazione scan-line
• Metodo più semplice
• Immagine formata da una o più scan line
• scan line = insieme di dati che rappresentano i pixel
• Se sono note la dimensione di ogni pixel e il num. di pixel per scan line, si può calcolare il punto di inizio di ogni scan line
• Alcuni formati impongono che le scan line debbano avere una lunghezza multipla di un numero pari di byte
Pixel organizzati in una scan line
Scan line 0 Scan line 1 Scan line 2
. . .
Pixel 0 Pixel 1 Pixel 2 Pixel 3
...
Organizzazione di tipo planare
• Separazione dati dell’immagine in due o più piani
• Immagine composta = immagine a più colori data da tre blocchi di dati bitmap (un blocco per ogni primario)
• Blocco costituito da righe, come nel modello scan line, e l’immagine è ricomposta combinando più blocchi
• Blocchi contigui oppure sparsi nel file
Dati di pixel organizzati in piani
...
..
...
...
. Piano blu
...
..
...
...
. Piano verde
...
..
...
...
. Piano rosso
Pixel 0 Pixel 1
Pixel 2 Pixel 3
Pixel 4 Pixel 5
Pixel 6
Dati contigui, strip e tile
• Livello elementare = immagine come insieme di pixel
• Secondo livello = organizzare i pixel in scan line o piani di colore
• Terzo livello = organizzazione dei dati in un file in tre modi differenti:
– dati contigui – dati a strisce (strip) – dati a riquadri (tile)
Dati contigui
• Modo più semplice
• Organizzazione scan line in modo contiguo (una scan line dopo l’altra)
• Righe lette come memorizzate
• Dati organizzati in una griglia bidimensionale
• Conoscendo lunghezza scan line in pixel e il formato e la dimensione del valore di pixel in byte, si può associare un indice a ogni scan line
Dati a strisce (strip)
• Immagine formata da strisce costituite da scan line contigue
• Ogni striscia memorizzata separatamente nel file
• Segmentazione immagine facilita la gestione delle immagini con poca RAM
• Strisce comode per dati compressi
(decompressione può avvenire una strip per volta)
Dati a riquadri (tile)
• Ogni tile descrive una zona rettangolare dell’immagine
• In genere, tutti i tile di un’immagine – hanno la stessa dimensione
– non si sovrappongono
– sono codificati con lo stesso schema
• Applicazione di diversi schemi di compressione alle diverse parti
• Decompressione di grandi immagini più veloce
Formati di file grafici
• Adobe Photoshop
• CGM
• Encapsulated Postscript
• GIF
• JPEG - JFIF
• Macintosh Paint
• Macintosh Pict
• Microsoft Paint
• Microsoft RIFF (.AVI, .WAV)
• Microsoft RTF
• Microsoft Windows Bitmap
• MPEG
• PCX
• PNG
• QuickTime
• TGA
• TIFF
Adobe Photoshop (.PSD)
• Formato utilizzato dal programma Photoshop
• Tipo bitmap
• Può utilizzare diversi modelli di colore (RGB, CMY, ecc.)
• Compressione: Nessuna, RLE
• Sistemi: Macintosh, Windows
• Utilizzo: Applicazione Adobe Photoshop
• Commenti: Formato semplice ma ben congegnato, permette 232colori
GIF (Graphics Interchange Format)
• Tipo: Bitmap
• Colori: da 1 a 8 bit (LUT con trasparenza)
• Compressione: LZW
• Piattaforme: Macintosh, Windows, Unix
• Formato ben definito e molto diffuso
• Prop. Compuserve Inc. (GIF87a e GIF89a)
• Trasferimento di immagini su rete (interlace)
• GIF animate
Microsoft Windows Bitmap
• Tipo: Bitmap
• Colori: 1-bit, 4-bit (con LUT), 8-bit (LUT), 24-bit
• Compressione: RLE, nessuna
• Piattaforma: Windows (ora anche Mac e Unix)
• Formato interno DIB (indipendenza device)
• Utilizzo: molto in Windows
• Organizzazione per scan line, dall’angolo in basso a sx
PNG (Portable Network Graphics)
• Formato potente e versatile per Internet
• Colore: TrueColor 48-bit e 24-bit (con correzione γ), Greyscale 16-bit, LUT 8-bit
• Compressione LZ77 (libera da diritti)
• tecniche di filtraggio numerico
• trasparenza alpha-channel (254 livelli); RGB+A
• metodo di interlacciamento molto efficace
• codici di autocontrollo per la verifica dei dati trasmessi
TIFF
(Tag Image File Format)
• Tipo: Bitmap
• Colori: B/N, Greyscale (4 a 8 bit), (LUT) fino a 24-bit
• Compressione: RLE, LZW, nessuna
• Piattaforma: Macintosh, Windows, Unix
• Utilizzo: ambiente professionale; forse formato bitmap più versatile (organizzazione dati indicata)
• Sviluppo: HP, Microtek, Aldus, Microsoft per scambio scanner/applicazioni (più versioni)
• Possibilità di memorizzare più immagini nello stesso file
CGM (Computer Graphics Metafile)
• Standard ISO per codifica di immagini, grafica vettoriale e raster, testo
• Informazioni in ASCII o codificate
• Tipo metafile
• Compressione: RLE, CCITT
• Commenti:
– Molto ricco di attributi e primitive per supportare esigenze grafiche in svariati campi
– Tante possibilità, molto difficile (std complesso)
Macintosh Pict
• Tipo: Metafile
• Colori: fino a 24-bit
• Compressione: PackBit, JPEG
• Piattaforma: Macintosh
• Utilizzo: programmi di disegno
Macintosh Paint
• Tipo: Bitmap
• Colori: Monocromatico
• Compressione: RLE, nessuna
• Piattaforma: Macintosh
• Utilizzo: Clip art, dump del video (copia del video), immagini monocromatiche
Microsoft Paint
• Tipo: Bitmap
• Colori: Monocromatico
• Compressione: RLE, nessuna
• Piattaforma: Windows
• Utilizzo: disegno in bianco e nero, clip art
TGA
• Uno dei formati più diffusi per la memorizzazione delle immagini digitali
• Soprattutto per immagini digitalizzate direttamente da segnali video
• Colori: 8-bit, 16-bit, 24-bit, 32-bit
• I file di tipo TGA hanno normalmente estensione TGA in ambiente DOS e UNIX e TPIC in ambiente Macintosh
• Questo formato permette di memorizzare sia immagini a livelli di grigio che immagini a colori
• Compressione: RLE, nessuna
PCX
• Tipo: Bitmap
• Colori: Mono, 4-bit, 8-bit, 24-bit
• Compressione: RLE, nessuna
• Piattaforma: Windows, Unix
• Utilizzo: è usato in diverse applicazioni di prodotti Microsoft Windows (è il formato di PC Paintbrush). È basato sulle strutture di dati bitmap interne di Windows
EPS (Encapsulated Postscript)
• Tipo: Page Description Language
• Colori: monocromatico
• Piattaforme: quasi tutte
• Dati sono codificati in un sottoinsieme del Postscript Page Description Language (PDL) e poi “incapsulati” nel formato EPS per poterli scambiare tra piattaforme.
• Utilizzati per la porzione grafica di un documento.
Postscript
• Linguaggio creato dalla Adobe per descrivere layout (formattazione) di testo, grafica vettoriale, e immagini bitmap su video o su carta
• Un tipico dispositivo di output per Postscript contiene un interprete per eseguire programmi Postscript (stampanti, macchine per
composizione, ecc.)
Portable Document Format
• Tipo: Metafile
• Piattaforme: quasi tutte
• Formato di Adobe
• Sorta di evoluzione del formato Postscript.
• Più efficiente nella memorizzazione
Quick Time
• Tipo: dati audio/video
• Compressione: RLE, JPEG, altri
• Piattaforma: Macintosh, Windows
• Applicazioni; QuickTime
• Utilizzo: memorizzazione e scambio di informazioni in ambiente Macintosh e Windows
Quale tipo di codifica
• LZW, RLE: compressione 2:1 fino a 3:1 (rapporto inverso di compressione) su immagini naturali
• Immagine fotografica (35mm): 10/30 Mbyte
• Scansione del formato 10x15 a 600 dpi, 16 milioni colori
• Con TI00000000 00000000 o GIF: 3/10 Mbyte
• Ci vuole un altro approccio – Basato su trasformate – Frattali
– Wavelet
8x8 DCT JPEG
(Joint Photographic Expert Group)
• Lo standard JPEG
• Confusione sulle due sigle JPEG e JFIF – JFIF = JPEG File Interchange Format
– JPEG identifica il gruppo che ha definito lo standard di compressione che ha assunto lo stesso nome
• Più formati grafici che utilizzano la tecnica JPEG per la compressione di immagini
– JFIF
– TI00000000 00000000, versione 6
Compressione JPEG
• Si applica sia a immagini a colori a 24 bit che a immagini a livelli di grigio
• Particolarmente indicato per immagini di tipo fotografico, che contengono scene reali
• Non è adatto a variazioni brusche di intensità e colore delle immagini artificiali (disegni con contorni molto netti)
JPEG
• Vantaggi
– ottenere immagini con elevati fattori di compressione che non perdono di qualità in fase di decompressione
– possibilità di scelta tra diversi livelli di qualità dell’immagine corrispondenti ad altrettanti gradi di compressione
• Compressione di tipo incrementale
– Ogni volta che viene modificata e salvata un’immagine in un formato che prevede questo tipo di compressione, l’immagine risultante è frutto di ulteriore compressione.
– quindi importante non ripetere troppe volte questi passaggi per non deteriorare eccessivamente l’immagine
Esempio
Rimozione di queste informazioni di crominanza
Frequenza di pixel che assumono le tre componenti RGB
Originale (TIFF o GIF) JPEG buona qualità JPEG bassa qualità
Compressione e qualità finale
• 0,25-0,50 bit/pixel: qualità moderata-buona
– 96:1 -> 10/30 Mbyte -> 106/320 Kbyte -> 6280/2093 immagini su un CD-ROM
• 0,50-0,75 bit/pixel: qualità buona-molto buona
– 48:1 -> 10/30 Mbyte -> 213/460 Kbyte -> 3140/1046 immagini su un CD-ROM
• 0,75-1,50 bit/pixel: qualità eccellente
– 32:1 -> 10/30 Mbyte -> 320/960 Kbyte -> 2080/693 immagini su un CD-ROM
• 1,50-2,00 bit/pixel: indistinguibile dall’originale
– 16:1 -> 10/30 Mbyte -> 640/1920 Kbyte -> 1040/346 immagini su un CD-ROM