RE: color difference equations
- Posted by "mic _" <stabmaster_ at hotmail.com> Sep 29, 2004
- 480 views
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> {{{ > > > >