Computer & Grafica

3.1 Cos'è il colore e come lo percepisce l'uomo

Osservando con molta attenzione un qualsiasi oggetto che ci circonda, se ne individua subito la forma grazie alla luce presente nell'ambiente circostante. La luce, colpendo la retina nel nostro occhio , ci porta alcune informazioni tra le quali la più importante è il colore dell'oggetto e delle parti che lo compongono. Grazie al gioco di luci ed ombre che producono zone di colore più vivo o più scuro, il nostro cervello riesce a distinguerne i contorni e stimarne l'altezza, la larghezza e la profondità; in altre parole si individua sia la forma tridimensionale dell'oggetto che la sua corretta collocazione nello spazio.
Vediamo di analizzare dettagliatamente questo fenomeno apparentemente semplice. La luce parte dalla sorgente luminosa, sia essa il sole o una banale lampadina ad incandescenza, attraversa lo spazio (vuoto), compiendo anche lunghissimi viaggi, ma quando trova un ostacolo lungo il suo percorso, viene deviata di traiettoria continuando il suo viaggio lungo la nuova direzione. La figura qui di seguito esemplifica questo fenomeno:

Ma la luce continua il suo viaggio all'infinito oppure possiamo arrestarne il cammino?
La risposta è semplice: se lungo il suo cammino non incontra alcun ostacolo prosegue all'infinito, ma per bloccarne il tragitto è sufficiente frapporre tra l'osservatore e la sorgente un opportuno ostacolo. Basta pensare al classico ombrellone da spiaggia che crea la penombra, ovvero una zona dove la luce non giunge direttamente.
Perciò quando la luce colpisce la superficie di un qualsiasi oggetto, subisce una trasformazione che varia a seconda del materiale di cui è composto l'oggetto. Senza entrare troppo nel dettaglio, possiamo dire che una parte della luce viene respinta, in ottica si parla di riflessione, ed una parte viene assorbita dall'oggetto o lo attraversa. Per capire come ciò avvenga è opportuno fare delle considerazioni sulla natura di ciò che noi chiamiamo luce.
La luce è in realtà una piccola parte dell'immenso spettro delle onde elettromagnetiche, che si estende dall'ultravioletto (400 nm) sino all'infrarosso (750 nm). Ciò che comunemente riconosciamo come luce bianca è in realtà la somma di tutte le varie lunghezze d'onda presenti in tale intervallo.
Per rendersene conto basta ripetere l'esperimento compiuto da Newton, bisogna posizionare opportunamente un piccolo prisma di vetro, anche un semplice vetro sfaccettato può andar bene, per vedere proiettati su di una superficie chiara una serie di bande colorate nella sequenza: violetto, indaco, blu, verde, giallo, arancione, rosso.
Dunque la luce bianca è composta da 7 colori, che sono proprio quelli che è possibile osservare negli arcobaleni, infatti le minuscole goccioline di acqua in sospensione aerea fungono da prismi. Ma con questi sette colori possiamo riprodurre la luce bianca?
Certamente! Anche questo caso è dimostrabile con un piccolo esperimento: prendiamo un disco di carta bianca, dividiamolo in 7 spicchi e coloriamo ogni spicchio con un colore diverso rispettando la sequenza dei colori vista in precedenza, infiliamo un grosso chiodo nel suo centro del disco e facciamolo ruotare come una trottola. Se lo facciamo ruotare abbastanza velocemente, il disco sembrerà bianco!

