Palette/SwatchMate Cube, Part 2 - Can it be improved ?

Graeme W. Gill May, 2015.

In this second article, I'll examine some curious design decisions in the Palette/SwatchMate Cube which limit its accuracy.
I then see if anything can be done purely in software, to compensate for these limitations.

Measurement geometry

Difference between diffuse (0/d) and 45/0 geometry:

8 degree and diffuse geometry45 and 0 degree geometry

These diagrams show the cross section of two standard colour measurement geometries.

In the first, the illuminant strikes the surface to be measured at an angle close to 0 degrees from the perpendicular (typically 8), and the light reflected from the surface is gathered from all directions and mixed together by a white integrating sphere, and the sensor samples the light from a point on the sphere. The specular component reflected from a gloss surface is combined with all the other reflected light.

In the second case, the illuminant strikes the surface at 45, while the sensor samples just the light being reflected from the surface at 0. In this way all the specular reflection, even from semi-gloss surfaces, is excluded from the measurement.

These two geometries serve different purposes in measuring colour. For measuring colour the way we see it, 45/0 (or the equivalent 0/45) is the best choice. The reason for this is that when we asses the colour of an object, we avoid looking at the specular reflectance of a glossy surface because the colour of the specular highlight is that of the illuminant, not the colour of the surface. The specular highlight gives us other information, such as the degree of gloss and texture of the surface. Glossy surfaces typically look darker and more saturated, while matt surface look less saturated and lighter because the specular component gets scattered in all directions. Even a material such as plastic with exactly the same amount of colourant in it, will look lighter and less saturated if it has a matt texture rather than gloss.

8/difuse specular excluded geometryThe 0/d specular include geometry is very often used in industry (i.e. Colour Formulation and Quality Assurance of Paint, Plastics, Cloth dyeing etc.), because they are interested in the amount of colourant or pigment in a surface, and want a measurement that is predictable and repeatable in capturing this, irrespective of the surface gloss or texture. Often such instruments include an optional "gloss trap" that can be opened at the point the specular highlight hits the sphere, allowing the instrument to do double duty in measuring the observed colour of high gloss surfaces. This is does not work so well for semi-gloss surfaces though, hence the preference for 45/0 instruments in the graphic arts, where measuring colour appearance is the aim.

SwatchMate Cube geometryThe use of an integrating sphere that includes the specular highlight is therefore a puzzling choice in the case of the Palette/SwatchMate Cube. It's poor accuracy in measuring the colour appearance of glossy surfaces is a consequence of this choice.   

45 degree illumination:

The Palette/SwatchMate Cube has illumination that strikes the surface being measured at about 45 degrees. This is not a standard geometry, but in itself wouldn't cause any problems if it was tightly focussed on the sample area. But the light is not tightly focused, and in fact part of it hits the surface of the integrating sphere directly. This stray light causes a constant measurement offset at the sensor, which has to be compensated for in some way if measurements of dark colours are to be at all accurate. Even with appropriate compensation, this reduces the sensitivity of the sensor, since small errors in the compensation may swamp the reflected light from a dark sample.

It appears that in practice the offset programmed into the Palette/SwatchMate cube is not very accurate :- if the cube is placed on a light trap (or placed in the dark and distant from any surface), it returns a negative reflectance valued (in the case of my particular unit, a value of L*a*b* -19.7, 3.9, 2.1).

A standard 8/d instrument is arranged to minimise such stray light, as is a 45/0 instrument, in which this is much more easily achieved because the measurement aperture surround is painted black.

Industrial WRGB sensor + RGB illuminant:

Human Spectral SensitivitiesIdeally a colorimeter should have an illuminant sensor spectral sensitivity that is equivalent of a standard D50 illuminant spectrum the CIE 1931 2 degree observer colour matching curves. The Palette/SwatchMate Cube appears to use Red, Green and Blue Light Emitting Diodes (LEDs) and an industrial WRGB sensor. Such industrial sensors typically have spectral sensitivity curves that don't match the standard observer terribly well, but in this case the sensor characteristic is largely irrelevant, since the LEDs used as the illuminant have a much narrower spectral characteristic, and hence determine the measurement spectral sensitivity. (In fact it is hard to understand why a simple light detector wasn't used in this case, rather than a more expensive WRGB sensor.)

