58 lines
1.3 KiB
Bash
58 lines
1.3 KiB
Bash
#!/bin/sh
|
|
# correct a set of files for illumination errors
|
|
# usage:
|
|
#
|
|
# example% light_correct grey.v im1.v im2.v
|
|
#
|
|
# writes output images ic_im1.v and ic_im2.v
|
|
|
|
# default prefix
|
|
VIPSHOME=${VIPSHOME-@prefix@}
|
|
|
|
# get name we were run as
|
|
name=$0
|
|
bname=`basename $name`
|
|
|
|
# names of our temp files
|
|
t1=light_correct_temp1
|
|
t2=light_correct_temp2
|
|
|
|
# check args
|
|
if [ $# -lt 2 ]; then
|
|
echo "${bname}: usage: $bname <grey> <image1> <image2> ..."
|
|
exit 1
|
|
fi
|
|
|
|
echo "Preparing grey ..."
|
|
grey=$1
|
|
shift
|
|
|
|
# find image size
|
|
width=`$VIPSHOME/bin/vips im_header_int Xsize $grey`
|
|
height=`$VIPSHOME/bin/vips im_header_int Ysize $grey`
|
|
|
|
# smooth the grey out
|
|
$VIPSHOME/bin/vips im_shrink $grey $t1.v 20 20
|
|
$VIPSHOME/bin/vips im_resize_linear $t1.v $t2.v $width $height
|
|
|
|
# and make the correction image
|
|
mean=`$VIPSHOME/bin/vips im_avg $t2.v`
|
|
$VIPSHOME/bin/vips im_powtra $t2.v $t1.v -1
|
|
$VIPSHOME/bin/vips im_lintra $mean $t1.v 0 $t2.v
|
|
|
|
# grey correct images in order
|
|
for i in "$@"; do
|
|
echo "Correcting $i as ic_$i ..."
|
|
$VIPSHOME/bin/vips im_multiply $t2.v "$i" $t1.v
|
|
$VIPSHOME/bin/vips im_clip $t1.v "ic_$i"
|
|
|
|
# remove the .desc as well
|
|
name=`echo $name | sed -e 's/\.[^\.]*//'`
|
|
/bin/rm -f "ic_$name.desc"
|
|
done
|
|
|
|
# more cleanup
|
|
echo "Cleaning up ..."
|
|
/bin/rm -f $t1.v $t1.desc
|
|
/bin/rm -f $t2.v $t2.desc
|