The White World assumption, when used in a straightforward manner, gives very poor performance on some of the test images (the ones with gamuts of All and Little Red.) It may be observed that specularities due to the chrome of the office chair provide a small number of image samples which far exceed the sensor response produced by matte white surfaces in the scene. The simple White World correction normalizes the maximum value in the image to white. In an image with specularities, this maximum tends to be either the maximum sensor value (overload) or a value far larger than the sensor value produced by a matte white reflecting surface.
Here I propose and test a different method of calculating the "maximum" value in a sensor channel, which attempts to minimize the effects of specularities. Instead of taking the absolute maximum value, the maximum value with a certain percentage (typically 0.1 &%) of samples at or beyond it is used. The algorithm is better documented by the Isis script used
Here are the results of this "modified white" normalization, applied to the test images :
Two dimensional histograms of the corrected images are available: chromaticity and Red vs. Blue
Gamut | Illuminant A | Illuminant B | Illuminant C |
---|---|---|---|
All | |||
Little Blue |
|||
Little Red |
Illuminant A | Illuminant B | Illuminant C |
---|---|---|
While maintaining a consistent estimate of the illuminant across scenes with different overall color gamuts, the white world assumption doesn't appear to accurately estimate the spectral content of the illuminant. The gray world assumption, while varying in response to the average of the surface reflectances in the scene, is better at discarding the contribution of illumination.
Attempting to maintain the simplicity of these simple implementations, while improving their shortcomings, suggested another test