SwatchMate Cube Spectral SensitivitiesThe comparison between human spectral sensitivities and that of the Palette/SwatchMate Cube show the distance between them. While a suitable calibration can overcome these differences to a large degree, the fact is that the Cube "sees" colour differently to humans, and there will be colours that it measures as being the same that we see as being quite different, and colours that it measures as being quite different that we see as being the same. 

Can it be improved ?

So a question that intrigued me, was whether the calibration used by the Palette/SwatchMate Cube is as good as can be managed given the characteristics of the hardware. Using a step by step implementation of a different calibration scheme and calibration transformation, making use of the ArgyllCMS instrument driver infrastructure, I set about finding out.

RGB sensor values

The Palette/SwatchMate Cube comes with a white reference tile to provide calibration of its white, and it wasn't too hard to create a calibration step using it to calculate a scale factor for the raw RGB values such that they correctly represent the reflectance value of a known matt white reference (in this case, the ColorChecker White patch). To compensate for the stray light, a black calibration step was added where the device is placed on a light trap, thereby establishing the RGB values that need to be subtracted so as to arrive at true RGB reflectance values.

In the case of the measurement of gloss surfaces, the gloss highlight is very similar to the stray light case, since it is largely the reflected illuminant that is contaminating the measurement value, so an addition calibration using a black glossy surface (in this case the black patch of the Dulux dura max spray paint catalogue) was used as a reference.

So applying these scale and offsets gives us RGB reflectance values between 0 and 100%.

Colour calibration

The final task is to convert these RGB reflectance values to the equivalent D50 illuminant CIE 1931 Standard 2 observer values. A number of approaches are possible, and the most basic is to calculate a 33 matrix to do this. Some experimentation with this approach indicated that the resulting accuracy was of about the same level as the manufacturers calibration. More complex approaches to calibrating such a sensor are possible though, and ArgyllCMS has the necessary tools to do so.

The approach I finally settled on is quite similar to how one may go about colourimetrically calibrating a camera: I used a wide range of measured surface colour spectra as a training set, plus a larger number of synthetic spectra created from that training set, to create a multi-dimensional lookup table. Using a real world training set aims to make the resulting calibration generally useful, and not specifically tuned just to make the benchmark against the ColorChecker patches look good.


(The testing is the same as that used in part 1)

    Matt measurements:
          DE76:            worst = 5.87, average = 2.39
          CIE DE2000: worst = 3.10, average = 1.49

    Gloss measurement:

          DE76:            worst = 13.2, average = 6.26
          CIE DE2000: worst = 7.8,   average = 3.80

So errors are roughly half that of the normal Cube measurement, which would seem to make the behaviour for measurements of matt surfaces a little less hit or miss, and the gloss calibration has succeeded in making the gloss measurements less wildly erroneous, although not especially accurate.


If LEDs are from a different Green and/or Blue wavelength sorting bin that the Cube I measured, then the errors will be larger, possibly up to twice as large in the worst case, and I don't know if Palette/SwatchMate use LEDs from the same selection bin for all their units or not.

By the very nature of the Palette/SwatchMate Cubes spectral sensitivities being quite different to a human observer, there can always be colours that will measure extremely inaccurately, and no improved calibration can address this. The best an improved calibration can do, is reduce the odds of coming across such large errors when measuring the more commonly occurring pigments and dyes.

The use of a black calibration step does provide noticeable benefits in measuring darker colours, but this calibration is more awkward to achieve than the white one, as not everyone has a light trap readily available. I found that a thick, black, woolly sock placed over the measuring end of the unit (while keeping it out of direct light) was a practical substitute though.

Final thoughts

The only way to really tame the hit or miss results of non colorimetric spectral sensitivities, is to either use a much more sophisticated spectral design (illuminant and sensor filter spectral design), or to use a sensor combination that is closer to a spectrometer in nature, where the observer curve matching can be defined more accurately in software.