Formati dei file di immagini

Transcript

Formati dei file di immagini
Interazione Uomo Macchina
Formati dei file di immagini
Introduzione:
Esistono molti formati per i file di immagini, alcuni sono proprietari, altri no; i formati si
differenziano dall'intestazione e dalle modalità di memorizzazione dei dati (compressi o non
compressi).
Un'immagine è formata da un insieme ordinato di pixel (una matrice).
Ogni punto è caratterizzato da un livello di grigio o da un colore che può essere vero o falso; le
informazioni sui colori usati nell'immagine sono contenuti nella Look Up Table che è contenuta nel
file.
La risoluzione del colore è naturalmente misurata in bit per pixel (bpp), la dimensione
dell'immagine in byte è quindi data da NxMxbpp/8.
Le due famiglie di formati:
Vettoriali:
L'immagine viene descritta mediante formule matematiche (curve e poligoni).
Uno dei principali vantaggi di questa famiglia di formati è che è possibile ingrandire le
immagini senza perdere in qualità, si tratta infatti di ricalcolare l'immagine a partire dalle
formule che la descrivono, inoltre richiedono un minor spazio per essere memorizzate.
Raster (bitmap):
in questo caso l'immagine è data da un insieme di pixel, sostanzialmente l'opposto dei
formati vettoriali, occupano molto più spazio e se vengono ingrandite perdono in qualità (si
sgranano).
La compressione:
Codifica Entropica:
manipola i dati senza preoccuparsi del loro significato, per questo è applicabile a qualsiasi
tipo di dato. Alcuni esempi di questa famiglia sono: codifica Run Length, codifiche statiche
di LZW, Huffman, etc.
Codifica Sorgente:
questa seconda famiglia sfrutta invece le proprietà dai dati per comprimerli maggiormente,
anche se solitamente questo comporta una certa infedeltà. Alcuni esempi sono:
Codifica differenziale: la sequenza di valori viene codificata rappresentando ciascun valore
per differenza rispetto al precedente, in questo tipo di codifica si ipotizza che sia improbabile
un grosso salto fra due valori. Se vi fosse un grande salto la differenza potrebbe non essere
rappresentabile nell'intervallo a disposizione e quindi si potrebbe verificare una perdita di
informazione. Il più famoso esempio di questo tipo di formato è l'MPEG.
Trasformazioni: in questo caso è molto usata la DCT (Discrete Cosine Transformation) si
basa sul fatto che in caso di forti discontinuità la maggior parte del potere di spettro risede
nei primi termini, il che permette di ignorare gli altri senza perdite eccessive (es.: JPEG).
Il formato BMP:
di tipo Raster, definito da Microsoft.
Ad ogni pixel si associa l'indice di una mappa di colori (colormap, vettore di RGB). La
profondità del colore può essere di 4, 8, 24 bit; sono inoltre supportate: la modalità
binaria a 1 bit e a livelli di grigio a 8 bit.
Principali svantaggi: oneroso in termini di memoria e non tiene presente la ridondanza dei
dati.
Prevede una semplice compressione basata su RLE, che tiene conto della struttura raster
dell'immagine come righe di 0/1, talvolta viene applicata una codifica RLE con codice di
Huffman. Le versioni compresse tuttavia consentono una profondità massima di soli 8 bit.
Ogni bitmap specifica i colori in modo indipendente dalla modalità di rappresentazione
dei colori usata dal display.
Struttura del file:
bitmap file header
bitmap information header
tabella dei colori
array di byte che definisce la mappa di bit (rappresenta linee consecutive della
bitmap)
Il formato GIF (Graphic Interchange Format):
Standardizzato nel 1987 da CompuServe, inizialmente brevettato da Unisys;
Il Primo formato (GIF87a) permetteva una profondità di colore di 8 bit;
Nel 1989 venne aggiornato (GIF89a) per prevedere animazioni, trasparenza e
interlacciamento;
Svantaggio: profondità del colore scarsa, l' LUT è appunto di 256 colori.
Le animazioni sono date da sequenze di immagini, è possibile fissare il movimento del
filmato fino a un centesimo di secondo per ogni frame; le animazioni sono state
modificate nel tempo consentendo compressioni sempre più spinte basandosi sulla scarsa
differenza fra due immagini consecutive.
La trasparenza è applicabile ad un solo colore che sostanzialmente non viene inserito
nella tabella.
Nel formato GIF interlacciato le scan line sono visualizzate in modo alternato, la cosa è
apprezzabile se usata in Internet, in quanto consente di visualizzare l'intera immagine in
tempi più bervi seppur sfuocata per poi diventare sempre più definita.
Il formato TIFF (Tag Image File Format):
Può rappresentare l'immagine in vari spazzi di colori:
Scala di grigi;
Pseudocolori (di ogni dimensione);
RGB;
YcbCr;
CMYK
CIELab;
Indipendente dal sistema operativo;
Prevede l'utilizzo di veri tipi di compressione:
Uncompressed
jpeg
LZW (come GIF)
PackBits
Progettato per essere estensibile;
Permette l'inclusione di una quantità infinita di informazione.
Considera un file come una sequenza di byte numerati da 1 a N, i campi di un file TIFF sono
univocamente identificati in modo tale da poter essere presenti od assenti a seconda della
necessità dell'applicazione.
Il file è composto da un'intestazione (IFH) di 8 byte che punta ad una o più IFD (image
file directory).
Composizione della IFH:
Byte 0-1: specifica l'ordine dei byte usato nel file (big-endian o little-endian)
Byte 2-3: il numero della versione (non è mai stato modificato per ragioni storiche e di
compatibilità)
Byte 4-7: contiene l'offset della prima IFD.
Composizione di una IFD:
un contatore di 2 byte contenente il numero di campi presenti
un campo composto da 12 byte
un campo di 4 byte contenente l'offset nella prossima IFD (impostato a 0 se assente)
Composizione del campo da 12 byte dell'IDF:
Byte 0-1: il TAG che identifica il campo (es: il tipo di immagine, a colori, ldg);
Byte 2-3: il campo Tipo (es:SHORT);
Byte 4-7: il numero di valori (il Count) del Tipo indicato;
Byte 8-11: il valore di offset del campo Value o il valore stesso se ci stà in 4 byte (es:
compressione, unità di misura di riferimento).
Il formato JPEG (Joint Photograpic Expert Group):
dal JPEG è derivato l'MPEG, che sostanzialmente è la codifica dei singoli fotogrammi in
jpeg con in aggiunta alcune funzioni aggiuntive per la compressione di serie di immagini
e rilevamento del movimento.
Utilizza 16 milioni di colori (True-Color)
è un formato compresso mediante una compressione di tipo lossy e per questo non è
possibile ricostruire l'immagine originale, la qualità inoltre dipende dal livello di
compressione, più si comprime peggiore è la qualità.
In particolare la compressione utilizzata mantiene le informazioni sulla luminanza dei pixel
mediando invece le tinte (viene sfruttato il fatto che l'occhio umano non risulta percepire
accuratamente), la compressione causa un effetto di smoothing, per questo il formato risulta
essere adatto alle immagini ti tipo fotografico (o più in generale quelle che non hanno
brusche variazioni di colore).
JPEG progressiva: stesso algoritmo di compressione , cambia il formato di salvataggio
dei dati nel file. In un file JPEG progressivo, all'inizio del file vi sono dati che permettono
di ricostruire l'immagine in grossi blocchi, successivamente vengono descritte le
variazioni da apportare al primo pezzo per ottenere l'immagine completa. La versione
progressiva risulta essere particolarmente utile per la navigazione su Internet.