Per approfondire i concetti discussi in questa sezione consultare il libro: Elaborazione di immagini digitali
Il termine media ha il significato di mezzo o supporto per comunicare o memorizzare informazioni.
Con il termine multimediale si indica un sistema che si avvale di diversi tipi di media per comunicare un messaggio.
Tipicamente i media utilizzati in una pagina Web sono il testo, le immagini (statiche o animate), nonchè un ausilio sonoro e video.
Questi tipi di media devono avere il formato digitale.
Un segnale è in formato digitale (digit significa cifra) se viene codificato con le cifre di un sistema di numerazione (decimale o binario). Una grandezza è analogica se i suoi valori vengono rappresentati mediante i valori di un'altra grandezza che si comporta in maniera analoga.
L'orologio analogico, a lancette, rappresenta il tempo mediante l'analogia con l'angolo di rotazione di un raggio che descrive archi uguali in tempi uguali.
L'orologio digitale rappresenta invece il tempo mediante le cifre numeriche visualizzate sul display, che rappresentano il conteggio delle oscillazioni di un pendolo avente periodo 1 secondo.
Un altro esempio di strumento analogico è il termometro. Questo rappresenta l'analogia tra la temperatura e la lunghezza di dilatazione del mercurio. In un termometro digitale non si sfrutta il fenomeno della dilatazione termica di un metallo (che è proporzionale alla variazione di temperatura), ma si sfrutta la proprietà dei semiconduttori di variare la differenza di potenziale al variare della temperatura, e convertendo questa d.d.p. in un numero binario.
Una grandezza analogica viene Convertita in digitale in 2 fasi: prima viene prelevato un campione del segnale, poi il campione viene quantizzato.
![]() fig. 1 - il Campionamento. I fase della conversione da analogico a digitale Campionamento. Il segnale analogico varia con continuità nel tempo. Il campionamento consiste nel prelevare dei campioni del segnale, ovvero valori del segnale in certi istanti. In questo modo il segnale non è più noto per qualsiasi valore del tempo, ma se ne conoscono i valori "fotografati" in istanti di tempo. Il segnale prodotto dal campionatore si dice Discreto. |
![]() fig. 2 - Quantizzazione del campione. II fase della conversione da analogico a digitale Quantizzazione Il processo di quantizzazione consiste nel suddividere l'intervallo di variazione del segnale analogico in 256 parti e nel numerare gli intervalli da 0 a 255. Il quantizzatore, cioè, è simile ad un righello: Il campione prelevato si appoggia con un estremo all'inizio della scala e si legge in quale intervallo cade l'altro estremo del campione. Il valore di questo intervallo rappresenta la codifica binaria del campione. Nell'esempio della figura a lato il campione cade nell'intervallo nunero 4. |
La conversione di un segnale, dalla forma analogica a quella digitale, introduce un'approssimazione. Infatti, tutti i valori dei campioni che cadono nello stesso intervallo vengono codificati con lo stesso valore numerico.
I valori possibili per alcuni tipi di informazioni multimediali (ad esempio i colori di un immagine o la frequenza di un suono) nel mondo reale sono infiniti (sono definiti nel continuo). Quando il segnale viene digitalizzato, i valori disponibili sono in realtà una quantità discreta e, dunque, rispetto all'equivalente analogico, ogni segnale digitale è rappresentato da valori arrotondati per difetto.
I valori possibili sono fissati in livelli di quantizzazione in modo da non alterare in modo sensibile il segnale. Per esempio le immagini possono essere costruite con 256 colori per ogni pixel (codificando ogni pixel con 8 bit) oppure con 16 milioni di colori per pixel (richiedendo 24 bit per ogni pixel).
Il numero di livelli di quantizzazione, quindi l'approssimazione introdotta, definisce il numero di bit necessari a codificare un campione del segnale.
Per convertire in digitale un segnale analogico che varia con continuità occorre prelevare dei campioni ad intervalli regolari. Il numero di campioni al secondo è detto sampling rate, cioè frequenza di campionamento, si misura in Hz ed equivale a specificare il numero di campioni al secondo.
Il teorema di Shannon e Nyquist assicura che esiste la frequenza di campionamento che garantisce la ricostruzione fedele del segnale e stabilisce che questa frequenza è uguale al doppio della frequenza massima contenuta nel segnale stesso.
Campionare a frequenza minore del valore di Shannon-Nyquist significa perdere informazioni e ottenere una ricostruzione imprecisa del segnale.
Il fenomeno dell'Aliasing si verifica nei sistemi digitali quando l'informazione analogica viene campionata. Se la frequenza di campionamento non soddisfa la condizione di Nyquist (fc >2·fm) il segnale campionato appare di frequenza diversa da quella del segnale. (ved. teorema del Campionamento)
Per comprendere il fenomeno Aliasing nell'ambito della fotografia bisogna pensare alla frequenza spaziale, anzichè al numero di oscillazioni in un secondo.
il numero di coppie di linee bianche e nere alternate in un mm rappresentano il numero di oscillazioni in un millimetro.
La più elevata frequenza spaziale che un sensore ottico (tipo CCD) è in grado di rilevare è detta frequenza di Nyquist. Un'informazione di frequenza maggiore viene persa.
Indicando con p lo spessore in mm di un pixel, una coppia di linee di colore diverso occupano 2·p mm, quindi il massimo numero di oscillazioni in un millimetro è f = 1/(2·p)
Ad esempio se p = 9·10-3 mm, una coppia di linee di colore diverso occupano 18·10-3 mm, In un millimetro ci sono: f = 103/18 = 55,6 coppie di linee
Un'immagine digitale può essere rappresentata per punti (immagine bitmap o raster) o in formato vettoriale.
formato bitmap ![]() Il formato bitmap è simile alla rappresentazione dell'immagine sullo schermo, cioè ogni punto dello schermo è illuminato con un colore allo scopo di colorare l'immagine.
|
![]() Nel formato vettoriale, le immagini sono costruite con figure geometriche delle quali si conosce la descrizione matematica per calcolare i pixel da illuminare. Le immagini vettoriali sono formate con cerchi, quadrati, curve, archi ecc. |
Come conseguenza, un'immagine memorizzata in formato bitmap occupa molto spazio, perchè bisogna memorizzare
il codice del colore di ciascuno dei pixel, mentre per memorizzare l'immagine vettoriale
si richiede di memorizzare solo i parametri che consentono di calcolare i pixel da illuminare, ad esempio di un cerchio
basta conoscere il centro e il raggio, di un rettangolo basta conoscere, invece, le coordinate di due vertici opposti, ecc.
Inoltre l'ingrandimento di un immagine bitmap non si può ottenere, mentre l'ingrandimento o la riduzione
in scala di un'immagine vettoriale è sempre possibile.
L'immagine bitmap è rappresentata da una matrice di NxM punti (dot) o pixel (relativamente al monitor).
La densità di un dispositivo che deve rappresentare un'immagine si misura in numero di punti per pollice (dot per inch, dpi).
Il numero di dpi esprime una misura lineare che di solito si riferisce sia alla risoluzione verticale che a quella orizzontale.
Maggiore è il numero di punti per pollice maggiore sarà la precisione della rappresentazione digitale, ma crescerà anche la dimensione del file (in byte) risultante.
Per esempio una risoluzione di 72 dpi permette di definire più dettagli rispetto ad una a 36 dpi. Inoltre, un'immagine a 72 dpi utilizza, per ogni pollice quadrato, 72x72=5.184 pixel. Un'immagine di 3x3 pollici definisce 5184x3x3=46.656 pixel. Dunque, se si usa:
1 byte per ogni punto, il file occupa 46.656 byte.
3 byte per ogni punto, il file occupa 139.968 byte.
Valori tipici di densità sono:
Per lo schermo 72 dpi.
Per la stampante da 600 dpi in su.
Si possono avere due tipi di risoluzione cromatica.
Palette:
utilizza 8 bit per ogni punto, quindi riesce a codificare 256 colori. Questi possono essere scelti in vari modi:
256 toni di grigio per rendere l'immagine in B/N,
256 colori presi in modo uniforme sullo spettro
scegliendo con criteri diversi i 256 colori che offrono una migliore resa grafica dell'immagine.
Questa, in generale, è una risoluzione cromatica poco adatta alle immagini di tipo fotografico che sono caratterizzate da colori molto sfumati.
True color:
utilizza un sistema colorimetrico a tre o quattro componenti di 8 bit ciascuna (per un totale di 24 o 32 bit per ogni
punto) che consente di rappresentare 16.777.216 colori. Il numero dei colori ottenibili supera quello dei colori
effettivamente distinguibili dall'occhio umano, per il quale questa rappresentazione digitale è cromaticamente
perfetta. È la risoluzione cromatica più adatta alla riproduzione di fotografie.
Lettura consigliata: Teoria del colore
Il colore si manifesta per l'interazione della luce con un materiale.
La luce si propaga tramite un moto ondulatorio di elevata frequenza.
In un generico moto ondulatorio una particella oscilla intorno alla sua posizione di equilibrio. Si dice frequenza il numero di oscillazioni che la particella compie in un secondo. Si dice lunghezza d'onda la distanza tra due particelle che oscillano in fase.
La lunghezza d'onda della luce visibile è compresa tra 400·10-9 e 700·10-9, oppure tra 0.4μ e 0.7μ
Quando la luce colpisce un corpo può essere completamente assorbita dal corpo e in questo caso il corpo appare nero, oppure può essere completamente riflessa, e il corpo appare bianco. I colori appaiono quando il corpo assorbe la luce e ne riflette una parte.
Fra i sette colori dello spettro, tre sono i colori primari: il Rosso, il Giallo, e il Blu. I colori primari sono caratterizzati dal fatto che non sono ottenibili mescolando altri colori, ma dalla loro mescolanza si possono ottenere tutti gli altri colori.
Nel settore televisivo sono stati definiti i colori primari Rosso, Verde e Blu, e tale schema viene indicato con la sigla RGB.
Nella rappresentazione digitale di immagini in true color si usa una tra due tecniche di codifica:
![]() di tipo additivo: |
![]() Di tipo sottrattivo (tipicamente stampanti): |
Nell'ambito di queste tecniche si usano i metodi seguenti:
RGB Red-Green-Blue (Rosso-Verde-Blu):
è uno spazio additivo in cui i colori sono ottenuti componendo valori di intensità del colore di Rosso, Verde
e Blu, ognuno espresso con un valore compreso tra 0 e 255.
Il valore (0,0,0) indica il nero mentre il valore (255,255,255) indica il bianco.
CMY (Cyan-Magenta-Yellow):
è uno spazio sottrattivo che si basa sull'assorbimento della luce da parte dell'inchiostro.
Il valore (0,0,0) indica il bianco mentre il valore (255,255,255) indica il nero. Il nero composto nella stampa ha una cattiva resa, per cui a volte si utilizza una codifica
CMYK con K che indica il nero puro (ottenuto da inchiostro nero).
YUV (Luminance-Chrominance): è una particolare codifica additiva che si ha per trasformazione lineare da quella RGB e che viene usata nelle trasmissioni televisive. Y contiene informazioni sulla Luminosità mentre U e V sono parametri che riguardano il colore.
Le seguenti equazioni riassumono i rapporti tra i colori definiti negli spazi RGB e CMY, indicati in questo modo R=red (rosso), G=green (verde), B=blu, C=ciano, M=magenta, Y=yellow (giallo), W=white (bianco):
La densità incide sulla dimensione in byte dell'immagine. Una stessa immagine di 3x4 inch richiede un numero di dot molto diverso se digitalizzata a 72 dpi o a 600 dpi:
72 dpi: 62.208 dot.
600 dpi: 4.320.000 dot.
Bisogna inoltre considerare anche la risoluzione cromatica. Assumendo una densità di 72dpi e 3x4 inch (62.208 dot), servono:
A palette: 62.208 byte.
In True Color: 186.624 byte.
Esistono numerosi formati non compressi o lascamente compressi, che vengono utilizzati. Tra questi:
BMP ( BitMaP ): è il formato standard di Windows e consente di usare diverse risoluzioni cromatiche (RGB , scala di colore e scala di grigio). Si può specificare una risoluzione in bit e, per le immagini a 4 e 8 bit, è possibile utilizzare un metodo di compressione lossless.
TIFF (Tagged Image File Format): è un formato bitmap supportato da quasi tutte le applicazioni grafiche, molto utilizzato perchè consente di scambiare file tra programmi e piattaforme diverse. Supporta diverse risoluzioni cromatiche (CMYK, RGB, scala di grigio) e consente di utilizzare un algoritmo di compressione lossless.
In generale la compressione è una particolare operazione di codifica, nella quale l'obiettivo è quello di generare un messaggio codificato che abbia una dimensione minore del messaggio originario. Gli algoritmi di compressione possono essere classificati come:
Lossless (senza perdita): la compressione è reversibile, ovvero dall'informazione compressa è possibile ricostruire esattamente l'informazione originale.
Lossy (con perdita): la compressione è irreversibile perchè non è più possibile ricostruire esattamente l'informazione originale. In questo caso viene codificata una quantità minore di informazioni e questo permette di ottenere rapporti di compressione nettamente maggiori rispetto a quelli che si hanno con la compressione lossless. D'altra parte, la perdita di dettagli che si ha con la compressione lossy può non essere percettibile.
Le tecniche di compressione si distinguono anche in:
source encoding:
l'algoritmo di compressione tiene conto del tipo di informazione digitale, ovvero
il processo di compressione trae vantaggio dal conoscere a priori se si tratta di un immagine, di audio, eccetera.
entropy encoding:
si basa su tecniche matematiche, tratte dalla teoria dei codici e dell'informazione,
e permette di ottenere la compressione di un flusso di dati binario senza conoscere il tipo di informazione in
esso contenuto.
Le pagine Web ammettono tre formati:
JPEG (Joint Photographic Experts Group)
è un metodo di compressione con perdita di tipo
source encoding basato sulla conversione dello spazio dei colori. La compressione JPEG lavora su immagini true color
(24 bit per pixel) e per immagini con tonalità continue (ovvero per quelle di tipo fotografico) raggiunge
facilmente un rapporto di compressione 25:1 senza riduzioni percettibili della qualità.
GIF (Graphic Interchange Format):
utilizza una compressione di tipo entropy encoding e senza perdita
che consiste sostanzialmente nell'usare codifiche compresse per sequenze di colori uguali. Questa meccanica rende
questo formato particolarmente adatto alla codifica di icone e immagini simboliche; è poco adatto a immagini di
tipo fotografico. Usa una risoluzione dei colori basata su palette (ovvero 256 colori, un byte per ogni dot). Lo standard
GIF consente la creazione di immagini con trasparenza definendo un valore della palette come trasparente. Lo stesso
formato consente la costruzione di semplici immagini in movimento. Le immagini in formato GIF sono a volte utilizzate per
realizzare semplici animazioni. Questo è possibile perchè il formato GIF prevede la presenza del
Control Extension Block che consente di definire sequenze di immagini (immagini multiple) che possono essere
visualizzate come una animazione. L'immagine animata va dunque realizzata mediante un paziente lavoro di costruzione
delle singole figure che compongono la sequenza.
PNG (Portable Network Graphics, si pronuncia ping),
è un formato nato con lo scopo di fornire
una alternativa a GIF nella memorizzazione lossless di immagini per il Web. Il formato GIF utilizza un algoritmo
di compressione proprietario per cui il software che lo incorpora deve sottostare al pagamento dei diritti.
PNG è invece gratuito e inoltre presenta altri vantaggi tra cui la possibilità di usare colori True Color RGB
e l'uso di tecniche di compressione lossless ma più efficaci rispetto a quelle utilizzate da GIF.
Le immagini vettoriali sono rappresentazioni visive costruite da descrizioni matematiche di uno o più elementi geometrici di base che possono essere costruite aggiungendo o rimuovendo forme, o applicando trasformazioni geometriche.
Quando le funzioni che compongono la figura sono definite nel piano, si ottengono figure vettoriali bidimensionali (2D)
mentre se sono definite nello spazio, si ottengono figure vettoriali tridimensionali (3D). Passare dalla grafica vettoriale
in 2D a quella in 3D comporta un ovvio aumento della complessità matematica del problema. La differenza sostanziale
risiede però nel fatto che mentre nella grafica 2D le riproduzioni degli oggetti sono comunque astrazioni di tipo
simbolico, con la grafica 3D si producono modelli che mirano a rappresentare gli oggetti reali in modo efficace.
La grafica vettoriale trova applicazione nei seguenti settori:
La produzione grafica:
la creazione di loghi e immagini che devono essere frequentemente ridimensionate e adattate a differenti contesti
è realizzata tipicamente con formati vettoriali che si prestano a questo tipo di operazioni.
La tipografia:
i caratteri (ovvero i font) sono realizzati con descrizioni vettoriali che consentono di specificare la forma senza preoccuparsi
delle dimensioni, che vengono cambiate da una semplice trasformazione matematica.
La produzione di content Web animato: sempre più spesso le pagine Web includono oggetti prodotti con strumenti di animazione 2D vettoriale.
Le principali applicazioni di grafica vettoriale tridimensionale sono invece:
la progettazione industriale e la progettazione edile e urbanistica che vengono realizzate mediante l'uso di software CAD (Computer Aided Design).
La realizzazione di animazioni 3D e di effetti speciali per l'industria cinematografica.
I videogiochi.
La simulazione scientifica e la realtà virtuale.
Le animazioni 2D vettoriali sono tipicamente realizzate utilizzando due tecniche base di animazione:
cel-like animation, in cui lo sfondo resta fisso e si muovono solo alcuni elementi posti in primo piano. Questa metodica è realizzata utilizzando diversi livelli di costruzione dell'immagine.
sprite, immagini che si muovono localmente e vengono spostate sullo schermo, indipendentemente dalle altre immagini presenti, dando l'idea di moto complessivo. Questa metodica è realizzata consentendo di costruire elementi in movimento autonomo e offrendo sistemi che li integrano tra di loro.
Key frame: l'animazione è specificata attraverso i punti chiave dell'animazione (key frame) in cui i vari elementi cambiano stato. Il programma calcola i passaggi intermedi tra un punto chiave e l'altro provvedendo ad applicare agli elementi le trasformazioni necessarie a passare da un key frame al key frame successivo. In questo modo il progettista deve solo definire gli stati principali dell'animazione e il programma calcola automaticamente tutti gli stati intermedi.