La profondità di colore (in inglesecolor depth, anche conosciuta come profondità di bit ovvero bit depth), nella computer grafica, indica sia il numero di bit usati per indicare il colore di un singolo pixel, in un'immagine bitmap o in una memoria buffer, sia il numero di bit usati per ogni componente di colore di un singolo pixel.[1][2][3][4] Per gli standard video di consumo, come per esempio l'High Efficiency Video Coding (H.265), la profondità specifica il numero di bit impiegati per ogni componente di colore.[1][2][3][4]
Quando si fa riferimento a un pixel, il concetto può essere definito come il numero di bit per pixel (bpp), che specifica il numero di bit impiegati. Quando si fa riferimento a una componente di colore il concetto può essere definito in termini di bit per componente, bit per canale, bit per colore (tutte grandezze abbreviate con bpc), e anche in termini di bit per componente di pixel, bit per canale di colore o bit per campione (bit per sample, bps).[1][2][5]
La profondità di colore è solo un aspetto della rappresentazione del colore, ed esprime quanto finemente possono essere espressi i livelli di colore; l'altro aspetto è quanto largo può essere espresso un intervallo di colori (il gamut). La definizione sia della precisione di colore, sia del gamut, è raggiunta attraverso una specificazione della codifica di colore, che assegna un valore in codice digitale a una posizione nello spazio dei colori.
Un'immagine a 2 bit per pixel. Il colore di ciascun pixel è rappresentato da un numero; ogni numero corrisponde ad un colore nella tavolozza.
Con le profondità di colore più basse, il valore memorizzato per ciascun bit è generalmente un indice in una mappa di colori o tavolozza. I colori disponibili nella tavolozza stessa possono essere determinati dall'hardware oppure modificabili.
È consuetudine indicare i diversi tipi di profondità con il nome della norma video con il quale sono stati introdotti sul mercato dei personal computer.
Con l'aumentare del numero di bit per pixel aumenta anche la quantità di colori possibili, rendendo sempre più scomodo l'uso delle tavolozze. Per le profondità più alte si preferisce perciò codificare i colori direttamente nei valori corrispondenti alla luminosità relativa dei canali rosso, verde e blu secondo il modelloRGB.
High color
Il modello di profondità hicolor o highcolor usa 15 o 16 bit per pixel ed è considerato accettabile per la rappresentazione di immagini realistiche.
15 bpp
Con questa profondità si usano 5 bit per rappresentare il rosso, 5 bit per rappresentare il blu e 5 bit per rappresentare il verde. Per ciascuno di questi tre colori esistono dunque 25 = 32 livelli di luminosità che si possono mescolare per generare un totale di 32.768 colori possibili (32 × 32 × 32).
16 bpp
con questa profondità vengono usati 5 bit per rappresentare il rosso e 5 bit per rappresentare il blu, ma 6 bit per rappresentare il verde: ciò è dovuto al fatto che l'occhio umano è più sensibile al verde che al rosso e al blu. A questo modo è possibile rappresentare 65.536 colori diversi (32 × 32 × 64).
Truecolor (24 bit)
Il modello di profondità truecolor utilizza 24 bit e permette di riprodurre immagini in modo molto fedele alla realtà arrivando a rappresentare 16,8 milioni di colori distinti.
Con questa profondità si usano 8 bit per rappresentare il rosso, 8 bit per rappresentare il blu ed 8 bit per rappresentare il verde. I 28 = 256 livelli d'intensità per ciascun canale si combinano per produrre un totale di 16.777.216 colori (256 × 256 × 256).
Per la maggior parte delle immagini fotografiche questa profondità consente sfumature ancora più fini di quelle che l'occhio umano riesce a distinguere.
Ci sono però immagini fatte apposta per rendere visibili ad occhio nudo le limitazioni del truecolor.
Si tratta di grafiche generate in modo completamente artificiale o d'immagini fotografiche in bianco e nero (per cui il truecolor dispone solo di 256 tonalità di grigio) opportunamente alterate.
Colore a 32 bit
La denominazione di colore a 32 bit può risultare fuorviante, perché non si tratta in questo caso di 232 colori distinti, bensì del truecolor con l'aggiunta di 8 bit che possono rimanere inutilizzati o servire alla codifica del canale alfa.
La ragione per cui si lascia spazio vuoto è che l'accesso a 32 bit consecutivi risulta su molti processori più efficiente dell'accesso a 24 bit, che può causare ritardi dovuti all'allineamento e al mascheramento dei byte.
Oltre il truecolor
Verso la fine degli anni novanta, furono messi a punto sistemi di computer di fascia alta, come alcuni modelli della SGI, in grado di visualizzare più di 8 bit per canale (12 o 16). I sistemi di questo genere sono oggi diventati piuttosto rari, perché non sembrano offrire un miglioramento visibile nella visualizzazione dei colori come ci si aspettava all'inizio.
I software di generazione ed elaborazione d'immagini in qualità professionale hanno iniziato negli ultimi anni ad impiegare internamente 16 bit per canale. Sebbene gli 8 bit aggiuntivi non siano visibili sullo schermo, essi servono a proteggere la qualità dell'immagine dagli errori di arrotondamento che si accumulano quando vengono effettuate diverse modifiche successive su una grafica, come la regolazione di luminosità e contrasto.
Anche molti scanner d'immagine di alta qualità ed alcune schede video di nuova concezione sono in grado di riconoscere o visualizzare più di 8 bit per canale. Sembra che 10 bit per canale siano sufficienti per raggiungere i limiti assoluti della vista umana per la maggior parte delle persone, ovvero circa 10 milioni.[6].
Per esigenze ancora più specifiche, si adoperano numeri in virgola mobile per tener conto delle quantità in eccesso di bianco e di nero. In questo modo, si possono rappresentare in maniera accurata anche le immagini dove la luce del sole si affianca a spazi in ombra. Per descrivere intervalli di luminosità così ampi, sono stati sviluppati modelli di colore diversi, molti dei quali usano 32 bit (o più) per canale.
La ILM ha messo a punto un nuovo formato che usa numeri in virgola mobile di 16 bit. Questo tecnica sembra più funzionale rispetto all'uso di numeri interi di 16 bit per canale, ma richiede uno specifico supporto hardware per un'efficiente realizzazione.
Selezione della profondità
Nelle applicazioni che fanno uso intensivo della grafica, come molti videogiochi, si può raggiungere un compromesso tra la rapidità di successione dei quadri e la qualità del colore aumentando o diminuendo la profondità di colore dello schermo.
Le grafiche a profondità più bassa occupano meno memoria nel framebuffer della scheda video e richiedono una minore ampiezza di banda dello schermo. Per questo motivo, consentono una visualizzazione più veloce.
Profondità grafiche maggiori permettono una miglior qualità del colore, ma a spese della rapidità di visualizzazione e di risposta del sistema.