Tavolozza nel calcolo

Nella computer grafica, una tavolozza è un insieme finito di colori. Le tavolozze possono essere ottimizzate per migliorare l’accuratezza dell’immagine in presenza di vincoli software o hardware.

Terminologia
Una tavolozza di colori adattabile che si espande da 2 colori a 256 colori, a dimostrazione di come cambia l’immagine (fare clic per vedere l’animazione).
A seconda del contesto, il termine tavolozza e termini correlati come la tavolozza Web e la tavolozza RGB possono avere significati un po ‘diversi. Di seguito sono riportati alcuni dei significati ampiamente utilizzati per la tavolozza nella grafica computerizzata:

Il numero totale di colori che un dato sistema è in grado di generare o gestire (anche se, a causa delle limitazioni della memoria video, potrebbe non essere in grado di visualizzarli tutti contemporaneamente):
palette piena: ad esempio, i display Highcolor hanno una tavolozza RGB a 16 bit.

La selezione limitata di colori che possono essere visualizzati contemporaneamente:
Sull’intero schermo:
selezione di palette fisse: un determinato adattatore di visualizzazione può offrire una selezione di colore fissa quando i suoi registri hardware sono impostati correttamente. Ad esempio, Color Graphics Adapter (CGA), in una delle modalità grafiche standard, può essere impostato per mostrare la cosiddetta tavolozza n. 1 o la tavolozza n. 2: due combinazioni di 3 colori fissi e un colore di sfondo definito dall’utente ogni.
colori selezionati o colori selezionati: in questo caso, la selezione del colore, generalmente da una palette piena esplicitamente più ampia, viene sempre scelta dal software, sia dall’utente che da un programma. Ad esempio, si dice che l’adattatore di visualizzazione VGA standard fornisca una tavolozza di 256 colori simultanei da un totale di 262.144 colori diversi.
tavolozza predefinita o tavolozza di sistema: i colori selezionati sono stati ufficialmente standardizzati da un ente o società. Ad esempio, i ben noti colori Web-safe per l’utilizzo con i browser Internet o la tavolozza predefinita di Microsoft Windows.

Su una singola immagine:
mappa colori o tabella colori: la selezione limitata dei colori è memorizzata all’interno del file immagine a colori indicizzato. Ad esempio, GIF.
tavolozza immagine o colori immagine: si presume che la selezione limitata dei colori sia l’elenco completo dei colori dell’immagine digitale fornita, anche quando il file immagine non impiega la codifica dei pixel a colori indicizzati.
L’hardware sottostante che può essere utilizzato per contenere quei colori simultanei:
tavolozza hardware o Color Look-Up Table (CLUT): per visualizzarli, i valori dei colori selezionati devono essere caricati nei registri hardware a colori del sottosistema di visualizzazione. Ad esempio, i registri hardware del Commodore Amiga sono noti sia come tavolozza dei colori che come CLUT, a seconda delle fonti.

Tavolozze GUI
Una disposizione di un insieme limitato di colori utente o di sistema che possono essere scelti. In tali casi, la tavolozza dei colori delle espressioni o la tavolozza dei colori dell’utente sono equivalenti comuni. Questo uso assomiglia alla tavolozza di un vero artista.
Una tavolozza degli strumenti, un’area rettangolare, denominata finestra della palette, della schermata dell’applicazione con pulsanti, icone o altri controlli della GUI disponibili per l’accesso rapido ai comandi o ai simboli; se l’utente è in grado di posizionarlo ovunque spostandolo attraverso un mouse o un dispositivo di puntamento simile, è noto come palette mobile. Una tavolozza per la scelta dei colori può essere anche una tavolozza fluttuante.

Tavolozza principale
Un’applicazione può, a sua volta, mostrare molte miniature di immagini diverse in un mosaico sullo schermo. È ovvio che il programma non è in grado di caricare contemporaneamente tutte le tavolozze adattive di ogni miniatura dell’immagine visualizzata nei registri colore hardware. Una soluzione consiste nell’utilizzare una tavolozza principale comune, unica o una tavolozza universale, che può essere utilizzata per visualizzare con ragionevole accuratezza qualsiasi tipo di immagine.

Questo viene fatto selezionando i colori in modo tale che la tavolozza principale comprenda uno spazio colore RGB completo “in miniatura”, limitando i possibili livelli che i componenti rosso, verde e blu possono avere. Questo tipo di arrangiamento viene talvolta definito come una tavolozza uniforme. L’occhio umano normale ha sensibilità per i tre colori primari in gradi diversi: più al verde, meno al blu. Pertanto, gli arrangiamenti RGB possono trarne vantaggio assegnando più livelli per la componente verde e meno per il blu.

