ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/px/pacuity.csh
Revision: 3.7
Committed: Thu Jun 22 16:40:11 2023 UTC (10 months, 1 week ago) by greg
Content type: application/x-csh
Branch: MAIN
CVS Tags: rad5R4, HEAD
Changes since 3.6: +3 -2 lines
Log Message:
fix(normpat,pacuity,vlpic): Made handling of resolution string more robust

File Contents

# User Rev Content
1 greg 3.1 #!/bin/csh -f
2 greg 3.7 # RCSid: $Id: pacuity.csh,v 3.6 2008/11/10 19:08:19 greg Exp $
3 greg 3.1 #
4     # Adjust picture acuity according to human visual abilities
5     #
6     if ($#argv != 1) then
7 greg 3.6 echo "Usage: $0 input.hdr > output.hdr"
8 greg 3.1 exit 1
9     endif
10 greg 3.5 set td=/tmp
11 greg 3.1 set tfc1=$td/ac$$.cal
12 greg 3.6 set tf=($td/c{1,2,4,8,16,32}d$$.hdr $tfc1)
13 greg 3.1 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 greg 3.7 set pres=`getinfo -d < $ifile`
39     set pres=($pres[4] $pres[2])
40 greg 3.1 set vp=`vwright V < $ifile`
41 greg 3.2 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)))'`)
42 greg 3.3 ( rcalc -e "$vp" -e "A:3438*sqrt(Vhn/$pres[1]*Vvn/$pres[2])" \
43 greg 3.1 -e 'f=60/A/2/$1;cond=if(1.5-$1,1,if(1-f,-1,if($1-'"$aext[2]"',-1,$1-'"$aext[1])))" \
44 greg 3.6 -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 \
45 greg 3.1 | csh -f ) << EOF
46     1
47     2
48     4
49     8
50     16
51     32
52     EOF
53     cat >> $tfc1 << _EOF_
54 greg 3.2 max(a,b) : if(a-b, a, b);
55     target_acuity = acuity(log10(max(WE/le(1)*li(1),1e-4)));
56 greg 3.1 findfuzzy(i) = if(target_acuity-picture_acuity(i),i,if(i-1.5,findfuzzy(i-1),1));
57     fuzzy_picture = findfuzzy(nfiles-1);
58     clear_picture = fuzzy_picture + 1;
59     clarity_ex = (target_acuity-picture_acuity(fuzzy_picture)) /
60     (picture_acuity(clear_picture)-picture_acuity(fuzzy_picture));
61     clarity = if(clarity_ex-1, 1, if(-clarity_ex, 0, clarity_ex));
62     ro = clarity*ri(clear_picture) + (1-clarity)*ri(fuzzy_picture);
63     go = clarity*gi(clear_picture) + (1-clarity)*gi(fuzzy_picture);
64     bo = clarity*bi(clear_picture) + (1-clarity)*bi(fuzzy_picture);
65     picture_acuity(n) : select(n,1,
66     _EOF_
67 greg 3.6 set pf=($td/c1d$$.hdr)
68 greg 3.1 foreach i (2 4 8 16 32)
69 greg 3.6 if ( -f $td/c${i}d$$.hdr ) then
70     set pf=( $pf $td/c${i}d$$.hdr )
71 greg 3.1 echo -n "$i," >> $tfc1
72     endif
73     end
74     set pf=( $pf $ifile )
75     rcalc -n -e "$vp" -e "A:3879*sqrt(Vhn/$pres[1]*Vvn/$pres[2])" \
76     -o '${60/A});' >> $tfc1
77     getinfo < $ifile | egrep '^((VIEW|EXPOSURE|PIXASPECT|PRIMARIES|COLORCORR)=|[^ ]*(rpict|rview|pinterp) )'
78     pcomb -f $tfc1 $pf
79     quit:
80     rm -f $tf