Home > Gestione digitale del colore > Tecnologia ICC
Profili ICC a tabella

I profili di input e display possono contenere tabelle (invece di matrici). I profili di output devono contenere tabelle.

Le tabelle possono essere:

  • da RGB a XYZ e viceversa (per esempio scanner);
  • da RGB a Lab e viceversa (per esempio monitor, scanner);
  • da CMYK a XYZ e viceversa (per esempio stampante);
  • da CMYK a Lab e viceversa (per esempio stampante).

I tag che fanno riferimento a tabelle sono i seguenti:

A2B0, A2B1, A2B2
fanno riferimento a tabelle da periferica a assoluto, nei tre intenti di rendering.

B2A0, B2A1, B2A2
fanno riferimento a tabella da assoluto a periferica, nei tre intenti di rendering.

Quanti e quali intenti di rendering sono supportati?

I profili a tabella di input (scnr) e display (mntr), secondo le specifiche ICC devono avere rispettivamente una e due tabelle (ma il costruttore del profilo può aggiungerne altre).

Nei profili di input (scnr) è richiesta un unico tag A2B0 che punta ad una unica tabella nella direzione da periferica a PCS: questa tabella, anche se non è esplicitamente detto dalle specifiche ICC, implementa generalmente un intento colorimetrico relativo (e quindi assoluto); ma alcuni costruttori implementano un intento percettivo, ed eventualmente altri tag.

Nei profili di display (mntr) sono richiesti due tag A2B0 e B2A0 che puntano a due tabelle, una nella direzione da periferica a PCS, l'altra nella direzione opposta: anche in questo caso ICC non specifica, ma è normale che queste tabelle implementino il rendering colorimetrico relativo (e assoluto). Alcuni costruttori possono inserire altri tag di tipo A2B e B2A.

Nei profili di output (prtr) come detto all'inizio di questa pagina, sono obbligatori tre tag, uno per ogni intento di rendering, in una direzione più altri tre nell'altra direzione. Ogni tag punta ad una tabella secondo questo schema:

  • da periferica a PCS:
    • A2B0: percettivo;
    • A2B1: colorimetrico relativo;
    • A2B2: saturazione;
  • da PCS a periferica:
    • B2A0: percettivo;
    • B2A1: colorimetrico relativo;
    • B2A2: saturazione.

Non è detto tuttavia che ogni tag punti ad una tabella diversa; quindi ci possono essere da una a tre tabelle in una direzione e da una a tre tabelle nell'altra direzione.

Il caso ideale è quello in cui ad ogni singolo tag corrisponde una diversa tabella. Ma il tag e la tabella ad esso associata sono due cose separate e se un profilo contiene un tag per un determinato intento di rendering, non è detto che contenga effettivamente una tabella con quell'intento, la stessa tabella può essere richiamata da più tag. Normalmente ci sono più tag che tabelle: bisogna controllare nel caso specifico.

Each of the first three intents are associated with a specific tag. The fourth intent, absolute colorimetry, is obtained by modifying the relative colorimetric intent tag based on the values which are in the mediaWhitePointTag. It is permissible to reference the same tag for all of these intents and to use the relative colorimetric intent tag when absolute colorimetry is specified. This decision is left to the profile builder.

and whole intents can be left out, though the standard requires that they are referenced, which may get you a different table instead of the one you asked for...

All that aside, do we want all eight tables in a printer profile? It works OK to create AbsCol on the fly, so do we want six tables in a printer profile? Who wants A2B2 inverse Saturation? Who supports it in printer profiles - nobody I know. And so we have to reason with ourselves, balancing what the spec offers with what it makes at all sense to combine, and what users expect ICC profiles to take up of space.

Per esempio, il profilo Euroscale Coated (versione 2) ha 5 tabelle effettive: manca quella diretta di saturazione (qui sotto).

Quante righe ha una tabelle?

Qui sopra, parte della finestra di Profile Manager dove sono visualizzate le informazioni sul profilo Euroscale Coated (versione 2).

