Win a copy of Functional Reactive Programming this week in the Other Languages forum!

# Algorithm: Brightness Difference

Ranch Hand
Posts: 209
I am using a program that allows the user to input two colors, one a Foreground color and the other a Background color. The program outputs whether the two colors have sufficient "color difference" and sufficient "brightness difference". If both conditions are fulfilled then these colors can be used as Foreground and Background colors.
I analyzed the outputs for different inputs and found the algorithm that the program used to calculate the "color difference".
I tried to do the same to find the algorithm used to calculate the "brightness difference". But in vain!
Does anybody know how to calculate the brightness difference?
I need this because I want to make a Java program that takes in a color input and outputs all the possible colors that can be used in combination with the input color.

dhwani mathur
Ranch Hand
Posts: 621
well!!i dont know if i am exactly clear with your doubt but why dont you try to use methods from class Color..
below shown is the link for it...

http://java.sun.com/j2se/1.3/docs/api/java/awt/Color.html#getHSBColor(float,%20float,%20float)

here you refer to method

getHSBColor()

they have specified that the value of brightness is floating point value between 0 and 1.you try to use this kind of strategy in your program.
i hope it helps you.....

dhwani mathur
Ranch Hand
Posts: 621
one more link i would like to specify,here you read the topic

There are some algorithms from which you will get atleast some idea on your program.

http://www.ugcs.caltech.edu/~bird/cs3/ml9/

Ulf Dittmer
Rancher
Posts: 42968
73
Converting to a different color model (like HSB) seems like the easiest way to go, as dhwani mathur said. The Color.RGBtoHSB method can convert an RGB triplet to a HSB triplet.

While the brightness (B) parameter is what you'd be most interested in, also look at the saturation (S). It may be the combination of both that's relevant to your problem.

marc weber
Sheriff
Posts: 11343
This is a bit advanced for beginners. Let's promote this topic to the intermediate forum.

Ranch Hand
Posts: 209
Thank you for all your suggestions.
I tried the Color methods suggested above. It seems they are not what I needed.
I again tried analyzing the different outputs to come up with the algorithm that the program used.
I gave up at last and headed to the website of the program. After a bit of searching I was so RELIEVED to find the algorithm that they used displayed!
Here is the link, if anyone's interested.
And this is the more detailed version of the formula.

Ulf Dittmer
Rancher
Posts: 42968
73
So what you actually needed was the luminance of a pixel, not its brightness. There is a color model called HLS which has that information. It's not supported by the java.awt.Color class, though, so it's a bit harder to use than HSB. HLS is accessible through the java.awt.color.ColorSpace class, though.
[ June 24, 2007: Message edited by: Ulf Dittmer ]

Ranch Hand
Posts: 209
Oh! Thanks. I shall check it out.