| 4 |
|
# Compute 1976 CIE Lab deltaE* between two Radiance pictures |
| 5 |
|
# |
| 6 |
|
if ($#argv != 2) then |
| 7 |
< |
echo "Usage: $0 picture1 picture2 > output.pic" |
| 7 |
> |
echo "Usage: $0 picture1 picture2 > output.hdr" |
| 8 |
|
exit 1 |
| 9 |
|
endif |
| 10 |
|
set cielab='sq(x):x*x;Ls(Yi):if(Yi/Yw-.01,116*(Yi/Yw)^(1/3)-16,903.3*Yi/Yw);as(Xi,Yi,Zi):500*((Xi/Xw)^(1/3)-(Yi/Yw)^(1/3));bs(Xi,Yi,Zi):200*((Yi/Yw)^(1/3)-(Zi/Zw)^(1/3));dE(X1,Y1,Z1,X2,Y2,Z2):sqrt(sq(Ls(Y1)-Ls(Y2))+sq(as(X1,Y1,Z1)-as(X2,Y2,Z2))+sq(bs(X1,Y1,Z1)-bs(X2,Y2,Z2)));' |
| 22 |
|
if ( "`getinfo < $f2:q | grep '^FORMAT=32-bit_rle_xyze'`" == "" ) then |
| 23 |
|
set inp2='x2=X(ri(2),gi(2),bi(2));y2=Y(ri(2),gi(2),bi(2));z2=Z(ri(2),gi(2),bi(2))' |
| 24 |
|
endif |
| 25 |
< |
pfilt -1 -x 128 -y 128 -p 1 $f1:q | pvalue -o -h -H -d > /tmp/tf$$.dat |
| 26 |
< |
set wht=(`total -u /tmp/tf$$.dat`) |
| 27 |
< |
set avg=`rcalc -e '$1=$2' /tmp/tf$$.dat | total -m` |
| 28 |
< |
rm /tmp/tf$$.dat |
| 25 |
> |
set tempf=`mktemp /tmp/tf.XXXXXX` |
| 26 |
> |
pfilt -1 -x 128 -y 128 -p 1 $f1:q | pvalue -o -h -H -d > $tempf |
| 27 |
> |
set wht=(`total -u $tempf`) |
| 28 |
> |
set avg=`rcalc -e '$1=$2' $tempf | total -m` |
| 29 |
> |
rm $tempf |
| 30 |
|
pcomb -e $cielab:q -e $rgb2xyz:q \ |
| 31 |
|
-e "Yw:179*3*$avg; Xw:$wht[1]*Yw/$wht[2]; Zw:$wht[3]*Yw/$wht[2]" \ |
| 32 |
|
-e $inp1:q -e $inp2:q -e 'lo=dE(x1,y1,z1,x2,y2,z2)' \ |