1 |
greg |
1.4 |
{ RCSid $Id: cieluv.cal,v 1.3 2015/06/18 00:11:39 greg Exp $ } |
2 |
greg |
1.1 |
{ |
3 |
|
|
Compute Luv color space and color differences from XYZ primaries. |
4 |
|
|
|
5 |
|
|
5/4/98 G.W.Larson |
6 |
|
|
} |
7 |
|
|
Xw = 1; Yw = 1; Zw = 1; { default white } |
8 |
|
|
sq(x) : x*x; |
9 |
|
|
up(Xi,Yi,Zi) : 4*Xi/(Xi + 15*Yi + 3*Zi); |
10 |
|
|
vp(Xi,Yi,Zi) : 9*Yi/(Xi + 15*Yi + 3*Zi); |
11 |
greg |
1.3 |
up_neu : up(1,1,1); |
12 |
|
|
vp_neu : vp(1,1,1); |
13 |
|
|
uw = up(Xw,Yw,Zw); |
14 |
|
|
vw = vp(Xw,Yw,Zw); |
15 |
greg |
1.4 |
Ls(Yi) = if(Yi/Yw - .01, 116*(Yi/Yw)^(1/3) - 16, 903.3*Yi/Yw); |
16 |
greg |
1.3 |
us(Xi,Yi,Zi) = 13*Ls(Yi)*(up(Xi,Yi,Zi) - uw); |
17 |
|
|
vs(Xi,Yi,Zi) = 13*Ls(Yi)*(vp(Xi,Yi,Zi) - vw); |
18 |
|
|
hue_deg(Xi,Yi,Zi) = 180/PI*atan2(vs(Xi,Yi,Zi),us(Xi,Yi,Zi)); |
19 |
|
|
sat_uv(Xi,Yi,Zi) = 13*sqrt(sq(up(Xi,Yi,Zi)-uw) + sq(vp(Xi,Yi,Zi)-vw)); |
20 |
|
|
dE(X1,Y1,Z1,X2,Y2,Z2) = sqrt(sq(Ls(Y1)-Ls(Y2)) + sq(us(X1,Y1,Z1)-us(X2,Y2,Z2)) |
21 |
greg |
1.1 |
+ sq(vs(X1,Y1,Z1)-vs(X2,Y2,Z2))); |