#!/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 ..." 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