Chromatic Adaptation Evaluation

We will perform here a simple evaluation of three common chromatic adaptation algorithms. We find all necessary tools for this evaluation elsewhere on this site, in the ColorChecker Calculator and the Chromatic Adaptation Calculator.

The ColorChecker Calculator is able to compute XYZ values spectrally relative to various reference illuminants. This gives us the exact reference values against which we may evaluate the adaptation methods. The Chromatic Adaptation Calculator allows us to adapt from one illuminant to another using different algorithms. These adapted values may then be compared against the true, reference values, allowing the differences to be measured and tabulated.


An Example

Let's look at the ColorChecker "Red" color (third row, third column of the chart) relative to reference illuminants A and C. The ColorChecker Calculator shows the true values for this color, relative to each illuminant to be:

Illuminant X Y Z
A 0.315756 0.162732 0.015905
C 0.203465 0.116458 0.053125

If we then take the XYZ for illuminant A and adapt it to illuminant C using the Chromatic Adaptation Calculator, we get three more XYZ values (one for each adaptation method):

Method X Y Z
Bradford 0.257963 0.139776 0.058825
von Kries 0.268446 0.159139 0.052843
XYZ Scaling 0.281868 0.162732 0.052844

Each of these adapted XYZ colors is then compared against the actual illuminant C value from the previous table. For this comparison, it is useful to first convert all XYZ values to Lab (using the CIE Color Calculator) and then measure the color difference in ΔE (using the Color Difference Calculator).

Method ΔE
Bradford 10.39
von Kries 12.63
XYZ Scaling 14.39

The following illustration shows what happens. The two reference illuminants are shown, connected by a line, as Illuminants A and C. The actual ColorChecker sample colors are also shown, connected by a line, as Samples A and C. Then Sample A has been adapted from illuminant A to illuminant C three times, each with a different adaptation method. You can see that none of the adapted values is exactly the same as the actual Sample C, but they have moved the color in the right general direction.

Chromatic Adaptation Example

The above calculation was performed using the first 18 ColorChecker colors (all chromatic adaptation methods yield the same, perfect results for neutrals, so I chose to exclude the six neutral patches from the evaluation), and all combinations mapping between every possible pairing of the eight reference illuminants. The table below shows the results. The values in this table represent the following, always expressed in ΔE:

Chromatic Adaptation Meaning

You can see from the table that Bradford is superior to von Kries, which in turn is superior to XYZ Scaling. You can also see that the adaptation is only an approximation to the true value, and that this approximation is worse when the two reference illuminants are very different from each other. Adaptation also becomes progressively less perfect as the color is farther away from neutral.

From To
A B C D50 D55 D65 D75 E
A
 0.0 ( 0.0)
 0.0 ( 0.0)
 0.0 ( 0.0)
 3.9 ( 7.4)
 6.8 (10.1)
 7.7 (16.1)
 5.3 (10.4)
 9.6 (15.4)
12.2 (25.5)
 4.3 ( 8.1)
 7.2 (10.6)
 7.7 (15.6)
 4.9 ( 9.4)
 8.2 (12.2)
 9.1 (18.7)
 5.7 (11.2)
 9.7 (15.2)
11.4 (23.7)
 6.2 (12.4)
10.8 (17.5)
13.2 (27.4)
 4.4 ( 7.8)
 7.9 (13.6)
 9.8 (20.5)
B
 3.9 ( 7.1)
 6.5 ( 9.4)
 7.7 (16.1)
 0.0 ( 0.0)
 0.0 ( 0.0)
 0.0 ( 0.0)
 1.6 ( 3.2)
 2.8 ( 4.5)
 4.7 ( 9.4)
 0.6 ( 1.1)
 0.6 ( 1.3)
 1.1 ( 2.2)
 1.0 ( 1.9)
 1.4 ( 2.3)
 1.5 ( 2.6)
 1.8 ( 3.8)
 2.9 ( 4.2)
 3.7 ( 7.6)
 2.3 ( 5.0)
 4.0 ( 5.8)
 5.6 (11.3)
 1.1 ( 2.1)
 1.3 ( 3.1)
 2.2 ( 4.5)
C
 5.4 (10.3)
 9.2 (13.0)
