colore digitale blog

Il blog di Mauro Boscarol sulla gestione digitale del colore dal 1998

Nella serie PostScript e suoi derivati

PostScript: gestione colore

La prima versione di PostScript può descrivere solo colori a scala di grigi e colori RGB, senza profilo (device dependent).

Da PostScript Level 2 (che precede ColorSync e le specifiche ICC) il linguaggio può descrivere anche colori CMYK. Non esiste ancora il concetto di “profilo colore” (intendo profilo colore PostScript, non profilo colore ICC che PostScript non ha mai supportato e mai supporterà) e le modalità di colore sono indicate con il prefisso Device, rispettivamente

  • DeviceRGB;
  • DeviceCMYK;
  • DeviceGray.

Per questi colori (che sono senza profilo) PostScript prevede conversioni con algoritmi predefiniti: l’algoritmo più utilizzato, quello per la conversione da RGB a CMYK, è l’algoritmo “1 meno” descritto nel manuale PostScript Level 2. Si tratta di un modo grossolano per convertire da RGB a CMYK. In mancanza di altro, come ultima risorsa, PostScript ricorre ancor oggi a questo metodo:

Si parte dai valori RGB normalizzati tra 0 e 1 (cioè gli usuali valori tra 0 e 255 divisi per 255):

  1. c = 1 - R;
  2. m = 1 - G;
  3. y = 1 - B;
  4. k = min (c, m, y)
  5. C = min (1, max (0, c - UCR(k)));
  6. M = min (1, max (0, m - UCR(k)))
  7. Y = min (1, max (0, y - UCR(k)));
  8. K = min (1, max (0, BG(k)))

c, m, y e k sono valori intermedi, k in particolare è la parte di nero che può essere rimossa dagli altri colori. C, M, Y e K sono i valori finali, normalizzati tra 0 e 1 (per avere i valori percentuali si moltiplica per 100).

UCR (Under Color Removal) e BG (Black Generation) sono due procedure presenti nel rip. La prima può ritornare un numero tra 0 e k, o addirittura negativo. La seconda un numero tra 0 e k, o anche maggiore.

Da Level 2, PostScript contiene un proprio sistema di descrizione del colore e da Level 3 (più precisamente dalla versione 2016 del Level 2) ha un proprio sistema di gestione del colore completo di profili, intenti di rendering e motore di colore. Questo sistema, detto PostScript Color Management (PCM), agisce come è intuibile solo in fase di stampa, precisamente all’interno di un rip PostScript.

Il sistema di gestione colore di PostScript è stato il primo sistema di questo tipo ad essere implementato per l’uso con sistemi non dedicati (cioè con personal computer).

La conversione di colore in PCM può essere effettuata solo se sono presenti un profilo di origine e uno di destinazione. Il profilo di origine (che converte da coordinate di periferica a coordinate colorimetriche) è specificato nel programma PostScript che viene caricato nel rip; il profilo di destinazione (che converte da coordinate colorimetriche a coordinate di periferica) è il profilo della stampante, che risiede nel RIP della stampante.

In PCM dunque, tra profilo di origine e profilo di destinazione vi è una naturale separazione: il primo sta nel programma PostScript, il secondo sta nel rip stesso. Per questo motivo il profilo PCM è unidirezionale:

  • il profilo di origine, che sta nel programma PostScript e converte da coordinate di periferica a coordinate colorimetriche, è detto color space array, CSA;
  • il profilo di destinazione, che sta nel rip e converte da coordinate colorimetriche a coordinate di periferica, è detto color rendering dictionary, CRD.

CSA e CRD esistono solo come istruzioni del linguaggio PostScript, non come file, e sono espressi in termini dello spazio colorimetrico XYZ CIE 1931. In PostScript, i colori che fanno riferimento ad un profilo PostScript sono detti CIEBased (perché sono basati sullo spazio CIE XYZ).

PostScript Color Management funziona così:

  1. Le istruzioni PostScript vengono trasmesse al rip per l’interpretazione e la stampa successiva, e nel flusso dei dati (printing stream) viene inserito anche il (o i) CSA che contiene (o contengono) le informazioni per convertire i dati di colore (per esempio RGB) dallo spazio di origine allo spazio XYZ.
  2. Nel rip risiede il CRD, il profilo che contiene le informazioni per trasformare da coordinate XYZ a percentuali di inchiostro di quella stampante.
  3. Quando le istruzioni PostScript con il relativo CSA arrivano al rip, l’interprete PostScript (che funziona come motore di colore) converte i dati di colore (per esempio RGB) in XYZ e, sulla base del CRD, esegue la procedura di rendering programmata, che converte i colori da XYZ in percentuali di inchiostri della stampante.

Il modo in cui tale conversione viene effettuata è definito dal programmatore del rip usando quelle che in PostScript sono dette color rendering procedures. Un CRD può contenere un unico intento di rendering.

Color Space Array (CSA)

Il CSA ha le informazioni per tradurre i dati di colore dallo spazio di origine allo spazio XYZ (analogamente alla parte “da periferica a spazio” di un profilo ICC). Viene inserito nel flusso di stampa PostScript nel momento in cui un lavoro grafico viene stampato oppure risiede in un file PostScript (.ps), in un file EPS (.eps), in un file DCS (.dcs) o in un file prestampa. Nessun altro formato grafico supporta i CSA (PDF però supporta una descrizione molto simile).

Un CSA Level 2 può essere a 1 o 3 canali, è sempre a matrice (cioè basato su un algoritmo) e può essere utilizzato per definire un grande numero di spazi colore, tutti quelli che si possono esprimere con profili ICC e molti altri (in effetti non molto usati).

Un CSA può indicare che i valori di colore sono espressi in coordinate assolute (per esempio Lab o XYZ, con un certo punto bianco) o in un particolare spazio RGB (che viene dettoCalibratedRGB per distinguerlo da DeviceRGB) o altro (per esempio YIQ, lo standard televisivo americano NTSC e quello europeo PAL e SECAM YUV).

In PostScript 3 sono supportati anche CSA a 3 e 4 canali a tabella (che possono essere usati per descrivere per esempio per lo spazio Luv, per RGB e CMYK a tabella, CalibratedCMYK).

Per chi conosce i profili ICC faccio notare che un CSA è analogo ad un profilo ICC di scanner oppure a metà profilo ICC di monitor o di stampante, precisamente alla parte “a PCS”, la parte utilizzata quando il profilo è di origine.

Color Rendering Dictionary (CRD)

Un CRD è analogo alla parte “da PCS” di un profilo ICC di stampante, cioè alla parte utilizzata quando il profilo agisce come destinazione.

Un CRD contiene un solo intento di rendering. Se si desiderano diversi intenti di rendering è necessario avere diversi CRD. (Un profilo ICC può invece contenere fino a quattro intenti di rendering.)

Nel prossimo post c’è una tabella riassuntiva dei profili PostScript.

Visitato 124 volte, negli ultimi 7 giorni 1 visite

Torna all'indice di PostScript e suoi derivati

Mauro Boscarol

3/10/2008 alle 13:12

Parole chiave , ,

Visitato 124 volte, negli ultimi 7 giorni 1 visite

Vuoi fare un commento a questo post?

Devi essere collegato per scrivere un commento.