Ora dovrebbero essere più chiare un po' di nozioni utili per comprendere cosa accade effettivamente quando la luce colpisce un oggetto. Per esempio prendiamo un cubo metallico di colore giallo. Nel momento in cui la luce colpisce la superficie, che essendo metallica è molto compatta, viene riflessa o meglio ciascuna onda che non ha l'energia sufficiente per attraversarla, rimbalza via. Mentre le onde più vicine a quelle del colore dell'oggetto, sono assorbite dai pigmenti del colore. Ora la luce riflessa è diversa da quella incidente, essendo stata privata di alcune componenti. Quando tali raggi luminosi colpiscono il nostro occhio, i suoi organi sensori rilevano una carenza di alcune lunghezze d'onda (quelle assorbite dal pigmento dell'oggetto), ed il nostro cervello attribuisce il colore al cubo, nel nostro caso il giallo.
Se i pigmenti avessero assorbito tutto lo spettro delle onde luminose l'oggetto ci apparirebbe completamente nero, mentre se tutte fossero state riflesse apparirebbe bianco.

3.2 Colorimetria & spazi colore

La Colorimetria è una branca della scienza che si occupa di studiare cosa siano i colori, come questi siano percepiti dall'occhio umano e come sia possibile esprimerli in formule matematiche. Il comitato internazionale più prestigioso in questo campo è il CIE .
Tramite la colorimetria è stato possibile definire dei metodi per rappresentare i colori all'interno del calcolatore. Uno dei più usati praticamente è stato descritto nel paragrafo precedente e viene chiamato "sintesi sottrattiva del colore": ogni colore viene prodotto eliminando dalla luce bianca alcune componenti per mezzo di filtri, cioè i pigmenti colorati.
Questo è il processo di sintetizzazione del colore più usato dall'uomo tanto da risultare spontaneo e naturale. Sin dalle prime esperienze infantili con i pennarelli o gli acquerelli, tutti sappiamo che per ottenere l'arancione è sufficiente mischiare in parti uguali rosso e giallo, ma aggiungendo più rosso si produrrà un arancione tendente al rosso. Qualcosa di analogo avviene con altre combinazioni di colori.
Questo è il processo più comunemente adottato nei processi di stampa, dove si sfrutta la luce in modo passivo, ovvero si sfrutta la luce già presente nell'ambiente, partendo da una tavolozza di colori costituita dai soli colori primari (invece di tutti i 7 presenti nell'arcobaleno) della sintesi sottrattiva: Ciano, Giallo e Magenta.

In teoria, se combinati in modo opportuno, si può riprodurre qualsiasi colore tranne il bianco, che fortunatamente è abbastanza semplice da ottenere: basta non stampare quei punti colore su un foglio bianco!
Per ottenere il nero invece basta combinarli tutti e tre nella quantità massima, ma questa tecnica, oltre ad essere uno spreco incredibile di risorse e di tempo, non produce un colore nero soddisfacente, viceversa solitamente si ottiene un marrone molto scuro. Nei processi di stampa questa tecnica prende il nome di "tricromia", ma per il motivo spiegato in precedenza oggi si preferisce usare la "quadricromia", aggiungendo il nero tra i colori primari. In questo modo non solo è più facile aumentare il contrasto tra i colori, ma finalmente si ottiene un nero brillante anziché un "non-colore".
Per riprodurre i colori in fase di stampa si adottano principalmente due tecniche distinte. La sublimazione che consiste nello sciogliere dei bastoncini di cera colorati, la cui miscela a caldo produce il colore desiderato, ed il dithering ovvero si sovrappongono dei retini predefiniti o calcolati matematicamente di colori primari, sfruttando la caratteristica dell'occhio di fondere insieme piccoli particolari, ottenendo quindi il colore desiderato.

Un'altra tecnica è stata studiata da apposite commissioni quando si è prospettata la necessità di trovare un sistema per la realizzazione della televisione a colori.
Nella televisione in bianco e nero era sufficiente riprodurre una scala di grigi (dal nero al bianco). Per fare ciò bastava rilevare la luminosità di ciascun elemento reale, e quindi far emettere una luce più o meno intensa al corrispondente puntino dello schermo, a seconda del valore rilevato.
Per la TV a colori questo consolidato sistema non andava bene. La televisione aggiunge luce a quella già presente nell'ambiente mediante l'eccitazione dei fosfori, e non la sottrae da quella presente nell'ambiente. Infatti si può guardare la TV anche al buio, mentre è impossibile leggere un libro se la stanza non è illuminata!
Durante alcune ricerche si è scoperto che generando diversi fasci di luce, ognuno di un solo colore, è possibile combinarli, inoltre variandone l'intensità di ciascuno, si possono ottenere altri colori.
Alla fine si è giunti al migliore compromesso tecnologico possibile: per riprodurre l'intero spettro dei colori sono sufficienti soli 3 colori primari (grazie alla particolare conformazione del nostro occhio), cioè Rosso, Verde e Blu, ovvero, secondo la nomenclatura inglese, Red, Green, Blue, da cui è nato l'arcinoto acronimo RGB.

Questo è un processo di "sintesi additiva del colore", proprio perchè si parte dal nero, cioè nessuna luce generata, a cui aggiungendo delle combinazioni delle tre componenti RGB è possibile generare qualsiasi colore compreso il bianco puro, che si ottiene dalla "somma" di tutte e tre le componenti con intensità massima. Questo processo, ovviamente, è l'analogo opposto della sintesi sottrattiva. Infatti osservando da vicino con una lente d'ingrandimento lo schermo un TV-color in funzione, notiamo tre minuscoli rettangolini verticali affiancati di colore Rosso, Verde e Blu. Ogni terna costituisce un singolo puntino dell'immagine.