Una tavolozza master costruita in questo modo può essere riempita con un massimo di 8R × 8G × 4B = 256 colori, ma ciò non lascia spazio nella tavolozza per i colori riservati, indici di colore che il programma potrebbe utilizzare per scopi speciali. È più generale usare solo 6R × 6G × 6B = 216 (come nel caso dei colori Web), 6R × 8G × 5B = 240 o 6R × 7G × 6B = 252, che lasciano spazio per alcuni colori riservati.

Quindi, caricando il mosaico di miniature di immagini (o altre immagini eterogenee), il programma esegue semplicemente il mapping di ogni pixel di colore indicizzato originale al suo valore più approssimato nella tavolozza principale (dopo averlo scaricato nei registri colore hardware) e scrive il risultato nel buffer video. Ecco un esempio di un semplice mosaico delle miniature di quattro immagini utilizzando una tavolozza principale di 240 colori RGB disposti più 16 ulteriori tonalità intermedie di grigio; tutte le immagini vengono assemblate senza una significativa perdita di precisione del colore:

Tavolozza adattiva
Quando si usano tecniche di colori indicizzati, le immagini di vita reale sono rappresentate con una migliore fedeltà a quella originale di truecolor usando tavolozze adattative (a volte composte da tavolozze adattative), in cui i colori vengono selezionati o quantizzati attraverso qualche algoritmo direttamente dall’immagine originale (selezionando il colori più frequenti). In questo modo, e con ulteriore dithering, l’immagine a colori indicizzata può quasi corrispondere all’originale.

Ma questo crea una forte dipendenza tra i pixel dell’immagine e la sua tavolozza adattiva. Supponendo un display grafico con profondità a 8 bit limitata, è necessario caricare la tavolozza adattiva di un’immagine specifica nei registri hardware a colori prima di caricare la superficie dell’immagine stessa nel buffer del fotogramma. Per visualizzare immagini diverse con diverse tavolozze adattive, devono essere caricate una per una, come in una presentazione. Ecco i campioni di quattro diverse immagini a colori indicizzati con i campioni di colore per mostrare le rispettive tavolozze adattive (e in gran parte incompatibili):

Trasparenza nelle tavolozze
Una singola voce di tavolozza in un’immagine a colori indicizzata può essere designata come un colore trasparente, al fine di eseguire un semplice sovrapposizione di video: sovrapponendo una determinata immagine su uno sfondo in modo tale che parte dell’immagine sovrapposta oscuri lo sfondo e il rimanente non . Sovrapposizione di film / titoli TV e crediti è una tipica applicazione di sovrapposizione di video.

Nell’immagine da sovrapporre (si assume il colore indicizzato), una determinata voce della palette gioca il ruolo del colore trasparente. Di solito il numero indice 0, ma altri possono essere scelti se l’overlay viene eseguito dal software. In fase di progettazione, la voce della tavolozza di colori trasparente viene assegnata a un colore arbitrario (solitamente distintivo). Nell’esempio seguente, un tipico puntatore a freccia per un dispositivo di puntamento è progettato su uno sfondo arancione, quindi qui le aree arancioni indicano le aree trasparenti (a sinistra). In fase di esecuzione, l’immagine sovrapposta viene posizionata ovunque sopra l’immagine di sfondo ed è miscelata in modo tale che se l’indice dei colori dei pixel è il colore trasparente, il pixel di sfondo viene mantenuto, altrimenti viene sostituito.

Questa tecnica è utilizzata per i puntatori, nei tipici videogiochi 2D per personaggi, proiettili e così via (sprite), titoli video e altre applicazioni di missaggio di immagini.

Alcuni dei primi computer, come Commodore 64, MSX e Amiga supportano gli sprite e / o la sovrapposizione di video a schermo intero per hardware. In questi casi, il numero di voce della tavolozza trasparente viene definito dall’hardware e utilizzato per essere il numero 0.

Alcuni formati di file di immagine a colori indicizzati come GIF e PNG supportano nativamente la designazione di una determinata voce della tavolozza come trasparente, liberamente selezionabile tra le voci della palette utilizzate per una determinata immagine.
Il formato di file BMP riserva spazio per i valori del canale alfa nella sua tabella dei colori, tuttavia attualmente questo spazio non viene utilizzato per contenere i dati di traslucenza ed è impostato su zero.

