When making figures for research papers I often have to do line annotations on greyscale images, such as the example below:

enter image description here

The problem, as can be seen in the image, is that a colour that has high contrast in the light areas of the image is often hardly visible in the dark parts.

What colour, or set of colours, have the highest contrast in this situation?

  • Your image seems to present at least two quantities at the same time. The blue arrows obviously are unit vector samples of a vector field and the mostly vertical zones somehow present a kind of accumulation result of the vectors. Is the greyscale image a combination of some data which is available also as separated or is it just the collected raw data?
    – user287001
    Aug 9 '19 at 20:14
  • @user287001 In the example, the greyscale image is an X-ray photograph of a slice of coral and the arrows represent the growth direction of the coral calculated using some image analysis algorithms. Aug 9 '19 at 22:10
  • @user287001 All the grey parts are the raw image. The greyscale lines are the tubes formed by the coral polyps as they grow outwards. The blue arrows are the result of the algorithm which estimates the direction of these lines. Aug 9 '19 at 22:31

Having tried a stroke I think it offers the easiest approach to make any colour stand out regardless of the background tone:

enter image description here


Color theory does not answer this question. However, color science and cognitive psychology might give you a hint.

A human eye is mostly sensitive to brightness, and color second. For example TV does not traditionally color information to all pixels and yet you seem to understand the image fine. Simply the primary edge fining mechanism of the eye (yes, this processing happens structurally on the retina itself) is for most parts only concerned with the brightness of the image. The data in your image is based on edge finding. Therefore, this predicts that there is likely no one color that you can choose for the task.

So contrast, is in simplest form, largely a function of turning the image gray scale and looking at it without color. Therefore simplest approach is to make the arrow out of 2 contrasting colors as others have done. (this is also the reason pS uses marching ants)

Another approach is to blur the data set below. Invert and change brightness of the inverted value slightly and allow that to modify your arrows luminance. Or use a swtooth curves. Many applications use such methods for making selection stand out (like PS does for font selection).


enter image description here

The light cyan version is poorly visible at nearly white areas, the mid bright blue version is poor on mid greys and the black version is invisible on black and dark greys.

I suggest a light color + a sharp and dark drop shadow. It's actually two versions layered and shifted a little apart. That's the bottom version.

The same in a smaller size:

enter image description here

This method keeps the apparent color of the annotation same and it obscures the result less than adding an equally visible stroke. As single sided the shadow can be twice as thick as a stroke without taking more space.

As well there can be darker color and a light shadow

enter image description here

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.