Correzione di gamma, non linearità del gamma, codifica gamma o spesso semplicemente gamma, è una trasformazione non lineare usata per codificare e decodificare la luminanza o i valori del tristimolo in un sistema video o fotografico. La correzione di gamma, è, nel caso più semplice, definita dalla seguente legge di potenza:
dove i valori di ingresso e uscita sono valori reali non negativi, compresi tra un minimo e un massimo determinato; nelle codifiche digitali tali estremi sono generalmente 0 e 1. Un valore gamma è chiamato di solito un gamma codificante, e il procedimento di codifica con la suddetta legge di potenza ad esponente minore di 1 è chiamato compressione gamma; viceversa, un valore gamma è chiamato gamma decodificante e l'applicazione di tale non linearità mediante semplice legge di potenza espansiva, cioè con esponente maggiore di 1, è chiamata espansione gamma.
Descrizione
La correzione di gamma è usata per codificare la luminanza lineare o i valori RGB in un segnale video analogico o nei valori discreti del video digitale; l'espansione gamma è il processo inverso ed ha la sua motivazione nella non linearità della relazione tra corrente e tensione dei fasci elettronici dei CRT, che agiscono come un decodificatore naturale. La codifica gamma aiuta a mantenere i dati (sia analogici che digitali) in un dominio il più possibile uniforme dal punto di vista percettivo.
In altri termini, un tubo catodico converte un segnale video in luce in maniera non lineare, a causa della suddetta relazione non lineare tra corrente elettronica e tensione accelerante. La correzione di gamma è tesa a controbilanciare tale distorsione introdotta dal CRT.
L'immagine che segue mostra il comportamento di un tipico schermo CRT quando i segnali sono lineari ( = 1.0) (a sinistra) e (a destra) quando sono corretti in gamma (il gamma standard è = 2.2 sia in NTSC che in PAL). Nel primo caso, l'immagine risultante sul CRT è visibilmente più scura dell'originale, mentre nel secondo caso è molto più fedele. Le telecamere e i sistemi di ripresa producono segnali corretti in gamma, così come lo sono tutte le trasmissioni televisive. In questo modo, vista la standardizzazione dei dispositivi di riproduzione, il sistema nel suo complesso avrà un comportamento lineare, come mostrato in basso; se le telecamere fossero lineari, il sistema non avrebbe una risposta lineare.
Generalizzazione del gamma
Il valore di gamma è usato in generale per quantificare il contrasto, per esempio della pellicola fotografica; rappresenta la derivata della relazione tra ingresso ed uscita in uno spazio logaritmico, cioè:
In altri termini il fattore gamma indica l'inclinazione della curva rappresentativa della relazione (in termini logaritmici) tra segnale e risposta.
Essa è consistente con la legge di potenza sopra espressa, ma applicabile anche a non linearità più generali. Nel caso della pellicola fotografica, la non linearità è chiamata curva sensitometrica o di Hurter-Driffield, dove i valori di gamma inferiori a 1 sono tipici della pellicola negativa e i valori superiori a 1 sono caratteristici delle pellicole invertibili.
Gamma standard per Windows, Mac, sRGB e applicazioni televisive
Nella maggior parte dei sistemi informatici, le immagini sono codificate con un gamma di circa 0,45 e decodificate con un gamma di 2,2. Nei sistemi Macintosh, i valori tipici sono 0,55 e 1,8 (fino al rilascio di OS X Snow Leopard, in cui il valore gamma è stato portato a 2.2). In ogni caso, i dati binari nei file (per esempio nel formato JPEG) sono esplicitamente codificati, ovvero i dati memorizzati sono già corretti in gamma e non sono valori lineari. Questo avviene anche per i file di video, come quelli in formato MPEG. Il sistema, tuttavia, può gestire anche valori lineari, nel caso in cui ci sia la necessità di una corrispondenza di gamma precisa a seconda del dispositivo di visualizzazione.
Lo spazio colore sRGB standard utilizzato con la maggior parte delle telecamere, computer e stampanti non usa una trasformazione nonlineare mediante la semplice legge di potenza sopra scritta, ma ha un valore di decodifica gamma vicino a 2,2 in quasi tutta l'escursione, come mostrato sulla destra. Se il valore codificato è inferiore a 0,04045 o a un'intensità lineare di 0,00313, la curva è lineare (codificata con valori proporzionali all'intensità), cioè con un gamma di 1. La curva tratteggiata sotto la curva rossa è la curva standard del gamma uguale a 2,2, riportata per confronto.
L'uscita verso monitor e televisore a tubo catodico non necessita di nessuna correzione di gamma, dal momento che i segnali video sono trasmessi o registrati in un formato che incorpora la correzione in maniera abbastanza fedele all'espansione di gamma dei CRT. Per i segnali televisivi, i valori reali del gamma sono definiti dai diversi standard (NTSC, PAL o SÉCAM), e si tratta sempre di valori fissi e noti.
Legge di potenza per monitor video
La relazione con legge di potenza tra il segnale di luminanza codificata in un sistema televisivo e la reale luminosità risultante è nota come gamma caratteristico.
Con questa relazione non lineare, intervalli equidistanti nella luminanza codificata corrispondono approssimativamente intervalli uguali della luminosità percepita. Una migliore approssimazione della percezione si avrebbe con un valore di gamma vicino a 0,33, secondo la legge di potenza di Stevens. L'immagine che segue mostra la differenza tra una scala con un ingresso lineare, cioè una scala di valori di luminanza codificata linearmente, e una scala con un'uscita lineare, cioè un'intensità linearmente crescente (corretta in gamma).
Codifica lineare VS = 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 Intensità lineare I = 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
Sulla maggior parte dei display, quello con gamma di circa 2,2, è possibile osservare che la scala a intensità lineare hanno un notevole divario tra la luminosità percepita tra i valori di intensità di 0,0 e 0,1, mentre gli intervalli al limite superiore della scala sono distinguibili a fatica. La scala codificata linearmente, che ha un'intensità non lineare, mostra una progressione della luminosità più regolare.
L'intensità della luce I è relativa alla tensione della sorgente VS secondo la regola:
dove è la lettera greca gamma. Per il CRT di un computer CRT, corrisponde a circa 2,2. Per coincidenza, questo porta alla scala mostrata sopra, omogenea dal punto di vista percettivo.
Per semplicità, si consideri l'esempio di un tubo catodico monocromatico. In questo caso, un segnale video di 0,5 (un grigio medio) risulta in una luminosità di circa 0,22 (un grigio piuttosto scuro). Il nero e il bianco puri (0,0 e 1,0) sono le sole tonalità non influenzate dal gamma.
Per compensare questo effetto, la funzione di trasferimento inversa (correzione di gamma) è applicata al segnale video in modo che la risposta sia lineare lungo tutta l'escursione del segnale. In altre parole, il segnale trasmesso al CRT è deliberatamente distorto, in modo che, dopo essere stato distorto in senso inverso dal display, venga percepito correttamente. L'inverso della precedente funzione è:
dove VC è la tensione elettrica corretta da applicare alle piastre del cannone elettronico del CRT e VS è la tensione elettrica effettivamente in ingresso al sensore che, in questo esempio, converte la luce in segnale. In un CRT, 1/ corrisponde a 1/2,2 o 0,45.
Un tubo catodico a colori riceve tre segnali video, uno per ogni primario RGB. In generale, ogni colore ha il proprio gamma, R, G o B. Nei display più semplici, un singolo valore di è usato per tutti e tre i colori.
Altri dispositivi di visualizzazione possono avere diversi valori di gamma: per esempio, il display di un Game Boy Advance ha un gamma compreso fra 3 e 4 a seconda delle condizioni di illuminazione. Negli LCD usati dai computer portatili, la relazione tra la tensione del segnale VS e l'intensità I presenta una non linearità molto accentuata e non può essere descritta con un valore di gamma costante. Questi display applicano una correzione al segnale per ottenere un gamma standard approssimativo =2,5.
La legge di potenza inversa, ha un'inclinazione infinita in prossimità dello zero, cioè la sua derivata prima diverge nell'origine. Questo comporta problemi nella conversione da e verso uno spazio colore con correzione di gamma. Per questa ragione la maggior parte degli spazi colore definiti, come lo sRGB, definisce un segmento retto vicino allo zero e aggiunge un incremento x+K (con K costante) alla potenza così che la curva abbia un incremento continuo. La parte dritta non corrisponde al comportamento del tubo catodico, ma rende il resto della curva più fedele all'effetto della luce ambiente. In queste espressioni l'esponente non è il gamma: la funzione sRGB, per esempio, usa una potenza di 2,4, ma sembra comportarsi come una legge di potenza con un esponente di 2,2 senza una parte lineare.
Metodi per eseguire la correzione di gamma sui display per computer
Per ottenere una correzione di gamma tale da consentire una resa corretta dell'output su un display con un gamma tipico di 2,2 o 1,8 è possibile manipolare fino a quattro elementi:
L'intensità dei valori dei pixel in un dato file, ovvero la registrazione dei valori corrispondenti a ciascun pixel in modo che rappresento i valori già corretti in gamma piuttosto che valori lineari. Questo sistema viene usato in maniera sistematica per i file video in formato digitale, come i filmati in DVD, in modo da evitare la decodifica del gamma durante la riproduzione.Allo stesso modo, i valori dei pixel nei formati di immagine standard sono già corretti, sia per file in sRGB, che approssimano il comportamento dei monitor tradizionali, sia per quelli che includono il gamma secondo un profilo colore ICC. Se il gamma di codifica non corrisponde a quello del sistema di visualizzazione, è possibile introdurre una correzione ulteriore, sia durante la visualizzazione che direttamente sui dati nel file. Il software di rendering scrive valori dei pixel già corretti in gamma nella memoria (in modalità highcolor o truecolor) oppure nel registro hardware CLUT (in modalità indicizzata) della scheda video. I valori di tensione proporzionali al display sono poi generati dal DAC. Per esempio, con 8 bit per canale, colore RGB a 24 bit, un valore di 128 scritto nella memoria video (valore a metà della scala 0-255) corrisponderà a una tensione proporzionale di ≈0,5 al display, che verrà visualizzato più scuro per via del comportamento del monitor: per ottenere la stessa intensità, il software genera un valore corretto in gamma di 187 al posto di 128. Le moderne schede video hanno delle tabelle di indicizzazione dedicate e calibrate, che sono caricabili con la tabella appropriata per modificare i segnali codificati prima del DAC verso il display.SetDeviceGammaRamp, API Win32 API per scaricare rampe di gamme arbitrarie nell'hardware video Impostare queste tabelle e regolarle correttamente è un procedimento chiamato calibrazione dell'hardware. Alcuni monitor recenti permettono all'utente di modificare il valore del gamma (come se fosse una normale regolazione di luminosità o contrasto), codificando il segnale in ingresso prima che venga visualizzato sullo schermo. Si tratta anche in questo caso di una tecnica di calibrazione dell'hardware, ma in questo caso è eseguita per via elettronica sui segnali elettrici in ingresso piuttosto che sui valori digitali dei pixels come nel caso precedente.