Gernot Hoffmann

CIELab Color Space

Contents
1. Introduction

2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.

Formulas

Primaries and Matrices
Gamut Restrictions and Tests
Inverse Gamma Correction
CIE
L*=50
NTSC
L*=50
sRGB
L*=1/10/.../90/99
AdobeRGB
L*=10/.../90
ProPhotoRGB
L*=10/.../90
3D Views

Linear and Standard Nonlinear CIELab
Human Gamut in CIELab
Low Chromaticity
sRGB
L*= 50 with RGB Numbers
PostScript Kernels
Mapping CIELab to xyY
Number of Different Colors
HLS-Hue for sRGB in CIELab
References


2
4
10
11
12
13
14
15
26
35
44
47
48
49
50
51
56
59
60
62

1.1 Introduction
CIE XYZ is an absolute color space (not device dependent). Each visible color has
non-negative coordinates X,Y,Z.
CIE xyY, the horseshoe diagram as shown below, is a perspective projection of XYZ
coordinates onto a plane xy. The luminance is missing.
CIELab is a nonlinear transformation of XYZ into coordinates L*, a*,b*.
The gamut for any RGB color system is a triangle in the CIE xyY chroma­­ticity diagram,
here shown for the CIE primaries, the NTSC primaries, the Rec.709 primaries (which
are also valid for sRGB and therefore for many PC monitors) and the non-physical
working space ProPhotoRGB. The white points are individually defined for the color
spaces.
The CIELab color space was intended for equal perceptual differences for equal changes in the coordinates L*, a* and b*. Color differences deltaE are defined as Euclidian
distances in CIELab.
This document shows color charts in CIELab for several RGB color spaces. 
.0
y

sRGB uses ITU-R BT.709 primaries

Red Green Blue White
x 0.64 0.30 0.15 0.3127
y 0.33 0.60 0.06 0.3290
AdobeRGB uses Red and Blue like
sRGB and Green like NTSC
CIE-RGB are the primaries for color
matching tests: 700 /546.1/435.8nm

0.9
ProPhoto
520 525
55
530

0.8

535
540

50

545

0.7

550
555

505

560

0.6

565
570

500

0.5
0.4
0.3
0.2

NTSC CIE

575

sRGB

580
585
590
595
600
605
60
620
635
700

495

490

Wavelengths in nm

485

Purple line

480

0.
0.0
0.0

475
470
460
380

0.

0.2

0.3

0.4

0.5 

0.6

0.7

0.8

0.9 x .0

1.2 Introduction
CIELab uses new coordinates L*,a* and b* by functions as described in the next chapter. The true shape of the human gamut in CIELab is shown in chapter 13. This results
in huge areas for higher luminance.
Just to show the orientation together with the gamut triangle for the primaries we proceed as follows:
Convert the contour points x,y for Y=1 into RGB. Divide R,G,B by the maximum of
R,G,B. Convert R,G,B to L*,a*,b*.
The gamut triangle in x yY has to be replaced by a representation of a color cube with
corners R,G,B and Y(yellow),C,M. The gray axis is at a*= b*= 0. Therefore the area is
confined by a distorted hexagon. A similar diagram can be found in [1].
Later it will be shown that the actual gamut, which depends on the luminance, is a
smaller area inside the hexagon.

-250 -225 -200 -75 -50 -25 -00 -75 -50 -25 0

25 50 75 00 25 50 75 200 225 250

b*

250

225

225

200

200
75

75

Green

50

50
25

25

00

00

Red
75

75

50

50

25

25

0

0

-25

-25

-50

-50

-75

-75

-00
-25

Gamut

-00

CIE primaries
WP Eq.Energy

-25
-50

-50
-75
-200
-225

Blue

-75

Contour for
R-Y-G-C-B-M-R
hexagon
Outer blue area
human gamut

-200
-225
-250

-250
-250 -225 -200 -75 -50 -25 -00 -75 -50 -25 0 

25 50 75 00 25 50 75 200 225

a*

