Le immagini - the

Transcript

Le immagini - the
Le immagini.
• Rappresentazione digitale delle immagini.
• Risoluzione e profondità di colore.
• Percezione umana del colore.
• Modelli per la codifica dei colori.
• Tecniche di riduzione dei colori.
• Formati standard per la rappresentazione delle immagini: GIF, PNG, JPEG.
RAPPRESENTAZIONE DIGITALE DELLE IMMAGINI
Cos’e’ un immagine: un area con una determinata distribuzione di colori. Ogni punto di un immagine e’ caratterizzato
da una particolare grandezza fisica, il colore, che corrisponde alla FREQUENZA E ALL’INTENSITA DELLA
RADIAZIONE ELETTROMAGNETICA CHE QUEL PUNTO EMETTE
Quando si digitalizza un immagine si deve trasformare l’immagine in modo da rendere le informazioni in essa
contenute in un aforma comprensibile all’eleaboratore
Cos’e’ un immagine digitale: Dato che un calcolatore e’ in grado di elaborare solo numeri un immagine reale deve
essere tradotta in un insieme di cifre e tale operazione e’ detta digitalizzazione, e puo’ essere divisa in due parti:
• campionamento spaziale
• quantizzazione cromatica
CAMPIONAMENTO SPAZIALE
Si suddivide l’immagine in aree rettangolari detti PIXEL; Il numero di pixel per le due dimensioni dell’immagine e’
detta RISOLUZIONE SPAZIALE (o semplicemente risoluzione) misurata in DPI (dot per inch). Inoltre si definisce
PIXEL ASPECT RATIO il rapporto tra larghezza e altezza del pixel.
Alta risoluzione grande spazio in memoria, buoni particolari
Bassa risoluzione poco spazio in memoria, bassi particolari
QUANTIZZAZIONE CROMATICA
Dopo aver scelto un a griglia di campionamento si assegna a ciascun pixel uno o piu’ valori numerici che ne
definiscono il colore.
DEFINIZIONE FISICA DEL COLORE: grandezza complessa caratterizzata dall’intensita’ della radiazione
elettromagnetica emessa in corrispondenza delle frequenze dello spettro visibile
Purtroppo il calcolatore puo’ usare solo numeri finiti e quindi ci saranno un numero di colori rappresentabili finiti. Tutto
cio’ comporta che i colori debbano essere approssimati
Approssimazione del colore con una combinazione di un numero limitato di colori particolari (detti primari)
RGB (red,green,blue) usati per tubi catodici
o
CMY (ciano,Magenta, giallo) usato per la stampa
o
Per ogni colore reale si puo’ stabilre quale combinazione di intensita’ di ciascuno dei colori primari lo approssima
meglio, cioe’ che al nostro occhio da la stessa sensazione del colore reale
Ciascuno dei colori primari ha un intervallo da una max ad una min intensita e tale intervallo e’ diviso in X intervalli
regolari (di solito 256). I colori rappresentabili saranno X*X*X. Maggiore e’ il numero di intervalli migliore sara’
l’approssimazione del colore.
BANDA (in bit): informazioni corrispondenti ai bit usati per rappresentare la suddivisione di ogni colore primario
(8bit= 256 intervalli 2^8)
PALETTE: elenco dei colori disponibili
Il numero totale di bit con cui e’ rappresentato il colore di un pixel e’ la somma dei bit usati per rappresentare un
intervallo nei colori primari (uso 8 bit x colore primario 24 bit per pixel 8R+8G+8B)
Ci sono tecniche per la riduzione del numero di colore di un immagine digitale e sono:
• ridurre il numero di colori assegnati ad ogni colore primario
o immagini a 15 bit (5 per banda, ossia 32 livelli)
o immagini a 8 bit suddivisi in vario modo tra rosso verde e blu (3,3,2 o 4,2,2)
•
Scegliere un insieme opportuno di colori (256 o 16) e ad ogni pixel assegnare il numero di colore non la
codifica in bit del colore. Dopo grazie ad una tabella i colori verranno decodificati (look-up table LUT)
La seconda tecnica di riduzione dei colori e’ usata per schede video che ossono visualizzare max 256 colori o 16. Le
altre gradazioni di colore sono ottenute con i mezzi toni (diethering) o con la diffusione di errore (simulazione del
colore scegliendo un colore simile e modificando quelli che stanno intorno, viene percepito una media dei pixel
adiacenti)
QUANTIZZAZIONI CROMATICHE NELLE IMMAGINI IN B/N
In queste immagini ad ogni pixel corrisponde un solo valore numerico, che indica la luminosita’ di quel punto.
Per immagini b/n per cui si usano solo due valori per ogni pixel (bianco o nero) sono dette binarie.Per ottenere toni did
grigio in questi immagini si usa una mescolanza di punti bianchi e neri con la tecnica del dithering combinati in un
modo opportuno in modo che il nostro occhio li percepisca come un’unica entita; e mediandone la luminosita’ ottenga
l’impressione di osservare una determinata sfumatura di grigio
RISOLUZIONE E PROFONDITA’ DEL COLORE
La risoluzione dell'immagine
Le immagini digitali sono formate da piccoli rettangoli colorati che si chiamano pixel: questo termine è l'abbreviazione
di picture element, che, tradotto in italiano, vuol dire elemento di immagine. Per vedere distintamente i pixel che
compongono un'immagine digitale a colori basta ingrandirla, usando la funzione di zoom di un qualsiasi programma di
fotoritocco, oppure abbasasndo la risoluzione dello schermo. Vedremo così come ad ogni pixel corrisponde un colore
diverso; rimipicciolendo l'immagine invece sembra che questi si fondano in aree simili, creando sfumature, ombre,
aloni.
Un concetto legato ai pixel è quello di risoluzione. Per risoluzione dell'immagine si intende il numero di pixel contenuti
in ciascun pollice (unità di misura di spazio usata nel mondo anglosassone), indicata dall'abbreviazione "ppi" che in
inglese significa appunto pixel per inch. La risoluzione determina il dettaglio di unl'immagine. Più il numero di pixel
per pollice è alto, più l'immagine è nitida. Un altro fattore da tenere presente è che la risoluzione si misura in pixel per
pollice lineare e non pollice quadrato. Ad esempio: un immagine ad una risoluzione di 72 ppi avrà 72 pixel in
orizzontale e 72 pixel in verticale, che corrispondono a 5184 pixel per ogni pollice quadrato dell'immagine.
Per capire di quanti pixel deve essere composta un'immagine digitale dobbiamo sapere innanzitutto a chi e dove
vogliamo mostrarla. Se ad esempio vogliamo utilizzare un'immagine all'interno di una pagina Web, la risoluzione
applicata non può essere diversa di 72 o 96 ppi, perché la maggior parte dei monitor non è predisposta per visualizzare
un numero maggiore di pixel per pollice. Ma se l'immagine deve essere stampata, per ottenere la migliore qualità
possibile, è utile aumentare la risoluzione in funzione di quella supportata dalla stampante che dovrà riprodurla. Per una
stampante a getto d'inchiostro possiamo stare tra i 150 e i 300 pixel per pollice, mentre per una stampante laser
possiamo raggiungere i 600/1200 pixel per pollice. In ogni caso bisogna leggere attentamente le informazioni
solitamente riportate sul manuale della stampante che usiamo.
La profondità di colore
La profondità di colore di un'immagine, detta anche profondità di bit, determina tanto la dimensione del file che
l'intervallo dinamico (sfumature) dalle zone scure a quelle chiare, nonché il numero massimo di colori presenti.
Le immagini al tratto o bitmap sono costituite solo da pixel bianchi e neri. Ogni pixel contiene solo 1 bit di
informazione e proprio per questo la dimensione del file è la più contenuta. Possiamo pensare che solo con questi due
colori a disposizione le immagini non saranno di buona qualità. Invece aumentando la risoluzione (fino a 1.200 ppi)
indipendentemente dalla risoluzione della stampante, potremo ottenere un'immagine molto dettagliata. Questo tipo di
soluzione è molto adatta per la composizione di quei giornalini scolastici che in genere vengono fotocopiati.
Le immagini in mezza tinta o a toni di grigio (8 bit) riproducono le tonalità e le sfumature utilizzando 256 toni di grigio.
Ogni pixel contiene 8 bit di informazione, per questo motivo i file sono otto volte più grandi delle immagini al tratto.
Le immagini in scala di colore (8bit) utilizzano una riproduzione limitata a 256 colori. La dimensione del file è la stessa
delle immagini a toni di grigio. Le immagini in scala di colore solitamente vengono utilizzate all'interno di ipertesti o
pagine web e in generale se devono essere visualizzate sul monitor del computer. Se invece dovessimo stamparle o
modificarle con un programma di fotoritocco, le immagini devono essere convertite in modalità RGB o CMYK.
Le immagini RGB (24 bit) riproducono fino a 16,7 milioni di colori disposti in tre canali a 8 bit (256 colori per canale).
Le dimensioni del file di un immagine in questa modalità sono 24 volte più grandi dei file al tratto e 3 volte più grandi
di quelle in scala di colore e a toni di grigio.
Le immagini CMYK (32 bit) sono memorizzate in modo tale da risultare divise in quattro colori e quindi predisposte per
le stampanti che utilizzano questa modalità. I bit di profondità sono uguali a quelli dell'RGB (8 bit - 256 colori per
canale), ma la dimensione del file è maggiore di 1/3 perché contengono in più il canale del nero.
Nel prossimo articolo parleremo dei diversi formati dei file di immagine e le relazioni di ognuno di essi con la
profondità del colore.
PERCEZIONE UMANA DEL COLORE
TEORIA DI NEWTON: Un oggetto illuminato assorbe solo determinate componenti cromatiche, riflettendo tutte le
altre, le quali raggiungendo l’occhio umano generano la senzazione di colore
Bella teoria quella di newtono ma come si spiegano colori non provenienti dalla decomposizione spettrale della luce
bianca (marrone,porpora…) ovvero colori che sono la mescolanza di altri che sono colori di base
Cio’ ha portato alla distinzione tra il caso in cui si sommanlo luci e il caso in cui si mescolano pigmenti colorati. Nel
primo caso il numero delle componenti cromatiche che raggiungono contemporaneamente l’occhio aumenta (sintesi
additiva) mentre nel secondo, essendo i pigmenti sostanze assorbenti , il numero delle componenti cromatiche che
l’occhio percepisce diminuisce (sintesi sottrattivi)
TUTTI I COLORI NOTI SI POSSONO OTTENERE ATTRAVERSO LA SINTESI ADDITIVA DI TRE COLORI
BASE: ROSSO VERDE E BLU, E LA LORO SOMMA IN QUANTITA’ EQUIVALENTI GENERA UNA
PERCEZIONE ACROMATICA (LUCE BIANCA)
COLORE COMPLEMENTARE: colore che si ottiene sottraendo alla luce bianca il colore dato.
I colori complementari di rosso, verde e blu ovvero ciano Magenta e giallo costituiscono una base ottimale per la
SINTESI SOTTRATTIVA.
LA SOMMA DELLE COMPONENTI ADDITIVE GENERA IL BANCO
LA SOMMA DELLE COMPONENTI SOTTRATTIVE GENERA IL NERO
La luce e’ un onda elettromagnetica e dalla fisica quantistica si vede che possiamo rappresentare le onde
elettromagnetiche sia come onde (con le stesse prorpeita’ delle onde sonore) sia come fasci di particelle prive di massa
(fotoni). L’unica cosa di diverso dalle onde radio e le onde luce e’ la lunghezza d’onda, che genera all’ occhio
senzazioni diverse.
SPETTRO DELLA LUCE VISIBILE
Sono visibili solo le onde elettromagnetiche che hanno una lunghezza d’onda fra i 380 e i 770 nm. All’interno di questo
range di frequenze la percezione varia, percepita come variazione di colore.
• 400 nm: violetto
• 420 nm: blu
• 500 nm verde
• 600 in poi rosso
La sensibilita’ dell’ occhio non varia linearmente con il variare della lunghezza d’onda
• in certi intervalli si percepiscono come cromaticamente differeti due luci monocromatiche con delta- lambda di
soli 2 nm
• mentre per la regione dal violetto al blu, e la regione del rosso per percepire la differenza cromatica delta
lambda deve essere minimo 10 nm
QUINDI: dove c’e’ piu sensibilita’ si avra l’impression e di un rapido cambiamento di colre mentre dove la sensibilita’
e’ minore si avra’ l’impressione che il colore si mantenga costante per un tratto piu’ lungo
La causa per cui al variare della lunghezza d’onda della radiazione elettromagnetica visibile si percepiscono colori
diversi e dovuta dalla distribuzione e dalle proprietà spettrali dei recettori per la luce presenti nella retina.
Ci sono due tipi di cellule recettrici:
• coni presenti al centro della retina e responsabili della visione diurna. E’ la parte dotata di una forte
discriminazione spaziale
•
Si dividono in tre gruppi a seconda della particolare proteina visiva che contengono.
bastoncelli localizzati nella periferia e capaci di lavora a bassissime intensità luminose e molto meno fini in
risoluzione spaziale
La visione consiste nell’assorbimentoda parte di una particolare proteina del fotone luminoso incidente. Ogni pigmento
visivo possiede un suo caratteristico spettro di assorbimento. Dove il pigmento non asssorve il fotone non viene rilevato
Ogni proteina e’ caratterizzata da un diverso spettro di assorbimento
I bastoncelli non danno senzazione cromatica perché sono tutti uguali, ed entrano in funzione quando il livello di
luminosità.
I coni quando vi è bassa luminosità vengono esclusi dalla vista
La senzazione di colore non si spiega completamente in base alla percentuale di stimolazione di ciascun tipo di cono,
sono altrettanto determinanti altri parametri come:
• brillantezza: intensità della luce a prescindere dalle sue caratteristiche cromatiche
• saturazione: rapporto fra colore puro e la luce bianca contenuti nella miscela di luci
• tinta (o tono dominante) il colore vero e proprio, ovvero il nome con cui identifichiamo il nome in questione
Le differenti tonalità di un colore si ottengono variando la saturazione e la brillantezza.
ALTRI MODI PER RAPPRESENTARE IL COLORE OLTRE A RGB
• tinta saturazione e luminosità
• luminosità e cormaticità
• ecc…
Tutti questi modi per rappresentare i colori creano diversi SPAZI DI COLORI
Modelli per la codifica dei colori. (SPAZI DI COLORE)
Suddivisi in due gruppi
• spazi relativi: la rappresentazione del colore dipende dal dispositivo utilizzato
• spazi assoluti: forniscono una rappresentazione del colore indipendente dal dispositivo utilizzato per
l’acquisizione o visualizzazione (XYZ,Luv,Lab)
SISTEMI TRICROMICI (RGB,CMY)
RGB
• E’un sistema additivo
• Usa la combinazione dei colori Red Green Blue per rappresentare le composizioni di luci e colori dello spettro
visibile
• PDV MATEMATICO: spazio tridimensionale in cui ciascuna variabile può oscillare tra 0(assenza) e 1
(massima intensità)
E’ rappresentato come un cubo con tre assi XYZ con il rosso sulle ascisse, sulle ordinate il verde e sulla
verticale il blu. Ogni punto nel cubo corrisponde ad un colore individuato dalla terna (r,g,b)
Ai vertici del cubo ci sono i colori fondamentali della sintesi additiva, sia quelli della sintesi sottrattivi e lungo
la diagonale del cubo la scala di grigi (uguali quantita di rgb)
• DIFETTI RGB
Come stabilire a priori il colore da visualizzare?
Come costruire una successione di colori che si presenti all’occhio in un determinato ordine
E’ difficile stabilire a priori quale deve essere la composizione in RGB di un colore mentre e’ piu facile
pensare alle proprietà psicofisiche
• Buono per i dispositivi di output a colori che usano sommare luci
CMY (Cyan, Magenta, Yellow)
• usa i colori complementari di RGB
• Usato nella stampa a colori xkè l’inchiostro sommandosi mescola pigmenti che sono assorbenti (in realtà nella
stampa si usa un sistema quadricormico CMYB con il nero in aggiunta xke ottenerlo con la mescolanza CMY
è troppo dispendioso
• PDV MATEMATICO: spazio RGB visto da (1,1,1)
• CONVERTIRE DA RGB (video) a CMY (stampa) non e’ un’operazione banale, ci sono due problemi:
o Gli insiemi di colori rappresentabili da differenti dispositivi non coincidono
o Caratteristiche del mezzo su cui i colori sono riprodotti
La routine per la conversione è la seguente:
CMY=(255-r,255-g,255-b)
RGB=(255-c,255-m,255-y)
SPAZI HS*
• Insieme di spazi cromatico che è direttamente correlatyo con le proprieta’ psicofisiche del colore che
intendiamo rappresentare (HSV.HSI.HSL)
• H sta per HUE (tinta o tono) S sta per SATURATION, il terzo parametro indica generalmente l’intensità
definito diversamente da sistema a sistema
HSV:
• H è un angolo che varia da 0 a 360 gradi
• V ha un valore lineare che varia nell’intervallo [0,1]
• S ha un valore lineare che varia nell’intervallo [0,1]
• La forma dello spazio HSV è simile ad una piramide a pianta esagonale.
o Al punto (0.0.0) (vertice della piramide) c’è il NERO
o Lungo l’asse della priramide aumenta l’intensita e al punto (0.0.1) vi è il bianco piu’ brillante
possibile
o Sui vertice della piramide vi sono i colori completamente saturi (puri)
o All’interno troviamo le diverse sfumature
STANDARD YUV,YIQ,YCbCr
• Sono utilizzati come standard nelle trasmissioni televisive.
• Separano le informazioni relative alla luminosità (Luminanza) da quelle relative al colore (crominanza)
• Luminanza descritta dalla coordinata Y
• Crominanza descritta delle coordinateU e V, I e Q, Cb e Cr
• YUV e YIQ sono sistemi analogici utilizzati per gli standard PAL e NTSC rispettivamente
• Lo spazio YCbCr è digitale
STANDARD CIE
•
•
•
•
•
•
gli spazi di colore presentati non riescono a rappresentare a priori un colore, o per prevedere che tipo di
senzazione una certa mescolanza di luci monocromatiche può produrre nell’occhio umano
Standard CIE definito nel 1931 si basa sulla definizione dei valori tristimolo X,Y,Z che sono legati alle
proprietà spettrali dei coni. In funzione di questi valori vengono poi definiti le coordinate di aromaticità x,y,z
come il rapporto tra uno dei tre stimoli e la somma degli altri
x=X/(X+Y+Z)
y=Y/(X+Y+Z)
z=Z/(X+Y+Z)
x+y+z=1
Viene rappresentato con un diagramma bidimensionale detto diagramma cromatico in cui lungo i due assi
vnegono fatti variare x e y mentre z si ricava da sottrazione e rappresenta TUTTI I COLORI CHE L’UOMO
PERCEPISCE. I colori rappresentabili da una periferica sono un sottoinsieme di questi colri
La frontiera dello spazio colorato è dellta luogo dello spettro e i colori che si trovano su questa frontiera sono
detti saturi
I colori che stanno sulla congiungente degli estremi della U contiene tutti i colori che consono rappresentabili
dallo spettro (esempio Magenta) ed è detta linea di porpora e ai colori che vi compaiono non può essere
associata una lunghezzad’onda, e sono quindi colori che non possono essere generativa UNA SOLA LUCE
MONOCROMATICA.
Al centro del diagramma vi è il luogo del bianco, corrispondente ai colori con meno saturazione possibile
COLORI COMPLEMENTARI SATURAZIONE E TINTA NELLO STANDARD CIS
Dato un punto P nel diagramma e il punto E del bianco
• Il colore complementare C(P) si ottiene tracciando una semiretta da P passante per E,prolungandola fino ad
intersecare il luogo dello spetto o la linea di porpora.
• La tinta di P detta H(P) si ottiene tracciando una semiretta dal punto E facendola pasare per Pe prolungandola
fino ad intersecare il luogo dello spettro. La lunghezza d’onda e H(P) cercata. Se si interseca la linea di porpora
•
il punto P non appartiene allo spettro visibile e allora si deve prolungare la semiretta nel verso opposto. La
lunghezza d’onda assegnata al colore e’ cosi quella del suo complementare.
Saturazione di P, detta S(P) si ricava considerando il segmento che passa per E, per P e interseca il luogo dello
spettro nel punto P. detta a la lunghezza del segmento EP, e b la lunghezza del segmento PP’ la saturazione di
P e’ a/(a+b) espressa in percentuale
•
Tecniche di riduzione dei colori.
Formati standard per la rappresentazione delle immagini: GIF, PNG, JPEG
FORMATO GIF
La sigla GIF sta per Graphics Interchange Format, un formato grafico sviluppato alla fine degli anni '80 da
CompuServe. La compressione operata da GIF usa l'algoritmo LZW, che, come abbiamo visto poco sopra, è un criterio
di compressione non distruttivo. Tuttavia salvare un file in formato GIF può comportare una sensibile perdita di
informazioni: ciò accade quanto l'immagine di partenza è codificata in uno spazio colore (RGB, CMYK, L*a*b) non
riproducibile integralmente per mezzo della tavolozza indicizzata, contenente fino a un massimo di 256 colori, che è lo
standard interno del formato GIF.
In un caso simile, la quantità di colori presenti nell'immagine originale viene drasticamente ridotta, ricorrendo ad una
serie di algoritmi di trasformazione opportunamente supportati dai più comuni e diffusi programmi di grafica.
L'esito della riduzione sarà un'immagine codificata con un minimo di 1 bit per pixel fino ad un massimo di 8 bit per
pixel. La codifica con un solo bit per pixel genera immagini GIF in bianco e nero, dove uno dei due valori possibili del
bit (acceso o spento, 1 o 0) rappresenta il nero e l'altro il bianco. Al crescere del numero dei bit adoperati avremo
formati GIF con 4, 8, 16, 32, 64, 128 o 256 colori, valore, quest'ultimo, corrispondente all'uso di 8 bit per pixel.
Data un'immagine a colori in modalità RGB, avente una profondità del colore di 24 bit, la conversione ad una tavolozza
a 256 colori porterà ad una riduzione di un terzo della grandezza del file (24 bit / 8 bit = 3). Ciò prima ancora che sia
applicata la compressione basata sull'algoritmo LZW. Riduzioni di grandezza proporzionalmente maggiori si ottengono
se la tavolozza usata per la conversione contiene 128, 64, 32, 16, 8, 4 o solo 2 colori.
La conversione operata sull'immagine originale trasforma i valori RGB di ciascun pixel in un valore RGB
approssimato, dipendente dal tipo di tavolozza-colore prescelto per effettuare l'operazione. I valori cromatici di questa
tavolozza saranno poi inglobati nel file GIF generato, in modo da consentire, in fase di decompressione, di generare a
monitor un'immagine corrispondente ai valori salvati. Tra le varie opzioni di conversione del colore che i più diffusi
programmi di grafica mettono a disposizione dell'utente, citiamo le seguenti tavolozze:
adattata - cerca di mantenere i colori del file compresso quanto più possibile simili a quelli del file originale;
ottimizzata - codifica i 256 colori sulla base della loro presenza percentuale all'interno dell'immagine
originale;
uniforme – contiene uguali proporzioni di rosso, di verde e di blu;
di sistema – fornisce i colori predefiniti del sistema operativo Microsoft Windows;
Internet Explorer – fornisce i colori predefiniti usati dal browser della Microsoft;
Netscape Navigator – fornisce i colori standard utilizzati dal browser della Netscape;
personalizzata – consente di aggiungere colori a scelta dell'utente fino a completare la gamma dei 256
possibili.
E' chiaro, però, che, qualsiasi sia la tavolozza adoperata, l'immagine ricostruita a partire dai dati salvati nel file GIF non
sarà uguale all'immagine RGB originale e sarà tanto più "povera" d'informazione quanto maggiore sarà il numero dei
colori presenti nell'immagine di partenza che vengono eliminati per approssimazione, in modo da avere alla fine una
tavolozza di 256 colori al massimo.
Delle tre foto qui sotto riportate, quella a sinistra è l'immagine originale, che contiene ben 49.131 colori unici. Quella
centrale è una GIF basata su una tavolozza di 256 colori uniformi: mostra delle evidenti bande di transizione, che
denotano la natura distruttiva della riduzione del colore operata; l'immagine a destra è anch'essa una GIF a 256 colori,
che usa però una tavolozza adattata, in grado di preservare un alto grado di corrispondenza visiva all'originale. Il
limite d'uso di questo tipo di tavolozza è nell'impredicibilità della riproduzione dell'immagine su computer differenti, la
cui dotazione hardware e software si discosti da quella del computer su cui è stato generato il file GIF.
FORMATO PNG
PNG (pronunciato ping) è l'acronimo di Portable Network Graphics. Per i sostenitori di questo formato, però, la sigla
PNG significa PNG's Not GIF, cioè PNG non è GIF, volendo intendere con questa precisazione che PNG è molto
meglio di GIF.
La questione nasce con l'annuncio fatto nel 1995 da CompuServe e Unisys: da quel momento in poi, l'implementazione
del formato GIF in prodotti software avrebbe comportato il pagamento di una quota-diritti ad Unisys, quale legale
detentore del brevetto sull'algoritmo di compressione LZW, usato all'interno del formato GIF.
PNG nasce quindi in contrapposizione a GIF, come un formato grafico compresso e allo stesso tempo del tutto gratuito,
anche se per la verità va precisato che il suo sviluppo è stato portato avanti in modo indipendente e avendo di mira
risultati di più ampia portata che la semplice fuga dal pagamento dei diritti dovuti ad Unisys.
Ma quali sono le principali caratteristiche di PNG? L'elenco seguente ci mostra fino a che punto questo formato possa
essere assimilato per alcune caratteristiche a GIF, ma di quanto poi se ne discosti, sopravanzandolo alla fine in
prestazioni e versatilità.
1) Compressione – PNG punta tutto sulla compressione non distruttiva. Non esistono opzioni per salvare un file PNG
in modo non compresso né opzioni per salvarlo con una compressione distruttiva. Però l'algoritmo non distruttivo alla
base di PNG è davvero potente. I risultati che si ottengono sono in genere del 20% migliori di quelli ottenibili con la
compressione GIF. Lo strumento di compressione, gratuitamente utilizzabile da chiunque, è zlib - una variante
dell'algoritmo LZ77 -, sviluppato per la parte di compressione da Jean-loup Gailly (http://gailly.net/) e per quella di
decompressione da Mark Adler (http://www.alumni.caltech.edu/~madler/), ed attualmente giunto alla versione 1.1.3.
In più la capacità di compressione del PNG può in certi casi essere di molto aumentata grazie all'adozione di particolari
filtri: si tratta di sistemi di trasformazione dell'ordine dei dati che costituiscono l'immagine, studiati per esaltare il
coefficiente di compressione raggiungibile. Addirittura vi è il caso limite di un'immagine che, non compressa, occupa
48 Mb, compressa con PNG ma non filtrata occupa 36 Mb, filtrata, infine, si riduce – incredibile ma vero! – a soli
115.989 byte. Il filtro, in questo caso, migliora di ben 300 volte la capacità del motore di compressione incorporato in
PNG! Il file in questione è un'immagine RGB di 512 x 32.768 pixel che mostra in sequenza tutti i 16.777.216 colori
codificabili con 24 bit per pixel. Chi volesse testare direttamente questo file molto particolare, può farlo collegandosi a
http://www.libpng.org/pub/png/img_png/16million.png.
2) Controllo di errore – PNG dispone di un sistema chiamato CRC-32, ovvero cyclic redundancy check (“controllo di
ridondanza ciclico”) a 32 bit, che associa valori di controllo ad ogni blocco di dati ed è in grado di rilevare
immediatamente qualsiasi corruzione delle informazioni salvate o trasmesse via Internet.
3) Supporto per milioni di colori – Le immagini PNG non sono limitate ad un massimo di 256 colori come accade per
i file GIF, ma supportano anche la modalità RGB. Non supportano per ora la modalità CMYK, anche se si prevede la
possibilità di una futura estensione che ne consenta il trattamento.
4) Canali alfa – Mentre GIF supporta una trasparenza del tipo “tutto o niente” (pixel completamente trasparente o del
tutto opaco), PNG permette, grazie all'uso dei cosiddetti canali alfa, la possibilità di una trasparenza variabile su 254
livelli di opacità. Questa caratteristica favorisce, ad esempio, la creazione del classico effetto di ombre cadute, ombre
che si conservano indipendentemente dal colore dello sfondo su cui vengono visualizzate.
5) Interlacciamento – In caso di connessioni via modem particolarmente lente, può essere molto utile cominciare a
vedere fin da subito un'anteprima, sia pure poco definita, dell'immagine che si sta scaricando. Con la funzione di
interlacciamento di cui è dotato il formato PNG ciò è possibile molto più velocemente che con l'analoga funzione
incorporata nel formato GIF. Per quanto riguarda GIF, l'interlacciamento - cioè la visualizzazione parziale e progressiva
dell'immagine – è monodimensionale e la prima apparizione di contenuti visibili richiede l'invio di un ottavo dei datiimmagine complessivi. L'interlacciamento di PNG è invece bidimensionale e basta l'invio di solo un
sessantaquattresimo dei dati per avere la prima visualizzazione grossolana dell'immagine.
6) Correzione di gamma – Il formato PNG integra un sistema di correzione di gamma, che permette di compensare, sia
pure solo approssimativamente, le differenze di visualizzazione di un'immagine nel passaggio da una piattaforma
hardware ad un'altra.
Ma c'è, infine, almeno una caratteristica in cui GIF sia preferibile senza dubbio a PNG? Sì, c'è, ed è il supporto per le
immagini animate. In un file GIF, come ben sa la maggior parte di coloro che navigano in Internet, è possibile
racchiudere una sequenza di immagini che, fatte scorrere in rapida successione, danno l'impressione del movimento.
Questo effetto non è disponibile nel formato PNG, pensato e sviluppato per il solo trattamento delle immagini statiche.
Ed in conclusione un piccolo esperimento, fatto per verificare direttamente il coefficiente medio di compressione
ottenibile con PNG a paragone di quello ottenibile con un altro formato non distruttivo: il TIFF con compressione LZW.
La banconota da 10 euro - qui sotto raffigurata in un esemplare JPG delle medesime dimensioni in pixel utilizzate per la
prova descritta - è salvata in un file TIFF di 431 x 244 pixel, non compresso, che pesa esattamente 308,8 Kb.
Compresso con l'algoritmo LZW di TIFF, il file si riduce a 226,3 Kb, con un risparmio di spazio del 27% rispetto
all'originale (coefficiente di compressione = 1:1,364). Lo stesso file, salvato come PNG, si riduce a 177,9 Kb. Il
risparmio di spazio rispetto all'originale sale al 42,4% (coefficiente di compressione = 1:1,735). Nel caso specifico, il
salvataggio del file in formato PNG ha prodotto un risparmio di spazio di quasi il 22% rispetto al salvataggio in formato
TIFF compresso con LZW.
FORMATO JPG
La sigla JPEG identifica una commissione di esperti denominata Joint Photographic Expert Group, formata nel 1986
con lo scopo di stabilire uno standard di compressione per le immagini a tono continuo – cioè di tipo fotografico – sia a
colori sia in bianco e nero. Il lavoro di questa commissione ha portato alla definizione di una complessa serie di
algoritmi, approvata come standard ISO nell'agosto del 1990 e successivamente divenuta la raccomandazione T.81
(9/92) dell'ITU, International Telecommunication Union. Chi la sera a letto ha difficoltà ad addormentarsi, può leggerne
la versione integrale, scaricabile in formato PDF dal sito del W3C. L'indirizzo è http://www.w3.org/Graphics/JPEG/itu-
t81.pdf: sono 186 pagine fitte di definizioni, procedure, grafici, immagini esemplificative e formule matematiche.
Auguri di buona lettura!
Il JPEG è dunque uno standard industriale e non va confuso con il formato di file JPG, che rappresenta di volta in volta,
a seconda della software house che lo implementa, un sottoinsieme variabile e non sempre universalmente compatibile
dello standard di riferimento. Pochi ad esempio sanno che le specifiche JPEG descrivono anche un formato di
compressione non distruttivo, basato su tecniche differenti da quelle che descriveremo qui di seguito, del quale si è
ormai persa traccia, non usando gli sviluppatori di programmi di grafica - a causa delle sue non straordinarie prestazioni
- inserirlo tra le varie opzioni di salvataggio dei normali file JPG.
Fig. 6 – Schematizzazione semplificata del processo di compressione JPEG
Ecco in dettaglio la sequenza di operazioni che da un'immagine originale non compressa porta ad un'immagine
compressa con JPEG.
1) Trasformazione dello spazio colore – A causa delle particolari caratteristiche dell'occhio umano, molto più
sensibile alle variazioni di luminosità che alle variazioni cromatiche, è opportuno innanzitutto trasformare la modalità
RGB in modalità YUV. E' questo lo spazio-colore definito per il sistema televisivo PAL. Tra i suoi equivalenti nel
campo della computergrafica c'è il metodo L*a*b presente in Adobe Photoshop.
Il sistema YUV scompone l'informazione relativa a ciascun pixel in due componenti: la luminanza, che definisce il
grado di luminosità nella scala da nero a bianco (la lettera Y della sigla YUV), e la crominanza, che definisce il colore
in base al rapporto tra due assi, uno che va da blu a giallo (la lettera U) e l'altro che va da rosso a verde (la lettera V).
Eseguire la trasformazione dallo spazio-colore RGB allo spazio-colore YUV non è indispensabile, ma il farlo consente
di ottenere una maggiore compressione JPEG. Quando, infatti, le successive trasformazioni matematiche che si
applicano all'immagine trovano l'informazione nettamente suddivisa nelle due componenti di luminosità e di colore,
possono procedere all'eliminazione di molte informazioni relative al colore senza intaccare quelle relative alla
luminosità, più importanti per la visione umana, e senza causare, in tal modo, danni visibili al contenuto dell'immagine.
Ciò non è possibile invece nella stessa misura quando gli algoritmi di compressione si applicano a valori RGB, che
presentano l'informazione relativa al colore e quella relativa alla luminosità fuse insieme (per le immagini in scala di
grigio la conversione non ha senso, in quanto l'informazione sulla luminosità è già disponibile in partenza).
2) Riduzione, in base alla componente, di gruppi di pixel a valori medi – E' un'operazione opzionale, di cui alcuni
software di grafica consentono l'impostazione. La componente che esprime la luminanza è lasciata invariata, mentre la
componente cromatica viene dimezzata in orizzontale e in verticale, oppure soltanto in orizzontale. Ciò si esprime con il
rapporto 2:1 per indicare il dimezzamento e con il rapporto 1:1 per indicare che la componente è lasciata invariata.
Alcuni programmi di grafica, tra le opzioni di salvataggio in JPG, mostrano stringhe esoteriche come 4-1-1 e 4-2-2, che
esprimono appunto il coefficiente di riduzione che viene applicato alle componenti cromatiche dell'immagine. Tale
operazione, che fa parte degli algoritmi distruttivi dello standard JPEG, riduce in partenza il file di una metà o di un
terzo della sua grandezza originale. Non si applica alle immagini a toni di grigio e ciò spiega perché queste siano meno
comprimibili in generale delle immagini a colori.
3) DCT applicata a blocchi di 8 x 8 pixel suddivisi in base alla componente – La sigla DCT sta per Discrete Cosine
Transform: si tratta di una serie di operazioni matematiche che trasformano i valori di luminosità e colore di ciascuno
dei 64 pixel di ogni blocco preso in esame in altrettanti valori di frequenza. In particolare, mentre i valori dei pixel
contenuti nei blocchi di 8 x 8 tratti dall'immagine originale variano da 0 a 255, dopo l'esecuzione della DCT essi,
trasformati in frequenze, variano da –721 a 721. Dov'è allora il guadagno? In una sottile combinazione di
quantizzazione e codifica entropica. In termini più semplici, la trasformazione dei valori in frequenze consentirà nei
passaggi successivi di tagliare più informazioni senza apparente perdita visiva di quante se ne potrebbero tagliare
lavorando sui valori naturali dei pixel. Inoltre la sequenza a zig zag in cui i nuovi valori vengono scritti consente di
applicare ad essi una compressione (Huffman o aritmetica) più efficace.
Fig. 7 – Scrittura a zig zag dei valori ottenuti con la DCT, a partire dall'angolo superiore sinistro del blocco di 8 x 8
pixel (schemi tratti dalle specifiche ufficiali JPEG ITU.T81)
4) Divisione e arrotondamento all'intero dei 64 valori ottenuti con la DCT – Ciascuno dei 64 valori di frequenza
viene diviso per uno specifico coefficiente di quantizzazione, codificato in apposite tavole di riferimento. Il risultato
della divisione viene arrotondato all'intero più vicino. L'eliminazione dei decimali è la principale operazione di
compressione distruttiva dello standard JPEG. Il tutto è studiato in modo che le frequenze più importanti per l'occhio
umano, cioè le più basse, memorizzate nell'angolo superiore sinistro del blocco di 8 x 8, siano preservate, mentre le più
alte, la cui perdita è relativamente ininfluente, vengano eliminate.
5) Compressione non distruttiva dei coefficienti quantizzati – Ai valori risultanti dalla divisione e
dall'arrotondamento sopra descritti viene applicata una compressione non distruttiva, per la quale può essere utilizzato
l'algoritmo Huffman o una codifica aritmetica chiamata Q-coding. Quest'ultima è di circa il 5-10 % più efficace della
Huffman, ma è protetta da brevetto, per cui il suo uso non è gratuito. Per tale motivo i software che realizzano la
compressione JPG implementano solo l'algoritmo Huffman.
6) Inserimento nel file compresso di intestazioni e parametri per la decompressione – Affinché il file possa essere
in seguito decompresso e possa generare un'immagine il più possibile somigliante all'originale non compresso, occorre
che nel file JPG siano inserite le tabelle contenenti i coefficienti di quantizzazione e i valori di trasformazione della
codifica Huffman.
Due precisazioni in conclusione di paragrafo. La prima riguarda il noto fenomeno dei blocchi quadrettati, che sono
spesso chiaramente visibili nelle immagini JPG molto compresse e rappresentano un forte elemento di degrado della
qualità. Essi sono la conseguenza diretta dell'algoritmo che suddivide l'immagine di partenza in blocchi da 8 x 8 pixel.
Le varie trasformazioni applicate ai valori dei pixel di ciascun blocco sono del tutto indipendenti dalle trasformazioni
applicate ai pixel dei blocchi adiacenti. Ciò causa talvolta transizioni brusche tra pixel adiacenti appartenenti a blocchi
differenti. Il fenomeno è tanto più appariscente quanto più l'immagine contiene aree di colore uniforme e linee sottili
ben separate dallo sfondo.
La seconda precisazione riguarda il significato dell'espressione codifica entropica, utilizzata al precedente punto 3).
Questa locuzione traduce l'inglese entropy coding (o encoding) ed esprime un tipo di compressione non distruttiva –
quale ad esempio l'algoritmo Huffman – che, data una serie qualsiasi di simboli, è in grado di codificarli utilizzando il
minor numero possibile di bit.
ALGORITMI COMPRESSIONE
RLE
Proviamo ora a vedere come funziona un sistema di compressione non distruttivo, tuttora diffuso, noto con la sigla
RLE, acronimo di Run Lenght Encoding, che potremmo rendere in italiano con codifica della lunghezza di stringa. In
questo tipo di compressione, ogni serie ripetuta di caratteri (o run, in inglese) viene codificata usando solo due byte: il
primo è utilizzato come contatore, e serve per memorizzare quanto è lunga la stringa; il secondo contiene invece
l'elemento ripetitivo che costituisce la stringa.
Immaginate ora di comprimere in questo formato un file grafico contenente un grande sfondo di un solo colore
uniforme. Tutte le volte che l'analisi sequenziale del file s'imbatterà in stringhe di caratteri uguali, e ciò accadrà spesso
nella scansione dello sfondo omogeneo, le serie ripetitive potranno essere ridotte a due caratteri soltanto: uno che
esprime il numero delle ripetizioni, il secondo il valore che si ripete. E il risparmio di spazio sarà direttamente
proporzionale al livello di uniformità presente nell'immagine.
Provate ora, invece, ad usare il sistema RLE su una foto piena di colori differenti e di transizioni sfumate: il risparmio di
spazio sarà molto minore, perché poche saranno le stringhe di ripetizioni che l'algoritmo riuscirà a trovare leggendo
sequenzialmente il file.
Pensate, infine, al caso limite di un'immagine creata artificialmente, come quella riportata qui sotto, contenente una
serie di pixel tutti differenti l'uno dall'altro nei valori cromatici. In questo caso, l'uso della compressione RLE si
dimostra addirittura controproducente.
Fig.1 – Immagine ingrandita di un file di 16 x 16 pixel, costituito da 256 colori unici differenti
Questo file, salvato in formato BMP non compresso, occupa 822 byte. Salvato invece sempre in formato BMP, ma
utilizzando l'algoritmo RLE, occupa 1400 byte, cioè 1,7 volte la sua grandezza originale.
Huffman
Quest'algoritmo non distruttivo fu inventato nel 1952 dal matematico D.A. Huffman ed è un metodo di compressione
particolarmente ingegnoso. Funziona in questo modo:
analizza il numero di ricorrenze di ciascun elemento costitutivo del file da comprimere: i singoli caratteri in un file di
testo, i pixel in un file grafico.
Accomuna i due elementi meno frequenti trovati nel file in una categoria-somma che li rappresenta entrambi. Così ad
esempio se A ricorre 8 volte e B 7 volte, viene creata la categoria-somma AB, dotata di 15 ricorrenze. Intanto i
componenti A e B ricevono ciascuno un differente marcatore che li identifica come elementi entrati in un'associazione.
L'algoritmo identifica i due successivi elementi meno frequenti nel file e li riunisce in una nuova categoria-somma,
usando lo stesso procedimento descritto al punto 2. Il gruppo AB può a sua volta entrare in nuove associazioni e
costituire, ad esempio, la categoria CAB. Quando ciò accade, la A e la B ricevono un nuovo identificatore di
associazione che finisce con l'allungare il codice che identificherà univocamente ciascuna delle due lettere nel file
compresso che verrà generato.
Si crea per passaggi successivi un albero costituito da una serie di ramificazioni binarie, all'interno del quale appaiono
con maggiore frequenza e in combinazioni successive gli elementi più rari all'interno del file, mentre appaiono più
raramente gli elementi più frequenti. In base al meccanismo descritto, ciò fa sì che gli elementi rari all'interno del file
non compresso siano associati ad un codice identificativo lungo, che si accresce di un elemento ad ogni nuova
associazione. Gli elementi invece che si ripetono più spesso nel file originale sono anche i meno presenti nell'albero
delle associazioni, sicché il loro codice identificativo sarà il più breve possibile.
Viene generato il file compresso, sostituendo a ciascun elemento del file originale il relativo codice prodotto al termine
della catena di associazioni basata sulla frequenza di quell'elemento nel documento di partenza.
Il guadagno di spazio al termine della compressione è dovuto al fatto che gli elementi che si ripetono frequentemente
sono identificati da un codice breve, che occupa meno spazio di quanto ne occuperebbe la loro codifica normale.
Viceversa gli elementi rari nel file originale ricevono nel file compresso una codifica lunga, che può richiedere, per
ciascuno di essi, uno spazio anche notevolmente maggiore di quello occupato nel file non compresso.
Dalla somma algebrica dello spazio guadagnato con la codifica breve degli elementi più frequenti e dello spazio perduto
con la codifica lunga degli elementi più rari si ottiene il coefficiente di compressione prodotto dall'algoritmo Huffman.
Da quanto detto si deduce che questo tipo di compressione è tanto più efficace quanto più ampie sono le differenze di
frequenza degli elementi che costituiscono il file originale, mentre scarsi sono i risultati che si ottengono quando la
distribuzione degli elementi è uniforme.
Un'ottima dimostrazione del funzionamento di questo algoritmo è visionabile su Internet all'indirizzo
http://www.cs.sfu.ca/CC/365/li/squeeze/Huffman.html. Qui troverete un'applet java in grado di eseguire la generazione
dell'albero delle associazioni, di produrre il codice compresso e di calcolare il coefficiente finale di compressione. Nelle
due immagini sotto riportate, tratte dall'uso di questa applet, potete osservare l'albero generato dalla frequenza di
ricorsività delle lettere costituenti un noto scioglilingua ed il risultato della compressione Huffman ottenuta.
Fig. 2 – L'albero delle associazioni relativo al testo di uno scioglilingua. La struttura dell'albero mostra che le lettere d
e l sono le meno frequenti di tutte
Fig. 3 – La compressione ottenuta ha permesso un risparmio di spazio pari a quasi il 60%
LZW
/
0
n
1
o
t
p
u
v
u
Ž

