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.
Difference between diffuse (0/d) and 45/0 geometry:
These diagrams show the cross section of two standard colour
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.
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.
The 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:
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.)
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%.
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 3×3 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)
worst = 5.87, average = 2.39
CIE DE2000: worst =
3.10, average = 1.49
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.
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.