Luminance Matching Two Colors

2.1k views Asked by At

This will likely seem like a very easy thing I'm trying to do but Google search has not turned up exactly what I'm looking for and I'd like to do this correctly.

Essentially I need to luminance match two bmps. They are simple circles (125x125 pixels) and their original color is only know to me by their (0-255 ranged) RGB value of 255,0,0. I need to find an RGB value of gray that is the same luminance of these circles.

All other luminance/brightness matching tutorials I have seen have been for pictures that have included, a variety of hues, brightnesses, etc. and I am not sure if those techniques will work in this (admittedly more simple) case.

I am hoping to be able to just figure out the RGB values so I can input them into an experiment builder program but I do have access to GIMP if any of its tools are needed or will help.

I apologize for this likely easy question but I know little of graphics, brightness measures, etc. I appreciate any help that can be provided.

ADDENDUM: I actually think this would be a good place to ask one additional question. Is there a formula for conversion of candela to (perhaps approximate?) RGB values? I'm basing these color values loosely off of candela values and would love to know if an equation/way of equating the two beyond guesswork exists.

2

There are 2 answers

1
comingstorm On

You need to be careful about luminance-matching digital images, because the actual luminance depends on how they're displayed. In particular, you want to watch out for "gamma correction", which is a nonlinear mapping between the RGB values and the actual display brightness. Some images may have an internal "gamma" value associated with the data itself, and many display devices effectively apply a "gamma" to the RGB values they display.

However, for an image stored and displayed linearly (with an effective gamma of 1), there is a standard luminance measure for RGB values:

Y = 0.2126 * R + 0.7152 * G + 0.0722 * B

There are, actually, a number of standards, with different weights for the linear R, G, and B components. However, if you aren't sure exactly how your image will be displayed, you might as well pick one and stick with it...


Anyway, you can use this to solve your specific problem, as follows: you want a grey value (r,g,b) = (x,x,x) with the same luminance as a pure-red value of 255. Conveniently, the three luminance constants sum to 1.0. This gives you the following formula:

Y == 1.0 * x == 0.2126 * 255
--> x ~ 54

If you want to match a different color, or use different luminance weights (which still sum to 1.0), the procedure is the same: just weight the RGB values according to the luminance formula, then pick a grey value equal to the luminance.

0
Simon Thum On

I believe the answer already given is misleading (SO doesn't let me comment). As mentioned the formula given applies to intensities and you should watch out for gamma, see e.g. here:

http://www.poynton.com/notes/colour_and_gamma/GammaFAQ.html#luminance

Thus, the application example should use coefficients that account for gamma, or compensate the gamma by hand which it doesn't. Yes, the image could be linear (so you have actual intensities), but judging from the description the chance is close to zero that it is.

These coefficients yield 'luma', not luminance, but that is what you have asked for anyway. See:

http://www.poynton.com/notes/colour_and_gamma/ColorFAQ.html#RTFToC11

To summarize:

luma = 0.299 R + 0.587 G + 0.114 B

(r,g,b) = (luma, luma, luma)

The material should also help with your addendum question. I've found it to be very reliable, which is clearly an exception in this field.