martedì 6 marzo 2012

Gestione del colore su GNU/Linux



Gestione del colore su GNU/Linux


NOTA: Questo post è sostanzialmente la traduzione di una pagina su un blog (http://blog.pcode.nl/2012/01/29/color-management-on-linux/). Tradotta al volo con l'ausilio di google translator e corretta-rivista "on the fly", potrebbe contenere ancora degli orrori grammaticali e sintattici.
Edit del 7-3-2011: ho leggermente modificato il post, integrando qualcosa da http://en.wikipedia.org/wiki/Linux_color_management



Sembra che ci sia molta confusione su ciò che è la gestione del colore, che cosa si deve fare, e più in particolare come la si usa su Linux. La maggior parte delle informazioni di seguito è genericamente applicabile, mentre nei casi in cui devo essere specifico mi concentrerò su Ubuntu / GNOME / Unity.
 
La prima cosa da evidenziare è la semplice domanda "che cosa il color management dovrebbe fare per me?". La gestione del colore è usata per ottenere risultati coerenti e affidabili nel flusso di lavoro che prevede il passaggio da dispositivo a dispositivo (fotocamera, monitor, stampante). Quindi, se prendo una foto con la mia telecamera "gestita" in termini di colori, la visualizzo sul mio monitor "gestito" dandola in pasto ad un software di image editing (CinePaint, Digikam, GIMP, Krita, Scribus, ecc.) e la stampo con la mia stampante "gestita", dovrebbe apparire quasi la stessa ovunque. Ciò non implica che l'immagine abbia un aspetto migliore (qualunque cosa ciò possa significare...). 
Altra cosa che la gestione del colore non può fare è trasformare un'attrezzatura scadente in qualcosa di migliore. Qualsiasi soluzione di gestione del colore deve sempre lavorare entro i limiti delle attrezzature che sta gestendo. Naturalmente ogni soluzione per la gestione del colore cerca di compensare i limiti di un dispositivo come meglio può, ma ci sono dei limiti intrinseci. Quando questi limiti vengono raggiunti, i colori non vengono più riprodotti.
Inoltre il passaggio dai colori prodotti da un dispositivo a quelli prodotti da un altro dispositivo è un'operazione matematica che può essere condotta in vari modi, e che non necessariamente produce risultati che l'occhio umano considera "migliori".
Ora dobbiamo definire un po' di terminologia corretta. 

La calibrazione è la modifica delle caratteristiche di un dispositivo per soddisfare una certa specifica (per esempio cambiando la luminosità di un display).  
La caratterizzazione è la registrazione del comportamento di dispositivi per la correzione via software. Questi termini sono spesso usati in modo intercambiabile erroneamente (anche da me, scusatemi se faccio io). Il risultato finale della caratterizzazione è un profilo (standard) di colore ICC.
 
Mentre praticamente qualsiasi dispositivo può essere gestione per il colore, mi concentrerò sui monitor per il resto di questo articolo.
Per gestire un display a colori è necessario un dispositivo in grado di "leggere" (caratterizzare) le caratteristiche del display. Per caratterizzare il display ci sono due tipi di dispositivi che è possibile utilizzare: colorimetri e spettrofotometri. I colorimetri sono il dispositivo più comune per caratterizzare display, in quanto sono abbastanza convenienti (100-200 euro). I colorimetri hanno i loro limiti, sono in sostanza solo una macchina fotografica digitale con una finalità molto speciale, con solo una manciata di pixel. Mentre personalmente non ho mai avuto problemi, ho letto di vecchi colorimetri che hanno problemi con i nuovi tipi di tecnologia di display, come gli schermi retroilluminati a LED, e alcuni colorimetri entry level potrebbero non funzionare anche con display professionali con ampia gamma (ne riparleremo più avanti). L'altra opzione è uno spettrofotometro. Questi dispositivi sono piuttosto cari. Gli spettrofotometri entry level come il ColorMunki Photo, sono ad un prezzo leggermente al di sotto di 400 euro (se vedete qualsiasi dispositivo a un prezzo significativamente più basso, è probabile che il dispositivo non è uno spettrofotometro vero). Gli spettrofotometri effettivamente leggono lo spettro completo della luce che ricevono, il che significa che producono informazioni molto più dettagliate. Questo significa che gli spettrofotometri difficilmente saranno ingannati dalle nuove tecnologie. La maggior parte degli spettrofotometri include anche una sorgente luminosa di riferimento, il che significa che possono illuminare (per esempio) la carta, in modo che possano essere utilizzati anche per "profilare" stampanti (in combinazione con inchiostro e carta).
Ora abbiamo bisogno di spiegare qualche concetto in più. 
Quindi, prima dirò quanto è veramente sciocco parlare (per esempio) di RGB 245/0/0. Immaginate di possedere una macchina, e di essere bloccati con il serbatoio vuoto. Utilizzando l'ultima goccia di benzina si cerca di arrivare a un distributore di benzina. Facciamo l'esempio in Europa, per cui dite al benzinaio "metto 40", in modo che lui riempia il serbatoio con 40 litri di benzina. Se qualcuno che vive negli Stati Uniti dice la stessa cosa ad un addetto di un distributore di benzina degli Stati Uniti, otterrà 40 galloni di benzina. Quindi verrebbe da dire "beh, hai detto bene, è RGB..."
Ma in realtà RGB non significa nulla. Dal momento che RGB dice solo che si stanno definendo i colori in tre componenti: rosso, blu e verde. Non dice nulla su quanto il rosso è rosso, quanto è verde il verde più verde, né blu il blu più intenso. Per definire questo, è stato creato il concetto di spazio di colore. Uno spazio di colore definisce la gamma di colori che un dispositivo è in grado di riprodurre, questo è anche chiamato il gamut di un dispositivo (la wikipedia inglese è più esaustiva a riguardo: http://en.wikipedia.org/wiki/Gamut). Il modello di colore RGB è definito nel modello di colore CIE 1931 XYZ. Si fa così perché lo spazio di colore XYZ comprende tutti i colori l'occhio umano medio può vedere. Tutti gli spazi di colore RGB sono definiti come un sottoinsieme dello spazio di colore XYZ. Ancora più importante, negli anni '90 due dei più importanti spazi di colore sono stati definiti: sRGB (da Microsoft e HP) [si può vedere anche la voce inglese di wikipedia: http://en.wikipedia.org/wiki/SRGB], e AdobeRGB (da, erhm ... beh ... Adobe) [idem: http://en.wikipedia.org/wiki/Adobe_RGB_color_space]. sRGB era più o meno definito come il medio comun denominatore della maggior parte dei display a prezzi accessibili. In quel tempo qualsiasi cosa non esplicitamente definita in uno spazio colore specifico era "definita" in sRGB. D'altra parte, AdobeRGB è stato definito per comprendere molti più colori, con lo scopo principale di coprire quanti più colori le soluzioni di stampa professionali potessero coprire.
 
Oltre a definire che l' RGB è in uno spazio di colori, c'è ancora il problema che l'occhio umano non avverte la luce in modo lineare, quindi abbiamo bisogno della correzione di gamma [http://en.wikipedia.org/wiki/Gamma_correction] per fare in modo che le immagini non appaiano come un pasticcio torbido. Di questi tempi un valore di gamma pari a 2.2 è universalmente accettato come standard per i display. Ci sono alcune avvertenze però. Possiedo un netbook con un LCD di basso costo che sembra avere una gamma nativa di visualizzazione di circa 1,8, il che significa che manca di contrasto.
E poi c'è la questione del punto di bianco, poiché non vi è nessun bianco "giusto". Per la maggior parte dei casi, un punto di bianco a 6500K (questo è vero almeno sia per sRGB che AdobeRGB) è buono come standard bianco neutro. L'aumento delle temperature in Kelvin dà un look blu ai display (cosa comune con i display portatili), e temperature più basse in Kelvin danno al display un aspetto più giallo.
E per ultimo c'è la questione della luminanza, che è un termine sciccoso per la luminosità. Se nel lavoro il colore è fondamentale, basta mettere lo schermo ad un livello confortevole (di solito non troppo brillante), se il vostro lavoro è critico per il colore, è cosa comune calibrare il monitor a 120cd/m2.
Detto questo, ci sono alcuni problemi comuni da affrontare. Come ho detto il risultato di caratterizzazione è un profilo ICC. I profili ICC di solito hanno l'estensione del file .Icc o su Windows .ICM. A seconda del software che ha generato il profilo, i profili possono essere nelle versioni 2 o 4. Almeno su Linux (ma anche per versioni precedenti di software proprietari), molti programmi non possono applicare correttamente le versioni 4 dei profili, quindi è meglio al momento procedere con la versione 2. Fortunatamente ArgyllCMS, la suite per il profiling open source genera la versione 2 dei profili di default. Ovviamente i profili ICC sono cross-platform, quindi il profilo generato sotto un sistema operativo può essere iportato senza problemi sotto linux, con l'unica attenzione legata al fatto che i colori dipendono sia dal monitor che dalla scheda video, quindi il profilo è dell'intera sezione grafica, non solo del monitor o della scheda video.
 
Inoltre, è necessario essere consapevoli che la maggior parte dei browers web non sono a conoscenza della gestione del colore (Safari e Firefox dalla versione 3.5 sono l'eccezione se correttamente configurati). Il W3C ha precisato che "il web" dovrebbe essere in sRGB . Ciò significa che si deve caricare immagini sui siti Web, solo in sRGB. Se si caricano immagini che non sono sRGB, non possono apparire come dovrebbero ai potenziali visitatori del sito (con risultati variabili a seconda del browser che usano). Un problema comune è dato dal fatto che la gente è solita caricare le immagini sul web in AdobeRGB, ricevendo reclami relativi al fatto che le immagini sembrano desaturate (in quanto il browser web sta assumendo che siano sRGB, anche se non lo sono).
 
Ora torniamo alla creazione dei profili per i display. Ci sono diversi modi per ottenere questo risultato su Linux. E' possibile farlo manualmente con ArgyllCMS , che è una suite di strumenti a riga di comando. Ci sono tuttavia alcuni front-end disponibili. I due più importanti sono dispcalGUI e GNOME Color Manager . Entrambi gli strumenti hanno il proprio target di destinazione.  DispcalGUI si rivolge a utenti avanzati che conoscono davvero la gestione del colore dentro e fuori. Mentre GNOME Color Manager si rivolge agli utenti entry level, e cerca di rendere tutto il più semplice possibile. Per essere franchi, se tutto in questo articolo non è veramente ovvio per voi, la cosa migliore è probabilmente GNOME Color Manager. GNOME Color Manager fornisce generalmente default sensati, e guida l'utente attraverso il processo tramite una procedura guidata.
Infine, alcune informazioni sulla anatomia generale dei profili dei display. I profili dei display, in particolare, hanno tre componenti importanti: VCGT,  TRC e la matrice XYZ. Il primo bit, il VCGT, spesso chiamato VideoLUT, è una tabella di ricerca che è stata progettata per correggere il bianco sullo schermo e le potenziali aberrazioni tra i canali R, G e B. Il VCGT viene caricato nel driver X11, e funziona solo se il driver è in modalità 24 bit. Quando il VCGT viene caricato in X11 (di solito nel login manager o appena dopo l'accesso) si dovrebbe vedere che i colori del display si spostano un po'. Il VCGT è la sola parte del profilo che risulta vantaggioso per tutte le applicazioni (per come viene applicato da X11), mentre le altre due parti devono essere attivamente applicate dall'applicazione (se configurata correttamente, ne riparleremo più avanti). Abbiamo quindi il TRC che fondamentalmente modella la curva di gamma dello schermo. E infine la matrice XYZ determina il massimo rosso, blu e verde per il particolare schermo. E' possibile avere l' XYZLUT in alternativa per ottenere una correzione più dettagliata, però non è raccomandabile, poiché non tutte le applicazioni applicano correttamente l' XYZLUT.
Dal momento che le ultime due parti (TRC + XYZ) devono essere applicate dalle applicazioni di gestione del colore, hanno bisogno di essere configurate correttamente. Per facilitare questa operazione c'è una cosa chiamata la specifica XICC, che consente un profilo "attivo" da caricare anche questo in X11. Questa procedura è ancora molto rudimentale, in quanto solo il file viene caricato in _ICC_PROFILE (che è fondamentalmente come una variabile d'ambiente), in modo che può essere facilmente caricato da applicazioni di gestione del colore. Invece, le applicazioni normalmente utilizzano la libreria LittleCMS su Linux per applicare TRC e matrice XYZ.
GNOME Color Manager (via GNOME Settings Daemon) assicura che il VCGT di un profilo viene caricato nel driver video X11, così come l'impostazione dell'atom _ICC_PROFILE. È possibile verificare se l'atomo _ICC_PROFILE è stato correttamente impostato utilizzando xprop:
 
  # Xprop-display: 0.0 14-len-root _ICC_PROFILE
  
E' noto che i driver proprietari (nVidia / ATI) possono causare problemi, e anche configurazioni dual head possono complicare le cose.
 
Ora, alcune applicazioni fanno la gestione del colore di default (assumendo che l'atom _ICC_PROFILE sia stato correttamente impostato), ad esempio Eye of GNOME e Darktable. Altre applicazioni sembrano ignorare l'atomo _ICC_PROFILE di default, come Firefox e GIMP.
Per verificare se il profilo viene applicato, è necessaria una buona immagine di test per valutare. Io consiglio vivamente SmugMug per questo. 
Nel caso particolare di GIMP, caricare l'immagine in GIMP, e andare in Edit e Preferenze, sezione Color Management. Poi selezionare la casella "Cerca di utilizzare il profilo del monitor di sistema" guardando l'immagine. Nella maggior parte dei casi si dovrebbe vedere un cambiamento (se no utilizzare xprop per controllare l'atom _ICC_PROFILE), e soprattutto si dovrebbe essere in grado di distinguere le chiazze grigie una dall'altra nella parte superiore.
 
Per ultima c'è la questione delle immagini che vengono editate su display non calibrati, cosa probabilmente vera per il 99% di tutte le immagini sul web. Se l'autore ha un display a basso contrasto e non gestito, è probabile che avrà aumentato il contrasto in una particolare immagine. Quando si dà un'occhiata a quella immagine su un monitor con i colori gestiti (e con il contrasto corretto), l'immagine può sembrare troppo contrastata. E il rovescio della medaglia, se l'autore aveva un display ad elevato contrasto non gestito, è che è probabile che abbia diminuito il contrasto in una particolare immagine. Quando si dà un'occhiata a quella immagine con un display profilato opportunamente (con un contrasto appropriato), può sembrare priva di contrasto. Quindi non è strano avere discrepanze tra configurazioni con i profili di colore gestiti o non gestiti.
Con questo testo spero di aver fatto luce sulla gestione del colore in generale, e su alcune delle questioni specifiche riguardanti il ​​suo utilizzo su Linux.
 

Nessun commento:

Posta un commento

Puoi commentare quello che vuoi, ed io sono libero di pubblicarlo o meno.