Quando si tratta di immagini truecolor, alcune apparecchiature di missaggio video possono utilizzare la tripletta RGB (0,0,0) (senza rosso, senza verde, senza blu: la tonalità più scura del nero, talvolta definita superblack in questo contesto) come colore trasparente . In fase di progettazione, viene sostituito dal cosiddetto magic pink. Allo stesso modo, il tipico software di desktop publishing può assumere la tripletta RGB bianca (255,255,255) da foto e illustrazioni da escludere per consentire ai paragrafi di testo di invadere il riquadro di delimitazione dell’immagine per la disposizione irregolare del testo attorno ai soggetti dell’immagine.

I programmi di pittura 2D, come Microsoft Paint e Deluxe Paint, possono utilizzare il colore di sfondo designato dall’utente come colore trasparente quando si eseguono operazioni di taglia, copia e incolla.

Sebbene siano correlati (a causa del fatto che sono usati per gli stessi scopi), le maschere di bit di immagine e i canali alfa sono tecniche che non implicano l’uso di palette o colori trasparenti, ma strati di dati binari aggiuntivi aggiunti fuori immagine.

Tavolozze software

Microsoft Windows
Le applicazioni Microsoft Windows gestiscono la tavolozza di dispositivi con display a colori indicizzati a 4 o 8 bit tramite funzioni specializzate dell’API Win32 (per le modalità di visualizzazione Highcolor e Truecolor, tali funzioni non presentano alcuna funzionalità interessante). Queste API si riferiscono alla cosiddetta tavolozza di sistema e a molte tavolozze logiche.

La tavolozza dei sistemi è una copia nella RAM dei registri hardware del display a colori, principalmente una tavolozza fisica, ed è una risorsa comune unica e condivisa del sistema. All’avvio, viene caricato con la tavolozza di sistema predefinita (principalmente una palette principale che funziona abbastanza bene con la maggior parte dei programmi).

Quando una determinata applicazione intende produrre grafici e / o immagini colorate, può impostare la propria tavolozza logica, ovvero la propria selezione privata di colori (fino a 256). Si suppone che ogni elemento grafico che l’applicazione tenta di mostrare sullo schermo utilizzi i colori della sua tavolozza logica. Ogni programma può gestire liberamente una o più tavolozze logiche senza ulteriori interferenze previste (in anticipo).

Prima che l’output sia effettivamente realizzato, il programma deve realizzare la sua tavolozza logica: il sistema cerca di far corrispondere i colori logici con quelli fisici. Se un colore previsto è già presente nella tavolozza del sistema, il sistema esegue la mappatura interna degli indici della tavolozza logica e di sistema (poiché raramente coincidono). Se il colore desiderato non è ancora presente, il sistema applica un algoritmo interno per scartare il colore meno utilizzato nella tavolozza del sistema (generalmente, alcuni utilizzati da un’altra finestra sullo sfondo) e lo sostituisce con il nuovo colore. A causa della mancanza di spazio per i colori nella tavolozza del sistema, l’algoritmo tenta anche di rimappare colori simili insieme e sempre evitando colori ridondanti.

Il risultato finale dipende da quante applicazioni stanno lavorando con i colori dello schermo. La finestra in primo piano è sempre favorita, quindi le finestre sullo sfondo possono comportarsi in modi diversi: da corrotti per ridisegnarsi rapidamente. Quando la tavolozza del sistema cambia, il sistema attiva un evento specifico per informare ogni applicazione. Una volta ricevuta, una finestra può ridisegnarsi rapidamente utilizzando una singola funzione API Win32. Ma questo deve essere fatto esplicitamente nel codice del programma; quindi il fatto che molti programmi mancano nel gestire questo evento e le loro finestre si corrompono in questa situazione.

Un’applicazione può forzare il caricamento della tavolozza di sistema con colori specifici e persino in un ordine specifico, ingannando il sistema dicendo che si tratta di voci di colore destinate all’animazione (modifiche rapide del colore dei colori nella tavolozza fisica a voci specifiche). Il sistema non può quindi presumere che ogni voce della tavolozza hardware sia libera per la gestione dei colori della tavolozza e che tali voci siano escluse dal suo algoritmo. Il risultato finale dipende dalle competenze del programma di forzatura del colore e dal comportamento degli altri programmi (la durata è esattamente come nel caso normale) e quella del sistema operativo in sé.