ArcGIS   RGB - Lab Colour Conversion Appears to be Incorrect

An ArcGIS style file specifies colour ramps in terms of CIELAB coordinates. These are ultimately converted to RGB when they are displayed on screen. When I generated a set of perceptually uniform colour maps for ArcGIS I found that the colours of the maps were noticeably different from their designed values. After some investigation I have concluded that the conversions between RGB and Lab used within ArcGIS are incorrect. I have been unable to reconcile the ArcGIS conversion results with those I obtain from any other published conversion routines. If it is indeed the case that the ArcGIS conversions are incorrect then proper colour management for ArcGIS may well be impossible. This may be why ArcGIS does not support ICC color profiling.

Using ArcGIS Version 10.2.1.3497 the following menu sequence brings up the colour selection tool
Color Ramp -> Edit Color Ramp -> More Colors -> Color Selector -> Advanced Selection -> Select Color
This tool allows you to interactively inspect the conversions between RGB and CIELAB colour spaces used by ArcGIS for various colours

The table below shows that the values obtained from ArcGIS are quite different from those obtained from MATLAB's colour space conversion functions. I have also verified these differences using the online conversion tools at colormine.org, easyRGB.com and workwithcolor.com  

  red green blue
RGB  255   0    0   0    255   0   0    0    255
Lab values from ArcGIS  56.5 76.9 68.1   85.6 -91.5 74.0  34.7 71.1 -101.9 
Lab values from MATLAB + others  53.2 80.1 67.2   87.7 -86.2 83.2  32.3 79.2 -107.9 
 
  dark red dark green dark blue
RGB  128   0    0   0    128   0   0    0    128
Lab values from ArcGIS  32.0 50.9 45.0  51.2 -60.5 48.9  17.5 47.0 -67.4 
Lab values from MATLAB + others  25.4 47.9 37.9  46.1 -51.5 49.8  12.9 47.4 -64.5 
 
  yellow magenta cyan
RGB  255   255   0  255   0   255   0   255   255
Lab values from ArcGIS  96.7 -20.4 87.4  64.0 92.1 -53.0  89.6 -51.5 -16.3 
Lab values from MATLAB + others  97.1 -21.5 94.5  60.3 98.2 -60.8  91.1 -48.1 -14.1 
 
  dark yellow dark magenta dark cyan
RGB  128   128   0  128   0   128   0    128   128
Lab values from ArcGIS  58.5 -13.5 57.8  36.9 60.9 -35.1  53.9 -34.1 -10.8 
Lab values from MATLAB + others  51.7 -12.9 56.5  29.7 58.8 -36.4  48.1 -28.8  -8.5 

As you can see some of the differences are very significant. For example the dark yellow given by the RGB values of 128 128 0 are assigned a lightness L value of 58.5 by ArcGIS when it should be 51.7 a difference of 13%. The relative distortions of dark red and dark blue are even worse at 26% and 35% respectively. This is troubling given that the design of perceptually uniform colour maps are crucially dependent on colour lightness values.

I submitted a support request to ESRI to try to confirm and/or understand this problem. I supplied them with the information presented on this page. Dealing with ESRI support was a difficult and slow process. After two months of correspondence I was unable to get a response that addressed the problem at all. My support request was ultimately marked as closed but unresolved.

Peter Kovesi
17th November 2014