Spesso nelle applicazioni grafiche si usa anche il sistema HSV, acronimo di Hue, Saturation, Value; che in italiano suona come: Tinta, Saturazione e Valore.
Analizziamo separatamente ciascuna componente dello spazio HSV.
Sono presenti ben 7 colori primari: Rosso, Giallo, Verde, Ciano, Blu, Magenta e Bianco. I primi 6 sono collocati ai vertici di un esagono, mentre al centro dello stesso è presente il bianco. L'Hue indica quale colore si avrebbe a parità di saturazione e valore. Saturation indica quanto bianco è presente nel colore. Il Value indica la luminosità del colore.
Questa tecnica viene usata principalmente nella realizzazione delle Colour Wheels (ruote dei colori), dove è possibile rappresentare in una circonferenza tutti colori ottenibili e con due gadget si impostano la saturazione e la luminosità generale, al fine di facilitare la composizione del colore desiderato.

Ovviamente il monitor non è altro che un TV-color privato di alcune componenti, quindi anche sui computer il colore viene trattato dall'hardware video con la sintesi additiva, mentre il programmatore software è libero di gestire il processo come più gli aggrada. Infatti, mediante semplici formulette matematiche, è possibile passare da un sistema ad un altro con estrema semplicità.
In realtà questi metodi di rappresentazione non sono gli unici possibili, ne esistono tanti altri, ma sono quelli più semplici da comprendere ed immediati da usare, e sono sufficienti per svolgere qualsiasi applicazione grafica con un computer, dal disegno video (RGB) a quello su carta (CYMB).

3.3 La quantizzazione dello spazio RGB

Per manipolare i colori su un calcolatore è necessario esprimerli in una forma numerica, ed in parte è già stato accennato parlando della Colorimetria. Infatti ad ogni colore primario possiamo associare un numero che ne indichi l'intensità luminosa, quindi un qualsiasi colore può essere individuato come una sequenza dei valori numerici delle luminosità di ciascuna sua componente, ovvero può essere considerato come un vettore.
Questo è di notevole aiuto, poiché con banali nozioni di Geometria Analitica possiamo sommare, sottrarre e confrontare i diversi colori. L'introduzione dei vettori consente di considerare la gamma dei colori come uno spazio vettoriale, ovvero un luogo in cui, fissato un sistema di riferimento cartesiano, possiamo identificare univocamente ogni posizione dello spazio, che nel nostro caso rappresenta un ben preciso punto colore.
Se consideriamo il sistema RGB - per descrivere ciascun colore sono sufficienti solo 3 componenti - avremo bisogno di un sistema di riferimento cartesiano a 3 assi, di solito chiamati X, Y, Z, che per comodità indicheremo con Red, Green, Blue, anche per distinguerli dai classici tre assi del modello CIE, chiamati proprio X, Y, Z.
Quante più suddivisioni operiamo su ciascun asse, tanto più accurata sarà la nostra rappresentazione dei colori, ovvero la nostra capacità di individuare una celletta sempre più piccola.

Facciamo un esempio. Supponiamo di suddividere ciascun asse in 16 parti, ciascuna intensità spazierà da 0 a 15, con questo sistema possiamo individuare 16x16x16=4.096 cellette/colori diversi. Se ora suddividiamo ciascun asse in 256 parti, otterremo ben 16.777.216 differenti colori.
Nel primo caso servono 4 bit per ciascuna componente, mentre nel secondo necessitano 8 bit, e volendo si può anche suddividere ancora di più arrivando, per esempio, a 32 bit.

Oggi il software spesso usa un partizionamento a 32 bit per componente (in totale 96 bit) per individuare miliardi di colori, e questo consente una maggiore precisione e velocità durante le elaborazioni, mentre l'hardware si limita a visualizzare soli 8 bit per componente (in totale 24 bit) visto che l'occhio umano non può percepire più di qualche milione di colori e non avrebbe senso spingersi oltre i 16 milioni, più che sufficienti.

Da quanto detto sembrerebbe che lo spazio RGB sia un cubo uniformemente suddiviso e sufficientemente popolato per consentirci di riprodurre con fedeltà e rapidamente qualunque colore percepibile dal nostro occhio, ed appare sufficiente applicare la banale formuletta per calcolare la distanza tra due punti dello spazio, quindi usare il colore che la renda minima per trovare il colore più adatto a riprodurre una certa sfumatura, ovvero usare quello che in matematica si chiama NORMA, della quale qui riportiamo solo un frammento:

