Experiments in simulating colorblindness

المشرف العام

Administrator
طاقم الإدارة
As a colorblind person who specializes in making maps for data visualization,I was inspired byBlake’s recent blog post on Introducing a Color Blind Filterto take a careful look at the limits of my own color perception with an eye towardhow we can make smarter color choices for more accessible maps.

I am a deuteranope, “green-blind,” so my experience of color comes fromtwo overlapping bell curves of colored light frequency sensitivity (red and blue)rather than the normal three (adding green). Anecdotally, this means:

  • It is difficult for me to distinguish the edges of a green object within a field of red, or vice versa.
  • Dark blues, greens, and browns, like “British racing green,” are muddy and indistinguishable
  • Certain bright greens, notably in green traffic signals, appear very close to white
  • Some oranges, yellows, and greens are hard to tell apart
  • The edges of my color categories are shifted: there are objects that are “yellow” for me but “green” for others, or “purple” for me but “blue” for others, or “pink” for me but “purple” for others.
  • It is difficult to tell the states of tricolor (red-yellow-green) LEDs apart,and even single-color red LEDs can occasionally appear to be pale green in darkness.
I don’t think the standard algorithm for simulating colorblindness does a very goodjob of reproducing these symptoms, especially not the collapse of bright red and greeninto indistinguishability in certain circumstances. Is it possible to do better?



Questioning the premise

The simulation algorithm that Blake used, which comes from an academic paper by Viénot, Brettel, and Mollon,tries to produce one single trichromat colorto correspond to the dichromat perception of each physical combination of spectral emissions. I think this is folly, because both groups of people already have, for instance, a concept of “green” that is associated with pure RGB green, and it is not helpful to say, “oh, some of them are actually seeing yellow.” The important thing is not that the hue is “wrong” but that it is ambiguous. I think the right thing to do is to model the error in perception of each physical phenomenon, and to produce images that introduce as much error as possible while still looking imperceptibly different to a dichromat, so that a trichromat sees standard color plus noise, not unrelated colors.

Since there is no solid data available about the nature of this error, I’ve been experimenting on myself. I wrote a miniature web app that chooses a random (RGB) color and lets me shift its (CIE) hue further and further away from that color until it looks different. (By thinking of this as “minimal pairs,” I am looking at an optics problem through a linguistics lens, which is kind of weird.) The data from doing the test a few hundred times gives me a decent idea of how big my perceptual error in hue is across the range of CIE lightness/chroma/hue possibilities.



What the perceptual data suggests

The clearest systematic effect is from variation in chroma (which is analogous to saturation). Not surprisingly, the lower the chroma, the greater the difference there has to be in hue for me to tell the colors apart. I have no idea if the nonlinearity is a deuteranope thing; for all I know, trichromats may be able to tell hues apart equally well at any chromaticity. I also don’t know whether the sag at the right is because very saturated colors are much easier to tell apart or just because the hues of extremely saturated colors can’t be shifted very far.



More interesting is the variation between hues. Normalizing to a chroma of 30 according to the curve above, I can tell purples apart when their hues are less than 0.3 radians apart, but colors near orange have to be more than 0.7 radians apart (40 degrees!) for me to tell them apart reliably.



Lightness doesn’t seem to matter much. I can apparently tell hues apart about equally well at any lightness, although there is a tiny improvement in discernment between the darkest and the lightest.



A deuteranope color wheel


What I take away from this is that if you want a set of colors that are readily distinguishable by deuteranopes and you need them to have constant chroma and lightness, there are only about 17 useful hues. Here is the set you get <a href="https://github.com/ericfischer/colorwheel/blob/master/deut.c">when you go from -

أكثر...
 
أعلى