Lo stratagemma della spugna

In questo primo articolo del 2015 affronteremo un argomento relativamente poco discusso e un po’ misterioso: gli intenti di rendering. La “spugna” del titolo non è il ben noto strumento di Photoshop per applicare localmente una saturazione (o desaturazione): in questo caso, la spugna è un umile modello che entrerà in gioco tra breve. Prima di tutto cerchiamo di capire cosa siano gli intenti di rendering e a cosa servano. Sappiamo che esistono gli spazi colore, come ad esempio le infinite varianti di RGB, e sappiamo che sono descritti dai profili colore. Sappiamo che possiamo convertire un’immagine da uno spazio colore a un altro (ad esempio, da ProPhoto RGB a sRGB, oppure da un RGB qualsiasi a un opportuno spazio colore CMYK) e che l’operazione può essere più o meno indolore. L’intensità del dolore dipende dall’estensione dello spazio di destinazione, ovvero dello spazio nel quale vogliamo convertire il nostro documento. Questa estensione (termine molto libero, in questo caso) ha un nome ben noto: gamut.

Il gamut di sRGB e di Coated FOGRA39 a confronto: lo spazio CMYK è più esteso di quello RGB in certe aree.
Il gamut di sRGB e di Coated FOGRA39 a confronto: lo spazio CMYK è più esteso di quello RGB in certe aree.

Al di là dei tecnicisimi, il gamut è l’estensione cromatica della tavolozza che abbiamo a disposizione in un certo spazio colore. Spesso si parla del gamut ridotto di CMYK rispetto a RGB: questo non è del tutto corretto, innanzitutto perché non specifichiamo quale variante di CMYK e quale variante di RGB stiamo considerando, e secondariamente perché certi colori riproducibili in CMYK non lo sono in certi spazi RGB, come sRGB. Quindi non dobbiamo pensare a CMYK come “più piccolo” in quanto totalmente inglobato in RGB. Nell’immagine a fianco vediamo che lo spazio colore CMYK descritto dal profilo Coated FOGRA39 (volume a colori) è più esteso in certe aree di quello descritto da sRGB (volume “trasparente”). Si tratta pertanto di due volumi irregolari che si intersecano in maniera complessa, non di un volume strettamente contenuto in un altro.

Quando parliamo di colori fuori gamut ci riferiamo sempre ai colori eventualmente presenti nello spazio sorgente, quello dal quale partiamo, che non sono disponibili nello spazio di destinazione, quello al quale arriviamo. Sempre riferendoci alla figura precedente, i colori fuori gamut in questo caso sono tutti quei colori presenti in sRGB che cadono nelle aree puramente trasparenti, che non si intersecano con lo spazio colore CMYK.

Non tutte le problematiche legate ai colori fuori gamut sono ugualmente severe.
Non tutte le problematiche legate ai colori fuori gamut sono ugualmente severe.

Gli intenti di rendering sono le regole di conversione dei colori fuori gamut: che naturalmente devono essere convertiti in qualcosa, anche se il risultato non sarà accurato. Talvolta la differenza tra il colore originale e quello convertito sarà minima, al limite dell’indistinguibilità; altre volte sarà clamorosa. Nell’esempio a fianco, i due riquadri di sinistra contengono colori sRGB descritti dalle terne riportate all’interno degli stessi; quelli di destra, la loro traduzione nello spazio CMYK definito dal solito profilo Coated FOGRA39. Si notano differenze in entrambi i casi, ma la differenza tra i due riquadri superiori è di gran lunga inferiore rispetto a quella tra i riquadri inferiori. La minore o maggiore discrepanza tra il colore originale e la sua versione convertita dipende da quanto il colore originale cade all’esterno della tavolozza disponibile nello spazio colore di destinazione. Ovvero, in parole povere, certi colori nello spazio sorgente sono più distanti dal limite del gamut di destinazione di altri.

Per introdurre il discorso sugli intenti di rendering bisogna innanzitutto dire che ne vengono definiti quattro: Percettivo, Saturazione, Colorimetrico relativo, Colorimetrico assoluto. Una buona notizia: due di questi non si usano praticamente mai, perlomeno in maniera diretta. Si tratta di Saturazione e Colorimetrico assoluto. Il primo mira a produrre i colori più saturi possibili, a scapito dell’accuratezza della tinta e della luminosità degli stessi, ed è inutile nella misura in cui vorremmo mantenere laddove possibile un minimo di coerenza tra l’originale e la versione convertita. Il secondo in realtà si usa spesso, ma quasi mai in una conversione: è l’intento di rendering che ci permette di avere una soft-proof, ovvero una simulazione a schermo di un risultato di stampa, quando attiviamo la simulazione del colore della carta. Restano da discutere quindi i due intenti di rendering restanti: Percettivo e Colorimetrico relativo. Prima però bisogna chiarire un fatto spesso oggetto di malintesi.