Una tabella in un profilo, se fosse completa, dovrebbe contenere un mucchio di righe. Per esempio una tabella con tutte le terne RGB dovrebbe contenere oltre 16 milioni di righe (precisamente 16.777.216).

Non è pensabile che un profilo possa contenere una tabella (o più tabelle) con così tante righe: se ne mettono solo alcune.

Le specifiche ICC non impongono un numero di righe minimo, ma solo che

  1. The number of samples per axis must be the same for all channels.
  2. The samples must be evenly distributed along each axis.

Per la costruzione delle tabelle si usa il concetto di griglia.

Se per esempio una tabella da Lab a CMYK ha griglia 3x3x3 ciò significa che ha 27 righe (3 valori di L, per ognuno dei quali 3 valori di a, per ognuno dei quali 3 valori di b). Ecco una tabella con griglia 3x3x3:

L a b
0 -128 -128
0 -128 0
0 -128 127
0 0 -128
0 0 0
0 0 127
0 127 -128
0 127 0
0 127 127
50 -128 -128
50 -128 0
50 -128 127
50 0 -128
50 0 0
50 0 127
50 127 -128
50 127 0
50 127 127
100 -128 -128
100 -128 0
100 -128 127
100 0 -128
100 0 0
100 0 127
100 127 -128
100 127 0
100 127 127

Una tabella con griglia 32 x 32 x 32 ha 32768 righe. Per esempio Heidelberg PrintOpen 3.0 crea profili con tabelle con griglia 32x32x32.

Le tabelle per le conversioni da periferica a PCS non necessariamente devono avere la stessa griglia delle tabelle inverse (da PCS a periferica).

Le tabelle dirette del profilo Euroscale Coated, come si vede dalla schermata di Profile Manager qui sopra, hanno una griglia di 9 punti, mentre quelle inverse di 33.

Con quanti bit sono rappresentati i dati?
I numeri in una tabella possono essere a 8 o a 16 bit.

I dati a 8 bit sono numeri interi da 0 a 255 (nel caso delle coordinate a e b di Lab, per avere il valore reale bisogna togliere 128).

I dati a 16 bit sono numeri con la virgola: l'intervallo tra un numero intero e l'altro è diviso in 255 parti. I numeri RGB per esempio, in 16 bit, iniziano così:

0.00000 0.00392 0.00784 0.01176 0.01569 ... 0.99608 1.00000 1.00392 ...

La L di Lab in 16 bit inizia così

0.00000 0.00154 0.00308 0.01845 0.02461 ... 0.39062 0.39216 0.39369

Il tag A2B0 nel profilo Euroscale Coated, visto con ProfileInspector.
Da questa finestra di ProfileInspector si può vedere che la tabella A2B0 del profilo Euroscale Coated, cioè la tabella da CMYK a Lab ha una griglia di 9x9x9x9 a 16 bit. Nella successiva finestra, qui sotto, i quattro canali CMYK sono raffigurati a sinistra, ognuno con i 9 punti di griglia. Si può posizionare ognuno dei quattro termometri su un punto di griglia e leggere a destra il risultato in due byte esadecimali.

In questo caso il colore è

C: 3/8 di 100, cioè 37.5
M: 5/8 di 100, cioè 62.5
Y: 1/8 di 100, cioè 12.5
K: 0

e corrisponde ai valori

L: 34764, cioè 53.25
a: 40785, cioè 23.3164
c: 29294, cioè -13.5703

La tabella di conversione corrispondente al tag A2B0 nel profilo Euroscale Coated, nell'interpretazione di ProfileInspector.
Oltre alla tabella di conversione il tag ha anche ha anche delle tabelle di input e output che sono simili alle tabelle gamma del monitor, e una matrice che non viene quasi mai usata (e in tal caso ha una diagonale di 1 e il resto è 0):

Home | Commenti a Mauro Boscarol | Ultimo aggiornamento 25 agosto 2001