Slashdot Mirror


Determining Color Difference Using the CIELAB Model?

Colour Blind asks: "I am working for a not-for-profit organization developing a website for kids. I am attempting to develop a method for testing if two colours (as defined by R, G, and B values [0-255]) are adequately different to be visible on top of each other. So far I have tried many things but this is the one that, by all accounts, should work: I have converted from RGB to (CIE)XYZ using a 3x3 matrix transformation. From here I have used three more equations to convert to CIELAB colour. I have then calculated the distance between the two colours in question in CIELAB colour space. The results are not correct: there are pairs of colours that are quite far from visible that yield the same difference as colours that are plainly acceptable for visibility. Any suggestions?"

20 of 199 comments (clear)

  1. difficult problem with much research by glyph42 · · Score: 2, Informative

    There is a large body of research on perceptually uniform color spaces. Last I checked no one had an accurate model, though many have tried. Look on citeseer or something, or google for that matter. Best of luck!

    --
    Music speeds up when you yawn, but does not change pitch.
    1. Re:difficult problem with much research by Wavicle · · Score: 5, Informative

      Hear hear!

      This is a complex problem and I think a lot of the answers I'm reading on this topic center around a misconception on a lot of people's part about the difference in luminance perception and chrominance perception. The key issue is:

      The eye is most sensitive to luminance changes in GREEN.
      The eye is most sensitive to chrominance changes in BLUE.

      Thus if you are trying to determine at what point the eye will say "hey there is a block of a different color on top of that one", blue is going to be an important part of your color model since while your eye isn't so good at picking up how bright a blue is, it is very sensitive to the relative shade around the blue wavelength something is.

      So if you are trying to do a 3-space transform and distance and finding that colors which are linearly close to each other in CIELAB space are perceptually very different, it is very likely because it is a color in a space where the human eye is more perceptually sensitive. You are going to get "dead areas" of the model where the eye is not so good at viewing differences, and active areas where in a small space there seem to be quite a few different colors because the eye is perceptually sensitive in that area.

      This is the reason you see odd patterns in color changes in a rainbow. You are seeing the relative sensitivities of your eye to pick up colors. Color perception is decidely non-linear and doesn't even fit a nice equation.

      --
      Education is a better safeguard of liberty than a standing army.
      Edward Everett (1794 - 1865)
  2. Well, step 1 ... by Anonymous Coward · · Score: 1, Informative

    Is to make sure you're doing your transformations in logspace.

  3. Read this relevant document by saforrest · · Score: 5, Informative

    A friend of mine wrote a paper on this topic:

    Limitations of Colour Management.

  4. Re:Solutions by Hal-9001 · · Score: 2, Informative

    There's nothing on this page having anything to do with color. Googling for "HolyColor" didn't turn up anything either.

    --
    "It take 9 months to bear a child, no matter how many women you assign to the job."
  5. Color blindness by BWJones · · Score: 3, Informative

    Another issue that should be considered is that approximately 5% of humans are red-green color blind. There are other forms that are more rare, but in designing web-sites it is common enough that it should be taken into consideration.

    See http://www.visibone.com/colorblind/ for useful color information specific to web-site design.

    --
    Visit Jonesblog and say hello.
  6. Some useful links... by Hal-9001 · · Score: 5, Informative
    ...for people who are wondering what this is all about:
    • The CIE color space: A pretty decent introduction to what the CIE color space is
    • Color FAQ: I haven't read through this, but it seems to be a more extensive coverage of color and how it's much more than RGB, HSV, or CYMK.
    The short version is that all the different primary color systems--RGB (red-green-blue), CYMK (cyan-yellow-magenta-black), HSV (hue-saturation-value)--can represent some, but not all, of the colors visible to the human eye. Even specifying colors by the wavelength of the light emitted or reflected covers only a small subset of colors--in fact an even smaller subset than any of the primary color representations. The CIE system identifies colors by an XYZ coordinate system, where X, Y, and Z are artificial primary colors that span the full range of colors visible to the human eye.
    --
    "It take 9 months to bear a child, no matter how many women you assign to the job."
  7. There are some subtle aspects by Ezubaric · · Score: 3, Informative

    Are you doing it pixel by pixel? Sometimes pixels are not discrete color units, in which case you might want to reconsider your algorithm. For example, if you have a mosaic effect from newspaper you've scanned in, pixels are going to mirror the little newspaper specks of color introduced by the printing process. Maybe you want to have some sort of averaging method?

    Porison and Wandrell adapted CIELAB color models to account for the quirks of monitors. You need to have information on how far away people sit from the monitor, the resolution, the size, etc., but it's actually quite good. Here's a MATLAB implementation by Zhang at Stanford.

    One problem I had when I was working with this is that the pixels were not lining up correctly. Try overlaying the images and the CIELAB error to make sure your results are sensible.

    --

    ----------
    I am an expert in electricity. My father held the chair of applied electricity at the state prision.
  8. The problem. by Mister+Transistor · · Score: 2, Informative

    I co-wrote one of the most popular Ray-Tracing programs out there, and learned this from my travels.

    Your problem is coming from an effect called Metamerism. This is a phenomenon that causes us to perceive 2 colors as the same when they are not.

    The whole problem is caused by our moronic RGB model of light. It's not that simple, in reality. It's like thinking of the audio spectrum as being divided into Treble, Midrange and Bass, and all tones (frequencies) expressed as a "quantity" of bass, treble, and midrange. Stupid, hmm? Well, our RGB model has caused the same stupidity in the optical spectrum.

    The visual spectrum is continuous, just like the audio and RF spectrums. A given light source (color) is almost never a single line color on a spectral scale, unless it's a monochromatic laser.

    The different spectral peaks for a given light or color sample will be assimilated by your eyes and brain as a given color. There are MANY combinations of spectral peaks that can APPEAR to be the exact same color, yet a measurement system such as HSV or CIE or even RGB will see them as very different. This is called Metamerism.

    Even worse, the effect is also compounded by a given color sample looking different under various spectral distributions of illumination (i.e. different colors of light)

    For more research on this effect, consult the people that devised the CIELAB scale, Hunter Labs. I learned about this effect in a book written by them! Unfortunately, this book was lent to me by an old associate years ago, and I don't remember the details, like the exact name.

    --
    -- You are in a maze of little, twisty passages, all different... --
  9. I have source code for this. by Naysayer · · Score: 2, Informative

    You have to make sure your RGB values are in light-linear space (gamma = 1). The default, when you read them from a bitmap or a screen or something, is that they are not (gamma = 2.4 or thereabouts). So if you read colors out of a bitmap and put them through your 3x3 matrix, you won't actually get the right CIEXYZ colors. So then the final step (XYZ to LAB) is pretty meaningless.

    So before you convert a pixel to XYZ, do this:

    [1] Make sure each component is in the range from 0 to 1 (so if it's from an 8-bit-per-channel image source, divide each channel by 255).

    [2] Raise each channel to the power GAMMA, where you define GAMMA to be something like 2.4.

    [3] Now push the colors through the 3x3 matrix you came up with (which of course requires you to know what your illuminant and RGB phosphors are like... I use illuminant D65 and the standard phosphor responses and get good results).

    I have source code I can send you. jon@bolt-action.com. Also, search on the web for Poynton's "FAQ about Color and Gamma".

    -N.

  10. Some things to check out by cosyne · · Score: 3, Informative

    First off, if you just want to make sure the colors are visible on top of each other, you could calculate the luminance of each color using .30*R + .59*G + .11*B and make sure that those numbers differ signifigantly. Some other rules of thumb are here, under color rules.

    As far as color discrimability, you might want to look for info on MacAdam's ellipses of just noticeable color differences. There's a picutre on this page which shows the main idea: how different a color has to be in order to notice the difference depends on what color it is. Humans can discern more shades of green than red or blue.

  11. Try looking for the OSA-UCS by GrimJim · · Score: 2, Informative

    That's the Optical Society of America Uniform Color Space. You can find out more here. Cartesian distance in this space corresponds to perceptual difference, more or less.
    http://www.colorsystem.com/projekte/engl/49osae. ht m
    Although the space presented is a bunch of discrete points, there exists formulae to relate the three coordinates (L,j,g) to CIE x,y,z. The corrected formulae are tucked away in this paper on page 18.
    http://color.psych.upenn.edu/brainard/papers/spe ci fication.pdf
    The space has the property that perceptual difference roughly corresponds to Cartesian distance between points for differences more than 20x just-noticable.

  12. Colour Differences. by Anonymous Coward · · Score: 4, Informative

    There are several things that you need to know:

    1) People are generally MUCH less sensitive
    to differences in BLUE than in RED and
    somewhat less sensitive to RED than to GREEN.

    2) Gamma correction is poorly implemented across
    the web - that results in great differences
    in the percieved colours for the brightest
    and dimmest R, G or B values. This is hard
    to cope with.

    3) Don't forget colourblind people! This can
    result in people finding it hard to distinguish
    various colour values depending on the nature
    of their disability.

    4) Women see subtle differences between greenish
    blues MUCH better than men.

    5) The CIE cromaticity diagram includes a bunch
    of colours that a CRT cannot reproduce.

    6) How distinguishable two colours are depends
    critically on the backgrounds against which
    they are presented and how close they are to
    each other in space and time.

    7) In the real world, colours can be pure,
    single frequences of light - or complex
    chords with many, many frequencies. A CRT
    can only display light of three frequencies,
    so most pure colours and even most mixtures
    of colours can't possibly be accurately
    depicted. Fortunately, human eyes can
    only *measure* the light intensity at
    three basic frequencies - so CRT's appear
    to work acceptably. However, the frequencies
    of light generated by the phosphors in a CRT
    or the LCD's in a flatpanel are not the
    same exact frequencies that the human eye
    detects. That results in a lot of strange
    non-linearities.

    8) The colours produced by a particular RGB
    triplet will be different on CRT, LCD,
    printer ink, etc. That can make a huge
    difference in readability.

    CONCLUSION:
    ~~~~~~~~~~~

    You have a LOT of research to do!

  13. Spatial CIELAB by smgxarw · · Score: 3, Informative

    One problem might be that color perception depends on the spatial structure of the scene as well as the pure CIELAB coordinates. At least one research group has taken a stab at including spatial information into a model of image quality. Take a look at
    http://white.stanford.edu/~brian/scielab/scielab .h tml

    vischeck.com also have an interesting take on simulating color deficiencies (although not the perceptual differences between 'regular' colors). 'Color blind' might be interested in this.

  14. MacAdam Color Discrimination Ellipses by kris_lang · · Score: 2, Informative
    While most of the posts here have talked about color management and about the difficulty of creating perceptually equal color difference metrics, and while I do agree that this is a difficult topic with no definitive answer at present, no one has mentioned actual work on this topic. MacAdam explored this topic by having targets change "color" in different directions in CIE-1931-xyz coordinates and measuring the standard deviation when subjects were able to make a match in color appearance to the surround / background color. He measured this at 15-25 points in CIE-1931-xyz colorspace over a few papers that he published in the 1940's. The targets were 2 to 10 degrees in size and measured at a luminance of 48 lux. These color tolerances for color matching were called the MacAdam Ellipses and can be found at www-cvrl.ucsd.edu, a web site which is migrating to England soon. Newer studies work on the JND, the Just Noticeable Difference. Please note that if you look at a MacAdam ellipse diagram that the ellipses are drawn at approximately 10 (ten) times the size of the actual discrimination ellipses in CIE-1931-XYZ color space.


    You can try to work these ellipses into your formulae, and people like Parra in France and Parry Moon in Camridge (MA) had tried to distort these color ellipses back into circles in trying to find a
    transform of these color spaces into a perceptually uniform color space. But the key thing is that the monitors will differ, the monitors' settings will differ, (the phosphors don't really differ that much between CRTs, but the primaries for CRTs are very different from that of LCDs and that of projectors using LCDs or DLP/DMDs), and most importantly the viewers' photopigments will also differ. Along with the well known ~10% of males that are dichromats, a large number of the population are anomalous trichromats. The actual numbers are still being tallied, and it is still in a very conjectural stage whether most people have multiple copies of the L-opsin gene or multiple copies of the M-opsin gene. The Nathans are on one side of this and the Neitzes are on the other side of this. Which is which, I keep forgetting.


    But a quick summary is:


    the majority of human subjects are most sensitive to changes in the red (+L-M) or green direction (-L+M), with changes of 0.3% being perceptible for targets of 2-10 degrees in size, mediumly sensitive to changes in intensity (+L+M[+ maybe S]) {there are HUGE arguments and PhD theses brewing over this} for brighter and -L-M[ - maybe S] for darker), and least sensitive to changes that affect the S-cones (+S, kind of a violet change, -S, kind of a greeny-chartreuse change). This, along with the MacAdam Discrimination Ellipse, are for a target color being compared to the immediately adjacent surround color. This does not hold true for nonadjacent and distant targets being compared or for targets subtending visual angles much larger than 5 degrees or much less than 1-2 degrees. There are some funky changes that occur when you get to targets of less than 1/2 degrees in size and when you start to talk about colors that you don't look at foveally or centrally.


    That may answer your question. And it may even lead you towards a workable plan on equi-perceptual space. (work with CIE xyz and integrate MacAdams' discrimination data). But realize that MacAdams' work, like much of visual psychophysics is based on less than 5 (count 'em five) subjects. Most visual psychophysics papers today usually have the authors and their post-doc slaves as the only subjects. But actually coming up with that will take data collection on the scale of a PhD thesis, and working within the CIE color space, even from 1931, is probably close enough for most work, even if some of your side-by-side colors are twice as far in color space than they need to be at minimum.

  15. Shouldn't be too hard, with basic color theory by jcsehak · · Score: 3, Informative

    Arrange the primary and secondary colors in a circle. Since you're in the digital realm they would be Red, Green, Blue; and Cyan, Magenta, Yellow. Put Red at the top, then every 60 degrees mark off another color. It should read like this from the top going aroumd clockwise: R, Y, G, C, B, M. These are the hues. Now if you measure the degrees between 2 different hues (the shortest distance), you should have a good indication of their contrast. That is, Red on Cyan is a lot higher contrast than Red on Red-with-a-little-yellow-in-it.
    Of course, there're two more variables: Saturation and Value. Imagine in the center of the circle there's a dot of neutral grey, and a gradient from that grey out to the colors. That is, a dot on the edge at 120 deg. would measure as Green at it's highest saturation point, and as you move to the center of the circle, it would get duller and duller until it reached grey. The same for all the other colors. This way you can measure a color's saturation.
    Now for the most important aspect: Value. Value is a measure of how light or dark a color is of you took away all the color information (ie, converted it to greyscale). One of the first things you learn in art school is that a difference of Value is higher contrast than a difference of Hue or Saturation. Black on White is the highest contrast you can get, and Red-on-Green and Red-on-Grey fall somewhere in the middle. So you now have to extrude to color model in 3d space so it looks like a cylinder. The top disc should be all white and the bottom disc should be all black. Now you can find out the difference in contrast of two different colors by locating them on the model and measuring their relative distances in 3d space. The tricky part: how tall do you make the model? I'd recommend about twice as high as it is wide. This would mean that White on Black is twice as contrasty as Green on Magenta.
    Now here's the really tricky part: the original color wheel you made in the beginning isn't just a flat disc in the center of the cylinder- it's all floppy. The Cyan and Yellow edges should be close to the top, since they're very bright (close to white), and the Red and Blue ends should be nearer to the bottom, since they're darker.

    Photoshop does a pretty good job of representing everything except the last paragraph. If you go to the color picker and click on the H toggle button (HSB), you'll see that the rainbow strip represents the circumfrence of the original circle, and the x-axis in the grid represents Saturation while the y-axis represents Value (Brightness). Where it falls short is it says that Cyan at it's highest Saturation is no brighter than Blue (fully saturated)! Of course, it's obvious that Cyan (with a perceptual brightness of (I'd say) around 95, is much brighter than Blue (which I'd guess had a perceptual brightness of 30 or so). But there are good reasons why Adobe chose to do the HSB color measurements this way.

    Hope this helps. I don't know how you would program it, but it's good for picturing it in your head.

    Josh

    --

    c-hack.com |
  16. Or try the L in LAB by Panoramix · · Score: 3, Informative

    If you are already converting to CIELAB, try using the L component alone, not the full Delta E. That yields very good results. Probably color-blind people will have less problems with the generated colors, too, since this is about perceived brightness, not hue (but I'm not too sure about this).

    I just made a quick Perl hack to test this. It generates 500 pairs of random colors, and outputs them sorted by "distance". It does so converting to LAB and then computing "distance" as abs(L1-L2). Check the output here, mail me if you want the script.

  17. For those who don't know the basics: by lkeagle · · Score: 3, Informative

    This is probably exactly your problem, but even so, I feel your research is far to subjective without adding quite a bit of statistical research (which has already been done, so don't completely reinvent the wheel). The biggest problem is that any mathematical computations about modelling light are done in radiometric space, where light is considered pure energy of varying frequency (Joules, Watts, and other simple(?) units). In reality, we see on a different, completely NONLINEAR scale, known as the photometric scale (Talbots, lumens, etc. (very complex)). Converting between the two involves the use of what are called Spectral Luminous Efficiency Curves. These are the conversion factors that take into account that the eye has widely varying response to different frequencies of light. Not only are they highly non-linear, the only reason they appear to be smooth is that they are a statistical average of many, many different individuals' efficiency curves.

    In other words, if your data isn't lining up, the fundamental problem is that the response of individuals' eyes are rarely comparable. Then again, there's all kinds of psycho-visual effects that can screw up this kind of research without even taking this into account.

    Sorry you chose to pick such an incredibly complex subject to research, but good luck in your results!

    ~Loren

  18. Sounds like you haven't taken gamma into account by raph · · Score: 3, Informative

    From your description, it sounds like you are converting RGB colors into XYZ using only a linear matrix multiplication. This isn't correct - you also need to take gamma into account. If you want to follow a standard, try the sRGB colorspace. Otherwise, it might be good enough to simply raise the raw RGB values to the power of 2.4 or so before the matrix multiplication.

    CIELAB is reasonably accurate for evaluating color differences, but research in color spaces that more accurately reflect perception is ongoing - a good recent paper is this one. Also, the Argyll color management system implements most of the color goodies you might want, including CIECAM97 (which is widely considered to be an improvement over CIELab).

    It's amazing to me how little (and poorly) color theory is taught, in spite of color being one of the more universal human experiences. My guess is that this is largely to do with the cross-disciplinary nature of color. It's not merely a branch of physics, psychophysiology, pigment chemistry, math, or art, but overlaps all of them.

    Try the gamut changes and see if that helps.

    --

    LILO boot: linux init=/usr/bin/emacs

  19. MacAdam Discrimination Ellipses by kris_lang · · Score: 3, Informative
    While most of the posts here have talked about color management and about the difficulty of creating perceptually equal color difference metrics, and while I do agree that this is a difficult topic with no definitive answer at present, no one has mentioned actual work on this topic. MacAdam explored this topic by having targets change "color" in different directions in CIE-1931-xyz coordinates and measuring the standard deviation when subjects were able to make a match in color appearance to the surround / background color. He measured this at 15-25 points in CIE-1931-xyz colorspace over a few papers that he published in the 1940's. The targets were 2 to 10 degrees in size and measured at a luminance of 48 lux. These color tolerances for color matching were called the MacAdam Ellipses and can be found at www-cvrl.ucsd.edu, a web site which is migrating to England soon. Newer studies work on the JND, the Just Noticeable Difference. Please note that if you look at a MacAdam ellipse diagram that the ellipses are drawn at approximately 10 (ten) times the size of the actual discrimination ellipses in CIE-1931-XYZ color space.

    You can try to work these ellipses into your formulae, and people like Parra in France and Parry Moon in Camridge (MA) had tried to distort these color ellipses back into circles in trying to find a transform of these color spaces into a perceptually uniform color space. But the key thing is that the monitors will differ, the monitors' settings will differ, (the phosphors don't really differ that much between CRTs, but the primaries for CRTs are very different from that of LCDs and that of projectors using LCDs or DLP/DMDs), and most importantly the viewers' photopigments will also differ. Along with the well known ~10% of males that are dichromats, a large number of the population are anomalous trichromats. The actual numbers are still being tallied, and it is still in a very conjectural stage whether most people have multiple copies of the L-opsin gene or multiple copies of the M-opsin gene. The Nathans are on one side of this and the Neitzes are on the other side of this. Which is which, I keep forgetting.


    But a quick summary is:


    the majority of human subjects are most sensitive to changes in the red (+L-M) or green direction (-L+M), with changes of 0.3% being perceptible for targets of 2-10 degrees in size, mediumly sensitive to changes in intensity (+L+M[+ maybe S]) {there are HUGE arguments and PhD theses brewing over this} for brighter and -L-M[ - maybe S] for darker), and least sensitive to changes that affect the S-cones (+S, kind of a violet change, -S, kind of a greeny-chartreuse change). This, along with the MacAdam Discrimination Ellipse, are for a target color being compared to the immediately adjacent surround color. This does not hold true for nonadjacent and distant targets being compared or for targets subtending visual angles much larger than 5 degrees or much less than 1-2 degrees. There are some funky changes that occur when you get to targets of less than 1/2 degrees in size and when you start to talk about colors that you don't look at foveally or centrally.


    That may answer your question. And it may even lead you towards a workable plan on equi-perceptual space. (work with CIE xyz and integrate MacAdams' discrimination data). But realize that MacAdams' work, like much of visual psychophysics is based on less than 5 (count 'em five) subjects. Most visual psychophysics papers today usually have the authors and their post-doc slaves as the only subjects. But actually coming up with that will take data collection on the scale of a PhD thesis, and working within the CIE color space, even from 1931, is probably close enough for most work, even if some of your side-by-side colors are twice as far in color space than they need to be at minimum.