Non è affatto vero che la conversione da un generico spazio colore a uno con un gamut più ristretto sia sempre problematica. Questo perché un’immagine non contiene di norma tutti i colori disponibili nello spazio colore sorgente: se fotografiamo in studio una modella con un abito dai colori caldi e uno sfondo neutro, la nostra immagine non conterrà nessun colore che ricada nell’area del blu a meno che il soggetto non abbia gli occhi azzurri; ma certamente in nessun modo avremo blu brillanti, così come non avremo verdi intensi. In altri termini, ogni immagine ha un suo gamut, ovvero una sua tavolozza composta da un certo numero di colori disponibili nello spazio colore in cui vive: ma non da tutti i colori.

Gamut d'immagine a confronto. In alto a sinistra: immagine originale, RGB. In alto a destra: immagine originale, Lab. In basso a sinistra: immagine parzialmente desaturata, RGB. In basso a destra: immagine completamente desaturata, RGB.
Gamut d’immagine a confronto. In alto a sinistra: immagine originale, RGB. In alto a destra: immagine originale, Lab. In basso a sinistra: immagine parzialmente desaturata, RGB. In basso a destra: immagine completamente desaturata, RGB.

Le quattro immagini visibili qui sopra (cliccare per ingrandire) sono state ottenute con Color Inspector 3D, un plug-in gratuito per ImageJ, un software open-source di analisi dell’immagine scritto in Java che può girare su qualsiasi piattaforma. L’immagine in alto a sinistra è l’originale di un ritratto eseguito in studio, e lo sciame di punti visibili nel cubo immediatamente alla sua destra è il suo gamut relativo allo spazio RGB di partenza (sRGB, in questo caso). Il fatto che la nuvola di punti non invada completamente RGB è la prova evidente che alcuni colori dello spazio sorgente non sono utilizzati nell’immagine. In alto a destra, la stessa immagine con il gamut espresso relativamente allo spazio Lab. In basso a sinistra, l’immagine è stata parzialmente desaturata: il gamut, sempre espresso rispetto a sRGB, si è chiaramente ridotto. Infine, in basso a destra, l’immagine totalmente desaturata: il suo gamut in sRGB si riduce a una linea che attraversa diagonalmente il cubo che rappresenta l’estensione dello spazio. Non ci sono colori, se non quelli acromatici – bianco, nero e i grigi intermedi.

Questo ci suggerisce che se un’immagine è costruita in base a una tavolozza di colori che non comprende colori fuori gamut rispetto allo spazio di destinazione, non riscontreremo nessun problema nella conversione. Una ricaduta pratica: si dice spesso che un originale ProPhoto RGB soffre nella conversione a sRGB per il Web. Non è vero in generale: soffre soltanto se contiene colori che sRGB non può riprodurre, altrimenti la conversione è innocua. Dobbiamo sempre tenerlo presente, perché possono essere presenti dei colori fuori gamut in un originale – ma anche no.

I gamut d’immagine visibili in figura sono figure geometriche estremamente complesse: dal momento che certi colori non sono presenti, non solo saranno molto irregolari, ma anche pieni di buchi, cavi all’interno e praticamente impossibili da riprodurre con una formula matematica concisa. Sono, in pratica, delle spugne. Il modello di conversione che ho in mente farà senz’altro rabbrividire i puristi, ma penso che sia molto efficace per comprendere come funzionano gli intenti di rendering senza tecnicismi complessi. Dal punto di vista di questo modello, convertire un’immagine da uno spazio colore a un’altro è come infilare una spugna in un recipiente.

La spugna è il gamut d'immagine, il bicchiere lo spazio colore di destinazione. Se la spugna è troppo grande, abbiamo un problema.
La spugna è il gamut d’immagine, il bicchiere lo spazio colore di destinazione. Se la spugna è troppo grande, abbiamo un problema.

Il problema è esemplificato nel disegno a fianco. La spugna rappresenta il gamut d’immagine, ovvero l’insieme di colori che l’immagine contiene. Nello spazio sorgente, nessun problema: quei colori sono parte di quelli disponibili, e sono perfettamente definiti. Può però succedere che lo spazio destinazione (il bicchiere, nel disegno) sia troppo piccolo in alcune zone per contenere tutti i colori dell’immagine. I due spicchi di spugna che escono dal bicchiere rappresentano i colori fuori dal gamut dello spazio di destinazione, che non possono essere codificati se non in maniera approssimativa. Davanti a un problema come questo, non abbiamo molte alternative. La prima è quella di comprimere le parti in eccesso della spugna, appiattendo i colori che non possono essere infilati nel bicchiere. La seconda è quella di comprimere tutta la spugna, schiacciandola in modo che entri nel bicchiere: i colori fuori gamut vengono in qualche modo convinti a rientrare nei ranghi, ma con un prezzo da pagare come vedremo tra breve.

Opzione A: tagliare la spugna. Ovvero, intento Colorimetrico relativo.
Opzione A: tagliare la spugna. Ovvero, intento Colorimetrico relativo.