«
À
z
Á
–
Â
’
Ã

Ž

Ä
~
z
Å
:

z
Ž

™
Å
9
x
{
‘
”
4
;
<
5
=
>
5
?
@
5
9
7
A
A
4
=
5
B
8
9
C
D
E
E
F
G
F
H
I
!
J
"
E
#
K
$
L
M
N
M
%
O
P
&
Q
R
S
T
U
V
W
X
Y
Z
Y
[
'
\
]
^
_
(
(
]
`
a
%
b
c
d
e
f
g
f
)
h
*
e
+
i
e
,
j
k
b
h
h
-
e
l
f
%
%
g
.
b
m
h
b
s
}
w
8
r
|
ˆ
•
˜
7
p
x

”
‘
6
o
{
‚
“
“
5
n
{
’
“
4
y
…
‘
”
¿
x
Œ

£
q
w
~
3
p
v
z
2
€
˜


Ç

{
’
˜
Æ
z
}
—
‘
À
{
x
™

£
¿
š
‘
Ê

|
›

‘
’
Š
‘
Ì
€

Ä
‘

¿
{
ƒ
€
œ
—
Ä
{
|
™
©
Ã

~
›
“
Ë
~
…

‘
Ä
}
~
”

¿
{
u
’
Ž
É
‚

—
À
~
{
‘
—
È
w
€
Í
{
”

›


z
’
’
Î

‘
¬
Ä

‘
È
„


£
Å
}
{
Ž
—
Ä
~
‡
›
’
Ã
‚
{

‘
Â
{
w
”

Â
u
x
š
—
Ã
{
x
—

Ä
}
‰
~
˜
£
‘
—
Ï
u
ˆ

~
z
©
†
x
‘
Ž
Á
~
~
‰
Ÿ
”
w
‘
¡
Ê
È
ˆ
x
Ž
›
À
…
z
’
É
x
‰
ž
‘
À
z
|
”
—
È
‡
~
™

Ê
…
›
¨
Î
z
}
Ê
{
£
‘
Ì
z
™

¿
x
€
‘
›
À
w
u
›
“
Ç

|
¢
“
Ð
|
{
¡
”
Ä
~

z
—
‘
Ê
Ñ
y
x

­
Ë
z
{
£
™
Î
€
y
z
|
›
™
®
Ñ
x
z
‘
¯
Ä
{
ˆ
—
²
Ï
z
z
³
Ê
€
Ò
²
‚
„
¨
Å
z
|
Ï
Š
¸
—
Ä
‘
­
´
Ê

}
‹
{

À
‚
¡
´
È
…
—
º
Ê
{
~
—
´
Ó
z
€
’
¯
É
‚
{
—
Ñ
z
}
¹
È
€
x
’
´
Î
~
z
‘
°
Ê
‰
|
ª
·
Ã
x

—
­
Ä
ˆ
z
©
¶
È

„

µ
Ê
~
{
§
´
Î
u
…
§
´
u
…
¦
³
È
~
|
¥
±
Ã
{
|
¤
±
Å
ˆ
‚

°
Î
|
{
Î
’
Ê
z
u
w
ˆ
”
»
¿
…
­
ˆ
‡
~
³
¿
z

x
w
~
x
z
u
…
|
’
»
Ã

x
›
±
Ô
x
w

¼
Å
ˆ
{
›
¼
À
{
z

²
À
z
‚

º
Ã
u
¯
Ä
´
Î
Ï
½
À
¾
­
½
´
Õ
Ö
Å
á
Ê
ß
Ú
Ý
Û
ß
×
ã
Ý
Î
ß
í
Á
è
ä
â
æ
æ
Ï
å
æ
Ú
ß
ï
ß
×
Û
é
Ú
ì
Ä
Ù
Û
å
Ú
È
Ü
Ú
à
ç
Ä
ä
Ù
ß
ä
Ñ
Ú
æ
Û
ã
Ã
ç
Ú
ä
à
Ç
ß
Û
å
Ú
Ï
ç
å
â
Ý
Î
å
Ý
à
à
È
Ü
Ú
ä
Ä
Ú
ì
Ý
è
Ï
Ý
ì
á
Å
á
ä
ð
ß
Û
ß
Ê
ä
Ú
Û
ä
È
á
à
å
Ú
Ç
á
ß
Ú
ß
Ê
Ú
Û
å
æ
Ä
Á
ç
î
Ú
à
Å
Ú
à
î
â
È
à
Û
á
â
á
ß
Ú
Ä
ß
å
ñ
É
Ú
à
å
ß
æ
ß
Ý
Ê
Ã
Ú
Û
ê
Þ
ã
è
Ä
Ò
å
Û
Ú
ä
À
Ñ
Ú
æ
æ
Ü
Ä
ã
å
ç
Ù
æ
È
à
ß
Ú
Ý
À
ç
È
ß
è
ä
å
Î
é
ß
Á
ä
Ü
à
Ù
Ú
Ù
Û
Û
Ë
å
Ú
Ú
Ê
Û
ß
á
è
ß
Ç
Ä
Ú
á
á
Ò
ä
ß
ä
å
à
å
Â
á
Ú
ç
Ä
Ý
ë
Ú
æ
Ã
Ý
è
æ
í
Ñ
å
ä
ä
Î
¿
Ü
Ú
à
Ù
á
Ú
Û
À
à
ß
á
å
É
Ý
Ý
é
Ø
Ê
ã
Ú
ß
Ê
Ú
à
ä
Ý
à
¿
Î
â
É
ã
Ú
æ
à
Ú
Ä
å
Ú
ò
É
à
Ê
å
æ
ß
Ñ
Ú
æ
å
á
ç
ß
Ó
Ê
ê
á
ä
á
Ù
À
È
Ú
æ
ã
Ú
Ý
ß
à
Î
æ
Ý
á
Ã
Ê
ä
ã
é
å
À
×
ç
ñ
ß
ß
¿
ß
ä
æ
Í
Ù
Ä
å
à
Û
Ú
Ú
Ù
Ý
ç
å
æ
ß
Û
à
Ú
ì
Ú
Ú
é
æ
à
Ü
å
è
ä
Ú
Ú
ë
ç
ç
Ý
ß
ß
ß
Ú
Þ
è
ä
Ý
ß
ä
Ú
ß
Û
Ü
è
Û
Ý
à
Ý
ç
ä
Ü
Ú
à
á
ä
Ù
à
Ú
Ú
Ý
Û
Û
â
å
æ
Ú
á
Ú
æ
ã
Ý
ç
á
í
ß
Ú
ä
Ú
ä
Ù
è
á
å
å
å
ä
Ý
æ
ä
Ý
Ý
à
Ú
æ
Û
å
ä
ï
ó
æ
÷
Û
ø
ß
ù
á
Q
R
b
u
™
›
˜
œ
¢

¨

™
œ
œ
Q
ž

Ÿ
l
­
˜
›
®

ž
ž
m
h
n
c
¢
o
h
ž

§
˜
¨
d
«
œ
ž
q

¦
¦
ž
›
˜
š
¤
ž
ž
Ÿ
™
œ
¨
Ÿ
¨
§
˜
«
g

ž
§
œ
œ
r
h
€

¨
™
¨
˜
ž
„
ª
œ
Ÿ

«
¢

›
;
˜
ž
<
;
m
«
ª

›

n
š
œ

œ
¢
š

}
˜
˜
Ÿ
ž
˜
±
«
j
7
q
Œ
«
œ
<
›
ž
c

ž
ž


œ
¢
Ÿ
k
z
™
œ
™
‰
±
œ
œ
«
ž
l
Ÿ
ž
œ

«

‰
i
o
¢
˜
O
ƒ
Ÿ
%
å
ú
D
ß
ù
j
‹
˜
Û
ß
R
ç
ù
Q
ä
ý
P
è
ù
T
è
å
Ú
ý
V
æ
ý
U
ß
R
Û
ù
U
ß
ü
S
ì
W
X
W
Y
Z
[
W
[
W
a
j
„
š
©
Q
å
ü
N
Z
j
‰
á
ú
M
Z
i
á
þ
L
U
„
§
˜
K
^
“
Ú
J
o
’
è
S
§
›
H
o
‘
Ú
ü
R
c
y
à
ú
I
Y
Ý
F
`
ß
%
H
¬
&
Q
d

›
™
G
W
ñ
ù
F
ß
þ
X
p
Ž
ç
ù
E
\
ä
ý
D
Q
e
}
›
%
Û
ø
\
r

¨
<
Ú
ü
U
j
Œ
œ
>
Ü
!
V
i
Œ
¤
Y
l
ƒ
©
¨
¥
‹
q
Q
ã
ü
C
Z
j

B
Z
à
æ
A
Q
i
Š
¤
«
@
ß
ú
R
l
‰
Ú
ù
?
ö
û
>
p
è
Z
}
ä
X
j
ž
›
Ý
ý
7
^
ˆ

