I formati dei file immagine Le immagini vettoriali Le immagini vettoriali sono caratterizzate da linee e curve definite da entità matematiche chiamate vettori I vettori sono segmenti definti da un punto di origine, una direzione ed una lunghezza Le immagini raster Le immagini raster o bitmap, utilizzano una griglia (la mappa di bit o retino) di piccoli quadrati, detti pixel, per la rappresentazione. A ciascun pixel viene assegnata una posizione specifica e un valore cromatico Le immagini vettoriali In genere i principali software di disegno automatico mettono a disposizione una serie di primitive grafiche quali archi, cerchi, curve, cilindri e sfere. Partendo da semplici primitive grafiche è possibile creare figure complesse bidimensionali e tridimensionali. Le immagini vettoriali I programmi grafici conservano i dati che descrivono un disegno geometrico organizzandoli un una struttura che permette, una volta salvata su file e recuperata in un secondo momento, di trovare tutte le informazioni per la visualizzazione e la modifica del disegno. Le immagini vettoriali Ogni lista della struttura contiene: i nomi degli oggetti il nome dei segmenti che compongono gli oggetti le coordinate delle coppie di vertici Ad ogni elemento si possono associare attributi quali colore, stile, spessore ecc.... Le immagini vettoriali : vantaggi Si rendono estremamente semplici le operazioni di grande importanza come le trasformazioni geometriche sposta ruota scala Le immagini raster Si ottengono da scanner macchine fotografiche digitali software per la grafica Le immagini raster Sono codificate e memorizzate come una serie di punti pixel – picture element Per ogni punto vengono memorizzate : una coppia di coordinate (il punto 0,0 si trova in alto a sx) un valore cromatico Le immagini raster Ogni pixel contiene informazioni cromatiche a partire da due colori (bianco/nero = 1 bit) milioni di colori (24 – 32 bit) Digitalizzazione di un’immagine: Campionatura Digitalizzazione di un’immagine: + quantizzazione Digitalizzazione di un’immagine: Codifica Immagini raster e vettoriali A volte la stessa immagine può essere rappresentata come raster... o, con qualche cambiamento visibile (qui esagerato),come immagine vettoriale Immagini raster e vettoriali In linea di principio, i due tipi sono interscambiabili... ... ma in pratica, le “foto” sono raster, i “disegni” vettoriali nulla vieta comunque di avere dipinti iperrealistici che sembrano foto, o foto posterizzate che sembrano disegni Immagini raster Un'immagine raster è definita per punti L'immagine è scomposta in un numero elevato di “punti”, tipicamente quadrati o rettangoli quasi-quadrati Ciascuno di questi punti è detto pixel (dapicture element, elemento dell'immagine) La densità della griglia di scomposizione,più o meno fitta, è detta risoluzione Immagini raster Immagini raster Esempio di immagine raster (in bianco e nero): Questa è la tecnica base per convertire un'immagine in un numero Immagini raster Di ciascuno dei pixel che compongono l'immagine vengono definite alcune proprietà: il colore (sempre) la trasparenza (in alcuni casi) Applicazioni più specializzate definiscono altre proprietà (per esempio, nel trattamento di immagini astronomiche) che non considereremo Immagini raster Abbiamo visto che un'immagine raster è codificata come una matrice di pixel Ogni pixel codifica il colore del punto corrispondente dell'immagine La larghezza e altezza dell'immagine, in pixel, danno la risoluzione spaziale dell'immagine Il numero di bit usati per codificare un colore dà la risoluzione colore o profondità dell'immagine Esempi di risoluzione 170x170 pixel, RGB a 8 bit per componente La risoluzione spaziale non è molto elevata La risoluzione colore è buona Immagine “giusta” per una pagina web Esempi di risoluzione 32x32 pixel, RGB a 8 bit per componente La risoluzione spaziale è molto bassa La risoluzione colore è buona Usabile forse come miniatura Esempi di risoluzione 170x170 pixel, RGB a 3 bit per componente La risoluzione spaziale non è molto elevata La risoluzione colore è bassa (8 rossi, 8 verdi, 8 blu; 512 colori totali) Immagine da “effetto speciale” Esempi di risoluzione 16x16 pixel, RGB a 2 bit per componente Un disastro! Non va bene neanche come icona! Occupazione di memoria Prevedibilmente, l'occupazione di memoria di un'immagine è legata alla sua risoluzione spaziale e di colore Tanto maggiori le risoluzioni, tanto migliore la qualità dell'immagine, e tanto maggiore l'occupazione di memoria Occupazione in bit = larghezza (in pixel) × altezza (in pixel) × profondità colore (in bit) Occupazione della memoria Occupazione della memoria I calcoli sull'occupazione di memoria che abbiamo fatto riguardano la dimensione delle immagini in memoria – per esempio, mentre vengono visualizzate Per memorizzare le immagini su disco, o trasmetterle via rete, è conveniente usare algoritmi di compressione per ridurne la dimensione Algoritmi di compressione In generale, possiamo dividere gli algoritmi di compressione in due grandi famiglie: algoritmi senza perdita (lossless): consentono di ricostruire esattamente i dati di partenza algoritmi con perdita (lossy): si perde una parte dell'informazione; non è più possibile ricostruire esattamente i dati di partenza Algoritmi lossless Gli algoritmi di compressione senza perdita applicati alle immagini sono gli stessi usati nei normali programmi di compressione per esempio, algoritmi di Run Length Encoding, Huffman, Lempel-Ziv-Welch, compressione aritmetica usati in PKZip, gzip, compress, RAR,ecc. I formati di file per le immagini specificano uno o più algoritmi da adottare Algoritmi lossy Gli algoritmi lossy sono invece progettati esplicitamente per le applicazioni alle immagini I due principali sono: JPEG (Joint Photographic Expert Group), famosissimoalgoritmo basato sulla trasformata inversa del coseno e sull'eliminazione delle frequenze “alte” (spaziali e colorimetriche), comunque invisibili all'occhio umano Wavelet, algoritmo molto efficiente ma“sperimentale” a causa dell'alto costo computazionale Algoritmi lossy Quando si decide di applicare un algoritmo di compressione lossy a un'immagine, è in genere possibile specificare un fattore di qualità Ad elevati fattori di compressione (equindi, forti riduzioni di dimensioni) corrispondono forti perdite di qualità In genere, non si usano algoritmi lossy se l'immagine deve ancora essere “lavorata”. Esempio (file JPEG, lossy) Esempio (file PNG, lossless) Esempio (file PNG, lossless) Con gli algoritmi lossless, è a volte possibile specificare un fattore di compressione Visto che con gli algoritmo lossless non si perde mai in qualità, la scelta di una compressione maggiore non peggiora l'immagine aumenta solo (in maniera impercettibile) il tempo per caricare e salvare l'immagine Conviene quindi usare sempre la compressione maggiore! Principali formati grafici Con compressione lossless: TIFF (Tagged Image File Format) GIF (Graphics Interchange Format) PNG (Portable Network Graphics) BMP (Windows Bitmap) Con compressione lossy: JPEG (Joint Photographic Expert Group) Algoritmi di compressione per le immagini Abbiamo visto che le immagini possono essere compresse in vari modi, per ridurne l'occupazione di memoria (su disco o rete) compressione lossless – non si perdono dati compressione lossy – si perdono i dati “meno importanti” Algoritmo RLE L'RLE (run lenght encoding, codifica della lunghezza delle sequenza) è un algoritmo lossless particolarmente semplice Idea di base: quando trovo una serie di pixel dello stesso colore, codifico solo la lunghezza della serie e il colore Per immagini di tipo “fumetto” o geometriche, funziona molto bene! Algoritmo RLE: esempio Se l'immagine ha ampie aree di colore uguale, si ottengono grossi risparmi Se viceversa ogni punto ha un colore diverso, si può anche peggiorare! Un teorema importante sulla compressione Teorema: non esiste un algoritmo di compressione che“funzioni” sempre (cioè, che riduca ladimensione dell'input in tutti i casi) Algoritmi Huffmann e LZW Si tratta di due algoritmi lossless usati in molte applicazioni non sono specializzati per le immagini in entrambi i casi, il grado di compressione non è direttamente legato al contenuto dell'immagine essendo lossless, non c'è mai perdita di qualità: quando il formato li supporta, è sempre* meglio usarli * ma si ricordi il teorema precedente... Algoritmo JPEG JPEG è un algoritmo lossy specializzato per le immagini Funziona particolarmente su immagini con molti sfumati (fotografie, incarnati, paesaggi) Quando l'immagine ha un forte contrasto o passaggi bruschi di colore, si possono notare dei difetti (detti artefatti) Algoritmo JPEG Il processo prevede 4 passi lo scopo è togliere informazione che comunque l'occhio non noterebbe Algoritmo JPEG: altri usi notevoli L'algoritmo JPEG è usato (ovviamente) nei file .jpg o .jpeg – che costituiscono l'80%-90% delle immagini sul Web È un formato anche molto usato in ambito medico (raggi X, TAC, ecc.) Una variante più sofisticata è usata nei formati per i film (MPEG, AVI, WMV; anche DVD, satellite e digitale terrestre) Grande vantaggio: qualità buona, compressione alta