.helpsys dcontrol Feb84 "Image Display Control" .ce \fBImage Display Control Software\fR .ce Technical Specifications .ce February 17, 1984 .nh Virtual Display Characteristics The display device is assumed to have N image memories or frames, where N is at least one. All frames are assumed to be the same size and depth. The frame size and depth (number of bits per pixel) are constant for a device. There should be at least one graphics frame. The virtual interface associates one graphics frame with each image frame, but at the device level the graphics may be or-ed together and displayed on a single plane, if necessary. A lookup table is associated with each image frame buffer and with each color gun. The input of a color gun is the sum of the outputs of zero or more frame buffers. There must be at least one cursor. .nh 2 Basic Functions The virtual display device is assumed to provide the following minimal set of basic functions. .ls 4 .ls [1] Read or write an image frame buffer. Random addressability of pixels is not assumed; writes may be aligned on image lines if necessary. The ability to write more than one image line in a single transfer is assumed. .le .ls [2] Erase an entire image frame buffer. .le .ls [3] Read or write an image frame lookup table. .le .ls [4] Read or write the pseudocolor lookup table. .le .ls [5] Connect the output of one or more image frame lookup tables to a color gun (used to select the frame to be displayed, etc.). .le .ls [6] Read or write the position of a cursor. .le .ls [7] Read, write, or "or into" a graphics overlay bit plane. A one bit graphics plane is associated with each image frame. Graphics planes may be erased and turned on and off independently of each other and the image planes. A read or write operation may reference any combination of graphics planes simultaneously, permitting multicolor vector graphics. A single lookup table is used to assign a color to each graphics plane. .le .le The following functions are supported but are not required. .ls .ls [8] Zoom and pan. .le .ls [9] Split screen: simultaneous display of any two frames, horizontal or vertical split through the center of the display. .le .le Blinking of two or more image frames is provided in software. Character and vector generation in the graphics overlays is only provided in software in the current interface. .nh 2 Lookup Tables A monochrome lookup table is associated with each image frame and with each of the three color guns (red, green, and blue). A lookup table may be read and written independently of any other lookup table or image frame. The image frame lookup tables are used principally for window stretch enhancement (contrast and dc offset), and the color lookup tables are used for pseudocolor. Our model assumes that the input of each color gun may be connected to the sum of the lookup table outputs of zero or more image frames. Furthermore, each color gun assignment may be specified independently of that for any other color gun. The more common display modes are shown below. The table illustrates the assignment of image frames to color guns. If only one image frame combination appears in the list, that one combination is taken to be assigned to each gun. Thus, "RGB = 123" indicates that the \fIsum\fR of the outputs of frames 1, 2, and 3 is assigned to \fIeach\fR of the three color guns. .nf RGB = 1 single frame monochrome, pseudocolor, etc. RGB = 1,2,3 true color (R=1, G=2, B=3) RGB = 123 multi frame monochrome, pseudocolor, etc. .fi On many displays, there will be restrictions on the ways in which frames may be assigned to guns. For example, many displays will not permit a gun to be assigned to more than one frame. Our model also associates a single monochrome lookup table with each of the three color guns. By feeding the same input into each of the guns, but loading a different lookup table into each gun, many types of pseudocolor enhancement are possible. If monochrome enhancement or true color is desired, the color lookup tables are normally all set to provide a one to one mapping, effectively taking them out of the circuit. .nh 2 Cursors Each image display device is assumed to have at least one cursor, with the following associated control functions: .ls 4 .ls [1] Read cursor position. The one-indexed coordinates of the center of the visible cursor are returned. The origin is assumed to be consistent with that used for reading and writing image data, but is otherwise undefined. A read should return immediately (sample mode), rather than wait for some external event to occur (event mode). .le .ls [2] Write cursor position. A read followed by a write does not move the cursor. Cursor motions do not affect image data in any way. .le .ls [3] Disable cursor (invisible cursor). .le .ls [4] Enable cursor. .le .ls [5] Blink cursor. .le .le .nh Display Control Software A single executable process contains all display control functions. A separate process (executable image) is provided for each display device. All display control processes behave identically at the CL level. The STDIMAGE environment variable is used to select the particular display control process to be run. .ks .nf user interface display control process virtual device interface physical device .fi .ce Structure of the Display Control Software .ke The display control process consists of a device independent part and a device dependent part. The device dependent part provides the virtual device control and data functions identified in section 1. The specifications of the virtual device interface have not yet been written, though a prototype interface has been implemented for the IIS model 70. In the long run, the virtual device interface may be provided by an extension to GKS (the Graphical Kernel System). .nh 2 User Interfaces At least two user interfaces are planned for display control. The first, and most transportable, interface will be a conventional CL level command interface. Separate commands will be provided for frame selection, enhancement selection, frame erase, windowing, blinking, etc. The second interface will be a menu driven interface run on a dedicated terminal with touch screen overlay for input. This latter interface will run asynchronously with the user terminal, and will therefore provide access to the display at all times, as well as increased functionality and interactiveness. Both user interfaces will use the same virtual device interface. .nh 3 The Display Control Package The command oriented image display control interface will be implemented as a set of CL callable tasks in the package \fBimages.dcontrol\fR. The new \fBdcontrol\fR package will include the \fBdisplay\fR program, used to load images into the image display device, and any other programs specifically concerned with the image display device. The specifications for the package are given below (excluding the \fBdisplay\fR program, which is documented elsewhere). All control functions operate independently of each other, i.e., without side effects, unless otherwise noted. .ks .nf blink dsave initdisplay rgb contour frame lumatch splitscreen display grclear monochrome window drestore imclear pseudocolor zoom .fi .ce The \fBDcontrol\fR Package .ke The basic \fBdcontrol\fR package is shown above, and further documentation is given below. Additional routines will be added in the future. These will include: .ls .ls [1] An display routine wherein the image histogram is computed and plotted, then the user interactively marks the intensity region to be mapped into the display, using the graphics cursor. .le .ls [2] A routine for reading out a monochrome display into an imagefile, which is then plotted on a hardcopy device (i.e., the Dicomed). .le .ls [3] A routine for drawing vectors, marks, and text strings into a graphics overlay. .le .le The display status should not be modified upon entry to the package, i.e., the display should not change except under control of the user. For example, if a new user logs on and a previous user's image is still loaded and being displayed in pseudocolor, the control software should not suddenly change the display mode to RGB, merely because the new user left the display in RGB mode when they last logged off. The physical display device is the important reference frame. [N.B.: See also \fBdsave\fR and \fBdrestore\fR]. .ls .ls \fBblink\fR (frame1, frame2 [, ... frameN] [, rate=1]) The indicated frames are blinked at a rate given by the hidden parameter \fIrate\fR. The positional arguments are the frame numbers; a variable number of arguments are permitted. The order of the arguments determines the order in which the frames are displayed. The same frame may appear any number of times in the list, permitting different frames to be displayed for various lengths of time. .le .ls \fBcontour\fR ([frame]) The operation of this routine is very similar to that of \fBwindow\fR. A cursor device is interactively used to control the spacing and width of black contour lines, written with equal spacing into the image lookup table. The window transfer function is not changed, other than to black out the regions where the contour bands fall. Since only the image frame lookup table is affected, this routine may be used with any form of enhancement (i.e., pseudocolor). .le .ls \fBdsave\fR (save_file [, image=1234, graphics=1234]) The full control status of the display, and optionally the image and graphics memories, are saved in the named savefile for later restoration by \fBdrestore\fR. By default all image and graphics memories are saved; the hidden parameters \fBimage\fR and \fBgraphics\fR may be used to indicate the specific image frames or graphics planes to be saved, if desired. .le .ls \fBdrestore\fR (savefile) The display device is restored to a previously saved state from the named savefile. .le .ls \fBframe\fR (frame_number) Select single frame mode and display the indicated frame. Frame enhancement is not affected. This command will clear any multiple frame modes (rgb, blink, split screen, etc.) previously in effect. .le .ls \fBgrclear\fR (frame) The specified graphics frame is cleared. If the frame number is zero, all graphics frames are cleared. .le .ls \fBimclear\fR (frame) The specified image frame is cleared. If the frame number is zero, all image frames are cleared. .le .ls \fBinitdisplay\fR Initializes the image display to a default (device dependent) state. All image and graphics memories are cleared, all lookup tables are set to a default mapping (usually one-to-one), the cursor is centered and enabled, single frame monochrome enhancement is selected, zoom, blink, etc. are disabled, and frame one is selected for display. .le .ls \fBmonochrome\fR Select monochrome enhancement (black and white). .le .ls \fBlumatch\fR (frame, reference_frame) The image frame lookup table of the first frame is matched to that of the reference frame. .le .ls \fBpseudocolor\fR (type_of_pseudocolor [, ncolors=64]) Select one of the many possible pseudocolor enhancement modes. A single string type argument selects the type of enhancement to be displayed. The hidden parameter \fBncolors\fR controls the maximum number of colors to be displayed; permissible values are limited to powers of two. Pseudocolor is a contrast enhancement technique, and is most useful for smooth images. The types of pseudocolor enhancement currently implemented are the following: .ls .ls linear The full range of greylevels are uniformly mapped into a spectrum of colors ranging from blue through red. .le .ls random A randomly selected color is assigned to each output greylevel. This mode provides maximum discrimination between successive greylevels. .le .le .sp Selecting a pseudocolor or monochrome enhancement mode does not change the windowing. After selecting an enhancement mode, \fBwindow\fR may be used to control the number and range of color or grey levels in the image. The number of greylevels or colors actually displayed will depend on the smoothness of the input frames, and on how the input frames are windowed. .le .ls \fBrgb\fR [red=1, green=2, blue=3] True color mode is selected, i.e., the specified red frames are mapped to the red gun, the green frames are mapped to the green gun, and so on. The hidden parameters \fIred\fR, \fIgreen\fR, and \fIblue\fR define the mapping of image frames to guns. On some displays, it may be possible to additively assign more than one frame to a single gun, i.e., "red=123" would assign the sum of frames 1 through 3 to the red gun. If pseudocolor enhancement was previously in effect it may or may not be cleared, depending on the display characteristics. .le .ls \fBsplitscreen\fR (frame, frame [, vertical=yes]) Two images are displayed simultaneously, one on either half of the image. The two images may be split either horizontally or vertically. .le .ls \fBwindow\fR [frame] [, ...frame] This command causes a linear mapping function to be repetitively loaded into the lookup table for one or more image frames. If no frame arguments are given, the frame or frames currently displayed are windowed. In RGB mode, for example, all frames are simultaneously windowed by default. The \fBhjklHJKL\fR keys on the terminal, the trackball, or some other analog input device associated with the display, may be used to interactively adjust the mapping. As the mapping is changed, the cursor will be seen to move on the display. Vertical motions control the contrast and whether or not a positive or negative image is displayed; the highest contrast lies furthest from the center. Horizontal motions adjust the dc offset. [N.B.: Initialize the cursor position to reflect the current mapping before entering the loop, to avoid any abrupt changes in the windowing.] .le .ls \fBzoom\fR (scale_factor) The current display is magnified by the indicated scale factor, which is normally limited to small powers of two (i.e., 1, 2, 4, and 8). While in zoom mode, the cursor controls the position of the viewport window on the full image. .le .le .endhelp