1. RE: color difference equations

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>
{{{

>
>
>
>

new topic     » topic index » view message » categorize

2. RE: color difference equations

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

new topic     » goto parent     » topic index » view message » categorize

Search



Quick Links

User menu

Not signed in.

Misc Menu