4 ((0.B i f C' ≤ 0. RGB are undistorted values which are linearly related to CIEXYZ. Generic gamma correction. D65 to another set in D50. NTSC or working spaces like sRGB or AdobeRGB(98). The transformation to CIELab requires a reference white point (n) which is either (w) or D50.G. Each RGB system has a white point(w).92 C =   2.03928   C'/2.B C = C'G sRGB gamma correction.008856  Z =   + 7.G.1 Formulas / From RGB’ to CIELab R´G´B´ are nonlinearly distorted values for each channel in physical tristimulus systems like CIE.787 Z 6 6 e lse    L* = a* = b* = 6 Y − 6 500 ( X − Y ) 200 ( Y − Z )  . G= 2.008856  Y =   else 7.787 X 6 6 else     Y 3 i f Y > 0. Issues of adaptation are taken into account by the linearized Bradford transform.055) else +   RGB to XYZ ( same white point D65 ) X = C xr R RGB to XYZ (new white point D50. C=R. The colors should look alike under D65 for the first set and under D50 for the second. Bradford correction) X = BC xr R XYZ to L*a*b* (reference white X n ) X X = Xn Y Y = Yn Z Z = Zn  X 3 i f X > 0. The Bradford matrix maps the XYZ-values for a color in e.055 C') /.g.2.2.008856  X =   + 7. C=R.787 Y + 6 6   Z 3 i f Z > 0.

787 else  X n X Y = Yn Y Z = Z n Z X = Y = Z = XYZ to RGB ( same white point D50) R = − Crx X = C xr X XYZ to RGB (new white point D65.2 Formulas / From CIELab to RGB’ Please refer to explanations on the previous page.206893    (X − 6 6) / 7. C= R.787 else   Y3 if Y > 0. L*a*b* to XYZ Y = (L* +6) /6 X = a* / 500 + Y Z = − b* / 200 + Y X =  X3 if X > 0.055 else  . Bradford correction) R = ( BC xr ) − X = Crx B − X Generic gamma correction.G. G = 2.2.G.4 − 0. A value RGB is out of gamut if any of the numbers is less than 0 or greater than 1 (normalized values).055 C  .206893    (Y 6 6) / 7.92C if C ≤ 0.2.206893    (Z − 6 6) / 7.00304     2.B C' = C/ G sRGB gamma correction.787 else −    Z3 if Z > 0. C = R.B C' = 2.

The threedimensional space is called XYZ.3793 6 ⋅ 0.008856 = 8.008856 3 − 6 = 903.008856 = 0.2068930 6 / 6 = 0.3 ⋅ 0 .0  .2.3 Formulas / From xyY to XYZ The CIE chromaticity diagram is called xyY. xyY to XYZ z X Z = = = − x − y Yx/y Yz/y XYZ to xyY D x y z = = = = X+Y+Z X/D Y/D Z /D Some important numbers 3 0.

L. a* and b*. White point correction 2. Scaling With some obvious simplifications the linear part can be written by matrices: X     0  L  Y  =   0 0  A   Z    0 −  B  X      0  Y  = L  + A  0  + B  0  = L c + A a + B b  Z   0  −  L   0  0  X A  =   − 0   Y   −   Z  B   0 Z c Y X. b into negative Z-direction and c is along the diagonal in XYZ.  . a. b 4. Nonlinear distortion of the variables X.2.4 Formulas / Structure of the Conversion The conversion from XYZ to L*a*b* consists essentially of four steps: 1. A and B are normalized substitutes for L*.a b Base vector a points into X-direction.Y. Linear transformation into a new vector basis c. Z by a cubic root 3.

2.5 Formulas / Matrix Calculation Matrices for Primaries and White Point [3] X Y = C x r  Z  R   G  B  R  X  G = C r x  Y   B   Z  D U V = (x r − x b )(y g − y b ) − (y r − y b )(x g − x b ) = (x w − x b )(y g − y b ) − (yw − y b )(x g − x b ) = (x r − x b )(yw − y b ) − (y r − y b )(x w − x b ) u v w = U/D = V/D = − u − v Cxr u x r / yw = u y r / yw  u z r / yw v x g / yw v y g / yw v z g / yw w x b / yw w y b / yw w z b / yw     Cr x = C −xr In the next formulas use c xr ik for c ik = c (c 22 c 33 − c 23 c 32 ) − c2 (c 2 c 33 − c 23 c 3 ) + c3 (c 2 c 32 − c 22 c 3) D c rx = ( c 22 c 33 − c 23 c 32 ) / D c rx2 = ( c2 c 33 − c3 c 32 ) / D c rx3 = ( c2 c 23 − c3 c 22 ) / D c rx 2 = ( c 2 c 33 − c 23 c 3 ) / D c rx 22 = ( c c 33 − c3 c 3 ) / D c rx 23 = ( c c 23 − c3 c 2 ) / D c rx 3 = ( c 2 c 32 − c 22 c 3 ) / D c rx 32 = ( c c 32 − c2 c 3 ) / D c rx 33 = ( c c 22 − c2 c 2 ) / D  .

6 Formulas / Bradford Matrix Calculation Bradford matrix calculation. for n ↔ D65 The X first B X delivers the base vector R in XYZ. The original primaries under D65 (sRGB.64  M cx =  −0.0685 +.895 +0. We use strictly ’not-adapted’ primaries and consider the Bradford transformation as an additional feature which can be applied. the second G and the third B.735 +0.2.0296  Cn Cw ρ n  =  γ n  = M cx X n βn  ρ w  =  γ w  = M cx X w β w  ρ n / ρ w =  0  0 D 0 γn / γ w 0 0  0  βn / β w  Bradford matrix − = Mcx D Mcx B The matrices↔ CxrD50 and w on the next page contain the XYZ coordinates of the RGB primaries. = column D50 D65 For ICC profiles the matrices are multiplied by the Bradford matrix B.7502 +. This can easily lead to confusions. This should not change physical primaries or working space primaries. AdobeRGB(98)) should look alike the adapted primaries under D50. Then the base vectors mean ’adapted primaries’.g.0389 −0.  . based on [8] zn Yn Xn Zn = = = =  − xn − yn  Yn x n / y n Yn z n / y n zw Yw Xw Zw = = = = − xw − yw  Yw x w / y w Yw z w / y w Cone response  +0.0367   +0.2664 −0. E.

882 0.0000 .284 -0.2587 0.020 .000 0.2040 .034 -0.052 0.3333 0.424 0.0298 0.000 0.0000 .0000 0.3583 0.5083 0.6700 0.424 0.0000 Z 0.0633 0.0000 x 0.0600 0.000 .0284 .2587 0.0089 -0.00 0.4 X 0.3585 0.0270 0.9505 0.2556 -0.033 0.5228 .3457 y 0.070 .3000 0.468 -0.7800 0.0000 .7247 0.0000 -0.0092 0.083 -0.0000 .020 0.769 0.5324 -0.8760 0.9643 WP=D65 z 0.2973 0.3457 0.07 -0.0556 -0.824 0.3585 z 0.0000 .0000 -0.046 0.0502 0.0000 0.0205 0.057 .0270 0.0680 Matrix B .7247 0.78 0.093 0.825 Matrix Cxr 0.0000 0.0000 0.006 .7347 0.4622 -0.0000 0.3334 0.4479 0.3300 -0.4986 -0.023 -0.3583 0.089 -0.84 .0399 0.755 0.0000 0.3585 0.0000 .759 Matrix B-inv 0.805 0.7739 Matrix B-inv .0000 0.05 0.3290 0.0800 0.9643 Y 0.7900 0.994 0.8954 .825 0.0296 0.200 0.360 0.9555 -0.805 0.0608 0.468 0.7347 0.0003 0.023 -0.0000 0.596 0.0284 .200 .7900 0.3576 0.3290 0.6000 0.78 0.8967 -0.073 -0.0584 0.9820 0.0205 0.0002 0.052 0.0000 -0.0000 Z 0.2882 -0.0000 0.0958 .3457 X 0.2653 0.6274 0.0208 .0000 0.05 0.066 0.020 .3300 0.0000 0. Primaries and Matrices For sRGB (709 primaries) the exponent gamma is 2.8246 0.3340 0.0000 0.089 0.3650 -0.3457 y 0.9904 -0.0000 0.065 .3457 y 0.46 .92 0.0000 -0.92 0.288 0.046 -0.0208 0.327 0.0800 0.6658 0.845 -0.3304 x 0.9904 -0.3097 0.327 0.52 0.0229 -0.825 Matrix Crx 3.993 Matrix B .700 0.4899 0.7978 0.224 Matrix B .2 X 0.0000 .765 0.0000 0.882 0.4.55 .2990 0.3.0000 -0.2 X 0.0024 0.288 0.0682 0.3097 0.0295 -0.033 0.2006 0.5864 -0.07 -0.3304 10 x 0.200 0.0096 0.082 0.0000 0.036 0.2958 Matrix Cxr 0.7739 0.07 -0.0000 .8436 -0.2990 -0.9998 -0.3457 G=.825 x 0.75 Matrix Crx .0000 -0.0000 0.856 0.0000 0.9850 .3304 .786 0.0000 -0.0479 0.9643 Y 0.7848 0.0000 .9903 Matrix Crx .300 0.05 -0.500 0.9643 Y Z 0.673 0.064 -0.065 0.6274 0. but because of a linear slope the effective gamma is 2.2 X 0.0002 0.0479 0.0633 0.5767 0.9643 WP=D50 Y 0.2958 0.0722 .060 0.06 0.5374 -0.3585 0.3585 z 0.0036 0.9904 -0.2653 0.6386 0.0707 0.Energy y 0.0000 .0000 0.0074 0.0570 Matrix Cxr 0.9979 -0.734 0.2958 G=2.576 0.0000 Z 0.0000 0.4264 0.3290 0.226 0.825 0.020 .3585 z 0.300 0. CIE RGB R G B W N x 0.2958 OptiRGB G=2.0000 0.769 0.566 0.0000 -0.0000 Z 0.5446 .0000 0.0092 0.023 -0.8404 0.0000 0.500 0.825 R G B W N x 0.929 0.0296 0.0255 0.0000 0.0205 0.0366 0.0000 0.0000 0.0000 -0.9505 .0259 .000 0.759 Matrix B-inv 0.3447 -0.077 0.0000 WP=D50 Matrix Crx .0000 0.0284 .0000 0.0300 0.9692 .0205 0.9505 0.6070 0.0887 0.825 Matrix Cxr 0.755 0.3585 Matrix Crx 2.8760 0.0000 .824 0.0000 .0753 0.023 -0.0086 -0.734 0.9648 -0.07 -0.3576 0.0346 -0.6386 0.2 .9555 -0.9643 0.82 0.066 0.9097 -0.2973 0.9643 Y 0.2006 0.9352 Matrix Cxr 0.2958 ProPhoto RGB G=2.5767 0.825 Matrix Crx .9692 .8246 0.0283 0.0000 .0800 0.0000 -0.0089 sRGB 709 primaries R G B W N x 0.006 0.400 0.8 X 0.3457 WP=Eq.0479 0.355 0. The white point for NTSC is Illuminant C.0000 0.888 Matrix B-inv .0000 0.300 0.752 0.046 0.2958 R G B W N WideGamut RGB G=2.0584 0.3583 0.6400 0.856 0.3300 0.000 0.0000 WP=NTSC y z 0.0057 -0.3457 0.0377 0.0707 0.200 0.825 Matrix B-inv .993 .0347 0.9643 0.6070 0.327 0.9505 Matrix B .2877 Matrix B .089 0.4458 -0.006 .000 0.8966 AdobeRGB(98) R G B W N y 0.0000 .5650 -0.6400 0.2958 0.3457 Z 0.759 Matrix B-inv 0.0296 0.3585 R G B W N z 0.023 -0.2958 Matrix Cxr 0.2734 -0.226 0.0000 0.052 Matrix Cxr 0.035 0.0502 0.774 0.0000 WP=D65 y 0.9643 Y 0.46 .75 .0680 .000 0.3458 -0.0205 0.0000 .2 G=2.352 0.000 0.0092 0.468 0.752 0.9903 .0000 NTSC RGB z 0.3740 0.2653 0.5864 0.835 . 6774K.0633 0.8264 0.023 -0.2 X 0.825 Matrix Crx 2.0000 .352 0.240 -.0089 0.0000 Z 0.044 .980 0.0300 0.2958 R G B W N G=2.0002 0.0097 .9555 -0.7978 0.0000 0.825 0.673 0.9633 0.057 .000 0.0229 -0.7347 0.6898 Matrix B-inv 0.9505 0.3333 0.0600 0.576 0.089 0.0582 -0.00 0.666 0.093 0.0722 0.054 -0.0088 0.8257 0.004 -0.05 0.4503 Matrix B .0502 0.220 Matrix B 0.765 0.0052 -0.3585 WP=D65 Y 0.0229 -0.0753 .2738 0.0000 0.700 0.4899 0.

A color is considered as out of gamut if at least one value of R. E. cyan and magenta. Indicate CIELab values by info palette.g. The color charts were tested by Photoshop 7. Select sRGB as working space and Rendering Intent Relative Colorimetric. Photoshop Relative Colorimetric means ICC Media-Relative Colorimetric. The gamut in the chromaticity diagram is the projection of all available colors in XYZ onto xyY. ignoring the spatial distribution in XYZ. Actually the gamut in CIELab is not the triangle R-G-B but the hexagon R-Y-G-C-B-M-R. Place page of PDF. The available gamut depends strongly on the luminance Y. though slightly wrong. In the next diagrams we can see color patches which are out of gamut though they are inside the hexagon. 11 .G. We have to choose an interpolation path which shows also fully saturated yellow. Open document in RGB mode.B is larger than one or smaller than zero. Gamut Restrictions and Tests Mostly it is assumed that all colors inside the gamut triangle can be shown by the respective device. Such a color is usually shown by the device reasonably. The values are clipped for these limits then. the chart sRGB-050 for L*=50.4.

2.4 . Gamma encoded values C’.2 0 0 20 40 60 80 0 L* 00 12 .0 Black Linear Green G=2. 2.4+slope / sRGB Gray Density 0. NTSC.4 part.92 C else The maximal difference is less than 1% full scale.2 / calibrated monitor Red G=2.2 for CIE and NTSC primaries. C´ = 1. This is a compensation for calibrated monitors.055 if C > 0.00304 C´ = 12.4 Blue G=2.2 Red sRGB Green Ten times the difference According to profile informations.8 0.8.0.2 because the transfer function is composed of a linear part and a Gamma =2. Inverse Gamma Correction RGB values are transformed into nonlinear values R´G´B´ by C´=C1/2.6 0. here for gray R’=G’=B’ are nearly a linear function of L*.5 / uncalibrated monitor 0.8 Dens .0 255 . sRGB differs slightly from Gamma =2. The diagram shows the Gamma corrections instead of the inverse corrections.4 .6 RGB’ . Black C=C´ 2.055 C 1/2.5. ProPhoto uses G=1. CIE-RGB and AdobeRGB(98) use the simple Gamma correction (no linear part) with G=2.2 .

Energy Reference D50 Bradford yes Gamma 2.2 Dot mark for out of gamut Clipping for R-Y-G-C-B-M hexagon Outer blue area human gamut -50 -60 -70 -80 -90 -00 -00 -00 -90 -80 -70 -60 -50 -40 -30 -20 -0 0 13 0 20 30 40 50 60 70 80 90 a* .6. CIE L*=50 The illustrations were made by PostScript EPS programs as vector graphics Converted to PDF by Acrobat Distiller they are still vector graphics Eventually the appearance can be improved by Smooth Line Art = Off -00 -90 -80 -70 -60 -50 -40 -30 -20 -0 0 0 20 30 40 50 60 70 80 90 00 b* 00 90 90 80 80 70 70 60 60 50 50 40 40 30 30 20 20 0 0 0 0 -0 -0 -20 -20 -30 -30 -40 -50 -60 -70 -80 -90 L* = 50 -40 CIE primaries White Eq.

NTSC L*= 50 -00 -90 -80 -70 -60 -50 -40 -30 -20 -0 0 0 20 30 40 50 60 70 80 90 00 b* 00 90 90 80 80 70 70 60 60 50 50 40 40 30 30 20 20 0 0 0 0 -0 -0 -20 -20 -30 -30 -40 -50 -60 -70 -80 -90 L* = 50 -40 NTSC primaries White NTSC Reference D50 Bradford yes Gamma 2.7.2 Dot mark for out of gamut Clipping for R-Y-G-C-B-M hexagon Outer blue area human gamut -50 -60 -70 -80 -90 -00 -00 -00 -90 -80 -70 -60 -50 -40 -30 -20 -0 0 14 0 20 30 40 50 60 70 80 90 a* .

1 sRGB L*=1 -00 -90 -80 -70 -60 -50 -40 -30 -20 -0 0 0 20 30 40 50 60 70 80 90 00 b* 00 90 90 80 80 70 70 60 60 50 50 40 40 30 30 20 20 0 0 0 0 -0 -0 -20 -20 -30 -30 -40 -50 -60 -70 -80 -90 L* =  -40 709 primaries White D65 Reference D50 Bradford yes Gamma sRGB Dot mark for out of gamut Clipping for R-Y-G-C-B-M hexagon Outer blue area human gamut -50 -60 -70 -80 -90 -00 -00 -00 -90 -80 -70 -60 -50 -40 -30 -20 -0 0 15 0 20 30 40 50 60 70 80 90 a* .8.

2 sRGB L*=10 -00 -90 -80 -70 -60 -50 -40 -30 -20 -0 0 0 20 30 40 50 60 70 80 90 00 b* 00 90 90 80 80 70 70 60 60 50 50 40 40 30 30 20 20 0 0 0 0 -0 -0 -20 -20 -30 -30 -40 -50 -60 -70 -80 -90 L* = 0 -40 709 primaries White D65 Reference D50 Bradford yes Gamma sRGB Dot mark for out of gamut Clipping for R-Y-G-C-B-M hexagon Outer blue area human gamut -50 -60 -70 -80 -90 -00 -00 -00 -90 -80 -70 -60 -50 -40 -30 -20 -0 0 16 0 20 30 40 50 60 70 80 90 a* .8.

3 sRGB L*=20 -00 -90 -80 -70 -60 -50 -40 -30 -20 -0 0 0 20 30 40 50 60 70 80 90 00 b* 00 90 90 80 80 70 70 60 60 50 50 40 40 30 30 20 20 0 0 0 0 -0 -0 -20 -20 -30 -30 -40 -50 -60 -70 -80 -90 L* = 20 -40 709 primaries White D65 Reference D50 Bradford yes Gamma sRGB Dot mark for out of gamut Clipping for R-Y-G-C-B-M hexagon Outer blue area human gamut -50 -60 -70 -80 -90 -00 -00 -00 -90 -80 -70 -60 -50 -40 -30 -20 -0 0 17 0 20 30 40 50 60 70 80 90 a* .8.

8.4 sRGB L*=30 -00 -90 -80 -70 -60 -50 -40 -30 -20 -0 0 0 20 30 40 50 60 70 80 90 00 b* 00 90 90 80 80 70 70 60 60 50 50 40 40 30 30 20 20 0 0 0 0 -0 -0 -20 -20 -30 -30 -40 -50 -60 -70 -80 -90 L* = 30 -40 709 primaries White D65 Reference D50 Bradford yes Gamma sRGB Dot mark for out of gamut Clipping for R-Y-G-C-B-M hexagon Outer blue area human gamut -50 -60 -70 -80 -90 -00 -00 -00 -90 -80 -70 -60 -50 -40 -30 -20 -0 0 18 0 20 30 40 50 60 70 80 90 a* .

5 sRGB L*=40 -00 -90 -80 -70 -60 -50 -40 -30 -20 -0 0 0 20 30 40 50 60 70 80 90 00 b* 00 90 90 80 80 70 70 60 60 50 50 40 40 30 30 20 20 0 0 0 0 -0 -0 -20 -20 -30 -30 -40 -50 -60 -70 -80 -90 L* = 40 -40 709 primaries White D65 Reference D50 Bradford yes Gamma sRGB Dot mark for out of gamut Clipping for R-Y-G-C-B-M hexagon Outer blue area human gamut -50 -60 -70 -80 -90 -00 -00 -00 -90 -80 -70 -60 -50 -40 -30 -20 -0 0 19 0 20 30 40 50 60 70 80 90 a* .8.

8.6 sRGB L*=50 -00 -90 -80 -70 -60 -50 -40 -30 -20 -0 0 0 20 30 40 50 60 70 80 90 00 b* 00 90 90 80 80 70 70 60 60 50 50 40 40 30 30 20 20 0 0 0 0 -0 -0 -20 -20 -30 -30 -40 -50 -60 -70 -80 -90 L* = 50 -40 709 primaries White D65 Reference D50 Bradford yes Gamma sRGB Dot mark for out of gamut Clipping for R-Y-G-C-B-M hexagon Outer blue area human gamut -50 -60 -70 -80 -90 -00 -00 -00 -90 -80 -70 -60 -50 -40 -30 -20 -0 0 20 0 20 30 40 50 60 70 80 90 a* .

8.7 sRGB L*=60 -00 -90 -80 -70 -60 -50 -40 -30 -20 -0 0 0 20 30 40 50 60 70 80 90 00 b* 00 90 90 80 80 70 70 60 60 50 50 40 40 30 30 20 20 0 0 0 0 -0 -0 -20 -20 -30 -30 -40 -50 -60 -70 -80 -90 L* = 60 -40 709 primaries White D65 Reference D50 Bradford yes Gamma sRGB Dot mark for out of gamut Clipping for R-Y-G-C-B-M hexagon Outer blue area human gamut -50 -60 -70 -80 -90 -00 -00 -00 -90 -80 -70 -60 -50 -40 -30 -20 -0 0 21 0 20 30 40 50 60 70 80 90 a* .

8 sRGB L*=70 -00 -90 -80 -70 -60 -50 -40 -30 -20 -0 0 0 20 30 40 50 60 70 80 90 00 b* 00 90 90 80 80 70 70 60 60 50 50 40 40 30 30 20 20 0 0 0 0 -0 -0 -20 -20 -30 -30 -40 -50 -60 -70 -80 -90 L* = 70 -40 709 primaries White D65 Reference D50 Bradford yes Gamma sRGB Dot mark for out of gamut Clipping for R-Y-G-C-B-M hexagon Outer blue area human gamut -50 -60 -70 -80 -90 -00 -00 -00 -90 -80 -70 -60 -50 -40 -30 -20 -0 0 22 0 20 30 40 50 60 70 80 90 a* .8.

8.9 sRGB L*=80 -00 -90 -80 -70 -60 -50 -40 -30 -20 -0 0 0 20 30 40 50 60 70 80 90 00 b* 00 90 90 80 80 70 70 60 60 50 50 40 40 30 30 20 20 0 0 0 0 -0 -0 -20 -20 -30 -30 -40 -50 -60 -70 -80 -90 L* = 80 -40 709 primaries White D65 Reference D50 Bradford yes Gamma sRGB Dot mark for out of gamut Clipping for R-Y-G-C-B-M hexagon Outer blue area human gamut -50 -60 -70 -80 -90 -00 -00 -00 -90 -80 -70 -60 -50 -40 -30 -20 -0 0 23 0 20 30 40 50 60 70 80 90 a* .

8.10 sRGB L*=90 -00 -90 -80 -70 -60 -50 -40 -30 -20 -0 0 0 20 30 40 50 60 70 80 90 00 b* 00 90 90 80 80 70 70 60 60 50 50 40 40 30 30 20 20 0 0 0 0 -0 -0 -20 -20 -30 -30 -40 -50 -60 -70 -80 -90 L* = 90 -40 709 primaries White D65 Reference D50 Bradford yes Gamma sRGB Dot mark for out of gamut Clipping for R-Y-G-C-B-M hexagon Outer blue area human gamut -50 -60 -70 -80 -90 -00 -00 -00 -90 -80 -70 -60 -50 -40 -30 -20 -0 0 24 0 20 30 40 50 60 70 80 90 a* .

8.11 sRGB L*=99 -00 -90 -80 -70 -60 -50 -40 -30 -20 -0 0 0 20 30 40 50 60 70 80 90 00 b* 00 90 90 80 80 70 70 60 60 50 50 40 40 30 30 20 20 0 0 0 0 -0 -0 -20 -20 -30 -30 -40 -50 -60 -70 -80 -90 L* = 99 -40 709 primaries White D65 Reference D50 Bradford yes Gamma sRGB Dot mark for out of gamut Clipping for R-Y-G-C-B-M hexagon Outer blue area human gamut -50 -60 -70 -80 -90 -00 -00 -00 -90 -80 -70 -60 -50 -40 -30 -20 -0 0 25 0 20 30 40 50 60 70 80 90 a* .

2 Dot mark for out of gamut Clipping for R-Y-G-C-B-M hexagon Outer blue area human gamut -50 -60 -70 -80 -90 -00 -00 -00 -90 -80 -70 -60 -50 -40 -30 -20 -0 0 26 0 20 30 40 50 60 70 80 90 a* . -00 -90 -80 -70 -60 -50 -40 -30 -20 -0 0 0 20 30 40 50 60 70 80 90 00 b* 00 90 90 80 80 70 70 60 60 50 50 40 40 30 30 20 20 0 0 0 0 -0 -0 -20 -20 -30 -30 -40 -50 -60 -70 -80 -90 L* = 0 -40 AdobeRGB(98) White D65 Reference D50 Bradford yes Gamma 2. These discrete values are shown as circles either black on light background or white on dark background. those for L=L* to L*+1 are shown as filled round dots. It is obviously not a trivial task to define gamut boundaries formalistically by dominating convex shapes with locally weak concave appearance [12].1 AdobeRGB L*=10 This chapter contains additionally to the RGB values for AdobeRGB (1998 is omitted here) the CIELab values for the offset printing process ISOcoated_v2_eci. The profile has unity input and output curves and an identity matrix.9. Continued next page. The printable values for L = L*-1 to L* are shown as stroked round dots. The graphic shows available Lab values as defined by the profile LUT AtoB1.icc [13].

Z = Z·( Zmw/Zn ). Y = Y·(Ymw / Yn ). Ymw =0.84552. For a better comparison with ProfileMaker 5 (GamutView).87683. -00 -90 -80 -70 -60 -50 -40 -30 -20 -0 0 0 20 30 40 50 60 70 80 90 00 b* 00 90 90 80 80 70 70 60 60 50 50 40 40 30 30 20 20 0 0 0 0 -0 -0 -20 -20 -30 -30 -40 -50 -60 -70 -80 -90 L* = 20 -40 AdobeRGB(98) White D65 Reference D50 Bradford yes Gamma 2. Media white is defined in the profile by Xmw = 0.74716.2 AdobeRGB L*=20 The CIELab values in the profile LUT AtoB1 are normalized for white at L*=100.icc as white round dots.9. the values were converted by mapping LUT white to media white. The graphic shows Lab values for AdobeRGB and available values for the CMYK profile ISOcoated_v2_eci. The sequence is algorithmically defined by LABtoXYZ. XYZtoLAB . Zmw =0. a*=0 and b*= 0. X = X·(Xmw / Xn ).2 Dot mark for out of gamut Clipping for R-Y-G-C-B-M hexagon Outer blue area human gamut -50 -60 -70 -80 -90 -00 -00 -00 -90 -80 -70 -60 -50 -40 -30 -20 -0 0 27 0 20 30 40 50 60 70 80 90 a* .

2 Dot mark for out of gamut Clipping for R-Y-G-C-B-M hexagon Outer blue area human gamut -50 -60 -70 -80 -90 -00 -00 -00 -90 -80 -70 -60 -50 -40 -30 -20 -0 0 28 0 20 30 40 50 60 70 80 90 a* .3 AdobeRGB L*=30 The graphic shows Lab values for AdobeRGB and available values for the CMYK profile ISOcoated_v2_eci.icc as white round dots.9. -00 -90 -80 -70 -60 -50 -40 -30 -20 -0 0 0 20 30 40 50 60 70 80 90 00 b* 00 90 90 80 80 70 70 60 60 50 50 40 40 30 30 20 20 0 0 0 0 -0 -0 -20 -20 -30 -30 -40 -50 -60 -70 -80 -90 L* = 30 -40 AdobeRGB(98) White D65 Reference D50 Bradford yes Gamma 2.

2 Dot mark for out of gamut Clipping for R-Y-G-C-B-M hexagon Outer blue area human gamut -50 -60 -70 -80 -90 -00 -00 -00 -90 -80 -70 -60 -50 -40 -30 -20 -0 0 29 0 20 30 40 50 60 70 80 90 a* .4 AdobeRGB L*=40 The graphic shows Lab values for AdobeRGB and available values for the CMYK profile ISOcoated_v2_eci. -00 -90 -80 -70 -60 -50 -40 -30 -20 -0 0 0 20 30 40 50 60 70 80 90 00 b* 00 90 90 80 80 70 70 60 60 50 50 40 40 30 30 20 20 0 0 0 0 -0 -0 -20 -20 -30 -30 -40 -50 -60 -70 -80 -90 L* = 40 -40 AdobeRGB(98) White D65 Reference D50 Bradford yes Gamma 2.9.icc as white round dots.

5 AdobeRGB L*=50 The graphic shows Lab values for AdobeRGB and available values for the CMYK profile ISOcoated_v2_eci.9. -00 -90 -80 -70 -60 -50 -40 -30 -20 -0 0 0 20 30 40 50 60 70 80 90 00 b* 00 90 90 80 80 70 70 60 60 50 50 40 40 30 30 20 20 0 0 0 0 -0 -0 -20 -20 -30 -30 -40 -50 -60 -70 -80 -90 L* = 50 -40 AdobeRGB(98) White D65 Reference D50 Bradford yes Gamma 2.2 Dot mark for out of gamut Clipping for R-Y-G-C-B-M hexagon Outer blue area human gamut -50 -60 -70 -80 -90 -00 -00 -00 -90 -80 -70 -60 -50 -40 -30 -20 -0 0 30 0 20 30 40 50 60 70 80 90 a* .icc as black round dots.

-00 -90 -80 -70 -60 -50 -40 -30 -20 -0 0 0 20 30 40 50 60 70 80 90 00 b* 00 90 90 80 80 70 70 60 60 50 50 40 40 30 30 20 20 0 0 0 0 -0 -0 -20 -20 -30 -30 -40 -50 -60 -70 -80 -90 L* = 60 -40 AdobeRGB(98) White D65 Reference D50 Bradford yes Gamma 2.9.2 Dot mark for out of gamut Clipping for R-Y-G-C-B-M hexagon Outer blue area human gamut -50 -60 -70 -80 -90 -00 -00 -00 -90 -80 -70 -60 -50 -40 -30 -20 -0 0 31 0 20 30 40 50 60 70 80 90 a* .6 AdobeRGB L*=60 The graphic shows Lab values for AdobeRGB and available values for the CMYK profile ISOcoated_v2_eci.icc as black round dots.

-00 -90 -80 -70 -60 -50 -40 -30 -20 -0 0 0 20 30 40 50 60 70 80 90 00 b* 00 90 90 80 80 70 70 60 60 50 50 40 40 30 30 20 20 0 0 0 0 -0 -0 -20 -20 -30 -30 -40 -50 -60 -70 -80 -90 L* = 70 -40 AdobeRGB(98) White D65 Reference D50 Bradford yes Gamma 2.2 Dot mark for out of gamut Clipping for R-Y-G-C-B-M hexagon Outer blue area human gamut -50 -60 -70 -80 -90 -00 -00 -00 -90 -80 -70 -60 -50 -40 -30 -20 -0 0 32 0 20 30 40 50 60 70 80 90 a* .icc as black round dots.7 AdobeRGB L*=70 The graphic shows Lab values for AdobeRGB and available values for the CMYK profile ISOcoated_v2_eci.9.

8 AdobeRGB L*=80 The graphic shows Lab values for AdobeRGB and available values for the CMYK profile ISOcoated_v2_eci.icc as black round dots.2 Dot mark for out of gamut Clipping for R-Y-G-C-B-M hexagon Outer blue area human gamut -50 -60 -70 -80 -90 -00 -00 -00 -90 -80 -70 -60 -50 -40 -30 -20 -0 0 33 0 20 30 40 50 60 70 80 90 a* .9. -00 -90 -80 -70 -60 -50 -40 -30 -20 -0 0 0 20 30 40 50 60 70 80 90 00 b* 00 90 90 80 80 70 70 60 60 50 50 40 40 30 30 20 20 0 0 0 0 -0 -0 -20 -20 -30 -30 -40 -50 -60 -70 -80 -90 L* = 80 -40 AdobeRGB(98) White D65 Reference D50 Bradford yes Gamma 2.

9 AdobeRGB L*=90 The graphic shows Lab values for AdobeRGB and available values for the CMYK profile ISOcoated_v2_eci.icc as black round dots. -00 -90 -80 -70 -60 -50 -40 -30 -20 -0 0 0 20 30 40 50 60 70 80 90 00 b* 00 90 90 80 80 70 70 60 60 50 50 40 40 30 30 20 20 0 0 0 0 -0 -0 -20 -20 -30 -30 -40 -50 -60 -70 -80 -90 L* = 90 -40 AdobeRGB(98) White D65 Reference D50 Bradford yes Gamma 2.2 Dot mark for out of gamut Clipping for R-Y-G-C-B-M hexagon Outer blue area human gamut -50 -60 -70 -80 -90 -00 -00 -00 -90 -80 -70 -60 -50 -40 -30 -20 -0 0 34 0 20 30 40 50 60 70 80 90 a* .9.

74486. Zmw =0.8 Dot mark for out of gamut Clipping for R-Y-G-C-B-M hexagon Outer blue area human gamut -50 -60 -70 -80 -90 -00 -00 -00 -90 -80 -70 -60 -50 -40 -30 -20 -0 0 35 0 20 30 40 50 60 70 80 90 a* . Ymw =0. See chapter 9.icc (previous chapter).10.1 and 9. like inkjet printing.87556.2 for some details how to extract the data from the profile.modulated printing.1 ProPhotoRGB L*=10 The graphic shows Lab values for ProPhotoRGB and available values for the CMYK profile PSO_Coated_NPscreen_ISO12647_eci.icc as black round dots.84386. -00 -90 -80 -70 -60 -50 -40 -30 -20 -0 0 0 20 30 40 50 60 70 80 90 00 b* 00 90 90 80 80 70 70 60 60 50 50 40 40 30 30 20 20 0 0 0 0 -0 -0 -20 -20 -30 -30 -40 -50 -60 -70 -80 -90 L* = 0 -40 ProPhoto primaries White D50 Reference D50 Bradford no Gamma . This profile is used for frequency . Media white is defined in the profile by Xmw = 0. but it fits as well in the gamut of AdobeRGB. The gamut is a little larger than that of ISOcoated_v2_eci. This is a profile for FM printing.

-00 -90 -80 -70 -60 -50 -40 -30 -20 -0 0 0 20 30 40 50 60 70 80 90 00 b* 00 90 90 80 80 70 70 60 60 50 50 40 40 30 30 20 20 0 0 0 0 -0 -0 -20 -20 -30 -30 -40 -50 -60 -70 -80 -90 L* = 20 -40 ProPhoto primaries White D50 Reference D50 Bradford no Gamma . This is a profile for FM printing.2 ProPhotoRGB L*=20 The graphic shows Lab values for ProPhotoRGB and available values for the CMYK profile PSO_Coated_NPscreen_ISO12647_eci.8 Dot mark for out of gamut Clipping for R-Y-G-C-B-M hexagon Outer blue area human gamut -50 -60 -70 -80 -90 -00 -00 -00 -90 -80 -70 -60 -50 -40 -30 -20 -0 0 36 0 20 30 40 50 60 70 80 90 a* .10.icc as black round dots.

8 Dot mark for out of gamut Clipping for R-Y-G-C-B-M hexagon Outer blue area human gamut -50 -60 -70 -80 -90 -00 -00 -00 -90 -80 -70 -60 -50 -40 -30 -20 -0 0 37 0 20 30 40 50 60 70 80 90 a* .3 ProPhotoRGB L*=30 The graphic shows Lab values for ProPhotoRGB and available values for the CMYK profile PSO_Coated_NPscreen_ISO12647_eci. -00 -90 -80 -70 -60 -50 -40 -30 -20 -0 0 0 20 30 40 50 60 70 80 90 00 b* 00 90 90 80 80 70 70 60 60 50 50 40 40 30 30 20 20 0 0 0 0 -0 -0 -20 -20 -30 -30 -40 -50 -60 -70 -80 -90 L* = 30 -40 ProPhoto primaries White D50 Reference D50 Bradford no Gamma .10.icc as black round dots. This is a profile for FM printing.

10.8 Dot mark for out of gamut Clipping for R-Y-G-C-B-M hexagon Outer blue area human gamut -50 -60 -70 -80 -90 -00 -00 -00 -90 -80 -70 -60 -50 -40 -30 -20 -0 0 38 0 20 30 40 50 60 70 80 90 a* .4 ProPhotoRGB L*=40 The graphic shows Lab values for ProPhotoRGB and available values for the CMYK profile PSO_Coated_NPscreen_ISO12647_eci. This is a profile for FM printing. -00 -90 -80 -70 -60 -50 -40 -30 -20 -0 0 0 20 30 40 50 60 70 80 90 00 b* 00 90 90 80 80 70 70 60 60 50 50 40 40 30 30 20 20 0 0 0 0 -0 -0 -20 -20 -30 -30 -40 -50 -60 -70 -80 -90 L* = 40 -40 ProPhoto primaries White D50 Reference D50 Bradford no Gamma .icc as black round dots.

5 ProPhotoRGB L*=50 The graphic shows Lab values for ProPhotoRGB and available values for the CMYK profile PSO_Coated_NPscreen_ISO12647_eci. -00 -90 -80 -70 -60 -50 -40 -30 -20 -0 0 0 20 30 40 50 60 70 80 90 00 b* 00 90 90 80 80 70 70 60 60 50 50 40 40 30 30 20 20 0 0 0 0 -0 -0 -20 -20 -30 -30 -40 -50 -60 -70 -80 -90 L* = 50 -40 ProPhoto primaries White D50 Reference D50 Bradford no Gamma .10.icc as black round dots.8 Dot mark for out of gamut Clipping for R-Y-G-C-B-M hexagon Outer blue area human gamut -50 -60 -70 -80 -90 -00 -00 -00 -90 -80 -70 -60 -50 -40 -30 -20 -0 0 39 0 20 30 40 50 60 70 80 90 a* . This is a profile for FM printing.

icc as black round dots. This is a profile for FM printing. -00 -90 -80 -70 -60 -50 -40 -30 -20 -0 0 0 20 30 40 50 60 70 80 90 00 b* 00 90 90 80 80 70 70 60 60 50 50 40 40 30 30 20 20 0 0 0 0 -0 -0 -20 -20 -30 -30 -40 -50 -60 -70 -80 -90 L* = 60 -40 ProPhoto primaries White D50 Reference D50 Bradford no Gamma .10.6 ProPhotoRGB L*=60 The graphic shows Lab values for ProPhotoRGB and available values for the CMYK profile PSO_Coated_NPscreen_ISO12647_eci.8 Dot mark for out of gamut Clipping for R-Y-G-C-B-M hexagon Outer blue area human gamut -50 -60 -70 -80 -90 -00 -00 -00 -90 -80 -70 -60 -50 -40 -30 -20 -0 0 40 0 20 30 40 50 60 70 80 90 a* .

icc as black round dots. This is a profile for FM printing.10. -00 -90 -80 -70 -60 -50 -40 -30 -20 -0 0 0 20 30 40 50 60 70 80 90 00 b* 00 90 90 80 80 70 70 60 60 50 50 40 40 30 30 20 20 0 0 0 0 -0 -0 -20 -20 -30 -30 -40 -50 -60 -70 -80 -90 L* = 70 -40 ProPhoto primaries White D50 Reference D50 Bradford no Gamma .7 ProPhotoRGB L*=70 The graphic shows Lab values for ProPhotoRGB and available values for the CMYK profile PSO_Coated_NPscreen_ISO12647_eci.8 Dot mark for out of gamut Clipping for R-Y-G-C-B-M hexagon Outer blue area human gamut -50 -60 -70 -80 -90 -00 -00 -00 -90 -80 -70 -60 -50 -40 -30 -20 -0 0 41 0 20 30 40 50 60 70 80 90 a* .

8 ProPhotoRGB L*=80 The graphic shows Lab values for ProPhotoRGB and available values for the CMYK profile PSO_Coated_NPscreen_ISO12647_eci. -00 -90 -80 -70 -60 -50 -40 -30 -20 -0 0 0 20 30 40 50 60 70 80 90 00 b* 00 90 90 80 80 70 70 60 60 50 50 40 40 30 30 20 20 0 0 0 0 -0 -0 -20 -20 -30 -30 -40 -50 -60 -70 -80 -90 L* = 80 -40 ProPhoto primaries White D50 Reference D50 Bradford no Gamma . This is a profile for FM printing.icc as black round dots.8 Dot mark for out of gamut Clipping for R-Y-G-C-B-M hexagon Outer blue area human gamut -50 -60 -70 -80 -90 -00 -00 -00 -90 -80 -70 -60 -50 -40 -30 -20 -0 0 42 0 20 30 40 50 60 70 80 90 a* .10.

10.icc as black round dots.9 ProPhotoRGB L*=90 The graphic shows Lab values for ProPhotoRGB and available values for the CMYK profile PSO_Coated_NPscreen_ISO12647_eci. This is a profile for FM printing.8 Dot mark for out of gamut Clipping for R-Y-G-C-B-M hexagon Outer blue area human gamut -50 -60 -70 -80 -90 -00 -00 -00 -90 -80 -70 -60 -50 -40 -30 -20 -0 0 43 0 20 30 40 50 60 70 80 90 a* . -00 -90 -80 -70 -60 -50 -40 -30 -20 -0 0 0 20 30 40 50 60 70 80 90 00 b* 00 90 90 80 80 70 70 60 60 50 50 40 40 30 30 20 20 0 0 0 0 -0 -0 -20 -20 -30 -30 -40 -50 -60 -70 -80 -90 L* = 90 -40 ProPhoto primaries White D50 Reference D50 Bradford no Gamma .

11.1 3D Views for three RGB-Spaces b* No artifacts for Smooth Line Art Off a* CIE a*b* axes -100 /100 L* 1/ 99 b* NTSC a* b* sRGB a* 44 .

Rotated. for sRGB Volumes and wireframes use smoothed height contours L* L* b* b* a* a* sRGB L* L* a*b* axes -100 /100 L* 0/100 a* b* a* b* L* L* a* a* b* b* L* L* b* a* b* a* 45 .2 3D Views.11.

11.3 3D Views b* a* CIE a*b* axes -100 /100 L* 0 / 95 b* NTSC a* b* sRGB a* 46 .

Y/Yn ) b* = 200 (Y/ Yn .Z/Zn ) Here we can see that the colors are too light for low luminance. This is the reason for the introduction of the nonlinear CIELab conversion.4: L* = 100 Y /Yn a* = 500 (X/Xn . Linear and Standard Nonlinear CIELab The bottom image shows the same 3D view for the sRGB color system as on the previous page.12. The top image shows a linear transformation. sRGB Linear a*b* axes -100 /100 L* 0 / 95 b* a* b* a* 47 sRGB Nonlinear . though the cubic root law is also not perfect.as in chapter 2.

13. Human Gamut in CIELab
The human gamut in CIELab is a cone with the apex at the origin of the coordinate
system. A threedimensional illustration can be found in [2] as well.
Here we see three cross sections at L*= 20, 40 and 60. The axes a* and b* are drawn
with lengths ± 200.

L*

b*

a*

L*

b*

a*

L*

b*

a*

48

14. Low Chromaticity for sRGB L*=50

-20 -8 -6 -4 -2 -0 -8

-6

-4

-2

0

2

4

6

8

0 2 4 6 8 20

b*

20

8

8

6

6

4

4

2

2

0

0

8

8

6

6

4

4

2

2

0

0

-2

-2

-4

-4

-6

-6

-8
-0
-2
-4
-6
-8

L* = 50

-8

709 primaries
White D65
Reference D50
Bradford yes
Gamma sRGB
Dot mark for
out of gamut
Clipping for
R-Y-G-C-B-M
hexagon
Outer blue area
human gamut

-0
-2
-4
-6
-8
-20

-20
-20 -8 -6 -4 -2 -0 -8

-6

-4

-2

0

49

2

4

6

8

0 2 4 6 8

a*

15. sRGB L*=50 with RGB Numbers

-00 -90 -80 -70 -60 -50 -40 -30 -20 -0 0

0 20 30 40 50 60 70 80 90 00

b*
90
80
70
60
50
40
30
20
0
0
-0
-20
-30
-40
-50
-60
-70
-80
-90
-00

00
0
0
6 
44 
4
0
0
0
0
6 
44 
4
0
0
0
0
6 
44 
4
0
0
0
0
6 
44 
4
0
0
0
0 
44 
42
6
3
6
0
0
7 
44 
42
40
4
0
0
7 
44 
42
62
63
0
0 
45 
42
7
8
82
0
0
7 
45 
42
99 
00
0
0
7 
45 
43
6 
7 
7
0
0
8 
45 
43
4 
34 
34
0
0
8 
46 
43 
5 
5
0
0
9 
46 
44
8 
69 
69
0
0
9 
47 
44
6 
86
709 primaries 86
0
0
White 0 D65 
47 
45
3
203
Reference D50 204
0
0
Bradford
0 yes 
48 
46
22
22
Gamma sRGB
0
0
Dot mark for49 46
9
239
239
out of gamut
0
0
Clipping for
2 
50 
47
R-Y-G-C-B-M
5
255
255
hexagon 0
0
3 
5 
48
Outer blue area
5
255
255
human gamut
0
0 
52 
49
4
5
255
255

L* = 50

32 
38
0
29 
38
0
25 
38
0 
8 
38
0
2 
39
9
0 
39
42
0 
39
63
0 
39
82
0 
39 
00
0 
40 
7
0 
40 
34
0 
40 
52
0 
4 
69
0 
4 
86
0 
42
204
0 
43
22
0 
44
239
0 
44
255
0 
45
255
0 
46
255

67 
35
0
66 
35
0
64 
35
0
62 
35
0
58 
35 
2
53 
35
43
44 
36
64
3 
36
83
0 
36 
00
0 
36 
7
0 
37 
35
0 
37 
52
0 
38 
69
0 
38 
86
0 
39
204
0 
40
222
0 
40
239
0 
4
255
0 
42
255
0 
43
255

90 
3
0
89 
3
0
87 
3
0
86 
32
0
83 
32 
5
80 
32
44
75 
32
65
69 
32
83
59 
32 
0
45 
33 
8 
5 
33 
35
0 
34 
52
0 
34 
69
0 
35 
87
0 
35
204
0 
36
222
0 
37
239
0 
38
255
0 
39
255
0 
40
255 

08 
27
0 
07 
27
0 
06 
27
0 
05 
27
0 
03 
28 
7 
0 
28
45
97 
28
65
92 
28
84
86 
28 
0
77 
29 
8
65 
29 
35
47 
30 
52
0 
30 
69
0 
3 
87
0 
3
204
0 
32
222
0 
33
240
0 
34
255
0 
35
255
0 
36
255 

24 
23
0 
24 
23
0 
23 
23
0 
22 
23
0 
20 
23
20 
8 
23
46 
5 
23
66  

23
84 
06 
24 
0 
00 
24 
9
92 
25 
36
80 
25 
53
64 
26 
70
36 
26 
87
0 
27
204
0 
28
222
0 
29
240
0 
30
255
0 
3
255
0 
32
255 

39 
7
0 
39 
7
0 
38 
7
0 
37 
8
0 
36 
8
22 
34 
8
47 
32 
8
67 
28 
8
85 
24 
9 
02 
9 
9 
9 
2 
9 
36 
04 
20 
53
93 
20 
70
77 
2 
87
54 
22
205
0 
23
222
0 
24
240
0 
25
255
0 
26
255
0 
27
255

-00 -90 -80 -70 -60 -50 -40 -30 -20 -0 0

50 

53 

0 
53 

0 
52 

0 
5 
2
0 
50 
2
25 
49 
2
49 
47 
2
68 
44 
2
85 
40 
3 
02 
36 
3 
9 
30 
3 
36 
23 
4 
53 
4 
5 
70 
03 
5 
87
88 
6
205
66 
7
222 
6 
8
240
0 
9
255
0 
20
255
0 
22
255 

67 
04
0 
66 
05
0 
66 
05
0 
65 
05
0 
64 
05
27 
63 
05
50 
6 
05
69 
58 
05
86 
55 
06 
03 
5 
06 
20 
46 
07 
37 
40 
07 
53 
33 
08 
70 
24 
09 
88 
2 
0
205
97 

223
75 
2
240
34 
3
255
0 
4
255
0 
6
255 

80
96
0 
79
96
0 
79
97
0 
78
97
0 
77
97
30 
76
97
5 
74
97
69 
72
98
87 
69
98 
04 
66
98 
20 
6
99 
37 
56 
00 
54 
50 
00 
7 
42 
0 
88 
32 
02
205 
20 
03
223 
05 
04
240
83 
06
255
45 
07
255
0 
09
255 

92
87
0 
92
87
0 
9
87
0 
9
87
0 
90
87
32 
89
87
53 
87
88
70 
85
88
87 
83
89 
04 
80
89 
2 
76
90 
37 
7
90 
54 
65
9 
7 
58
92 
88 
50
93
205 
40
94
223 
27
96
24 

97
255
89
99
255
5 
00
255

205
75
0
204
75
0
204
75
0
203
75
4
202
75
34
20
76
54
200
76
7 
98
77
88 
96
77 
05 
93
78 
2 
89
78 
38 
85
79 
55 
80
80 
7 
74
8 
88 
67
83
206 
58
84
223 
47
85
24 
34
87
255 
7
89
255
94
9
255

27
59
0
26
59
0
26
60
0
25
60 
0
25
60
37
24
60
55
22
6
73
2
6
89
208
62 
05
206
63 
22
203
64 
38 
99
65 
55 
94
66 
72 
89
67 
89 
82
69
206 
74
7
223 
65
73
24 
54
75
255 
40
77
255 
22
79
255

229
35
0
228
35
0
228
35
0
227
35 
6
227
36
39
226
36
57
225
37
74
223
38
90
22
39 
06
28
4 
22
25
42 
39
22
44 
55
208
46 
72
203
48 
89 
97
50
206 
90
52
224 
8
55
24 
72
58
255 
60
60
255 
45
63
255

240
0
0
240
0
0
240
0
0
239
0
20
239
0
4
238
0
58
237
0
75
235
0
9
233
0 
07
23
0 
23
228
0 
39
225
0 
56
22
0 
73
26
0 
90
2
8
207
205 
7
224 
97
23
242 
88
29
255 
78
35
255 
65
40
255

252
0
0
252
0
0
25
0
0
25
0
25
250
0
43
249
0
60
248
0
76
247
0
92
245
0 
08
243
0 
24
24
0 
40
237
0 
56
234
0 
73
230
0 
90
225
0
207
29
0
224
22
0
242
204
0
255 
95
0
255 
84
0
255

0 20 30 40 50 60 70 80 90

90
80
70
60
50
40
30
20
0
0
-0
-20
-30
-40
-50
-60
-70
-80
-90
-00

a*

734698 def /yr 0.4368 def /yw 0.26533 def /xg 0.06000 def } def /PrimsOpti {/txtP (OptiRGB) def /xr 0.15000 def /yb 0.036600 def /yb 0.3160 /txtW (NTSC) def } def /White3000K % R.1355 def /yb 0.115173 def /xb 0.017658 def /PrimsProP {/txtP (ProPhoto primaries) def /xr 0.15000 def /yb 0.06000 def } def /PrimsNTSC {/txtP (NTSC /xr 0.71000 def def /yb 0.3340 def %610 /xg 0.3804 def /yw 0.6658 def /yr 0.73467 def /yr 0.67000 /xg 0.265302 def /xg 0.159599 def /yg 0.3585 /txtW (D50) def } def /White6000K def def def Measuring Colours def def def 51 .08000 def /PrimsWide {/txtP (WideGamut /xr 0.4041 /txtW (3000K) def } def /White4000K {/xw 0.840401 def /xb 0.60000 def /xb 0.265299 def /yg 0.21000 def /yg 0.G.71741 def /xb 0.16.826432 def /yb 0.21000 /xb 0.71000 def /xb 0.1 PostScript Kernels /PrimsCie {/txtP (CIE primaries) def /xr 0. {/xw 0.0399 def %465 } def /WhiteEqE {/xw 0.64000 def /yr 0.30000 def /yg 0.W.3333 def /yw 0.7816 def %535 /xb 0.3767 /txtW (4000K) def } def /WhiteD50 {/xw 0.3457 def /yw 0.33000 def def /yg 0.3290 /txtW (D65) def } def /WhiteNTSC % Illuminant C {/xw 0.1929 def /yg 0.16658 def /yb 0.Hunt.00886 def } def /Prims709 {/txtP (709 primaries) def /xr 0.33000 def /xg 0.156608 def } def primaries) def /yr 0.000107 def } def /PrimsAd98 {/txtP (AdobeRGB(98)) def /xr 0.14000 } def primaries) def def /yr 0.734700 def /xg 0.64000 def /yr 0.3100 def /yw 0.3127 def /yw 0.33000 def /xg 0.27376 def /yg 0.Energy ) def } def /WhiteD65 {/xw 0.3333 /txtW (Eq.

3165 def 0.2941 def % Wyszecki+Stiles interpolated 0.2664 def /CX13 -0.3333 def /yn /txtN (Eq.0389 def /CX32 -0.0685 def /CX33 1.3100 def /yn /txtN (NTSC) def } def /RefD50 {/xn 0.3290 def 0.1614 def /CX21 -0.8951 def /CX12 0.16.110 % Cone = CX*X.0367 def /CX31 0.0296 def % Inverse Cone Response /D CX22 CX33 mul CX23 CX32 mul sub CX11 mul CX21 CX33 mul CX23 CX31 mul sub CX12 mul sub CX21 CX32 mul CX22 CX31 mul sub CX13 mul add def /XC11 CX22 CX33 mul CX23 CX32 mul sub D div def /XC12 CX12 CX33 mul CX13 CX32 mul sub D div neg def /XC13 CX12 CX23 mul CX13 CX22 mul sub D div def /XC21 CX21 CX33 mul CX23 CX31 mul sub D div neg def /XC22 CX11 CX33 mul CX13 CX31 mul sub D div def /XC23 CX11 CX23 mul CX13 CX21 mul sub D div neg def /XC31 CX21 CX32 mul CX22 CX31 mul sub D div def /XC32 CX11 CX32 mul CX12 CX31 mul sub D div neg def /XC33 CX11 CX22 mul CX12 CX21 mul sub D div def % Source /Yws 1 def /zw 1 xw sub yw sub def /Xws xw yw div Yws mul def /Zws zw yw div Yws mul def % PCS /Ywp 1 def /zn 1 xn sub yn sub def /Xwp xn yn div Ywp mul def /Zwp zn yn div Ywp mul def % Cone Source /Rs CX11 Xws mul CX12 /Gs CX21 Xws mul CX22 /Bs CX31 Xws mul CX32 % Cone PCS /Rp CX11 Xwp mul CX12 /Gp CX21 Xwp mul CX22 /Bp CX31 Xwp mul CX32 /a11 Rp Rs div def Yws mul add CX13 Zws mul add def Yws mul add CX23 Zws mul add def Yws mul add CX33 Zws mul add def Ywp mul add CX13 Zwp mul add def Ywp mul add CX23 Zwp mul add def Ywp mul add CX33 Zwp mul add def 52 .3318 def 0.Energy ) } def /RefD65 {/xn 0.3333 def def 0.3220 def /yw /txtW (6000K) def } def /White7000K {/xw 0.2 PostScript Kernels {/xw 0.3127 def /yn /txtN (D65) def } def /RefNTSC {/xn 0.7502 def /CX22 1.3048 def 0.3585 def /MakeBrad {% ICC-Spec p.3063 def /yw /txtW (7000K) def } def /White8000K {/xw 0.2857 def /yw /txtW (9300K) def } def /RefEqE {/xn 0.2952 def /yw /txtW (8000K) def } def /White9300K % {/xw 0.7135 def /CX23 0.3457 def /yn /txtN (D50) def } def 0.3160 def 0. X = XC*Cone % Cone Response /CX11 0.

9904 def /BM23 -0.0171 def %/BM31 -0.0092 def /BM32 0.0479 def /BM12 0.0296 def /BM22 0.0502 def %/BM21 0.7519 def % XYZ(D50)=BM*XYZ(D65) } def /PrimToMat { % matrix CR for XYZ(WP)=CR*RGB(WP) /zr 1 xr sub yr sub def /zg 1 xg sub yg sub def /zb 1 xb sub yb sub def /zw 1 xw sub yw sub def /zn 1 xn sub yn sub def /D xr xb sub yg yb sub mul yr yb sub /U xw xb sub yg yb sub mul yw yb sub /V xr xb sub yw yb sub mul yr yb sub /u U D div def /v V D div def /w 1 u sub v sub def % XYZ(WP)=CR(WP)*RGB(WP) /CR11 u xr mul yw div def /CR12 v xg /CR21 u yr mul yw div def /CR22 v yg /CR31 u zr mul yw div def /CR32 v zg Brad {% XR(D50)=BM*CR(D65) /XR11 BM11 CR11 mul /XR12 BM11 CR12 mul /XR13 BM11 CR13 mul /XR21 BM21 CR11 mul /XR22 BM21 CR12 mul /XR23 BM21 CR13 mul /XR31 BM31 CR11 mul /XR32 BM31 CR12 mul /XR33 BM31 CR13 mul {% XR(D65)=CR(D65) BM12 BM12 BM12 BM22 BM22 BM22 BM32 BM32 BM32 CR21 CR22 CR23 CR21 CR22 CR23 CR21 CR22 CR23 mul mul mul mul mul mul mul mul mul xg xb sub mul sub def xg xb sub mul sub def xw xb sub mul sub def add add add add add add add add add mul yw div def /CR13 w xb mul yw div def mul yw div def /CR23 w yb mul yw div def mul yw div def /CR33 w zb mul yw div def BM13 BM13 BM13 BM23 BM23 BM23 BM33 BM33 BM33 CR31 CR32 CR33 CR31 CR32 CR33 CR31 CR32 CR33 mul mul mul mul mul mul mul mul mul 53 add add add add add add add add add def def def def def def def def def } .3 PostScript Kernels /a22 Gp Gs div def /a33 Bp Bs div def % Diag(aii)*CX /X11 a11 CX11 mul def /X12 a11 CX12 mul def /X13 a11 CX13 mul def /X21 a22 CX21 mul def /X22 a22 CX22 mul def /X23 a22 CX23 mul def /X31 a33 CX31 mul def /X32 a33 CX32 mul def /X33 a33 CX33 mul def % Bradford % BM = XC*Diag(aii)*CX /BM11 XC11 X11 mul XC12 /BM12 XC11 X12 mul XC12 /BM13 XC11 X13 mul XC12 /BM21 XC21 X11 mul XC22 /BM22 XC21 X12 mul XC22 /BM23 XC21 X13 mul XC22 /BM31 XC31 X11 mul XC32 /BM32 XC31 X12 mul XC32 /BM33 XC31 X13 mul XC32 X21 X22 X23 X21 X22 X23 X21 X22 X23 mul mul mul mul mul mul mul mul mul add add add add add add add add add XC13 XC13 XC13 XC23 XC23 XC23 XC33 XC33 XC33 X31 X32 X33 X31 X32 X33 X31 X32 X33 mul mul mul mul mul mul mul mul mul add add add add add add add add add % Inverse Bradford /D BM22 BM33 mul BM23 BM32 mul sub BM11 BM21 BM33 mul BM23 BM31 mul sub BM12 BM21 BM32 mul BM22 BM31 mul sub BM13 /MB11 BM22 BM33 mul BM23 BM32 mul sub D /MB12 BM12 BM33 mul BM13 BM32 mul sub D /MB13 BM12 BM23 mul BM13 BM22 mul sub D /MB21 BM21 BM33 mul BM23 BM31 mul sub D /MB22 BM11 BM33 mul BM13 BM31 mul sub D /MB23 BM11 BM23 mul BM13 BM21 mul sub D /MB31 BM21 BM32 mul BM22 BM31 mul sub D /MB32 BM11 BM32 mul BM12 BM31 mul sub D /MB33 BM11 BM22 mul BM12 BM21 mul sub D mul mul mul div div div div div div div div div sub add def def neg def def neg def def neg def def neg def def def def def def def def def def def % Bradford matrix XYZ(D50)=BM*XYZ(D65) %/BM11 1.16.0229 def /BM13 -0.0151 def /BM33 0.

055 def mul mul mul } 0.008856 def %/c2 7.00304 lt {12.008856 def %/c2 7.00304 lt {12.05 add 100 mm mul def /gb* b* 1.787 def %/c3 16 116 div def %/c4 0.0 div Y1 add def /Z1 Y1 b* 2.055 exp 1.0 mul def /b* Y1 Z1 sub 2.92 mul }{iga /B B dup 0.055 sub } ifelse def 0.16.0 mul def /ga* a* 1.206893 def /Y1 L* 0.055 exp 1.787 def %/c3 16 116 div def %/c4 0.055 sub } ifelse def 0.16 add 1.4 ne {/R R iga exp def /G G iga exp def /B {/R R dup 0.055 sub } ifelse def } ifelse 54 .92 mul }{iga /G G dup 0.206893 def /X R XR11 mul G XR12 mul add B XR13 mul add def /Y R XR21 mul G XR22 mul add B XR23 mul add def /Z R XR31 mul G XR32 mul add B XR33 mul add def /X1 X Xn div dup c1 le { c2 mul c3 add }{ c0 exp } ifelse def /Y1 Y Yn div dup c1 le { c2 mul c3 add }{ c0 exp } ifelse def /Z1 Z Zn div dup c1 le { c2 mul c3 add }{ c0 exp } ifelse def /a* X1 Y1 sub 5.00304 lt {12.4 PostScript Kernels /XR11 CR11 def /XR12 CR12 def /XR13 CR13 def /XR21 CR21 def /XR22 CR22 def /XR23 CR23 def /XR31 CR31 def /XR32 CR32 def /XR33 CR33 def } ifelse % Inverse of XR /D XR22 XR33 mul XR23 XR32 mul sub XR11 mul XR21 XR33 mul XR23 XR31 mul sub XR12 mul sub XR21 XR32 mul XR22 XR31 mul sub XR13 mul add def /RX11 XR22 XR33 mul XR23 XR32 mul sub D div def /RX12 XR12 XR33 mul XR13 XR32 mul sub D div neg def /RX13 XR12 XR23 mul XR13 XR22 mul sub D div def /RX21 XR21 XR33 mul XR23 XR31 mul sub D div neg def /RX22 XR11 XR33 mul XR13 XR31 mul sub D div def /RX23 XR11 XR23 mul XR13 XR21 mul sub D div neg def /RX31 XR21 XR32 mul XR22 XR31 mul sub D div def /RX32 XR11 XR32 mul XR12 XR31 mul sub D div neg def /RX33 XR11 XR22 mul XR12 XR21 mul sub D div def /Yw 1 def /Xw xw yw div Yw mul def /Zw zw yw div Yw mul def /Yn 1 def /Xn xn yn div Yn mul def /Zn zn yn div Yn mul def } def /LABtoRGB {%/c0 1 3 div def Actual definition in main program %/c1 0.92 mul }{iga R G B setrgbcolor } bind def /xyYtoLAB B iga exp exp 1.0 div sub def /X X1 c4 le {X1 c3 sub c2 div }{ X1 3 exp } ifelse Xn mul def /Y Y1 c4 le {Y1 c3 sub c2 div }{ Y1 3 exp } ifelse Yn mul def /Z Z1 c4 le {Z1 c3 sub c2 div }{ Z1 3 exp } ifelse Zn mul def /R X RX11 mul Y RX12 mul add Z RX13 mul add def /G X RX21 mul Y RX22 mul add Z RX23 mul add def /B X RX31 mul Y RX32 mul add Z RX33 mul add def } bind def /RGBtoLAB {%/c0 1 3 div def Actual definition in main program %/c1 0.05 add 100 mm mul def } bind def /IGamma { /iga 1 gam div def /og false def % out of gamut R 0 lt { /R 0 def /og true def } if G 0 lt { /G 0 def /og true def } if B 0 lt { /B 0 def /og true def } if R 1 gt { /R 1 def /og true def } if G 1 gt { /G 1 def /og true def } if B 1 gt { /B 1 def /og true def } if gam 2.16 div def /X1 a* 5.

8 def} if % ProPhoto G 1 eq {/gam 2.6 def} if L 7 eq {/L* 0.99 def} if MakeBrad PrimToMat 55 .3 def} if L 4 eq {/L* 0.2 def} if G 2 eq {/gam 2.2 def} if L 3 eq {/L* 0.5 def} if L 6 eq {/L* 0.8 def} if L 9 eq {/L* 0.7 def} if L 8 eq {/L* 0.5 PostScript Kernels % input x.01 def} if L 1 eq {/L* 0.1 def} if L 2 eq {/L* 0.y.16.9 def} if L 10 eq {/L* 0.4 def} if L 5 eq {/L* 0.Y { /z 1 x sub y sub def /X x y div Y mul def /Z z y div Y mul def /R X RX11 mul Y RX12 mul add Z RX13 mul add def /G X RX21 mul Y RX22 mul add Z RX23 mul add def /B X RX31 mul Y RX32 mul add Z RX33 mul add def /max R def G max gt {/max G def } if B max gt {/max B def } if /R R max div def /G G max div def /B B max div def RGBtoLAB } bind def % ----------------------------------------------%—Choose Gamma /G 1 def G 0 eq {/gam 1.4 def} if % sRGB %—Choose one /P 0 def P 0 eq { PrimsCie P 1 eq { Prims709 P 2 eq { PrimsNTSC P 3 eq { PrimsWide P 4 eq { PrimsAd98 P 5 eq { PrimsProP } } } } } } %—Choose one /W 0 def W 0 eq { WhiteEqE W 1 eq { WhiteD65 W 2 eq { WhiteNTSC W 3 eq { White3000K W 4 eq { White4000K W 5 eq { WhiteD50 W 6 eq { White6000K W 7 eq { White7000K W 8 eq { White8000K W 9 eq { White9300K if if if if if if %—Choose one /N 5 def N 0 eq { RefEqE } N 1 eq { RefD65 } N 2 eq { RefNTSC} N 5 eq { RefD50 } } } } } } } } } } } if if if if if if if if if if % also Wide Gamut and ProPhoto if if if if %—Choose one /B 1 def B 0 eq { /Brad false def } if B 1 eq { /Brad true def } if %—Choose one /L 5 def L 0 eq {/L* 0.

0 475 470 460 380 0.9 55 0. 0.17.5 56 0.6 0.8 520 525 50 530 535 OptiRGB 0.120 Angle = 0.2 0.0 0.6 565 570 500 0.0399 465nm Gamma=2.1 Mapping CIELab to xyY Clipped for human gamut A new working space is introduced: L = 10.6658 yr = 0.. 15 .0 y 0.7 0.0 . 90 Radius = 10.8 0.7 540 545 550 505 555 AdobeRGB(98) 560 0.5 580 585 590 595 600 605 60 620 635 700 495 490 485 480 0.9 x . 0. 345° OptiRGB xr = 0.4 0.3 0.3340 610nm xg = 0. 20 .1355 yb = 0.4 0..7816 535nm xb = 0.3 0.1929 yg = 0.2 D65 Lines of constant radius for L=50 Straight lines a=0 or b=0 .2 575 sRGB 0. 20 ..

0 ..3 0. +120 -120.9 x .3 0.2 575 sRGB 0.5 57 0. 0.9 55 0.2 0.0 y 0.7 0.0 0.6 0.2 Mapping CIELab to xyY Clipped for human gamut L = a = b = 10.4 0.17..5 580 585 590 595 600 605 60 620 635 700 495 490 485 480 0.0 475 470 460 380 0.6 565 570 500 0. +120 Straight lines a=0 or b=0 .. 20 . 90 -120.4 0.7 540 545 550 505 555 AdobeRGB(98) 560 0.-110 .8 0.8 520 525 50 530 535 OptiRGB 0.-110 . 0.

.17. Random values L = 5 .6 0.6 565 570 500 0.7 540 545 550 505 555 AdobeRGB(98) 560 0.8 0.0 y 0. 0.0 .0 475 470 460 380 0.3 Mapping CIELab to xyY Clipped for the xy-unit-square.3 0.4 0.8 520 525 50 530 535 OptiRGB 0. +120 b = -120 .5 580 585 590 595 600 605 60 620 635 700 495 490 485 480 0. 0. Many colors are out of human gamut (chapter 13).7 0. 95 a = -120 .3 0.9 55 0.9 x .2 575 sRGB 0.4 0... +120 Straight lines a=0 or b=0 .0 0.5 58 0.2 0.

.912 pRGB 2.000 182. aRGB = AdobeRGB(98) and pRGB=ProPhotoRGB: N=0 Define RGB space For L*=0 To 100 Step 2 Do For a*=-128 To +128 Step 2 Do For b*=-128 To +128 Step 2 Do Begin Convert L*..255] Then N=N+1 End N=8*N Number N sRGB 832. Number N of colors in CIELab for sRGB.904 146. the portrait only a small part.b* into R.a*.18. Therefore a loss of levels by percentage because of quantization is more likely for the portrait. The first test image (not shown) contains random values for sRGB. The numbers in CIELab are rounded for 256/256/256 or 100/256/256 or 50/128/128 different levels.485 The random image uses the whole sRGB space.864 795. Test results Mode Pixels Colors Source sRGB Colors 256/256/256 Colors 100/256/256 Colors 50/128/128 Random 1. Number of Different Colors Test images sRGB with 1 million pixels each are converted to CIELab.208.000.752 aRGB 1.451 47.000. cropped for height and width 1000 pixels.728 59 .B in [0. The CIELab values are converted back to sRGB.712 Portrait 1.659.538 611. The second is this portrait.000 969. everything with double precision.G.629 89. The number of different colors in sRGB is counted before and after the conversion.006 9.B If R.G.

Hue H=0°.75 in one plane a*. whereas HLS to RGB delivers traditionally gamma encoded nonlinear values R‘G‘B‘. Perceived Hue can be defined by Munsell colors. Lines for Hues k·60° hit the primaries RGB and the secondaries CMY at S=1.b*.50. 30°. The dotted line is an interpolation path..L. The inputs H.1 HLS -Hue for sRGB in CIELab The graphic shows lines with constant HLS. Lines with constant Munsell hue appear curved in CIELab as well. see next page. . Lines with constant HLS-Hue appear considerably curved in a CIELab plane a*. 330° with varying HLSSaturation S=0. b*.25..S are here converted by Foley-HLS [9] into linear RGB. 0. 0. -00 -90 -80 -70 -60 -50 -40 -30 -20 -0 0 0 20 30 40 50 60 70 80 90 00 b* 00 90 90 80 80 70 70 60 60 50 50 40 40 30 30 20 20 0 0 0 0 -0 -0 -20 -20 -30 -30 -40 -50 -60 L* all -40 709 primaries White D65 Reference D50 Bradford yes Gamma sRGB -50 -60 -70 -70 -80 -90 Clipping for R-Y-G-C-B-M hexagon Outer blue area human gamut -80 -90 -00 -00 -00 -90 -80 -70 -60 -50 -40 -30 -20 -0 0 60 0 20 30 40 50 60 70 80 90 a* .1 for three HLS-Lightnesses L=0.19....

This interpolation path goes through magenta area. The upper gradient was made in sRGB. The graphic shows two gradients with endpoints Lab1=35/55/-100 RGB1=47/47/250 (blue) and Lab2=35/0/0 RGB2=82/82/82 (gray). which should result in less saturated blue without a tint. RGB Lab 61 . Bezold-Brücke effect: hue changes with luminance. the lower in Lab. The Lab gradient shows an even stronger magenta tint. According to [11] one has to take into account optical illusions: Abney effect: hue changes with colorimetric purity (here).19. but the other effects should not be ignored. On the previous page one can see a linear interpolation (dotted line) from Lab1 to Lab2. The sRGB gradient shows already a magenta tint though all interpolated colors have equal values R=G. that some blues which are out of gamut for a printer were mapped to in-gamut blues with a magenta tint [10]. Therefore a gamut compression in planes of constant Lab hue is not ideal.2 HLS -Hue for sRGB in CIELab It has been often observed.

1 References [1] R.org/icc_specs2..xalter [9] G.G.de/ciexyz29082000.de/pstutor22112002. New York .S. 1982 [3] References for Color Science http://docs-hoffmann.color.Hoffmann Color Order Systems RGB/HLS/HSB http://docs-hoffmann.pdf [5] Everything about Color and Computers http://www.com [11] M..Nielsen + M.Wyszecki + W.brucelindbloom. Ltd England. Ltd 2008 62 .com [6] M.pdf Year unknown. after 1998 [7] [8] International Color Consortium http://www.de/hlscone03052001.Fairchild Color Appearance Models John Wiley & Sons.color.D.Stiles Color Science John Wiley & Sons..Hunt Measuring Colour Fountain Press England 1998 [2] G.W.com/c55.org File Format for Color Profiles / newest version http://www..srgb.efg2.pdf [4] References for PostScript http://docs-hoffmann.20.pdf [10] http://www.Stokes The Creation of the sRGB ICC Profile http://www. 2005 [12] Ján Morovič Color Gamut Mapping John Wiley & Sons.

eci.pdf [16] http://www.20.php?id=de:start This doc: http://docs-hoffmann.php?id=en:downloads [14] http://www.org/products-de/icc/Readme04d.org/doku.org/doku.eci.fogra.org/products-de/icc/FograCharDaten_ECIProfile.fogra. 2 References [13] http://www.de/cielab03022003.pdf [15] http://www.pdf Gernot Hoffmann February 03 / 2003 + January 31 / 2013 Website Load Browser / Click here 63 .