12.2 (25.5)
 1.6 ( 3.2)
 2.8 ( 4.5)
 4.7 ( 9.4)
 0.0 ( 0.0)
 0.0 ( 0.0)
 0.0 ( 0.0)
 1.7 ( 2.6)
 2.6 ( 4.6)
 5.2 ( 9.9)
 1.2 ( 1.9)
 1.6 ( 3.3)
 3.8 ( 6.8)
 0.7 ( 1.1)
 0.6 ( 1.0)
 1.5 ( 2.8)
 0.9 ( 1.8)
 1.2 ( 2.1)
 1.3 ( 2.1)
 1.3 ( 2.6)
 2.0 ( 3.5)
 2.6 ( 5.0)
D50
 4.2 ( 7.7)
 6.8 (10.2)
 7.7 (15.6)
 0.6 ( 1.1)
 0.6 ( 1.3)
 1.1 ( 2.2)
 1.6 ( 2.6)
 2.5 ( 4.5)
 5.2 ( 9.9)
 0.0 ( 0.0)
 0.0 ( 0.0)
 0.0 ( 0.0)
 0.6 ( 1.3)
 1.0 ( 1.5)
 1.5 ( 3.1)
 1.5 ( 3.2)
 2.5 ( 3.7)
 4.0 ( 8.1)
 2.1 ( 4.4)
 3.6 ( 5.5)
 6.0 (11.9)
 1.3 ( 2.4)
 1.2 ( 2.6)
 2.9 ( 5.0)
D55
 4.8 ( 9.0)
 7.8 (11.6)
 9.1 (18.7)
 1.0 ( 1.9)
 1.4 ( 2.3)
 1.5 ( 2.6)
 1.1 ( 1.8)
 1.6 ( 3.2)
 3.8 ( 6.8)
 0.6 ( 1.3)
 1.0 ( 1.5)
 1.5 ( 3.1)
 0.0 ( 0.0)
 0.0 ( 0.0)
 0.0 ( 0.0)
 0.9 ( 1.9)
 1.5 ( 2.4)
 2.5 ( 5.0)
 1.6 ( 3.1)
 2.6 ( 4.2)
 4.5 ( 8.7)
 1.3 ( 2.0)
 1.1 ( 1.8)
 1.7 ( 2.8)
D65
 5.6 (10.9)
 9.2 (13.6)
11.4 (23.7)
 1.8 ( 3.7)
 2.8 ( 4.2)
 3.7 ( 7.6)
 0.7 ( 1.1)
 0.5 ( 0.9)
 1.5 ( 2.8)
 1.6 ( 3.2)
 2.5 ( 3.6)
 4.0 ( 8.1)
 0.9 ( 1.9)
 1.5 ( 2.3)
 2.5 ( 5.0)
 0.0 ( 0.0)
 0.0 ( 0.0)
 0.0 ( 0.0)
 0.6 ( 1.3)
 1.1 ( 1.8)
 2.0 ( 3.8)
 1.6 ( 3.2)
 2.1 ( 3.6)
 1.9 ( 3.4)
D75
 6.2 (12.1)
10.2 (15.0)
13.2 (27.4)
 2.4 ( 5.0)
 3.9 ( 5.6)
 5.6 (11.3)
 0.9 ( 1.8)
 1.2 ( 2.0)
 1.3 ( 2.1)
 2.2 ( 4.5)
 3.6 ( 5.3)
 6.0 (11.9)
 1.6 ( 3.2)
 2.6 ( 4.1)
 4.5 ( 8.7)
 0.7 ( 1.3)
 1.1 ( 1.8)
 2.0 ( 3.8)
 0.0 ( 0.0)
 0.0 ( 0.0)
 0.0 ( 0.0)
 2.0 ( 4.4)
 3.1 ( 5.0)
 3.6 ( 6.9)
E
 4.4 ( 7.7)
 7.5 (10.5)
 9.8 (20.5)
 1.1 ( 2.1)
 1.3 ( 2.9)
 2.2 ( 4.5)
 1.3 ( 2.6)
 2.0 ( 3.6)
 2.6 ( 5.0)
 1.4 ( 2.4)
 1.2 ( 2.5)
 2.9 ( 5.0)
 1.3 ( 2.1)
 1.1 ( 1.8)
 1.7 ( 2.8)
 1.6 ( 3.2)
 2.1 ( 3.6)
 1.9 ( 3.4)
 2.0 ( 4.5)
 3.1 ( 4.9)
 3.6 ( 6.9)
 0.0 ( 0.0)
 0.0 ( 0.0)
 0.0 ( 0.0)