Purtroppo vi è un errore di fondo: stiamo supponendo che l'occhio umano lavori linearmente come il calcolatore, mentre così non è. Infatti la sua sensibilità alle componenti rosso, verde, e blu non è la stessa, ma varia collocando in prima posizione il verde ed in coda il blu, dopotutto per la sopravvivenza della specie è stato fondamentale avere una buona visione del verde e del rosso, che consentono di individuare fogliame e frutti, piuttosto che il cielo, e non a caso oggi usiamo verde, rosso e colori loro derivati per attrarre l'attenzione o per effettuare segnalazioni: basti pensare ai semafori. Per ottenere risultati più fedeli dovremmo quindi partizionare fittamente l'asse Green, un po' meno quello Red, ed ancora meno quello del Blue seguendo le caratteristiche morfologiche del nostro occhio.
Sebbene questo sia corretto, tuttavia è molto poco pratico: realizzare dell'hardware che ad ogni componente associ un diverso numero di bit è troppo costoso. La soluzione viene nuovamente dalla matematica abbinata al software, che ci consente di pesare opportunamente ciascuna componente prima di scegliere il colore più adatto, per cui la formuletta di prima diventa:

Dove Pr, Pg, Pb sono dei pesi che rappresentano la sensibilità dell'occhio verso il rosso, verde, e blu.

A dire il vero, bisognerebbe tener conto anche della capacità di riprodurre il colore desiderato del mezzo di visualizzazione, detta Gamut, e che varia in modo impressionante passando da un media ad un altro, quindi i pesi variano a seconda che l'output sia su un monitor professionale, un semplice TV-Color, carta, o pellicola fotografica/cinematografica.
Ma nella quasi totalità delle applicazioni di uso comune, si adotta il modello del cubo uniformemente partizionato (rapido da calcolare), relegando il modello completo solo in aree specifiche, ad esempio quella degli effetti speciali cinematografici, dove è fondamentale che l'output del computer si confonda perfettamente con le immagini già impresse sulla pellicola.


3.4 Colore & calcolatori elettronici

Il colore ha fatto la sua prima comparsa sugli Home Computer, sembrerebbe inconcepibile ma è vero!
Spesso le maggiori innovazioni tecnologiche sono il frutto del lavoro di piccoli gruppi di ricerca quasi sempre al limite del tracollo economico, e questo perchè le grandi potenze del settore sono tese più a consolidare la propria quota di mercato piuttosto che rimetterla in discussione introducendo sostanziali innovazioni, dato che spesso il mercato di massa risulta poco incline a costose novità, mentre finisce sempre per premiare prodotti peggiori purchè costino poco e siano molto pubblicizzati.
Qualche anno fa per le applicazioni serie il colore era ritenuto futile e dannoso, veniva gestito in modo diverso da quello odierno e qualche volta ottusamente macchinoso e lento. Per esempio sul mitico Commodore 64, il più avanzato Home Computer della sua epoca tanto da essere ritenuto superiore ai primissimi PC-IBM , erano presenti solo 16 colori. Una quantità incredibile per l'epoca se si pensa che persino le prime schede VGA avevano 16 colori, ma sono apparse sul mercato molti anni dopo il C64!
Purtroppo i colori erano fissi, cioè non era possibile modificarne le tonalità in alcun modo. I programmatori e grafici erano costretti ad impiegarli alla stregua dei colori primari, quindi si cercava mediante retinatura di ottenere le tonalità intermedie desiderate, ovviamente con risultati non entusiasmanti grazie anche alla bassa risoluzione del video (appena 320x200 in monocromatico ed addirittura 120x200 in modo multicolor, perchè i bit adiacenti codificavano il colore a discapito della risoluzione!).
Tale tecnica, però, ha dato modo di far compiere un gran balzo avanti agli studi sulla retinatura, e se oggi le nostre stampanti eseguono stampe a colori eccezionali, forse lo dobbiamo anche alle notte insonni trascorse da tali geniali programmatori. Il Commodore 64 ha insegnato a tutti che la modalità a colori fissi era poco flessibile, specialmente se accoppiata alle basse risoluzioni, quindi i vari team di sviluppo hanno studiato e sperimentato diverse nuove tecniche, tra le quali solo un paio sono risultate vincenti e sono usate ancora oggi.