ž
:
‡

Ý
W
l
›
ž
«
>
†
œ
X
n
å
=
}
ì
ù
=
T
c
…

^
æ
ú
U
å
:
…
«
ž
œ
g
}
ü
!
S
s
€
ç
ú
Q
e

©
T
Ú
ù
9
T
h
8
Y
ƒ
™
Ÿ
7
ç
ý
`
l
à
ü
6
‚
œ
«
¡
j

Ú
Y
o

˜
›
ª
W
Ù
6
Y
ß
%
5
^
ü
%
4
S
~
3
c

Q
ç
ú
2
õ
ý
U
~
ô
1
k
›
ü
\
œ
ð
0
~
˜
¢
l
}
à
ü
$
/
q
}
ä
Y
j
|
©
œ
.
{
è
V
i
z
°
§
-
[
˜
¯
-
e
z
ä
ù
U
y
¥
›
›
,
j
á
R
n
˜
+
e
á
ý
Ú
Y
e
h
¤
¨
œ
Û
ý
`
j
ü
p
Ù
ú
U
w
£
Ü
ø
V
e
«
§
ä
c

ž
Y
p
¢
ž
«
l
Q
e
¡

¨
u
è
_
j
u
¡
œ
œ
X
Ú
^
e
æ
ý
*
e
˜
™
™
d
U
n
ž
)
V
ß
(
ì
ø
#
U
à
ý
d
ã
ù
]
k
à
c
˜
›
Ÿ
j
ß
ù
X
n
œ

ä
R
h
ß
ú
i
x
é
W
e
Ÿ
ž
T
h
›
g
ž
å
"
[
m
›
g
j
§
Q
c
f
œ
˜
'
Ù
ú
!
d
d
˜
Ÿ
\
á
ù
c
ß
ÿ
˜
§
R
e
ç
þ
f
ä
÷
›
œ
²
w
š
«
ß
ù
U
c
Ü
ý
"
\
e
u
™
š
"
d
l
˜
Y
c
q
Û
ü
å
û
¨
Ù
ú
ž
l
h
„
‰
œ
š
›
e
d
Œ
j
Ÿ
Ÿ
j
{
¡
˜
i
”
œ
¨
œ
ª
«
m
•
j

t
Š
˜
k

¡

Ÿ
š
l
–
‰
Ÿ
±
ž
Š
œ
u
v
„
«
j
Œ
›
«
›
ž
p
€
l
€
n
˜
Œ
š
œ
›
c
›
Œ
n
“
c
˜
—
Œ
W
Q