Raffigurata a fianco, la prima opzione: si comprimono le parti in eccesso della spugna e la nuova spugna, un po’ mutilata, entra nel bicchiere. I colori fuori gamut sono scomparsi, e fanno una fine ingloriosa ma sensata in questo contesto: vengono approssimati con i colori più esterni disponibili nel gamut. In pratica, se vogliamo vederla dal punto di vista geometrico, i colori dei due spicchi di spugna in eccesso visti nella figura precedente vengono codificati con i colori che cadono in corrispondenza dei tagli, sulla superficie del bicchiere. Il risultato, naturalmente, è che i colori fuori gamut vengono schiacciati e compressi facendo perdere all’immagine contrasto (sia cromatico che di luminosità) nei pixel che popolano le aree fuori gamut. In queste aree, naturalmente, i colori risulteranno falsati – poco o tanto, a seconda dell’estensione del problema. Questo è ciò che fa l’intento di rendering Colorimetrico relativo. Quindi, ogni volta che effettuiamo una conversione con questo intento, se ci sono colori fuori gamut nei dintorni Photoshop riduce alla ragione le parti critiche della spugna, senza troppi complimenti. C’è però un bonus: i colori che originariamente ricadevano nel gamut dello spazio di destinazione restano intatti. In quelle aree, nessuna perdita e nessun danno.

Opzione B: comprimere la spugna. Ovvero, intento Percettivo.
Opzione B: comprimere la spugna. Ovvero, intento Percettivo.

La seconda opzione consiste nello sfruttare la natura della spugna e comprimerla tutta in modo da rimpicciolirla. È illustrata nella figura a fianco. In questa operazione non viene effettuata nessuna operazione locale nel volume che contiene i colori fuori gamut, e questo si traduce in un minore appiattimento delle aree interessate dal problema. La perdita di contrasto sarà meno severa e si limiteranno i fenomeni di posterizzazione e perdita di dettaglio che sempre caratterizzano le conversioni di colori che presentano problemi seri rispetto al gamut di destinazione. Questo ha però un prezzo: la spugna è un oggetto elastico, e viene compressa tutta – non soltanto le parti fuori gamut. Questo significa che anche i colori non problematici in partenza si desatureranno inesorabilmente. Ovvero, questa conversione è più gentile sui colori problematici, ma meno gentile su quelli innocenti. Questo è l’intento di rendering Percettivo. La gravità della desaturazione nella conversione con intento Percettivo è variabile. In certi casi è estremamente palese, in altri quasi trascurabile. La figura utilizzata per illustrare il modello va naturalmente intesa come schematica e non va presa troppo letteralmente. Va anche detto che la definizione degli intenti di rendering all’interno dei profili colore non è granitica e uniforme come ci si aspetterebbe. Ho visto personalmente profili comportarsi in maniera divertente e fornire un risultato simile a quello che ci si aspetterebbe da un intento Saturazione quando utilizzati in Percettivo, e altre cose del genere. Quindi suggerirei sempre di verificare a priori, con il caro e vecchio occhio, quale risultato ci sembra migliore.

Spesso si sente anche dire che l’intento di rendering Colorimetrico relativo è più adatto alla grafica e quello Percettivo alla fotografia: in un attacco della mia naturale allergia per tutto ciò che è generalizzante, rispondo che è un’affermazione infondata. Solo la natura del documento che stiamo per convertire, grafico o fotografico che sia, può suggerire la strada migliore. Un criterio potrebbe essere quello dell’importanza delle aree cromatiche fuori gamut nel contesto generale: se sono critiche e devono mantenere dettaglio, l’intento Percettivo è probabilmente un punto di partenza migliore. Se non sono critiche e sono magari sfocate sullo sfondo o comunque irrilevanti, l’intento Colorimetrico relativo potrebbe fare al caso nostro.

Da ricordare inoltre che non tutti i profili contemplano la possibilità di convertire secondo tutti gli intenti di rendering: alcuni consentono l’utilizzo del solo intento Colorimetrico relativo, che rimane il più diffuso. Questo risulta leggermente problematico, perché in Photoshop l’assenza degli intenti all’interno del profilo che definisce lo spazio colore destinazione non viene segnalata: possiamo convertire anche in Colorimetrico assoluto, se vogliamo, e se l’intento non c’è ricadremo in Colorimetrico relativo senza avvertimenti. Molte volte il problema, se si verifica, è abbastanza irrilevante, ma talvolta no.

Personalmente resto più affezionato a una tecnica che permette molto più controllo: la manipolazione delle aree fuori gamut prima della conversione. Un’opportuna riduzione di saturazione e/o di luminosità mirata in queste aree permette di far rientrare nel gamut di destinazione i colori in maniera controllata, o perlomeno di ridurre il problema fino al punto in cui è trascurabile. In mancanza di questo, però, la scelta dell’intento di rendering giusto può essere una cura, anche se spesso risulta palliativa.

Per ora, buon 2015 a tutti, anche se un po’ in ritardo!

MO

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *