1. RE: color difference equations
- Posted by "mic _" <stabmaster_ at hotmail.com> Sep 29, 2004
- 481 views
- Last edited Sep 30, 2004
Where did you get that code from? It looks very similar to something I wrote a long time ago, but I can't remember for what program. Anyway, you could view the two colors as 3D vectors and calculate the difference in length of the vectors, the angle between the vectors or some other measure. Or you could calculate the luma of each color and take the difference between those (where luma = 0.299*R + 0.587*G + 0.114*B). I bet there are lots of other formulaes. >I don't know which formula this function uses, but it doesn't work good: >}}} <eucode> >--// Returns difference of two colors. >--// atom between 0 and 1. >--// 0 = smallest difference >--// 1 = biggest difference >global function weighted_color_distance (COLOR color1, COLOR color2) > integer rmean > integer dr,dg,db > > rmean = floor((GetRValue (color1) + GetRValue (color2)) / 2) > dr = (GetRValue (color1) - GetRValue (color2)) > dr *= dr > dr = floor((dr * (512 + rmean)) / 256) > > dg = (GetGValue (color1) - GetGValue (color2)) > dg = (dg * dg) * 4 > > db = (GetBValue (color1) - GetBValue (color2)) > db *= db > db = floor((db * (767 - rmean)) / 256) > > return (dr + dg + db) / 584970 >end function ></eucode> {{{ > > > >
2. RE: color difference equations
- Posted by Tone Škoda <tskoda at email.si> Sep 30, 2004
- 485 views
mic _ wrote: > > Where did you get that code from? It looks very similar to something I wrote > a long time ago, but I can't remember for what program. Yes, I think it's your code because I already once asked this question on this mailing list. BTW it works exactly the same as function found on http://www.compuphase.com/cmetric.htm > Anyway, you could view the two colors as 3D vectors and calculate the > difference in length of the vectors, the angle between the vectors or some > other measure. Or you could calculate the luma of each color and take the > difference between those (where luma = 0.299*R + 0.587*G + 0.114*B). I bet > there are lots of other formulaes. The problem is that this color difference needs to be very accurate, equal to the way humans see it. I either need to get a copy of some working accurate color difference formula (which I can't find on the net) or I need to spend a lot of time to write my own. For grayscale I have some idea, but for colors it will be more difficult. These greyscale colors need to have these color differences: {{8,8,8},{28,28,28}}, -- smallest color difference {{33,33,33},{43,43,43}}, -- bigger color difference {{33,33,33},{53,53,53}} -- biggest color difference