La prima detta Chunky Pixel consiste nell'associare a ciascun pixel un numero che può essere il colore vero e proprio oppure il numero di un registro-colore. Nel primo caso si parla di TrueColor , nel secondo di PseudoColor . All'atto pratico l'utente finale non ha bisogno di sapere quale tecnica sia in uso sulla propria scheda video, in quanto il tutto viene gestito in maniera trasparente dall'hardware, l'unica differenza è che la seconda tecnica permette di selezionare in modo più preciso la tonalità desiderata dalla vasta gamma offerta detta Palette.
Questa tecnica comunque ha introdotto un'operazione molto pesante per un microprocessore, che è il Bit Packing (impacchettamento dei bit), ovvero il dover riorganizzare sequenze di lunghezza non prefissata in informazioni manipolabili. Il microprocessore si basa sull'aritmetica binaria e le sue unità, decine, ecc., sono le potenze crescenti di 2, quindi anche le sequenze di bit sono gestite meglio se rispettano tale prassi. I primi microprocessori sono nati con 8 bit (ovvero 2^3), successivamente si è passati ai 16 bit (2^4), oggi siamo ai 32 bit (2^5), e sono già pronti i 64 bit (2^6).
Per tali ragioni si è preferito progettare dell'hardware True Color Chunky Pixel a 8 bit, ovvero con 256 colori fissi, che se abbinato ad una risoluzione sufficientemente alta, tipo 640x480 pixel, insieme alla possibilità di utilizzare la retinatura, consentiva ottimi risultati.
Il passo successivo è stato quello di realizzare hardware Pseudo Color Chunky Pixel dove ai 256 registri base era possibile abbinare, a seconda della modalità video impostata, palette di 2^8 (256 colori), 2^16 (65536 colori), 2^24 (16.8 milioni di colori). Non c'è che dire un bel salto qualitativo!
Questa soluzione sembra ottima, ma è pur sempre un compromesso tra prestazioni e tecnologia, e, come qualsiasi compromesso, gli effetti collaterali ci sono sempre. In questo caso consistono nell'inutile spreco di risorse hardware/software.
Supponiamo di voler far comparire una scritta bianca su sfondo nero, su uno schermo aperto alla risoluzione di 640x480, ovvero abbiamo ben 480 righe sulle quali sono disposte 640 cellette (di un byte in modalità chunky pixel). Per mantenere in memoria le informazioni video sono necessari ben 640x480 byte=307.200 byte, ovvero quasi 1/3 di megabyte! Per indicare due colori è sufficiente un solo bit, se spento si usa il primo colore, altrimenti il secondo. Quindi ben 7 degli 8 bit associati alla celletta rimarranno inutilizzati; in altre parole abbiamo sprecato 8 volte la quantità realmente necessaria.
D'altro canto ricorrere al bit packing avrebbe richiesto un notevole onere computazionale.

La seconda tecnica, denominata Planar Bitmap, nasce dalla necessità di ottimizzare il più possibile l'uso della memoria, ed è stata sviluppata all'interno di un piccolo team indipendente successivamente inglobato dalla Commodore. Da questa fusione è nato un ottimo computer video-grafico che risulta essere l'unico personal computer sul mercato (provate ad indovinarne il nome :) il cui hardware video è basato su tale tecnica.
Lo schermo non è più visto come tante cellette affiancate riga dopo riga, ciascuna di un byte, ma come sovrapposizione di layer . Ciascun layer è gestito come tante cellette di un solo bit affiancate riga per riga, quindi ad ogni singolo bit corrisponde un singolo punto dello schermo. Preso in considerazione un puntino, si legge il valore contenuto in ciascun layer presente, ottenendo così un numero che indica quale registro colore - nella documentazione ufficiale Amiga è indicato con il termine "penna" - deve essere usato per tracciare sul video il puntino, nel registro è memorizzato il colore secondo lo standard RGB.
Nelle prime macchine erano presenti soli 32 registri colore, su una palette di massimo 4096 colori diversi, poiché ciascuna delle tre componenti RGB poteva assumere solo 16 valori distinti (16x16x16=4096) quindi erano necessari solo 12 bit per ogni registro colore (a 16 bit). Non dimentichiamoci che è una tecnologia datata fine 1985, quando gli altri concorrenti, nella migliore ipotesi, possedevano al più 16 colori fissi!
Nelle macchine attuali, nonostante lo sviluppo sia fermo a 7 anni fa, i registri colore sono passati a 256 su una palette di 256x256x256=16.8 milioni (24 bit).

