Trailing-Edge
-
PDP-10 Archives
-
decuslib20-04
-
decus/20-0110/prcinv.sai
There are 2 other files named prcinv.sai in the archive. Click here to see a list.
Entry;
COMMENT
.SOSPAGE_1
.SEC(PRCINV.SAI - PROC10 Internal Variable Definitions)
.index(PRCINV.SAI - PROC10 Internal Variable Definitions)
.;
Begin "PRCINV.SAI"
COMMENT
P. LEMKIN, R. GORDON, B. SHAPIRO
IMAGE PROCESSING UNIT
DIVISION OF CANCER BIOLOGY AND DIAGNOSIS
NATIONAL CANCER INSTITUTE
NATIONAL INSTITUTES OF HEALTH
BETHESDA, MD 20014
301-496-2394
Rev Oct 12, 1976 - Lemkin, removed I2- and I3-
Revised Oct 2, 1976 - lemkin replaced LAPLACE4 with DIFFERENCE.
Revised Aug 24, 1976 - lemkin, ZOOM for PROP, added thr!density
Revised Aug 6, 1976 - lemkin, removed POLYGON, INFLECTIONPTS,
AVBOUNDARY, AVCIRCLETRANSFORM, 1DCONVOL, 2DCONVOL
Revised May 26, 1976 - Lemkin, changed seg!list CVN to CVSIX
Revised May 25, 1976 - Lemkin, added SEMANTICS
Revised May 21, 1976 - Lemkin, removed p!seg!list
Revised May 17, 1976 - Lemkin, added TEXTURE cmds
Revised April 21, 1976 - Shapiro added boundary scaling
Revised April 14, 1976 - Lemkin FIXED CIRCLE MASK TO MCIRCLE
Revised April 10, 1976 - Lemkin, added SPLICEMOVIEFRAME, REMOVEMOVIEFRAME
Revised April 6, 1976 - Lemkin, fixed LISTTRANSFORM and R/W for xform
Revised April 3, 1976 - Lemkin, added special commmands taking structs.
Revised April 1, 1976 - Lemkin, added movie stuff and xp,yp
Revised March 31, 1976 - Lemkin, changed LISTARCS TO LISTTRANSFORM
Revised March 30, 1976 - Lemkin, added transform OPR lists
Revised March 26, 1976 - Lemkin, added transform names and operators
;
COMMENT
.SS(REQUIRE files)
.INDEX(REQUIRE files)
.;
Comment
" ================================"
" = R E Q U I R E ="
" ================================"
" The following files are required for use by PROC10.
They all reside in the Image Processing Unit's common user area
";
Comment Permanent REQ's;
Require "DEFINE.REQ" source!file;
Require "PRCMAX.REQ" source!file;
COMMENT
.NEXT PAGE
.SS(Global variables)
.INDEX(Global variables)
;
# ==================================;
# = G L O B A L V A R I A B L E S=;
# ==================================;
Internal String
trm!name,
file!name,
com,
operate,
outfile,
cmd,
s,
ss,
sss,
Ifn,
ofn,
smsg,
proj!programmer,
dev!name,
str,
strcopy,
sout,
sip1,
sip2,
sip3,
sip4,
sip5,
sip6;
Internal String Array
pix!title[1:max!number!pix],
cw!title[1:max!number!computing!windows],
mask!title[1:max!number!masknames],
bnd!title[1:max!number!boundaries],
trn!title[1:max!number!transforms];
Internal Boolean
tim!switch,
autoOMNInumber,
setupOMNI,
cross!hairs,
auto!title,
trn!rectangle,
trn!window,
ok,
use!extrema;
Internal Integer
firstrow, firstcolumn, lastrow, lastcolumn,
sampled,
trunc!max,
imsiz,
imsiz1,
imshift,
imarray!size,
usemask,
I10, I11, I12, I13, I14, I15, I16, I17, I18,
row!side,
column!side,
rect!row!center,
rect!column!center,
next!free!boundary,
p!index,
m!index,
b!index,
t!index,
w!index,
r!cross,
c!cross,
ran!seed,
dmin,
dmax,
density!value,
npict,
db,
flag,
index,
dbsave,
im!size,
threshold,
xp,
yp,
cur!window,
thr!density;
Internal Real
bnd!scale!factor,
scaling,
x0,
y0,
std!dev,
runtime,
cputime,
t!runtime,
t!cputime;
Internal Integer Array
header[0:255],
pix!in!use[1:max!number!pix],
mask!in!use[1:max!number!masknames],
bnd!in!use[1:max!number!boundaries],
trn!in!use[1:max!number!transforms],
cw!in!use[1:max!number!computing!windows],
c!wind[1:7,1:max!number!computing!windows],
hist[0:511],
maxima[0:10],
minima[0:10];
Internal List
movie;
Internal Set
omni!active,
omni!free,
omni!post,
omni!unpost;
Internal Itemvar
a!active,
a!transform,
v!circletransform,
v!centfouriertransform,
v!Fouriertransform,
v!Walshtransform,
v!HISTtransform,
none;
Internal Integer Array Itemvar
mskimage,
image1,
image2,
image3,
iname,
mask1,
mask2,
mask3,
bnd1,
bnd2,
bnd3;
Internal Real Array Itemvar
riv,
trn1,
trn2,
trn3;
" The following variables are external and are defined in
BOUND.SAI:
Integer inspool, inspeof, terse;"
COMMENT
.NEXT PAGE
.SS(Special commands)
.INDEX(Special commands)
;
# ==================================;
# = S P E C I A L C O M M A N D S=
# ==================================;
# ADD COMMANDS HERE IN UPPER CASE WHEN ENLARGING THE
SYSTEM;
# Note that test and dispatch for the commands is made in
CMDLOOP, SPECIAL!COMMAND!ASSIGNMENT, and LIST!COMMANDS. Note
that lgl!spclcmds[max!number!special!commands] must
be null as it is used to denote the End of the legal command
list;
preload!with
"HELP",
"ACTIVEDATA",
"AUTOTITLETOGGLE",
"CMD",
"--FREE1--",
"DELETE",
"ENDSESSION",
"GETWINDOW",
"PARAMETERS",
"SAVEWINDOW",
"SETDENSITY",
"SETSAMPLING",
"SETSIZE",
"SETTERMINAL",
"SETTITLE",
"SETWINDOW",
"SETLCS",
"TERSE",
"TIMERTOGGLE",
"VERBOSE",
"DO",
"ENTER2001",
"AUTOOMNINUMBERTOGGLE",
"KILLOMNI",
"UNPOSTOMNI",
"POSTOMNI",
"DOOMNI",
"SETSCALING",
"NEWMOVIE",
"APPENDMOVIE",
"RUNMOVIE",
"SPLICEMOVIEFRAME",
"REMOVEMOVIEFRAME",
"SETBOUNDARYSCALEFACTOR";
Internal Own String Array
lgl!spclcmds[1:max!number!special!commands];
COMMENT
.NEXT PAGE
.SS(Special commands)
.INDEX(Special commands)
;
# ==================================;
# = S P E C C O MS U S I N G S T R U C T S=
# ==================================;
# ADD COMMANDS HERE IN UPPER CASE WHEN ENLARGING THE
SYSTEM;
# Note that test and dispatch for the commands is made in
CMDLOOP, SPECIAL!COMMAND!ASSIGNMENT. Note that
l!spcstructures[max!number!special!commands] must be null as
it is used to denote the End of the legal command list;
preload!with
"ACTIVEDATA",
"SETTITLE",
"KILLOMNI",
"UNPOSTOMNI",
"POSTOMNI",
"APPENDMOVIE",
"SPLICEMOVIEFRAME",
"REMOVEMOVIEFRAME";
Internal Own String Array
l!spcstructures[1:max!number!special!commands];
COMMENT
.NEXT PAGE
.SS(Picture names)
.INDEX(Picture names)
;
# ==================================;
# = P I C T U R E N A M E S =;
# ==================================;
# ADD picture names HERE IN UPPER CASE WHEN ENLARGING THE SYSTEM;
# Note that test for the picture names must be made in
procedures using them (CMDLOOP, PIX!ASSIGNMENT, ACTIVE!DATA).
The pix!in!use[1:max!number!pix] array is used to
denote if a particular picture is active (if entry is true,
else does not exist if false). Furthermore, pictures are stored
as the DATUM of an item (Max size 16K integer array for 256x256
image). The print name field of a picture item is used to store
the picture name. The picture title is stored in array
pix!title[1:max!number!pix]. If the picture is in use, the
pix!in!use[1:max!number!pix] is set to true else to false;
preload!with
"P1", "P2", "P3", "P4", "P5", "P6", "P7", "P8", "P9",
"P10", "P11", "P12", "P13", "P14", "P15", "P16", "P17", "P18", "P19",
"P20", "P21", "P22", "P23", "P24", "P25", "P26", "P27", "P28", "P29",
"P30", "P31", "P32";
Internal Own String Array lgl!pnames[1:max!number!pix];
" An image which is the result of a segment operation
(i.e. the connected components image) may have leap triples
(Pi*Bq=seglist) associated with it. The seglist consists of:
Segment property list[0] = component number
Segment property list[1] = r
Segment property list[2] = c
Segment property list[3] = area
Segment property list[4] = perimeter
Segment property list[5] = density (masked from original image)
Segment property list[6] = CVSIX(boundary NAME)
Segment property list[7] = touching comput. window predicate
Segment property list[8] = CVSIX(original picture NAME)
"
COMMENT
.NEXT PAGE
.SS(Boundary names)
.INDEX(Boundary names)
.;
# ==================================;
# = B O U N D A R Y N A M E S =;
# ==================================;
# ADD boundary names HERE IN UPPER CASE WHEN ENLARGING THE SYSTEM;
# Note that test for the boundary names must be made in
procedures using them (CMDLOOP, BOUNDARY!ASSIGNMENT,
ACTIVE!DATA).
The boundary!in!use[1:max!number!boundaries] array is
used to denote if a particular boundary is active (if entry is
true, else does not exist if false). Furthermore, boundarys are
stored as the DATUM of an item (Max size 1K integer array for
2K point boundary). The print name field of a boundary item is
used to store the boundary name. The PROPS field of the item
contains the length of the boundary (not including the (0,0)
eof). The boundary title is stored in array
boundary!title[1:max!number!boundaries]. If the boundary is in
use, the boundary!in!use[1:max!number!boundaries] is set to
true else to false;
preload!with
"B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8", "B9",
"B10", "B11", "B12", "B13", "B14", "B15", "B16", "B17", "B18", "B19",
"B20", "B21", "B22", "B23", "B24", "B25", "B26", "B27", "B28", "B29",
"B30", "B31", "B32";
Internal Own String Array lgl!bnames[1:max!number!boundaries];
" note - set the starting point for free boundary names!!!"
COMMENT
.NEXT PAGE
.SS(Mask names)
.INDEX(Mask names)
.;
# ==================================;
# = M A S K N A M E S =;
# ==================================;
# ADD Mask names HERE IN UPPER CASE WHEN ENLARGING THE SYSTEM;
# Note that test and dispatch for the Mask names must
be made in procedure CMDLOOP as well (CMDLOOP, MASK!ASSIGNMENT,
PIX!ASSIGNMENT, ACTIVE!DATA);
preload!with
"M1", "M2", "M3", "M4", "M5", "M6", "M7", "M8", "M9", "M10",
"M11", "M12", "M13", "M14", "M15", "M16", "M17", "M18", "M19",
"M20", "M21", "M22", "M23", "M24", "M25", "M26", "M27", "M28",
"M29", "M30", "M31", "M32";
Internal Own String Array lgl!mnames[1:max!number!masknames];
COMMENT
.NEXT PAGE
.SS(Transform names)
.INDEX(Transform names)
.;
# ==================================;
# = T R A N S F O R M N A M E S =;
# ==================================;
# ADD Transform names HERE IN UPPER CASE WHEN ENLARGING THE SYSTEM;
# Note that test and dispatch for the Transform names must
be made in procedure CMDLOOP as well (CMDLOOP, BND!ASSIGNMENT,
ANALYZE!CMD, ACTIVE!DATA);
preload!with
"T1", "T2", "T3", "T4", "T5", "T6", "T7", "T8", "T9", "T10",
"T11", "T12", "T13", "T14", "T15", "T16", "T17", "T18", "T19",
"T20", "T21", "T22", "T23", "T24", "T25", "T26", "T27", "T28",
"T29", "T30", "T31", "T32";
Internal Own String Array lgl!tnames[1:max!number!Transforms];
COMMENT
.NEXT PAGE
.SS(Window names)
.INDEX(Window names)
.;
# ==================================;
# = W I N D O W N A M E S =;
# ==================================;
# ADD window names HERE IN UPPER CASE WHEN ENLARGING THE SYSTEM;
# Note that test and dispatch for the window names must
be made in procedures (GET!WINDOW, SAVE!WINDOW);
preload!with
"W1", "W2", "W3", "W4", "W5", "W6", "W7", "W8", "W9", "W10",
"W11", "W12", "W13", "W14", "W15", "W16", "W17", "W18", "W19",
"W20", "W21", "W22", "W23", "W24", "W25", "W26", "W27", "W28",
"W29", "W30", "W31", "W32";
Internal Own String Array
lgl!wnames[1:max!number!computing!windows];
COMMENT
.NEXT PAGE
.SS(Picture Operators)
.INDEX(Picture Operators)
.;
# =====================================;
# = P I C T U R E O P E R A T O R S =;
# =====================================;
# ADD picture operators HERE IN UPPER CASE WHEN ENLARGING
# THE SYSTEM
# Note that test for the operators must also be made in
procedures using them (ANALYZE!CMD, CMDLOOP, PIX!ASSIGNMENT,
LIST!COMMANDS)
# Note single character operator symbols must be preceeded
# with a space for the GUESSER routine to be able
# to operate on them;
preload!with
" +",
"MINUS",
" *",
" /",
"MAX",
"MIN",
"SCALE",
"ROTATE",
"COPY",
"AVG4",
"AVG8",
"GRAD4",
"GRAD8",
"FILLPINHOLES",
"SLICE",
"NOT",
"EXPAND",
"SHRINK",
"SHIFT",
"SEGMENT",
"WHITENOISE",
"ZERO",
"DELSQPIX",
"FINDWINDOW",
"HISTOGRAMPIX",
"SHOW",
"READ",
"WRITE",
"DELETE",
"AREA",
"DENSITY",
"PERIMETER",
"MOMENTS",
"DIFFERENCE",
"LAPLACE8",
"INSERT",
"EXTRACT",
"EXTREMA",
"LINCOMB",
"LISTSEGMENTS",
"ZOOM",
"MAKEPIX",
"PRINT",
"TEXTURE1",
"TEXTURE2",
"TEXTURE3",
"FILTER";
Internal Own String Array lgl!pops[1:max!number!pixops];
COMMENT
.NEXT PAGE
.SS(Mask operators)
.INDEX(Mask operators)
.;
# =====================================;
# = M A S K O P E R A T O R S =;
# =====================================;
# ADD maskoperators HERE IN UPPER CASE WHEN ENLARGING THE SYSTEM;
# Note that test for the maskoperators must also be made
in procedures using them (ANALYZE!CMD, CMDLOOP,
MASK!ASSIGNMENT, LIST!COMMANDS);
# Note single character maskoperator symbols must be preceeded
# with a space for the GUESSER routine to be able
# to maskoperate on them;
preload!with
"AND",
"OR",
"MINUS",
"COPY",
"NOT",
"ZERO",
"READ",
"WRITE",
"DELETE",
"MCIRCLE",
"RECTANGLE",
"MSLICE",
"MSEGMENT",
"SPHERE",
"SQUARE",
"WHOLE",
"AREA",
"PERIMETER";
Internal Own String Array lgl!mops[1:max!number!maskops];
COMMENT
.NEXT PAGE
.SS(Boundary operators)
.INDEX(Boundary operators)
.;
# =====================================;
# = B O U N D A R Y O P E R A T O R S =;
# =====================================;
# ADD boundary operators HERE IN UPPER CASE WHEN ENLARGING
# THE SYSTEM;
# Note that test for the boundary operators must also be
made in procedures using them (ANALYZE!CMD,
BOUNDARY!ASSIGNMENT, CMDLOOP, LIST!COMMANDS);
# Note single character boundary operator symbols must be
# preceeded with a space for the GUESSER routine to be able
# to boundary operate on them;
preload!with
"COPY",
"ZERO",
"READ",
"WRITE",
"DELETE",
"SHOW",
"AREA",
"PERIMETER",
"CIRCLETRANSFORM",
"ICIRCLETRANSFORM",
"SUBARCS",
"LISTTRANSFORM",
"FOURIERTRANSFORM",
"IFOURIERTRANSFORM",
"WALSHTRANSFORM",
"IWALSHTRANSFORM",
"--FREE2--",
"--FREE3--",
"CENTFOURIERTRANSFORM",
"ICENTFOURIERTRANSFORM",
"LISTBOUNDARY";
Internal Own String Array lgl!bops[1:max!number!boundaries];
COMMENT
.NEXT PAGE
.SS(Nullary input ops)
.INDEX(Nullary input ops)
.;
# =====================================;
# = N U L L A R Y I N P U T O P S =;
# =====================================;
" Note this duplicate set of names is used for tests for
null INPUT operators for both picture, boundary, and mask
operations"
Preload!with
"MCIRCLE",
"DELETE",
"READ",
"MSLICE",
"RECTANGLE",
"MSEGMENT",
"SPHERE",
"SQUARE",
"WHOLE",
"WHITENOISE",
"ZERO",
"SHRINK",
"EXPAND",
"ZOOM",
"LISTTRANSFORM",
"ICIRCLETRANSFORM",
"IFOURIERTRANSFORM",
"ICENTFOURIERTRANSFORM",
"IWALSHTRANSFORM",
"SUBARCS",
"MAKEPIX";
Internal Own String Array lgl!nINPUT!ops[1:max!number!pixops];
COMMENT
.NEXT PAGE
.SS(Nullary output ops)
.INDEX(Nullary output ops)
.;
# =====================================;
# = N U L L A R Y O U T P U T O P S =;
# =====================================;
" Note this duplicate set of names is used for tests for
null OUTPUT operators for both picture, boundary, and mask
operations"
Preload!with
"DELSQPIX",
"WRITE",
"FINDWINDOW",
"HISTOGRAMPIX",
"SHOW",
"PRINT",
"AREA",
"PERIMETER",
"ARCLENGTH",
"CIRCLETRANSFORM",
"FOURIERTRANSFORM",
"CENTFOURIERTRANSFORM",
"WALSHTRANSFORM",
"SUBARCS",
"LISTTRANSFORM",
"LISTBOUNDARY",
"MOMENTS",
"DENSITY",
"LISTSEGMENTS",
"EXTREMA",
"TEXTURE1",
"TEXTURE2",
"TEXTURE3";
Internal Own String Array lgl!nOUTPUT!ops[1:max!number!pixops];
COMMENT
.NEXT PAGE
.SS(No shift ops)
.INDEX(No shift ops)
.;
# =====================================;
# = N O S H I F T O P S =;
# =====================================;
" Note this duplicate set of names is used for tests for
not shifting operators in BINTRP operations"
Preload!with
"WRITE",
"CIRCLETRANSFORM",
"FOURIERTRANSFORM",
"CENTFOURIERTRANSFORM",
"WALSHTRANSFORM",
"SUBARCS";
Internal Own String Array lglNoSHIFT!ops[1:max!number!pixops];
COMMENT
.NEXT PAGE
.SS(Transform input ops)
.INDEX(Transform input ops)
.;
# =====================================;
# = T R A N S F O R M I N P U T O P S =;
# =====================================;
" Note this duplicate set of names is used for tests for
transform input operators in BINTRP operations"
Preload!with
"ICIRCLETRANSFORM",
"IFOURIERTRANSFORM",
"ICENTFOURIERTRANSFORM",
"IWALSHTRANSFORM",
"LISTTRANSFORM",
"SUBARCS";
Internal Own String Array l!T!input!ops[1:max!number!pixops];
COMMENT
.NEXT PAGE
.SS(Transform output ops)
.INDEX(Transform output ops)
.;
# =====================================;
# = T R A N S F O R M O U T P U T O P S =;
# =====================================;
" Note this duplicate set of names is used for tests for
transform output operators in BINTRP operations"
Preload!with
"CIRCLETRANSFORM",
"FOURIERTRANSFORM",
"CENTFOURIERTRANSFORM",
"WALSHTRANSFORM",
"SUBARCS";
Internal Own String Array l!T!output!ops[1:max!number!pixops];
End "PRCINV.SAI";