Everything on this page is from ICC.1:2022-05 (profile version 4.4.0.0, also ISO 15076-1), clauses 6.3 and 6.4 and Annexes A to H, read from the specification at color.org on 13 November 2026. The encodings of PCS values (Tables 11 to 16) are on Numbers and encodings. A decimal comma in the specification is written as a point here, and numbers are not grouped with spaces.
Colorimetric specification
The PCS adopted white has the chromaticity of the D50 illuminant of ISO 3664 (clause 6.3.1). Measurement parameters for the PCS and for every other colour space in the specification are based on ISO 13655. The colorimetry is assumed to contain no flare or other defect caused by the instrument and its illumination, but to include the surface reflection that the measurement geometry normally gives (6.3.2.1).
PCS values are media-relative: tristimulus values are relative to the values of the
wtpt mediaWhitePointTag. For the
perceptual intent the medium used for the media-relative calculation is the reference medium
below.
Media-relative and ICC-absolute colorimetry
Clause 6.3.2.2, Equations (1) to (6). Xr, Yr, Zr are the
media-relative values (PCSXYZ); Xa, Ya, Za the ICC-absolute
values (nCIEXYZ); Xmw, Ymw, Zmw the nCIEXYZ values of the media
white point from the wtpt tag; Xi, Yi, Zi the
PCSXYZ values of the PCS white point (0.9642, 1.0, 0.8249, 6.3.4.3).
| Direction | Equations |
|---|---|
| ICC-absolute to media-relative | (1) Xr = Xa · Xi / Xmw (2) Yr = Ya · Yi / Ymw (3) Zr = Za · Zi / Zmw |
| Media-relative to ICC-absolute | (4) Xa = Xr · Xmw / Xi (5) Ya = Yr · Ymw / Yi (6) Za = Zr · Zmw / Zi |
When values are encoded as PCSLAB they are computed from the PCSXYZ values as in Annex A, with X/Xn replaced by Xr/Xi (or Xa/Xmw), and the same for Y and Z (6.3.2.3, Equations (7) to (9)).
The perceptual reference medium
Perceptual rendering maps the colours of a source to suit a destination medium. So that a source profile and a destination profile can be made separately, the specification defines a reference medium (PRM) and its viewing conditions; the source profile renders to it and the destination profile renders from it (6.3.3.1). Perceptual rendering remains, in the specification’s words, a proprietary art, so only the white point, the black point and the viewing conditions of the PRM are defined precisely; its gamut is a fuzzy target that need not be matched exactly.
Characteristics (6.3.3.2)
The reference medium is a hypothetical print on a substrate specified to have a neutral reflectance of 89 %. The darkest printable colour on it has a neutral reflectance of 0.30911 %, which is 0.34731 % of the substrate reflectance. These are the white point and the black point of the reference medium.
| Property | Value |
|---|---|
| Substrate (white) reflectance | 89 % |
| Black reflectance | 0.30911 % (0.34731 % of the substrate reflectance) |
| Linear dynamic range (note to 6.3.3.2) | 287.9 : 1 |
| Density range (note to 6.3.3.2) | 2.4593 |
| Black point in PCSLAB and PCSXYZ | L* 3.1373, a* 0, b* 0; X 0.003357, Y 0.003479, Z 0.002869 (Table 16, on Numbers and encodings) |
Adjusting an older perceptual transform to this black point
Perceptual transforms made for versions before 4.0 often use zero for black and so do not conform. The specification says to scale the black point as needed, leave the white point unchanged and map all other values linearly in XYZ, with these equations (6.3.4.3):
Xp = Xt · (1 − Xb / Xi) + Xb
Yp = Yt · (1 − Yb / Yi) + Yb
Zp = Zt · (1 − Zb / Zi) + ZbXt, Yt, Zt are the original PCSXYZ values in the transform; Xb, Yb, Zb the PCS perceptual black point (0.003357, 0.003479, 0.002869); Xi, Yi, Zi the PCS white point (0.9642, 1.0000, 0.8249); Xp, Yp, Zp the adjusted values.
The perceptual reference medium gamut (PRMG)
Perceptual and saturation transforms may optionally use the reflection colour gamut of
ISO 12640-3, given in Table 9, as the PRMG. It is only an optional target; these transforms
should not clip to it. A profile that aims at it says so with the
rig0 and
rig2 tags, whose value is the signature
prmg (9.2.37, 9.2.46).
Table 9: maximum chroma values C*ab
The maximum C*ab for each hue angle hab (rows, degrees) and each L* (columns). The L*, C* and h values are relative to the reference medium white, which has a reflectance factor of 0.89. To calculate values relative to a perfect reflecting diffuser, convert the table values to X, Y and Z, scale X, Y and Z by 0.89, and convert back. The values are calculated for illuminant D50 and the CIE 1931 2° standard observer. If finer resolution is needed, linear interpolation of the quoted data is normally adequate.
| hab | 3.1373 | 5 | 10 | 15 | 20 | 25 | 30 | 35 | 40 | 45 | 50 | 55 | 60 | 65 | 70 | 75 | 80 | 85 | 90 | 95 | 100 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 0 | 11 | 26 | 39 | 52 | 64 | 74 | 83 | 91 | 92 | 91 | 87 | 82 | 75 | 67 | 57 | 47 | 37 | 25 | 13 | 0 |
| 10 | 0 | 10 | 24 | 38 | 50 | 62 | 73 | 82 | 90 | 92 | 91 | 87 | 82 | 75 | 67 | 58 | 48 | 37 | 26 | 13 | 0 |
| 20 | 0 | 10 | 23 | 37 | 50 | 62 | 73 | 84 | 93 | 94 | 94 | 90 | 85 | 78 | 70 | 60 | 50 | 39 | 27 | 14 | 0 |
| 30 | 0 | 9 | 22 | 35 | 48 | 61 | 74 | 86 | 98 | 100 | 101 | 96 | 90 | 83 | 75 | 65 | 54 | 42 | 30 | 15 | 0 |
| 40 | 0 | 8 | 21 | 34 | 47 | 60 | 73 | 83 | 93 | 97 | 101 | 99 | 97 | 90 | 83 | 73 | 61 | 47 | 34 | 17 | 0 |
| 50 | 0 | 8 | 20 | 32 | 43 | 55 | 66 | 77 | 88 | 95 | 99 | 101 | 100 | 98 | 92 | 85 | 72 | 56 | 40 | 20 | 0 |
| 60 | 0 | 7 | 17 | 27 | 37 | 47 | 57 | 67 | 76 | 84 | 91 | 96 | 100 | 102 | 103 | 98 | 90 | 72 | 51 | 26 | 0 |
| 70 | 0 | 6 | 16 | 25 | 34 | 43 | 52 | 60 | 68 | 76 | 83 | 90 | 96 | 100 | 104 | 107 | 109 | 100 | 74 | 37 | 0 |
| 80 | 0 | 6 | 15 | 23 | 32 | 40 | 48 | 57 | 64 | 71 | 78 | 85 | 91 | 97 | 103 | 107 | 110 | 113 | 110 | 70 | 0 |
| 90 | 0 | 6 | 14 | 22 | 30 | 39 | 47 | 55 | 62 | 68 | 75 | 82 | 88 | 95 | 101 | 106 | 112 | 117 | 120 | 123 | 0 |
| 100 | 0 | 6 | 14 | 22 | 30 | 38 | 46 | 54 | 61 | 68 | 74 | 81 | 88 | 94 | 100 | 106 | 109 | 112 | 112 | 92 | 0 |
| 110 | 0 | 6 | 14 | 22 | 31 | 39 | 47 | 55 | 63 | 69 | 76 | 83 | 89 | 96 | 100 | 103 | 106 | 107 | 102 | 75 | 0 |
| 120 | 0 | 6 | 15 | 24 | 32 | 41 | 49 | 58 | 66 | 73 | 80 | 87 | 93 | 98 | 101 | 102 | 99 | 91 | 73 | 50 | 0 |
| 130 | 0 | 6 | 16 | 25 | 35 | 44 | 54 | 63 | 72 | 80 | 87 | 93 | 97 | 101 | 99 | 94 | 86 | 73 | 56 | 34 | 0 |
| 140 | 0 | 7 | 18 | 28 | 38 | 48 | 57 | 67 | 77 | 86 | 95 | 98 | 101 | 97 | 93 | 85 | 75 | 61 | 44 | 26 | 0 |
| 150 | 0 | 7 | 19 | 30 | 40 | 51 | 62 | 72 | 83 | 92 | 97 | 99 | 96 | 91 | 85 | 76 | 66 | 52 | 37 | 22 | 0 |
| 160 | 0 | 7 | 20 | 32 | 44 | 56 | 68 | 80 | 92 | 96 | 99 | 97 | 92 | 87 | 79 | 70 | 59 | 46 | 33 | 19 | 0 |
| 170 | 0 | 8 | 20 | 32 | 43 | 53 | 64 | 75 | 85 | 91 | 96 | 93 | 89 | 82 | 75 | 65 | 55 | 42 | 30 | 17 | 0 |
| 180 | 0 | 8 | 20 | 31 | 41 | 52 | 62 | 72 | 81 | 87 | 92 | 90 | 86 | 79 | 71 | 61 | 52 | 40 | 28 | 15 | 0 |
| 190 | 0 | 8 | 20 | 30 | 40 | 50 | 60 | 68 | 76 | 82 | 87 | 85 | 82 | 76 | 69 | 60 | 50 | 39 | 27 | 14 | 0 |
| 200 | 0 | 8 | 20 | 30 | 38 | 47 | 56 | 63 | 70 | 76 | 82 | 81 | 77 | 72 | 66 | 58 | 49 | 38 | 27 | 14 | 0 |
| 210 | 0 | 8 | 20 | 29 | 37 | 46 | 53 | 60 | 66 | 73 | 79 | 80 | 75 | 70 | 64 | 57 | 49 | 38 | 27 | 14 | 0 |
| 220 | 0 | 8 | 20 | 29 | 37 | 45 | 52 | 59 | 65 | 71 | 76 | 75 | 72 | 68 | 63 | 56 | 48 | 38 | 27 | 14 | 0 |
| 230 | 0 | 9 | 20 | 29 | 38 | 46 | 53 | 59 | 65 | 70 | 75 | 73 | 71 | 66 | 61 | 54 | 46 | 36 | 26 | 13 | 0 |
| 240 | 0 | 10 | 22 | 31 | 40 | 48 | 55 | 61 | 67 | 71 | 74 | 70 | 66 | 61 | 56 | 49 | 41 | 32 | 23 | 12 | 0 |
| 250 | 0 | 11 | 24 | 34 | 43 | 51 | 59 | 65 | 70 | 73 | 71 | 68 | 63 | 58 | 52 | 45 | 38 | 30 | 21 | 11 | 0 |
| 260 | 0 | 14 | 27 | 38 | 48 | 57 | 64 | 69 | 73 | 73 | 70 | 66 | 61 | 56 | 50 | 43 | 35 | 28 | 20 | 10 | 0 |
| 270 | 0 | 17 | 32 | 45 | 55 | 65 | 70 | 75 | 75 | 73 | 70 | 66 | 61 | 55 | 49 | 42 | 34 | 27 | 19 | 10 | 0 |
| 280 | 0 | 21 | 42 | 55 | 68 | 75 | 81 | 80 | 79 | 76 | 72 | 67 | 61 | 55 | 49 | 41 | 34 | 26 | 18 | 9 | 0 |
| 290 | 0 | 26 | 52 | 68 | 83 | 86 | 89 | 87 | 84 | 80 | 75 | 69 | 63 | 57 | 50 | 42 | 35 | 27 | 18 | 10 | 0 |
| 300 | 0 | 25 | 69 | 82 | 95 | 94 | 93 | 91 | 88 | 85 | 79 | 73 | 66 | 59 | 52 | 44 | 36 | 28 | 19 | 10 | 0 |
| 310 | 0 | 21 | 51 | 74 | 91 | 97 | 100 | 98 | 95 | 90 | 84 | 77 | 70 | 63 | 55 | 47 | 39 | 30 | 20 | 10 | 0 |
| 320 | 0 | 18 | 41 | 62 | 79 | 91 | 102 | 101 | 98 | 95 | 89 | 83 | 76 | 68 | 60 | 51 | 42 | 32 | 22 | 11 | 0 |
| 330 | 0 | 16 | 35 | 53 | 71 | 82 | 91 | 100 | 104 | 102 | 98 | 91 | 84 | 76 | 67 | 57 | 47 | 36 | 24 | 12 | 0 |
| 340 | 0 | 14 | 31 | 46 | 61 | 73 | 83 | 92 | 101 | 103 | 99 | 95 | 89 | 80 | 71 | 61 | 50 | 38 | 26 | 13 | 0 |
| 350 | 0 | 12 | 28 | 42 | 55 | 68 | 77 | 86 | 94 | 96 | 93 | 90 | 85 | 77 | 68 | 58 | 48 | 37 | 25 | 13 | 0 |
Table 10: PRMG primary and secondary colours
Several re-rendering algorithms are defined by transformations of primaries and secondaries, so the specification also gives approximate locations of red, green, blue, cyan, magenta and yellow in the PRMG:
| Coordinate | Red | Yellow | Green | Cyan | Blue | Magenta |
|---|---|---|---|---|---|---|
| L* | 41 | 95 | 60 | 50 | 21 | 42 |
| C*ab | 98 | 123 | 100 | 76 | 95 | 102 |
| hab (degrees) | 29 | 90 | 140 | 220 | 300 | 340 |
Reference viewing conditions (6.3.3.4)
| Property | Value |
|---|---|
| Environment | Standard viewing condition P2 of ISO 3664 (graphic arts and photography), extended with an “average” surround: the illumination of the image is similar to that of the rest of the environment |
| Surround | A uniform matt grey with a reflectance of 20 % |
| Viewing flare | 0.0075 (3/4 %) of the luminance of the reference medium in the reference viewing environment, which is 1.06 cd/m² |
| Illumination (note) | ISO 3664 gives 500 lx for P2, taken to be typical of the level in actual home and office viewing environments |
If the actual viewing environment differs from the reference environment, perceptual transforms shall be used to compensate for the difference.
Converting between PCSXYZ and PCSLAB (6.4, A.3)
Conversions use equations of the form given in ISO 13655, with the media white point in place of the illuminant as the white point (A.3). With the substitutions of Equations (A.1) to (A.3),
X/Xn is replaced by Xr/Xi (or Xa/Xmw) (A.1)
Y/Yn is replaced by Yr/Yi (or Ya/Ymw) (A.2)
Z/Zn is replaced by Zr/Zi (or Za/Zmw) (A.3)the equations are:
L* = 116 · f(Y/Yn) − 16 (A.4)
a* = 500 · [ f(X/Xn) − f(Y/Yn) ] (A.5)
b* = 200 · [ f(Y/Yn) − f(Z/Zn) ] (A.6)
for t = X/Xn, Y/Yn or Z/Zn (A.7 to A.12):
f(t) = t^(1/3) for t > (6/29)^3
f(t) = (841/108) · t + 4/29 for t ≤ (6/29)^3X, Xn, Y, Yn, Z and Zn are as defined in ISO 13655. The integer encodings of the results are on Numbers and encodings.
- Converting to an integer encoding, colours in the PCSXYZ range that lie outside the PCSLAB range are clipped component by component to the limits of the PCSLAB range when going from PCSXYZ to PCSLAB; colours in the PCSLAB range outside the PCSXYZ range are clipped component by component to the PCSXYZ range when going from PCSLAB to PCSXYZ.
- Converting to a float32Number encoding, the conversion is done and encoded directly and nothing is clipped.
- To get PCSLAB from a negative PCSXYZ value, the straight-line part of the transfer function (below 0.008856, that is (6/29)3) is extended linearly below zero.
The PCS encodings are not a quantisation of the connection space: they only let points be specified. Because the processing models gain from interpolating between table entries, the specification recommends that the interpolated AToB results are used as input to the BToA transforms and that AToB results are not rounded to the nearest encoding value (A.3).
Annex A: data colour encodings and rendering intents
A.1 Colour encoding types
The format supports three families, nCIEXYZ based, RGB based and CMYK based, and an
achromatic (grey) space (Table A.1). Other device spaces can be used as xCLR
(x is 2 to 15; see the header page) without updating
the specification. The CIE colour spaces are defined in CIE 15.
| Base space | Description | Derivative spaces |
|---|---|---|
| nCIEXYZ | Base CIE device-independent colour space | CIELAB, PCSXYZ, PCSLAB, CIELUV, CIEYxy |
| GRAY | Monochrome device-dependent colour space | |
| RGB | Base device-dependent colour space | HLS, HSV, YCbCr |
| CMY | Base device-dependent colour space | |
| CMYK | Base device-dependent colour space |
A.2 Colour measurement parameters
The default measurement parameters are those of ISO 13655, which requires 0°:45° or 45°:0° measurement geometry and tristimulus values for the D50 illuminant and the 1931 CIE standard observer. The only deviation is that all tristimulus values are divided by 100 so that Y = 1 for the perfect diffuser (and for the media white point after calculating media-relative values). Measured values need correcting for flare when the measurement conditions produce different flare from high-quality reflection measurements, and a chromatic adaptation transform is needed when the illumination differs from D50. The profile header’s PCS illuminant field holds the nCIEXYZ values of the PCS adopted white, equal to D50: X 0.9642, Y 1.0000, Z 0.8249. It is not the same as the viewing conditions tags.
A.3 PCS encodings
The PCSLAB encoding and the 16-bit PCSXYZ encoding exist to satisfy conflicting needs for accuracy and storage space. The equations that relate them are given above.
A.4 External and internal conversions
A CMM does two kinds of processing besides table interpolation. The external one changes the precision of colour values: multiply each value by (2M − 1) / (2N − 1), N the starting number of bits and M the required number. For an 8-bit image value going into a lut16Type the factor is 65535 / 255 = 257. The colour a number represents is not meant to change, though a reduction in precision may force a small error; if an integer is wanted, rounding rather than truncation can be used. The internal one converts between PCSXYZ and PCSLAB with the equations above, because there is more than one PCS encoding.
Annex B: embedding profiles
Annex B is a single line: guidelines for embedding ICC profiles in media objects are in ICC Technical Note 10-2021, Embedding ICC profiles. The places a profile is embedded in common file formats are on the overview.
Annex C: PostScript CSAs and CRDs
When an ICC profile is used to make a PostScript colour space array (CSA) or colour rendering dictionary (CRD), keys can be added to identify the profile, so that a parser can obtain the original profile from outside the PostScript file. Adobe Systems recommends these keys.
| Key | Type | Holds | CSA | CRD |
|---|---|---|---|---|
/CreationDate | string | The date and time the array or dictionary was created or last modified; coordinate it with the calibrationDateTimeTag of any associated profile; the syntax conforms to ISO/IEC 8824 (ASN.1) | recommended | recommended |
/RenderingIntent | name or string | The intent it is designed to achieve: AbsoluteColorimetric, RelativeColorimetric, Saturation or Perceptual | recommended | recommended |
/Description | string | The 7-bit ASCII description from the profile’s desc tag | recommended | additional |
/Copyright | string | The 7-bit ASCII copyright string from the cprt tag | recommended | additional |
/ColorSpace | string | The data colour space field of the header, as its four-character signature | recommended | additional |
/ProfileID | hexadecimal string | The Profile ID of the header, as hexadecimal data in < and >; for a profile without one, compute it as in the header page | recommended | additional |
In a profile of version 4 the description and copyright are multilocalised; only the U.S. English string is put in the CSA or CRD, and if the profile has none, one can be computed from the first string. The example the specification gives, a CSA from Photoshop:
[ /CIEBasedABC
<<
/CreationDate (19990603000000)
/RenderingIntent (Perceptual)
/Description (not Adobe RGB (1998))
/ColorSpace (RGB )
/Copyright (Copyright 1999 Adobe Systems Incorporated)
/ProfileID <33BC7F1C156FA0D72F8F717AE5886BD4>
/DecodeLMN [{2.1992 exp}bind {2.1992 exp}bind {2.1992 exp}bind]
/MatrixLMN [0.3805 0.7083 0.9959
0.1282 0.0593 0.7144
0.4554 0.2324 0.0145]
/WhitePoint [0.9642 1.0000 0.8249]
>> ]Annex D: the profile connection space
This informative annex explains the PCS; its normative statements are in clause 6 and above.
D.1 General considerations
The PCS decouples input, display and output profile transforms: it is the virtual destination of source transforms and the virtual source of destination transforms, so independently made profiles built on the same PCS definition can be paired at run time. No single reference medium suits every scenario, so the perceptual reference medium is biased towards reflection-print media (offset lithography, proofing systems, computer-driven printers, photographic paper) and still gives good results for video, slides and presentation graphics; the colorimetric intents are built without bias. The PCS is not meant for storing images: interchange encodings such as ISO 22028 and IEC 61966 do that and may make other design choices.
D.2 Encoding of PCS measurements
- General (D.2.1). The PCSs are based on the CIE 1931 standard colorimetric observer. For all intents, PCS values are CIE colorimetry as defined in ISO 13655 for reflecting and transmitting media, and colorimetric measurement data chromatically adapted to D50 for scene capture and colour displays. ISO 13655 allows different backings; many users prefer white. Values for the media-relative colorimetric intent are scaled in XYZ relative to the media white point. Transforms from the PCS to data encodings should predictably process every value in the PCS, even outside the encoding’s gamut.
- Perceptual rendering (D.2.2). The PCS is the colorimetry that produces the desired appearance on the reference medium (an 89 % substrate, density range 2.4593) in the reference viewing environment (an ISO 3664 P2 booth, 20 % surround, D50 at 500 lx). The medium white point is normalised to the PCS white point, and the PCSXYZ values of the reference black point are the colour rendering target black. Inputs with a greater dynamic range than a print can have highlights and shadows compressed so that they can be expanded again. Version 2 differed: it defined the PCS as an ideal print on a non-selective 100 % substrate with an infinite dynamic range.
- Colorimetric renderings (D.2.3). The PCSXYZ range is unrelated to the
reference medium’s white and black; values reflect instrument readings, relative to the
actual media white of the
wtpttag, and the dynamic range is infinite. Data not measured under D50 must be chromatically adapted using the transform recorded in thechadtag; display data are adapted to D50 from the display white.
D.3 Colour measurements
If the viewing illuminant is not D50 it is recommended that colour measurements use the actual illuminant, or, without fluorescence, that tristimulus values are calculated from spectral reflectance with the actual illumination spectrum; a different adopted white means adaptation is built into the transforms (D.4, D.6.1). For graphic arts, measurements conform to ISO 13655 with a D50 source and need no adaptation. Fluorescent D50 simulators have chromaticity close to D50 but different spectra, so values can differ noticeably; the CIE colour rendering and metamerism index criteria of ISO 3664 show whether a source is close enough. Measurements are assumed to be free of instrument flare but include the surface reflection of 0°:45° geometry. The 0.75 % flare of the reference viewing environment represents high-quality real environments; it is not added to measurements before encoding, but lets transforms compensate for a difference between the actual and reference environments.
D.4 Chromatic adaptation
Adaptation of the visual system is modelled as linear scaling of cone fundamentals reached by a transform from nCIEXYZ; examples are the von Kries transformation, the linear Bradford transformation, CMCCAT97 and CAT02. Experimental data do not converge on one answer, so the specification recommends the linear Bradford model where there is no reason to choose another (Annex E). It allows, for example, a tungsten-lit medium to be converted to a cool-white-fluorescent one: the input profile adapts tungsten to D50 and the output profile adapts D50 to cool white.
D.5 Aesthetic considerations and the media white point
Media-relative colorimetry factors out the substrate so highlight detail is kept: the PCSLAB
media white [100, 0, 0] is tied to the media white point whatever its colorimetry. Where the
actual colours matter, as in proofing, ICC-absolute colorimetry is needed, using the
wtpt colorimetry (corrected for the adopted white chromaticity, with Y = 1 for the
perfect diffuser). For the perceptual intent the white point of the actual medium can be mapped
to that of the reference medium, or deliberately to another colour for a different aesthetic
effect.
D.6 Colorimetric intents
D.6.1. The profile format has no separate transform for the ICC-absolute intent: only the media-relative values Xr are stored, and Xa follows from Equations (4) to (6) (D.7). The PCS-side values are the actual medium’s CIEXYZ under the actual illuminant, scaled by the luminance YAW of the actual adopted white (D.1), adapted to the PCS adopted white with the matrix MC (D.5), and scaled to the media white (D.6). Equation numbers below are the specification’s.
(D.1) XAWR = X / YAW YAWR = Y / YAW ZAWR = Z / YAW
(D.2) XYZa = XYZAWR when the chromaticity of the actual
adopted white equals the PCS white
(D.3) MC = identity matrix [1 0 0; 0 1 0; 0 0 1] in that case
(D.4) XNAW = XAW / YAW YNAW = YAW / YAW ZNAW = ZAW / YAW
(D.5) XYZa = MC(XYZNAW, XYZW) · XYZAWR when the chromaticities differ
(D.6) Xr = (Xi / Xmw) · Xa Yr = (Yi / Ymw) · Ya Zr = (Zi / Zmw) · Za
(D.7) Xa = (Xmw / Xi) · Xr Ya = (Ymw / Yi) · Yr Za = (Zmw / Zi) · ZrMC must be stored in the chad tag when the chromaticity of the actual
adopted white differs from that of the PCS adopted white. The scaling between media-relative
and ICC-absolute values assumes the observer is adapted to the adopted white, not the media
white. Equations (D.4) are equivalent to Equations (1) to (3) above.
| Symbol | Definition |
|---|---|
| MC | 3 × 3 matrix for chromatic adaptation from actual adopted white relative XYZ values to PCS adopted white relative XYZ values |
| X, Y, Z (XYZAW) | CIEXYZ values for the actual adopted white, in cd/m² |
| X, Y, Z (XYZAWR) | nCIEXYZ values for a colour patch on the media under the actual illumination source [Equation (D.1)] |
| X, Y, Z (XYZMW) | nCIEXYZ values for the media white point under the actual illumination source |
| X, Y, Z (XYZNAW) | nCIEXYZ values for the actual adopted white, Y = 1.0 |
| X, Y, Z (XYZW) | nCIEXYZ values for the PCS adopted white: X 0.9642, Y 1.0, Z 0.8249 |
| X, Y, Z (XYZa) | nCIEXYZ values for ICC-absolute colorimetry |
| X, Y, Z (XYZi) | PCSXYZ values for the PCS white point: X 0.9642, Y 1.0, Z 0.8249 |
| X, Y, Z (XYZmw) | nCIEXYZ values for the media white point after adaptation to the PCS adopted white [Equation (D.2)] |
| X, Y, Z (XYZr) | PCSXYZ values of a media-relative colorimetric transform |
D.6.2 Procedure. Calculating PCS coordinates for the data-to-PCS direction of
the media-relative colorimetric intent (the A2B1 transform):
- Obtain CIE 1931 XYZ values for colour patches on the medium, including at least one measurement of the media white and, for the actual illumination, the tristimulus values of the adopted white.
- Remove any instrument flare or excess veiling glare so that the values match the PCS measurement conditions.
- If needed, scale the values relative to the actual adopted white by dividing by YAW (Equation D.1).
- If the adopted white’s chromaticity differs from D50, convert the values to the PCS adopted
white with a chromatic adaptation transform and Equation (D.2); the matrix must be given in
the
chadtag. - Record the converted media white point values in the
wtpttag. - Scale by the ratio of the PCS adopted white to the media white point (Equation D.6), so the media white point values equal the PCS adopted white.
- Optionally convert PCSXYZ to PCSLAB (Annex A).
- Encode the PCSXYZ or PCSLAB coordinates as 8-bit or 16-bit values (6.3.4).
D.6.3 Example. The specification builds the white and black of a media-relative colorimetric transform from the SWOP data of CGATS TR 001 (patches 26 and 24 of IT8.7/3). No flare correction, scaling or adaptation is needed because the source is D50.
| Component | nCIEXYZ white (D.2) | nCIEXYZ black (D.2) | Ratio (D.3) | PCS white (D.3) | PCS black (D.3) | PCSLAB white (D.4) | PCSLAB black (D.4) |
|---|---|---|---|---|---|---|---|
| X / L* | 0.7067 | 0.0097 | 0.9642 / 0.7067 | 0.9642 | 0.0134 | 100.0 | 11.8 |
| Y / a* | 0.7346 | 0.0101 | 1 / 0.7346 | 1.0000 | 0.0138 | 0.0 | 0.28 |
| Z / b* | 0.5703 | 0.0080 | 0.8249 / 0.5703 | 0.8249 | 0.0116 | 0.0 | −0.3 |
| 16-bit PCSXYZ | White | Black | 16-bit PCSLAB | White | Black | 8-bit PCSLAB | White | Black |
|---|---|---|---|---|---|---|---|---|
| X | 31595 | 439 | L* | 65535 | 7733 | L* | 255 | 30 |
| Y | 32768 | 452 | a* | 32896 | 32968 | a* | 128 | 128 |
| Z | 27030 | 380 | b* | 32896 | 32819 | b* | 128 | 128 |
The specification notes that the 8-bit encoding of the black L* is imprecise because of the limited precision of 8-bit data.
D.7 The perceptual rendering intent
- Colorimetry and appearance (D.7.1). Matching colorimetry is not enough for appearance: appearance depends on the observer’s adaptation and on the environment, and aesthetic reasons and media differences in range and gamut also call for adjustment. These adjustments belong in the transforms of ICC profiles, so the PCS has to be defined so as to allow them.
- Purpose (D.7.2). Perceptual PCS colorimetry is the desired appearance on the reference medium. An input profile (for example for a slide scanner) yields the colours desired on the reference medium, accounting for adaptation, flare and differences between the actual and reference media; an output profile modifies the colorimetry for the observer’s adaptation, differences in viewing flare, and the dynamic range and gamut of the actual medium.
- Reference medium and environment (D.7.3). The hypothetical medium is
described in real-world terms so that it could be proofed. Where the real illuminant is not
D50, adaptation is one of several transforms applied; because the rendering to the reference
medium may include other optimisations, inverting the
chadtag for the perceptual intent may not give the colorimetry of the actual image. - White point (D.7.4). As in D.5, the actual medium’s white may be mapped to the reference white or deliberately to another colour; in either case the reference white corresponds, after scaling, to the PCS white.
- Brightness adaptation and tone scale (D.7.5, D.7.6). A print under normal viewing, with an actual reflectance of typically 85 % to 90 %, cannot show specular highlights several times brighter than diffuse white, so highlights are compressed. Slides, movies and video in a dark environment can represent about 200 % against 90 %, so compression is less severe. Shadows are compressed too, and flare and luminance level (the reference environment is 500 lx) change the apparent tone scale and colourfulness. The PCS is the interface for these adjustments: input transforms map the original tone scale onto the reference medium’s, and output transforms map it onto the reproduction medium; the adjustments should be invertible where high-quality output to the same kind of device is wanted.
- Monitor display (D.7.7). A monitor is self-luminous, so the meaning of tone is ambiguous and the observer’s adaptation hard to predict. Monitor profiles are typically best made with the adopted white at full-drive monitor white (R = G = B = 255 on a 24-bit display), mapped to the PCS white point; simple matrix and power-law models fail in the shadows because they ignore veiling glare and unit-to-unit biases.
Annex E: the chromatic adaptation tag
The chad tag lets values relative to an
adopted white other than the PCS white be calculated from the profile. It is not needed in
normal ICC colour management, and might not apply to the perceptual intent (D.7.3). The values
it gives are similar to, but not identical to, those from converting measured spectral
reflectances directly to D50 (material equivalence or material adjustment,
which can also cover differences in observer or measurement geometry).
E.2 Calculating the matrix
Any linear (matrix-based) adaptation transform can be used, and the specification recommends the linear Bradford transform when there is no reason for another one, since it is widely implemented with excellent visual performance; a creator who chooses another should do so only for specific known issues. A linear adaptation matrix combines three conversions: source nCIEXYZ to cone response values, an adjustment of the cone responses for the observer’s adaptation, and conversion back to nCIEXYZ.
E.3 The linearised Bradford transformation
Assuming full adaptation and omitting a negligible non-linearity in the blue channel, Equation (E.1) gives the cone responses ρ, γ, β:
| Row | X | Y | Z |
|---|---|---|---|
| ρ | 0.8951 | 0.2664 | −0.1614 |
| γ | −0.7502 | 1.7135 | 0.0367 |
| β | 0.0389 | −0.0685 | 1.0296 |
[ρ γ β]ᵀ = MBFD · [X Y Z]ᵀ (E.1)
| ρPCS/ρSRC 0 0 |
Madapt = MBFD⁻¹ · | 0 γPCS/γSRC 0 | · MBFD (E.2)
| 0 0 βPCS/βSRC |
[ρSRC γSRC βSRC]ᵀ = MBFD · [XNAW YNAW ZNAW]ᵀ (E.3)
[ρPCS γPCS βPCS]ᵀ = MBFD · [XW YW ZW ]ᵀ (E.4)XW, YW, ZW are the nCIEXYZ values of the PCS adopted white
(0.9642, 1.0, 0.8249) and XNAW, YNAW, ZNAW those of the
actual adopted white, normalised so that Y = 1. The chad tag holds
Madapt as its nine s15Fixed16Numbers,
row by row.
The linearised Bradford transform is reported in the literature to give almost identical values to the original Bradford transform (barely significant differences in the Z of CIEXYZ), to predict corresponding-colour data sets as well as other widely used transforms, and to predict material adjustment colorimetry about as well as them and only slightly worse than a Waypoint-based material adjustment transform (E.3.1).
E.4 Uses of the matrix
A CMM does not normally process the matrix when connecting a data encoding to the PCS; it records how the encoding was converted into the D50 PCS, for finding the media white point under the original observing conditions or for undoing the transform to substitute another one.
- No profile has the tag: nothing can be done. All have it: with the same method nothing needs doing; with different methods the user may undo them and apply one method consistently. Only one has it: processing depends on the implementation.
- Worked steps for two RGB display profiles with the tag. Step 1: the methods are the same if M1 × M2 = M2 × M1, where M1 and M2 are the two matrices (true so long as the diagonal coefficients of the matrices are all different, as they normally are); stop if so. Step 2: for profile 1, find the actual adopted white by applying the inverse matrix to the nCIEXYZ values of the PCS adopted white. Step 3: apply the inverse matrix to each colorant tag’s red, green and blue values to get the actual values. Step 4: calculate the new adaptation matrix, preferably Bradford (E.3). Step 5: apply it to the colorant values in the device illuminant from step 3, giving new PCS adopted white relative colorants. Step 6: repeat steps 2 to 5 for profile 2. For profiles with lookup-table tags, undo and redo the adaptation as an extra step after the values reach the PCS.
- D65 to D50 (E.4.2). Conversion to the D50 PCS from D65 colorimetry is
common, and ICC has published recommended values for that
chadin Technical Note 02-2003. - Material adjustment (E.4.3). Where colorimetry based on an illuminant other than D50 must be preserved, a material adjustment transform may give better results than the linearised Bradford transform; ICC White Paper 55 describes one.
Annex F: profile computational models
Annex F of ICC.1:2022 is normative. It gives the arithmetic behind the two kinds of profile that carry no lookup table: the monochrome profile with one tone curve and the three-component matrix-based profile. It also says how a curve is inverted, which a CMM needs to go from the PCS back to the device. The equations below are the specification’s, with the prose condensed; matrices are written row by row.
F.1 Inversion of one-dimensional curves
A curve y = f(x) that is not constant, over the domain [x0, xn], can be inverted if it is monotonically increasing or monotonically decreasing over the whole domain. The inverse swaps x and y. Two cases are set out explicitly:
| Case | Situation | Inverse value |
|---|---|---|
| a, flat part not at the end | [x1, x2] all map to y1 and x2 < xn | the highest x that gives y1 |
| a, flat part at the end | [x1, xn] all map to y1 | the lowest x that gives y1 |
| b, y out of reach | no x maps to a y that lies in the domain of the inverse | find the closest y in the range of the original curve and use its x |
F.2 The grey TRC model (grayTRCTag)
A monochrome profile’s kTRC gives
the connection value from the device value, and its inverse goes back:
connection = grayTRC[device] (F.1)
device = grayTRC⁻¹[connection] (F.2)- The connection value is the achromatic channel of the PCS, from 0 (black) to 1.0 (white). Multiplying it by the PCSXYZ or PCSLAB values of the PCS white point gives the PCSXYZ or PCSLAB colour.
- If grayTRC cannot be inverted, grayTRC⁻¹ is undefined. A constant curve cannot be inverted.
- Note 1 of the specification: the tag is usually derived from the luminance channel of the PCS, PCSXYZ Y or PCSLAB L*.
F.3 The three-component matrix-based model
The model goes from device colour space to the PCS. Three independent tone curves (the
rTRC, gTRC and bTRC tags) linearise the channels, then a
3 × 3 matrix whose columns are the rXYZ, gXYZ and bXYZ
tags mixes them into XYZ. The curves linearise with respect to the Y of PCSXYZ. The XYZ result
is encoded as PCSXYZ as 6.3.4 says (see
Numbers and encodings).
linear_r = redTRC[device_r] (F.3)
linear_g = greenTRC[device_g] (F.4)
linear_b = blueTRC[device_b] (F.5)
| connection_X | | redMatrixColumn_X greenMatrixColumn_X blueMatrixColumn_X | | linear_r |
| connection_Y | = | redMatrixColumn_Y greenMatrixColumn_Y blueMatrixColumn_Y | · | linear_g | (F.6)
| connection_Z | | redMatrixColumn_Z greenMatrixColumn_Z blueMatrixColumn_Z | | linear_b |The inverse
The inverse inverts the matrix, then each curve, clamping the linear value to 0 to 1 first:
| linear_r | | redMatrixColumn_X greenMatrixColumn_X blueMatrixColumn_X |⁻¹ | connection_X |
| linear_g | = | redMatrixColumn_Y greenMatrixColumn_Y blueMatrixColumn_Y | · | connection_Y | (F.7)
| linear_b | | redMatrixColumn_Z greenMatrixColumn_Z blueMatrixColumn_Z | | connection_Z || Linear value | Red | Green | Blue |
|---|---|---|---|
| linear < 0 | devicer = redTRC⁻¹[0] (F.8) | deviceg = greenTRC⁻¹[0] (F.11) | deviceb = blueTRC⁻¹[0] (F.14) |
| 0 ≤ linear ≤ 1 | devicer = redTRC⁻¹[linearr] (F.9) | deviceg = greenTRC⁻¹[linearg] (F.12) | deviceb = blueTRC⁻¹[linearb] (F.15) |
| linear > 1 | devicer = redTRC⁻¹[1] (F.10) | deviceg = greenTRC⁻¹[1] (F.13) | deviceb = blueTRC⁻¹[1] (F.16) |
redTRC⁻¹, greenTRC⁻¹ and blueTRC⁻¹ are the inverse functions of the three curves, found as in F.1. If a curve cannot be inverted its inverse is undefined, and a constant curve cannot be inverted.
Limits
- Only the PCSXYZ encoding can be used with a matrix/TRC model. The model suits any device whose three-component colour space is suitably related to XYZ in this way.
- If the PCSLAB encoding is wanted, the profile must also contain an
A2B0(AToB0Tag) tag.
Scaling when the model is stored in a lutAToBType
A matrix/TRC model can instead be written as a
lutAToBType tag with M curves set
to the three TRC curves, a matrix with zero offsets, and identity B curves. To give the same
PCS values, every matrix value of the matrix/TRC model must first be multiplied by
32768/65535 before it is stored in the lutAToBType matrix. That fraction is the
encoding factor of the PCSXYZ encoding.
Source: ICC.1:2022-05, Annex F (printed pages 101 and 102), read from the PDF at color.org.
Annexes F, G and H
- Annex F (normative), the profile computational models, is in its own section above.
- Annex G (informative), Tables G.1 to G.13, summarises the required tags of each profile type and lists all registered tags; the required tags are on Profile classes and required tags and the tag list on Tags.
- Annex H (informative) says how ICC.1 relates to ICC.2. ICC.1 has a fixed D50 PCS; ICC.2 (iccMAX) allows colorimetric PCSs other than D50 or the CIE 1931 observer, spectral and bi-spectral ones, and multiplex ones, and builds on multiProcessElementsType with more transform options, including a calculator element. It is an extension for specific cases, not a replacement, and it is backwards compatible: an ICC.2 CMM should read ICC.1 profiles, while an ICC.1 CMM is not expected to read ICC.2 profiles, though ICC Technical Note 04-2018 describes embedding an ICC.2 profile in an ICC.1 profile. See Versions and iccMAX.