Questa tecnica, seppure un po' macchinosa, offre più vantaggi che svantaggi: per raddoppiare il numero di colori è sufficiente aggiungere un solo layer, mentre nel modo chunky pixel sono possibili solo salti di 8 bit in 8 bit; è possibile ottimizzare l'effettiva necessità di memoria, in base al reale numero di colori necessari; si può operare sui singoli layers anziché direttamente su tutto lo schermo, ottenendo interessanti effetti speciali.
Focalizziamo per un attimo la nostra attenzione su di una tecnica impiegata nei cartoni animati: il fondale è disegnato con grandissima precisione e con moltissimi colori, mentre i personaggi, di solito con molti meno colori, sono sovrapposti mediante fogli lucidi (layer). Come avrete certamente intuito, questa tecnica è facilmente realizzabile in planar, dove lo sfondo può sfruttare il massimo numero di layer possibile, ed essendo statico può essere memorizzato a parte ed una sola volta, mentre gli attori sono disegnati con pochi colori e sovrapposti al volo modificando solo alcuni layer.

Oltre ad essere veloce risulta essere molto parca nell'uso di memoria, in modalità chunky ciò non è possibile. La cosa più interessante è che a parità di registri colore la tecnica chunky e la planar occupano la stessa quantità di memoria. La prima è di solito notevolmente più veloce, ma quando si sfruttano meno colori i benchmark volgono nettamente a vantaggio della seconda. Inoltre la planar può essere definita dinamica, in quanto grazie alla particolare struttura dell'hardware Amiga, è possibile reinterpretare in modo differente il significato dei vari layer.
Non a caso per sopperire alla carenza dovuta a soli 32 registri colore nella prima generazione di Amiga furono introdotti due modi video particolari: EHB ed HAM.
Il primo significa Extra Half Brigh (ulteriore mezza luminosità): ai cinque bitplane necessari per indirizzare 32 registri colore veniva aggiunto un sesto, portando virtualmente il numero delle penne a 64, quindi i pixel tracciati con i primi 32 registri avevano il colore reale, mentre per gli altri era semplicemente dimezzata la luminosità del colore memorizzato nella corrispondente penna tra le prime trentadue.
Questa tecnica permette senza ottimizzazioni estreme della palette, di riprodurre disegni a 32 colori con ben altri 32 colori per le ombre!
Il secondo modo invece significa Hold And Modify (mantieni & modifica) ed è una soluzione semplicemente geniale! Tutto parte dall'osservazione che in immagini molto colorate, quali per esempio disegni pittorici, difficilmente due punti colore uno di seguito all'altro mostrano una variazione di colore spiccata e distinguibile ad occhio nudo, viceversa su un gruppo di tre punti è molto probabile che il colore di quello intermedio risulti essere una variazione di tono intermedia tra i colori dei suoi due punti adiacenti, al fine di "addolcire" vistosi contrasti di colore.
Quindi usando sempre 6 bitplane, mentre i primi 4 indicano quale registro colore usare dei 16 registri disponibili su una palette di 4096, gli altri due bitplane sono interpretati nel modo seguente: 00 il colore del registro specificato va usato così com'è, 01 si prende il colore del pixel precedente e di questo se ne varia la sola componende del blu, con il numero ottenuto dai primi 4 bitplane, mentre sia quella del verde che quella del rosso sono invariate, 10 stessa operazione modificando la sola componente del verde, 11 ora varia il rosso. In totale otteniamo 4096 colori ovvero tutta la palette in soli 6 bitplane, mentre 2^6=64 colori, un bel risparmio!
Nell'ultima generazione è stato introdotto anche l'HAM8, un'ulteriore miglioria. Si usano 6 bitplane base, ovvero 64 penne, più altri 2 bitplane interpretati come nell'HAM appena descritto. Così si hanno a disposizione ben 262.144 colori su 16.777.216, con una qualità quasi indistinguibile da quella a 24 bit con soli 8 bit. Non bisogna dimenticare che spesso le immagini sono composte da meno pixel di quanti sono necessari per visualizzare 262.144 colori, figuriamoci 16.777.216!
Per ottenere 262.144 colori con la tecnica chunky pixel abbiamo bisogno di 18 bit, che andrebbero arrotondati a 24 bit per evitare i problemi di Bit Packing. Lasciamo ai lettori il computo matematico del risparmio di memoria ottenibile da questa strepitosa e molto sottovalutata tecnica!

Francesco De Napoli