1.3a: La Codifica Digitale delle Immagini Bibliografia Curtin, 4.7 e 4.9 (vecchie edizioni) Curtin, 3.7 e 3.9 (nuova edizione) CR pag. 14-18 Questi lucidi La codifica delle immagini: Pixel Un’immagine digitale è composta da un insieme fittissimo di minuscoli puntini colorati disposti come in una griglia. Riproduzione del quadro “Lo spirito del ’76” Risoluzione di un’immagine Tanto più è fitta la griglia (più numerose sono le cellette), tanto migliore è la rappresentazione dell’immagine Digitalizzazione di un’immagine Un’immagine è composta da tratti, linee, colori, …, ed è un oggetto BIDIMENSIONALE Perché possa essere “compresa” da un computer bisogna trasformarla in formato binario e renderla MONODIMENSIONALE, Cioè “codificarla” trasformandola in una successione di 0 e 1 disposti uno accanto all’altro, generando qualcosa di simile a … 100111100100 … Digitalizzazione di un’immagine Daremo prima di tutto una regola per trasformare un insieme di tratti, colori, linee (cioè un’immagine) in un insieme di bit Poi daremo una regola per trasformare questi bit in una sequenza monodimensionale Digitalizzazione di un’immagine B/N Per semplicità si supponga di voler codificare un’immagine geometrica in bianco e nero (senza grigi) Si suddivide l’immagine in un insieme di quadratini (detti pixel, dalla contrazione di picture element), sovraimponendo su di essa una GRIGLIA. Si procede poi a codificare ogni pixel in questo modo: ‘1’ per i pixel in cui il nero è predominante ‘0’ per i pixel in cui il bianco è predominante 0 0 0 0 0 0 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 0 0 0 0 0 0 Codifica Bit-Map delle immagini B/N Poiché una sequenza di bit è lineare, mentre un’immagine è bidimensionale, bisogna definire una regola per ordinare linearmente la griglia dei pixel. Tramite un sistema detto di bit mapping, ad ogni pixel viene assegnato un indirizzo. Una regola è quella che numera i pixel da sinistra verso destra e dall’alto verso il basso. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 Codifica Bit-Map delle immagini B/N Con questa convenzione, la rappresentazione della figura sarà data dalla stringa binaria 0 0 0 0 0 0 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 0 0 0 0 0 0 0011110 0011110 0111100 0000000 Codifica Bit-Map delle immagini B/N Non sempre il contorno della figura coincide con le linee della griglia. Quella che si ottiene nella codifica è quindi un’approssimazione della figura originaria Infatti, riconvertendo la stringa appena calcolata in immagine, otteniamo: 0011110 0011110 0111100 0000000 0 0 0 0 0 0 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 0 0 0 0 0 0 Risoluzione di un’immagine La rappresentazione sarà più fedele all’aumentare del numero di pixel, ossia al diminuire delle dimensioni dei quadratini della griglia, con il conseguente loro riavvicinamento 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1 0 0 0 1 1 1 1 1 0 0 0 1 1 1 1 1 0 0 0 1 1 1 1 1 0 0 0 1 1 1 1 1 0 0 0 1 1 1 1 1 0 0 0 1 1 1 1 1 0 0 0 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 La qualità di un’immagine è data in base a due parametri: RISOLUZIONE NUMERO DI COLORI (o Profondità di Colore o Tavolozza dei colori) Risoluzione di un’immagine Con il termine RISOLUZIONE si indica la qualità di un’immagine visualizzata su monitor o stampata. La risoluzione di un’immagine si misura in punti per pollice (dpi – dots per inch). Maggiore è questo valore e più dettagliate sono le immagini e precisi i contorni La profondità di colore Se l’immagine ha più di due colori, si farà corrispondere ad ogni pixel un numero che ne rappresenta il colore E’ quindi necessaria una tabella di codifica dei colori, detta tavolozza dei colori Il numero di colori disponibili, chiamata profondità di colore, è determinata dal numero di bit utilizzati per rappresentare il singolo pixel. La profondità di colore La profondità di colore: 8 bit Così, ad esempio, se si fa corrispondere a ogni pixel un byte (cioè 8 bit), potremo differenziare 256 colori Ad es: 00001111 10101000 01010101 La profondità di colore: Formato RGB Il computer, per rappresentare tutte le sfumature di colore, fa uso della proprietà che stabilisce che un qualsiasi colore è dato dalla miscelazione di tre elementi di base, Rosso Verde e Blu (Red-Green-Blue). La più diffusa rappresentazione dei colori (RGB) associa, come avviene per i caratteri con la tavola ASCII, un codice numerico da 0 a 255 (codificabile con 8 bit, cioè con 1 byte) a ciascun colore di base (rosso-verde-blu) In totale sono visualizzabili 256x256x256=16.777.216 colori diversi La profondità di colore: Formato RGB Ad esempio al colore corrisponde la sequenza binaria 10000000 (gradazione num. 128 su 255 di rosso) 11000000 (gradazione num. 192 su 255 di verde) 11100000 (gradazione num. 224 su 255 di blu) Infatti, mescolando le 3 gradazioni di rosso, verde e blu si ottiene il seguente colore: Colori e memoria La memoria necessaria per visualizzare un’immagine è data da: dimensione della stessa (espressa in pixel) profondità di colore. L’occupazione di memoria di un’immagine di dimensione 1024x768 (che presenta 1024x768=786.432 pixel), è: Bianco e Nero (1 bit per pixel): 786.432 / 8 = bytes 98.304 256 Colori (1 byte per pixel): bytes 786.432 786.432 x 1 = Colori RGB (3 bytes per pixel): 786.432 x 3 = 2.359.296 bytes Compressione delle immagini Con particolari accorgimenti si possono utilizzare un numero minore di colori e ridurre lo spazio occupato dall’immagine. Esistono formati compressi (tra i più diffusi vi sono i formati JPEG e GIF) che consentono attraverso particolari tecniche numeriche di memorizzare immagini fotografiche di ottima qualità in uno spazio molto minore Il formato JPEG in realtà non memorizza fedelmente l’immagine ma sfrutta l’ulteriore caratteristica che l’occhio umano è in grado di vedere solo una piccola parte dei circa 17 milioni di colori possibili 1.3b: Grafica RASTER e VETTORIALE Bibliografia Curtin, 10.2 (vecchie edizioni) 5 dic 2011 Curtin, 9.2 (nuova edizione) Grafica BITMAP (o RASTER) La grafica BITMAP permette di lavorare a livello di singolo pixel. Fotografie e immagini sono di tipo bitmap, e quelle che non lo sono possono essere facilmente trasformate Stampante e monitor trattano solo immagini bitmap Svantaggi del BITMAP: risoluzione fissa e dimensione del file Grafica BITMAP Principali formati grafici BITMAP BMP è un formato standard NON COMPRESSO per i sistemi Windows. Può visualizzare fino a 16,7 milioni di colori (24 bit per pixel) JPEG (Joint Picture Experts Group): è un formato COMPRESSO, con perdita d’informazione. Può visualizzare fino a 16,7 milioni di colori (24 bit per pixel) GIF (Graphic Interchange Format): è un formato COMPRESSO, con perdita d’informazione. Può visualizzare fino a 256 colori (8 bit per pixel) Grafica Vettoriale: primitive grafiche La grafica vettoriale memorizza le immagini come insieme di oggetti grafici, quali linee, rettangoli, ellissi, archi e curve, chiamati primitive. Tali primitive grafiche vengono memorizzati come coordinate numeriche o tramite formule matematiche, specificando la loro forma e la loro posizione. Vantaggi della Grafica Vettoriale Possibilità di ridurre o ingrandire un oggetto. Ciò implica che l’immagine potrà essere stampata sempre alla migliore risoluzione ammessa dalla stampante. Possibilità di rotazione degli oggetti per vederli da diverse angolature e prospettive Controllo accurato delle linee e dei colori Possibilità di modificare facilmente le combinazioni e le sfumature di colore. Possibilità di inserire testo attorno agli oggetti. Applicazioni della Grafica Vettoriale Questi tipi di immagini sono ampiamente utilizzati nella progettazione assistita dal computer (CAD) nel campo ingegneristico ed architettonico. 5 dic 2011 Esse sono sempre più utilizzate in ambito multimediale per la creazione di animazioni bi e tridimensionali. Grafica Vettoriale I programmi di grafica vettoriale permettono di vedere un’immagine in due modalità differenti: Modalità Wire-Frame, nella quale si vedono solo le linee dell’immagine, permettendone una veloce manipolazione Modalità Shaded o di Superficie, nella quale al modello wire-frame sono aggiunte le superfici utilizzando colori e ombreggiature I GIS (Sistemi Informativi Geografici) Modello vettoriale Nel modello vettoriale, le informazioni fanno riferimento a: punti, linee e poligoni e sono codificate e memorizzate come una collezione di coordinate x,y. La localizzazione di un oggetto puntuale, come la posizione di un semaforo, può essere rappresentata come una singola coppia di coordinate. Oggetti lineari come strade e fiumi possono essere memorizzati come una sequenza di coordinate x, y. Gli oggetti poligonali, come edifici o laghi, sono memorizzati come aree omogenee perimetrate. I GIS (Sistemi Informativi Geografici) Modello raster Il modello raster si è sviluppato per descrivere fenomeni continui. Un'immagine raster è costituita da un insieme di celle e risulta simile ad una mappa letta con uno scanner o ad una foto. Dati vettoriali e dati raster Nel modello dei dati di un GIS, i dati vettoriali e i dati raster coesistono e si integrano a vicenda I dati vettoriali sono usati per dati discreti (es. rete viaria derivata dalla cartografia) I dati raster sono usati per dati continui (es. umidità al suolo derivata da immagini da satellite) Entrambi i tipi di dati possono essere associati ad attributi: i dati vettoriali saranno legati alle primitive grafiche e agli oggetti, i dati raster ai singoli pixel. 1.3c: Font BITMAP e Font SCALABILI Bibliografia Curtin, 4.8 (vecchie edizioni) 5 dic 2011 Curtin, 3..8 (nuova edizione) I FONT Con il termine FONT si indica un tipo di carattere con uno stile e una forma propri. Inizialmente esisteva un solo font, il Courier. Oggi esistono migliaia di font tra cui scegliere, ulteriormente suddivisi in categorie in base a Tipo Stile Dimensione del carattere TIPI di FONT 5 dic 2011 FONT con Serif e FONT Sans Serif Font con Serif e Font Sans Serif Alcuni Font presentano caratteri con sottili tratti terminali decorativi (in tal caso vengono detti con serif, cioè con grazie). Ad esempio Times New Roman Altri Font sono detti a bastoni e in essi il disegno è dritto e lineare (essi vengono detti sans serif, cioè senza grazie). Ad esempio Microsoft Sans Serif STILE di un FONT Quasi tutti i font presentano i seguenti stili: Normale Grassetto Corsivo Sottolineato Nel caso del Times New Roman: 5 dic 2011 Times New Roman (Normale) Times New Roman (Grassetto) Times New Roman (Corsivo) Times New Roman (Sottolineato) DIMENSIONE dei caratteri La dimensione di un carattere è misurata sulla sua altezza utilizzando come unità di misura il punto tipografico (in un pollice ci sono 72 punti) Di norma, all’interno di un testo, si utilizzano caratteri da 10 o 12 punti Times (12) Times (20) Times (32) 5 dic 2011 Times (48) Times (60) Times (72) Font proporzionale e non proporzionale Proporzionali Lo spazio occupato dal carattere è proporzionale alla forma del carattere stesso (la G occupa più spazio della j) Esempio (Garamond) Troppo bello capitello ilililil Non proporzionali Lo spazio occupato da un carattere è sempre lo stesso Esempio (courier new) Troppo bello capitello Ilililil Simboli speciali 5 dic 2011 Un font spesso presenta, oltre ai normali caratteri tipografici anche centinaia di altri simboli e icone. Font Bitmap e Font Scalabili Le prime stampanti utilizzavano i Font Bitmap, nei quali i caratteri sono costruiti come matrici di punti. Questo tipo di font presenta notevoli svantaggi: Ogni carattere occupa una notevole porzione di memoria Per ogni dimensione del font è necessario avere le bitmap di ogni carattere. Font Bitmap e Font Scalabili Per risolvere tali problemi furono introdotti i Font Scalabili, nei quali i caratteri sono memorizzati tramite alcune formule che ne descrivono la struttura Essi occupano poca memoria e sono ridimensionabili. Font Bitmap e Font Scalabili 18x18 bits=324 bits (per il carattere bitmap a destra) 8 valori o formule da memorizzare per il carattere a sinistra. Ogni valore al massimo occuperà 10 bits (ma alcuni valori richiedono molti meno bits per essere rappresentati), per un totale di 8x10=80 bits (per il carattere scalabile a sinistra). Inoltre, basterà variare il valore di L e di W per avere un carattere con differente dimensione stampa e visualizzazione dei font scalabili Poiché stampante e monitor utilizzano i caratteri bitmap, per visualizzare o stampare un testo, i caratteri scalabili vanno trasformati in bitmap. Questa operazione è svolta da un programma detto rasterizzatore, che converte la “formula” con cui è rappresentato un carattere scalabile in una matrice di punti (cioè a un insieme di pixel). Tra i rasterizzatori più noti citiamo Adobe Type Manager (per la rasterizzazione dei font scalabili di tipo PostScript) Windows True Type (per la rasterizzazione dei font scalabili di tipo TrueType)