orig/pacuity.csh
author Axel Jacobs <axel@jaloxa.eu>
Mon, 14 Apr 2014 22:21:17 +0100
changeset 73 87fa3132a136
parent 0 0aa115157c9c
permissions -rw-r--r--
New IES test file with spaces in file name
     1 #!/bin/csh -f
     2 # RCSid: $Id: pacuity.csh,v 3.6 2008/11/10 19:08:19 greg Exp $
     3 #
     4 # Adjust picture acuity according to human visual abilities
     5 #
     6 if ($#argv != 1) then
     7 	echo "Usage: $0 input.hdr > output.hdr"
     8 	exit 1
     9 endif
    10 set td=/tmp
    11 set tfc1=$td/ac$$.cal
    12 set tf=($td/c{1,2,4,8,16,32}d$$.hdr $tfc1)
    13 set ifile=$1
    14 onintr quit
    15 tabfunc -i acuity > $tfc1 << EOF
    16 # Log10 luminance vs. visual acuity in cycles/degree
    17 -2.804	2.09
    18 -2.363	3.28
    19 -2.076	3.79
    20 -1.792	4.39
    21 -1.343	6.11
    22 -1.057	8.83
    23 -0.773	10.94
    24 -0.371	18.66
    25 -0.084	23.88
    26 0.2	31.05
    27 0.595	37.42
    28 0.882	37.68
    29 1.166	41.60
    30 1.558	43.16
    31 1.845	45.30
    32 2.129	47.00
    33 2.577	48.43
    34 2.864	48.32
    35 3.148	51.06
    36 3.550	51.09
    37 EOF
    38 set pres=(`getinfo -d < $ifile | sed 's/^-Y \([1-9][0-9]*\) +X \([1-9][0-9]*\)$/\2 \1/'`)
    39 set vp=`vwright V < $ifile`
    40 set aext=(`pextrem -o $ifile | rcalc -f $tfc1 -e 'max(a,b):if(a-b,a,b);$1=acuity(log10(max(179*(.265*$3+.67*$4+.065*$5),1e-4)))'`)
    41 ( rcalc -e "$vp" -e "A:3438*sqrt(Vhn/$pres[1]*Vvn/$pres[2])" \
    42 	-e 'f=60/A/2/$1;cond=if(1.5-$1,1,if(1-f,-1,if($1-'"$aext[2]"',-1,$1-'"$aext[1])))" \
    43 	-o 'pfilt -1 -r 2 -x /${f} -y /${f} '"$ifile | pfilt -1 -r 1 -x $pres[1] -y $pres[2] > $td/"'c${$1}d'$$.hdr \
    44 	| csh -f ) << EOF
    45 1
    46 2
    47 4
    48 8
    49 16
    50 32
    51 EOF
    52 cat >> $tfc1 << _EOF_
    53 max(a,b) : if(a-b, a, b);
    54 target_acuity = acuity(log10(max(WE/le(1)*li(1),1e-4)));
    55 findfuzzy(i) = if(target_acuity-picture_acuity(i),i,if(i-1.5,findfuzzy(i-1),1));
    56 fuzzy_picture = findfuzzy(nfiles-1);
    57 clear_picture = fuzzy_picture + 1;
    58 clarity_ex = (target_acuity-picture_acuity(fuzzy_picture)) /
    59 		(picture_acuity(clear_picture)-picture_acuity(fuzzy_picture));
    60 clarity = if(clarity_ex-1, 1, if(-clarity_ex, 0, clarity_ex));
    61 ro = clarity*ri(clear_picture) + (1-clarity)*ri(fuzzy_picture);
    62 go = clarity*gi(clear_picture) + (1-clarity)*gi(fuzzy_picture);
    63 bo = clarity*bi(clear_picture) + (1-clarity)*bi(fuzzy_picture);
    64 picture_acuity(n) : select(n,1,
    65 _EOF_
    66 set pf=($td/c1d$$.hdr)
    67 foreach i (2 4 8 16 32)
    68 	if ( -f $td/c${i}d$$.hdr ) then
    69 		set pf=( $pf $td/c${i}d$$.hdr )
    70 		echo -n "$i," >> $tfc1
    71 	endif
    72 end
    73 set pf=( $pf $ifile )
    74 rcalc -n -e "$vp" -e "A:3879*sqrt(Vhn/$pres[1]*Vvn/$pres[2])" \
    75 	-o '${60/A});' >> $tfc1
    76 getinfo < $ifile | egrep '^((VIEW|EXPOSURE|PIXASPECT|PRIMARIES|COLORCORR)=|[^ ]*(rpict|rview|pinterp) )'
    77 pcomb -f $tfc1 $pf
    78 quit:
    79 rm -f $tf