Color Blindness Theory, Simulation

Chris Lilley, comp.graphics.algorithms, 1993 April 29


Can anyone provide me with a colour space transform that would emulate the effects of red/green colour blindness? I have had a quick look in the computer graphics literature with no results. Perhaps someone who has access to medical information could help?

Certainly. Reference follows.

Bear in mind that there are at least two conditions which may be called red/green colour blind. One, protanopia, is caused by a lack or major dysfunction of the L cones, those that respond best to long wavelengths. This gives much reduced red/green and red/violet discrimination and also means that reds look dimmer than than they do to people with normal vision.

The other, deuteranopia, is due to missing or dysfunctional M cones although it can also be caused by a lack of the L-M cone difference signals in the retina. It also gives reduced red/green discrimination but red/violet is unaffected. Unlike protanopia, reds are not dimmer than normal.

On a uniform chromaticity diagram - the horseshoe shaped one you see in computer graphics books - there is a single confusion point for each type of colour deficiency. Colours which are confused lie on straight lines radiating from this point. For protanopia the point is at u'=0.61, v'=0.51, very close to the far red corner. For deuteranopia, the point is at u'=-4.75, v'=1.31

Note that different experimental investigations in the literature give slightly different values for these depending on the precise details of the experimental setup, random errors, and so on. The values quoted are typical.

So if all colours on a line are seen as the same, which colour is actually seen?

This problem has now been solved. Tests on people with one normal eye and one affected eye have shown that there is an axis for each type of disorder onto which all the colours collapse. For protanopes this joins up 473nm and 574nm on the spectral locus (the edge of the horseshoe); for deuteranopes the line is very similar, joining 477nm and 579nm.

*So* to convert colours from normal vision to a simulated protanopia or duuteranopia:

  1. Plot the colour on a uniform chromaticity diagram
  2. Construct a line from this point to the appropriate confusion point
  3. Find the intersection of this line with the appropriate axis line
  4. This is the new chromaticity.

The best reference for this is Meyer, G.W. & Greenberg, D.P. (1988) 'Colour defective vision and computer graphics displays', IEEE Computer Graphics and Applications 8(5) 28-40.

You will also need a decent reference on basic colour science if you are not familiar with the CIE XYZ colour model and the uniform chromaticity scale diagram.

I would like to write a program (probably a PPM filter) to allow previewing of images to check for sufficient contract for colour blind users. Not being colour blind myself, this is a bit difficult!

Yes this is certainly possible. You will need the chromaticities of the red green and blue phosphors of the monitor you intend to display the images on, and the chromaticity of the white point. This information can be measured, or obtained from the manufacturer. I posted a list of some monitor chromaticities a couple of weeks ago.

The procedure, for each pixel (!) is as follows. (Some lookup tables might be a help here.)

  1. Convert RGB to CIE XYZ. This is a simple 3*3 matrix multiplication once you have the monitor data.
  2. Retaining the Y component for later, convert XYZ to chromaticity coordinates u'v' using u' = 4X/(X+15Y+3Z), v' = 9Y/(X+15Y+3Z).
  3. Find the equation of the line as in step 2 above.
  4. Find the intersection as in step 3.
  5. Convert back from u'v' to XYZ, using the Y value from step 1.
  6. Ensure that this new colour can be displayed on your monitor; if not, move it along a line in XYZ space towards neutral grey (i.e. half way between black and white) until it is displayable.

Chris Lilley
------------------------------------------------------------------------------
Technical Author, ITTI Computer Graphics and Visualisation Training Project
Computer Graphics Unit, Manchester Computing Centre, Oxford Road, 
Manchester, UK.  M13 9PL                        Internet: C.C.Lilley@mcc.ac.uk  
Voice: +44 (0)61 275 6045  Fax: +44 (0)61 275 6040 Janet: C.C.Lilley@uk.ac.mcc
------------------------------------------------------------------------------