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.