1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
|
.TL
The IIS Image Display
.AU
Richard Wolff
.br
Central Computer Services
National Optical Astronomy Observatories
Tucson, Arizona
.DA
.PP
The International Imaging Systems (IIS) Model 70f is a reasonably
flexible image display with some more advanced capabilities than the IPPS,
(and, sad to say, some less advanced ones as well). This note describes
the hardware so that the user can use the device to best advantage.
The Model 75, which is in use at CTIO, is more elaborate still, but its
fundamental properties are the same as the 70f boxes in use at NOAO.
.PP
The image display has four image planes (frames, memories), each of which
can hold a 512 x 512 8 bit image. (The hardware can support 12 such planes,
but only four are installed in the NOAO units.) These planes are loaded
directly from the host computer; while there is hardware to support a
13-bit input/8-bit output mapping during load, this is not currently used
at NOAO. The frames are numbered 1 through 4 and there is nothing to
distinguish one from another. More than one image plane may be displayed
at one time; this may create a rather messy screen image, but, of course,
the hardware doesn't care.
.PP
The image is generated by hardware that
addresses each pixel in turn, and sends the data at that location to the
video display. Panning (scrolling/roaming) is accomplished simply by
starting the address generation somewhere other than at the normal starting
place.
Each plane has its own starting address, which just means that each
plane can be panned independently. In contrast, on the model 70,
all planes zoom together. Zooming is done by pixel replication:
The master address generator
"stutters", duplicating an address 2, 4, or 8 times before moving on to
the next pixel (and duplicating each line 2, 4, or 8 times--an additional
complication, but a necessary one, which is of interest only to hardware types).
The master address is then added to the per-image start address
and the resulting address streams are used to generate
the per-image data streams, which are added together to form the final image.
The net result of this is an image on the screen, with user control of the
placement of each image plane, and with one overall "magnification" factor.
.PP
If more than one image is active, the pixel values for a given screen
position are \fBadded\fR together. Thus, with four image planes, each of
which has pixels that can range in value from 0 through 255, the output
image can have pixel values that range from 0 through 3060. Unfortunately,
the output hardware can handle only values from 0 through 1023. But,
fortunately, hardware has been included to allow the use to offset and
scale the data back to the allowed output range. We will look at that
in more detail later.
.PP
The hardware that determines which frames are to be displayed consists
of "gates" that enable or disable the frame output to the image screen.
These "gates" are controlled by various data bits in the hardware.
Conceptually, given the description in the previous paragraphs, one can
imagine one bit (on or off) for each image frame, and it is these
bits that the \fBdi\fR command turns on and off. However, there are
complications, one of which is the split screen mode. Split screen
hardware allows the user to specify a point, anywhere on the screen,
where the screen will be divided into (generally, unequally sized) quadrants.
The display control bits specify not only which images will be active,
but in which of the four quadrants they will be active.
There are four control bits per image plane, and so, any image can
be displayed in any number of quadrants (including none, which means the
image is "off").
.PP
If one imagines the split screen point in the middle of the screen, then
four quadrants are visible, number 1 being the upper right, number 4 the bottom
right, etc. As the split screen point is moved to the upper left, quadrant
four increases in size and the other three decrease. When the split point
reaches the top left corner (\fIIRAF\fR coordinate (1,512)), only quadrant
four is left. Due to a hardware decision, this is the normal, non-split,
screen configuration, the one you get when you type the \fBs o\fR command.
It would make more sense to set the non-split position so the screen was
filled with quadrant one, but the hardware won't allow it. So, be
warned, if you have a split screen display,
and then reset the split point to the "unsplit" point,
what you see will be only what you had displayed in quadrant 4.
.PP
The model 70f is a color display, not monochrome, and this adds more
complexity. What happens is that the data from each enabled image plane
is replicated and sent to three \fIcolor pipelines\fR,
one for the \fIred\fR gun of the monitor, one for the \fIgreen\fR,
and one for the \fIblue\fR. If the pipeline data streams are
the same, we get a black and white image. If they differ, the
final screen image is colored. Since there are really three data streams
leaving each image plane, it should not be surprising that there are
display control bits for each color, as well as each quadrant, of each
image. Thus (and finally) there are 12 control bits, three colors in each
of four quadrants, for each image plane. One can set up a display with
different images in different quadrants, and each colored differently!
Of course, the coloration is somewhat primative as the choices are limited
to red on or off, green on or off, both red and green on (yellow), blue on
or off, etc. More control comes with look-up tables.
.PP
The data from the combined image planes is added together in the pipelines.
There are offset and range registers for each pipeline which allow you to
bias and scale the data. Offset allows you to add or subtract a 13 bit
number (+-4095) and range scales the data by a factor of 1,2,4, or 8.
These are of interest mostly when more than one image is combined; in this
case, the resulting stream of data should be adjusted so that it
has its most interesting data in the range 0 through 1023.
.PP
Why 1023? The reason is that after offset and range have taken their
toll, the data is "passed through" a 10 bit in/10 bit out look-up table.
Look-up tables are digital functions in which each input datum is used
as an index into a table and the resultant value that is thus "looked-up"
replaces the datum in the data stream. The look-up tables here
are known as the \fIoutput\fR
tables (or, as IIS would have it, the "Output Function Memories").
There is one for
each of the three pipelines, and each accepts an input value of 10 bits,
which limits the data stream to 0 through 1023,
If the image data in the three pipelines are the same, and the output
tables are too, then a black and white image results. If, however, the
pipelines are identical but the tables are different, a colored image
results. Since this image is not a true color image,
but simply results from manipulating the three identical color
pipelines in differing ways, the result is called a pseudo-color image.
.PP
The simplest look-up table is a linear function, whose input values run
from 0 through 1023 and whose output values do the same. The trouble
with such a linear output table is that the usual case is a single image
being displayed, in which case the pipeline data is never more than 255.
With the unit slope table, the maximum output would be 255, which is
one-quarter of full intensity. A better table in this case would be one of
slope 4, so 255 would map to 1023 (maximum output). This is what the
default is, and above 255 input, all values are mapped to 1023. If,
however, two images are being displayed, then data values may be larger
than 255 (at overlap points), and as these all map to 1023, only full white
results. The range/offset registers may be of use here, or a different
output table should be used.
.PP
The output of the "output" tables is combined with the graphics and cursor
data and sent to the display screen. The graphics planes are one bit
deep; there are seven of them, and together with the cursor, they form
an "image" 8 bits deep. In this sense, the graphics planes are just
like image data, and in particular, they pan and zoom just as the
image planes do. Of course, the cursor is different. The graphics
planes are sent through a look-up table of their own, which determines
what happens when one graphics plane crosses/overlaps others and/or the
cursor. The resultant data replaces the pipeline data. The graphics
data can be added to the pipeline data instead of replacing it, but this
feature is not available in \fIcv\fR at this time. The cursor is really
a writable 46x64 bit array; thus, its shape can be changed, a feature
that may be made available to users. Note that there is no quadrant/split
screen control for the graphics planes.
.PP
The final complication, at least as far as the current software is
concerned, is that each image plane has its own set of three look-up
tables, one for each color. Thus, there are 4x3 frame look-up tables
and three output tables. The image tables affect only the data from
the associated image plane. It is the output of these tables that
forms the input to the three color pipelines. Each table is an 8 bit in/9
bit out table, with the output being treated as a signed number (255 to
-256). (Combining 12 9 bit numbers (a full model 70f) can produce a 13 bit
number, which is why the offset hardware accepts 13 bit numbers.) In
the \fIcv\fR software, only positive numbers are used as output from
the tables. Typically, the image tables are loaded with linear
functions of varying slope and intercept.
.PP
With the two sets of tables, image and output, it is possible to create
all sorts of interesting pseudo-color images. One possibility is to
place the appropriate three mappings in the output tables so as to create
the color (for instance, red can be used only for pixels with large
values, blue for low values, green for middling ones). Then the image
tables can be set to adjust the contrast/stretch of the each image
individually, producing, one assumes, useful and/or delightful
pseudo-color images.
|