Immagini e formati grafici Cristina Baroglio a.a. 2003/2004 Corso di Tecniche Multimediali Biologia Le immagini gestibili tramite calcolatore possono avere diverse origini: possono essere immagini reali, acquisite per esempio tramite una macchina fotografica, oppure possono essere artificiali e create tramite software di editing grafico. Qualunque sia l'origine di un'immagine affinché essa sia possibile utilizzarla in un'applicazione (per esempio un'applicazione multimediale) occorre che essa sia rappresentata in qualche modo all'interno di un computer. Abbiamo visto che nel caso dei caratteri esistono codifiche standard che associano a ciascun carattere un codice numerico, la differenza fra caratteri e immagini è che i simboli di un alfabeto sono in numero finito mentre le possibili immagini sono infinite in numero e varietà. Occorre quindi definire una convenzione rappresentativa generale (o formato standard), applicabile a qualsiasi immagine sia che la conosciamo sia che non la conosciamo. Solo avendo a disposizione informazioni relative al formato possiamo costruire software per la visualizzazione su schermo delle immagini, per la loro manipolazione, per la loro trasmissione via rete. L'osservazione alla base della rappresentazione delle immagini è che, parlando in termini molto astratti, esse sono aree di forma rettangolare variamente colorate. Quindi per rappresentare un'immagine occorre rappresentare la distribuzione, in un'area bidimensionale, dei diversi colori. L'idea, molto semplice, è di approssimare l'immagine con una griglia di punti colorati: più fine sarà la griglia più fluida sarà la percezione dell'immagine da parte dell'occhio umano. La figura precedente è un esempio di immagine rappresentata come spiegato: in questo caso l'immagine è costituita per lo più da punti bianchi anche se compaiono alcuni punti colorati di rosso e di blue. Come si può vedere, i punti non hanno dimensione nulla, come postulato dalla geometria 1 - Immagini, colori e formati
euclidea, bensì hanno una dimensione ben precisa: sono delle piccole aree colorate. Rappresentare un'immaginein questo modo ha i suoi svantaggi, in particolare la digitalizzazione di un'immaginereale (una fotografia) comporta una perdita di qualità determinata dal passaggio dalla forma analogica di rappresentazione ad una forma discreta. L'operazionetramite la quale si suddivide un'immaginein punti è detta campionamento, i punti colorati sono detti pixel e la dimensione dei pixel determina la risoluzione dell'immagine,intesa come densità lineare di pixel (numero di pixel per unità lineare di misura) La risoluzione è misurata in dpi (letto di-pi-ai sta per dots per inch, punti per pollice). Maggiore è la risoluzione migliore è la qualità dell'immagineperché maggiore è il numero di punti catturati, tuttavia maggiore è il numero di punti maggiore è la quantità di informazione rappresentata e quindi maggiore è la dimensione del file risultante (la sua occupazione di memoria, che quadruplica con il raddoppiare della risoluzione). Si osservi che per le applicazioni multimediali fruibili via web il discorso della dimensione delle immagini è molto importante perché maggiore è la dimensione dei file maggiore sarà il tempo di scarimento via internet del medesimo. Viene definito pixel aspect ratio la proporzione fra larghezza e altezza dei pixel. Spesso tale proporzione è pari ad uno, cioè i pixel sono quadrati. In prima istanza possiamo immaginare un'immaginecome rappresentata da una griglia di pixel. Questa rappresentazione non è, tuttavia, sufficiente. I pixel sono punti colorati: è necessario convenire anche un formato per la rappresentazione dei colori. L'assegnamento dei colori ai vari pixel è un'operazionenota come quantizzazione cromatica. Non è un'operazione semplice da compiere in modo automatico perché non è ancora del tutto chiaro il meccanismo tramite il quale noi percepiamo i colori. In generale sappiamo dalla fisica che è posibile creare un'ampia gamma di colori mescolando pochi colori elementari (che costituiscono una base di colori). Abbiamo tutti esperienza, fin dalla più tenera infanzia, che Rosso Giallo e Blu consentono di ricreare tutte le sfumature di colore visibili. Questa non è l'unica possibilità. Per quel che riguarda i colori prodotti tramite tubo catodico si utilizza una base diversa, costituita dai colori Rosso, Verde e Blu (RGB, da red, green e blue: questa scelta cromatica si basa su studi relativi al funzionamento dell'occhioumano) mentre per la stampa si utilizzano Ciano, Magenta e Giallo (CMY). I colori primari che costituiscono la base sono anche noti come banda (banda di rosso, banda di verde, ecc.). Qualunque sia la base, la scala di intensità di ciascuna componente non può essere arbitraria, occorre porre dei limiti. Tipicamente il livello di ciascun colore della base ha 256 livelli di intensità (da 0, che indica l'assenza di quel colore, a 255, livello massimo di intensità). Questo significa che ogni colore può essere rappresentato da tre numeri compresi fra 0 e 255; poiché per rappresentare questo intervallo occorrono 8 bit, ciascun colore sarà rappresentato da tre numeri costituiti da 8 bit ciascuno. In totale occorreranno 24 bit per 2 - Immagini, colori e formati
rappresentare ogni pixel. Quanti colori si possono rappresentare con 24 bit? Molti: 2 24 = 16 milioni di colori. Qualora sia necessario ridurre la dimensione del file corrispondente ad un'immagine,oltre ad agire sulla risoluzione (intesa come densità della griglia di pixel) è possibile agire sulla risoluzione cromatica, riducendo i livelli possibili per ciascun colore primario. Dimezzando il numero di livelli si dimezza anche il numero di bit necessari a mantenere la quantità di quel colore. Lo svantaggio è che anche la gamma dei colori possibili diminuisce drasticamente. Un metodo alternativo consiste nel definire una lookup table (o LUT) costituita da un piccolo numero di colori (due casi tipici sono LUT costituite da 256 oppure 16 elementi), ciascuno dei quali è identificato da un numero da 0 al massimo definito. Si dice che questi colori costituiscono una palette (tavolozza): l'immagine,che in questo caso è detta a colori indicizzati, conterrà solo colori contenuti nella palette. L'usodi lookup table consente di ridurre enormemente la dimensione dei file di immagini. Colori e applicativi per l'elaborazione delle immagini Prima di esaminare i formati standard dei file di immagini, continuiamo il discorso della rappresentazione dei colori, intesi come composizione di bande primarie. Molti strumenti per l'editing(elaborazione) delle immagini forniscono i tre seguenti formati di rappresentazione: RGB, che abbiamo già descritto, HSV, che approfondiremo, e la rappresentazione a triple esadecimali. Segue un esempio in cui lo stesso colore è descritto secondo i tre formati elencati: RGB: 0 184 168 Hex triplet: #00b8a8 HSV: 174 100 72 Come evidenziato dalla grafica anche la notazione a triple esadecimali codifica una composizione RGB, la differenza rispetto alla prima rappresentazione sta nella base numerica usata per scrivere i livelli di ciascuna banda. Mentre nel primo caso si usano numeri in base dieci, nel secondo si utilizzano numeri in base 16, le cui cifre vanno da 0 a 9 e quindi da a ad f (queste ultime corrispondono ai numeri in base dieci: 10, 11, 12, 13, 14 e 15). La notazione esadecimale è utilizzata nella realizzazione di siti web, per indicare il colore di sfondo di pagine e tabelle, il colore del testo e così via. Consideriamo per esempio il livello di verde: in notazione decimale abbiamo il numero 184, in notazione esadecimale compare b8. Ebbene b8 = 184. Infatti come per definizione di numero in base dieci, 184 può essere scomposto in 4 * 10 0 + 8 * 10 1 + 1*10 2, per definizione di numero in base sedici, b8 = 8 * 16 0 + b * 16 1 = 8 + 11 * 16 = 8 + 176 = 184. Nella notazione RGB il bianco 3 - Immagini, colori e formati
corrisponde alla tripla 255 255 255, mentre il nero a 0 0 0. L'analogoin esadecimale è #ffffff per il bianco e #000000 per il nero. Il vantaggio pratico della rappresentazione esadecimale rispetto a quella in base dieci è che nella prima tutti i colori sono rappresentati da sei cifre, mentre nella seconda il numero delle cifre è variabile (da tre a sei). Nel caso in cui l'immaginesia in bianco e nero occorre distinguere fra immagine B/W e immagine a livelli di grigio. Nel primo caso la palette contiene solo due elementi: il bianco ed il nero, quindi basta un solo bit per identificare il colore di un pixel. Nel secondo sono previste un certo numero (tipicamente 254) sfumature intermedie fra i due (256 elementi in tutto). Si può immediatamente osservare che le immagini a livelli di grigio occupano molta meno memoria di quelle a colori (8 bit contro 24 bit per pixel) e che quelle B/W sono in assoluto le meno voluminose (1 bit per pixel). Un'estensionedella scala a livelli di grigio è il duotone, che aggiunge un tocco di colore alle diverse sfumature (per esempio un giallo o un azzurro). In questo modo vengono ottenuti effetti quale il seppiato, l'anticato e così via. RGB, B/W e livelli di grigio sono tre modelli di colore. Per modello di colore si intende un insieme di regole (un meccanismo, una funzione) che consente di associare a ciascun colore una codifica numerica dimodoché il colore possa essere trattato in modo automatico. L'uso di basi di colori non è l'unica scelta possibile. Un'alternativa è rappresentata dal modello HSV (Hue, Saturation, Value), un tantino meno intuitiva della codifica RGB già descritta. Il modello di colore HSV è un cono a base rotonda, un cerchio di Newton, di raggio S (saturazione, determina la preponderanza del colore) e altezza V (valore o intensità o brillantezza, determina la quantità di bianco in valore percentuale, da 0% a 100%). La terza componente, Hue, codifica la frequenza dell'ondaluminosa come un angolo (da 0 a 360). 4 - Immagini, colori e formati
La figura mostra l'ideadi questo modello: sulla destra abbiamo il cono che definisce i vari colori, sulla sinistra la sua sezione. Il cono è una figura solida, ogni punto del cono è identificato da tre coordinate numeriche, una tripla di valori H, S e V, e rappresenta un colore. Quello che nella figura non è rappresentato bene è la graduale sfumatura da colore a bianco man mano che si procede dalla circonferenza della base verso il centro. Riguardo il cerchio dei colori di Newton, esso è il risultato di una serie di esperimenti condotti dal famoso fisico Isaac Newton utilizzando un prisma. Newton dapprima identificò i tre colori base Rosso, Verde e Blu, divise un cerchio in tre spicchi identici ed assegnò a ciascuno spicchio uno dei tre colori identificati. In seguito divise ulteriormente ciascuno spicchio a metà e in mezzo ad ogni coppia di colori di base inserì il colore risultante dalla loro composizione: Esistono diversi altri modelli di colore, che però non studieremo. Immagini bitmap: formati A questo punto torniamo ad esaminare i diversi modi in cui un'immagine digitale può essere rappresentata ed introduciamo alcuni fra i formati più diffusi, con particolare attenzione al web. In particolare considereremo immagini a bitmap, anche dette immagini raster, cioè immagini intese come spiegato nella prima sezione e quindi come aree rettangolari costituite da punti luminosi di diverso colore. Questo modo di intendere le immagini è contrapposto al concetto di immagini vettoriali, definite per composizione di forme geometriche, di cui parleremo più avanti. Un'area rettangolare costituita da elementi omogenei è descritta perfettamente dal concetto matematico di matrice: quindi possiamo anche dire che le immagini bitmap sono matrici di pixel, dove i pixel hanno rappresentazioni diverse a seconda del modello di colore adottato. Una matrice di pixel può essere rappresentata in molti modi. La prima idea che viene in mente è di scrivere i valori numerici che identificano i colori dei diversi pixel uno di seguito all'altrodentro ad un file, secondo l'ordinecon cui compaiono all'internodella matrice. Questo formato è noto come raw data (dati grezzi). Supponiamo di avere un'immaginecosì codificata e di doverla visualizzare. Il 5 - Immagini, colori e formati
compito di un programma di visualizzazione consiste sostanzialmente nel leggere il file indicato e riprodurre sul monitor la griglia di pixel colorati letta. Un'osservazioneimmediata è che se le informazioni contenute nel file sono tutte e sole quelle indicate (una sequenza di colori di pixel) il programma non può visualizzare l'immagine.il motivo è che l'immagineha una larghezza ed un'altezzaintese che non risultano espresse, inoltre i diversi modelli di colore rendono la codifica dei pixel più o meno lunga e costituita da uno o da più numeri. Anche quest'informazioneè vitale per interpretare correttamente i dati contenuti nel file. Senza queste informazioni aggiuntive il sistema dovrebbe fissare arbitrariamente dei parametri che causerebbero una riproduzione distorta dell'immagine.tutte queste informazioni aggiuntive non sono dati grezzi ma meta-dati il cui scopo è consentire una corretta interpretazione dei dati grezzi (meta-dati = dati riguardanti i dati). I meta-dati sono contenuti in una porzione iniziale del file detta header. Tipicamente i primi byte che costituiscono l'header sono una codifica convenzionale (un numero) del tipo di file che l'applicativosta leggendo. Questo numero convenzionale è detto magic number. Altre informazioni contenute nell'headersono le dimensioni dell'immagine, il modello di colore usato ed eventualmente il tipo di compressione utilizzata per compattare i dati. Alcune informazioni contenute nell'header possono dipendere dal formato stesso dell'immagine, altre possono non essere inerenti all'interpretazionedella codifica ma comunque pertinenti in senso lato all'immagine,come ad esempio il nome dell'autore,un eventuale copyright, lo strumento usato per creare l'immagine e così via. Dopo l'headerma prima della codifica dei pixel si trovano altri blocchi di informazione. Il contenuto di tali blocchi dipende dal formato dell'immagine. Per esempio, nel caso di immagini i cui colori sono codificati da una tabella di lookup sarà presente la tabella in questione; nel caso di immagini jpeg, che è un formato di rappresentazione che comprime i dati, avremo invece i coefficienti necessari per decomprimere la codifica dell'imamgine. La terza sezione del file contiene i dati veri e propri, che per alcuni formati (vedi jpeg) possono essere il risultato di un processo di compressione. Vediamo più da vicino alcune caratteristiche dei formati più diffusi: 1. BMP: è il formato di immagine nativo del sistema operativo Microsoft Windows e dei suoi successori. Consente la rappresentazione di immagini con alternativamente tabelle di lookup che richiedono 1, 4, oppure 8 bit per pixel, oppure immagini a 24 bit per pixel (16 milioni di colori). Non è applicata alcuna forma di compressione. Per questo motivo si dice che BMP è un formato lossless: non si hanno diminuzioni di precisione codificando le immagini in questo formato. 2. GIF: Graphical Interchange Format, sviluppato da Compuserv. Inc. ne esistono due versioni GIF87a e GIF89a. È stato sviluppato avendo come scopo il trasferimento di file di immagini in rete ed è uno dei formati utilizzati nella realizzazione di siti web. Salvare o convertire un'immaginein GIF comporta l'applicazionedi una trasformazione finalizzata a comprimere 6 - Immagini, colori e formati
il file contenente l'immagine(renderlo più piccolo e quindi più veloce da trasferire). Il metodo applicato si chiama LZW. Il formato GIF ha un limite: non può codificare qualsiasi immagine bensì solo immagini con colori indicizzati a 8 bit (palette di 256 colori). Anche questo formato è lossless ma non è adeguato a codificare immagini fotografiche per via del numero estremamente basso di colori diversi che l'imma gine può contenere. 3. JPEG: il Joint Photographic Experts Group ha sviluppato una tecnica di compressione che è stata implementata in diversi formati, due dei quali, di grande successo, sono JFIF e TIFF. Di questi il primo ha successivamente assunto il nome JPEG, cioè il nome del gruppo che ha sviluppato la tecnica di compresisone. JPEG è una tecnica lossy, in altri termini l'immagine codificata è un'approssimazionedi quella originaria, anche se è possibile controllare la qualità dell'immaginecodificata tramite un parametro che indica la precisione desiderata (maggiore la precisione maggiore la dimensione del file risultante). Il vantaggio è che eseguendo operazioni di scaling dell'immagine(cioè variandone la dimensione), l'immagine(entro certi limiti) non subisce quel fenomeno di sgranatura subito invece dai formati precedenti, nei quali ingrandire l'immaginesignifica ingrandire i pixel, col risultato di vedere una sorta di mosaico di quadretti colorati. JPEG consente di codificare immagini a 24 bit per pixel o a livelli di grigio, consente di ottenere gradi di compressione elevati ed è particolarmente adeguato per le immagini fotografiche. 4. TIFF: Tag Image File Format; è usatissimo soprattutto come formato di scambio fra applicazioni grazie alla sua flessibilità; fornisce un ampio numero di opzioni, consentendo di effettuare la compressione utilizzando algoritmi diversi (RLE, LZW, JPEG). 5. PNG: Portable Network Graphics, più recente degli altri metodi è un metodo lossless, sviluppato come dice il nome per scambiare immagini su internet. Può essere utilizzato su qualsiasi sistema operativo, adotta un metodo di compresisone molto efficiente, è in grado di gestire la trasparenza, può gestire immagini a colori indicizzati, a livelli di grigio, a colori con varie risoluzioni cromatiche fino a 24 bit per pixel. 7 - Immagini, colori e formati