home *** CD-ROM | disk | FTP | other *** search
- X Image Extension Overview
- J. Ben Fahy, Ph.D.
-
-
- &
- Robert N.C. Shelley
-
- Abstract
- The X Image Extension provides a powerful mechanism for the transfer and display of
- virtually any image on any X-capable hardware. While not intended for use as a general
- purpose image-processing engine, XIE does provide a robust set of image rendition and
- enhancement primitives that can be combined into arbitrarily complex expressions. XIE
- also provides import and export facilities for moving images between client and server
- or core X and XIE and for accessing images as resources.
- XIE Design Goals
- The X Image Extension (XIE) was designed to facilitate efficient and robust image display on X Window
- System servers. XIE provides tools for rapidly transferring an image from client to server and for con-
- verting the image format to match the server's hardware characteristics. XIE does not attempt to provide
- tools for general-purpose image processing. However, simple image enhancement and filtering operations
- such as contrast enhancement and convolution are available, as well as dithering, geometric transforma-
- tions, histogram generation, and so on.
- The X Window client-server architecture was based on the assumption that data on the wire would be of a
- relatively high level. Therefore, a high-bandwidth connection is not an absolute requirement for X. How-
- ever, image transfer requires sending large amounts of low-level data, which may take an unacceptable
- amount of time on slow or heavily loaded networks. This image transport bottleneck makes the X Window
- System less than optimal for supporting image-intensive applications.
- XIE solves the image transport problem by supporting the transmission of compressed images across the
- wire and providing image decompression facilities in the server. Compression ratios on the order of 20:1
- or more are common for bitonal images. The client can send a relatively modest amount of data to the
- server where it is decompressed into a much larger data structure. Since the image may not fit completely
- on the server's display monitor at full resolution, XIE supports geometric operations, such as scale and
- rotation, to allow an image to be transformed to fit in a reasonable window size as is depicted in Figure 1.
- Rendition in XIE is defined as the process of changing the format of an image in order to make it com-
- patible with the server's frame buffer, its associated lookup table(s), and other limitations. Once an image
- has been rendered, it may be transferred directly to the hardware and viewed on the screen. Rendering a
- complicated image to be compatible with highly limited hardware can be quite challenging and may re-
- quire a series of manipulations to be performed on the image. It may be necessary to convert the image
- from trichromatic to monochromatic (gray scale or bitonal). A scaling operation can be used to reduce the
- image's size to fit the screen dimensions. Convolution provides a means for sharpening the image or per-
- forming other general filtering operations. Dithering may be used to reduce the number of quantization
- levels to comply with the number of colormap entries available, and so on.
-
-
- Figure 1. Compressed transport from client to server, followed by decompression, scaling, and display.
- The primitives of XIE that are needed to support image transfer and rendition define a new class of virtual
- display hardware. In some cases, it may be possible for server implementors to map these functions di-
- rectly onto physical hardware accelerators. For example, the Convolution operator in XIE might be im-
- plemented directly using a convolution board or chip. Providing a vehicle for hardware vendors to up-
- grade the performance of X servers for image-specific operations was an explicit design goal of XIE.
- To summarize the main goals of XIE:
- * Display any image on any server
- * Reduce the time it takes to move images from client to server
- * Support the development and utilization of image-specific hardware
- * Do not cover all of image processing
- XIE Historical Summary
- The XIE project was initiated in 1988 by Joe Mauro of Digital Equipment Corporation. The first formal
- proposal was submitted to the X Consortium in 1990. At that time, it was voted not to proceed to technical
- review, because of a lack of sufficient resources to review the proposal. Digital continued to work with
- interested Consortium members in revising the protocol and produced a portable sample implementation
- of XIE (Version 3) to demonstrate proof of concept. In March 1991, XIE was officially moved into tech-
- nical review. After more than a year and a half of discussion by many interested companies, a substantially
- modified XIE (version 4) was promoted from technical review to public review at the end of 1992. In
- January 1993 AGE Logic was contracted to produce a new sample implementation that was completed in
- January 1994. Several more enhancements were made to the protocol during the public review and sample
- implementation period; the final release of the XIE-SI was version 5. The major changes to the XIE pro-
- tocol between versions 3 and 5 included:
- * More direct control over server behavior given to the client
- * Generalization and refinement of the computational model
- * Elements that do not perform implicit data type conversions
- * Tools for creating a processing engine moved to the client side
- * Unification of all geometric operators into a single transformation
- * Enhanced support for color spaces and color operations
- * Cleaner interface to Core X
- * Support for more compression techniques
- * Identification of a Document Imaging Subset
- XIE Architecture
- The image extension is designed to add new functionality to X, but, at the same time, it avoids making
- any fundamental changes to the X architecture. XIE receives requests and sends errors, replies, and events
- through the standard mechanisms defined for extensions. XIE resources must be registered with the Core
- X resource manager so that at client shutdown all XIE resources can be cleanly deallocated. All data in
- and out of XIE must pass through X, either by the standard extension mechanism or by explicit import
- and export. Note in Figure 2 that all utilization of resources in XIE must go through a Photoflo Manager.
- Data is imported into the Photoflo Manager and exported out from it. The Photoflo Manager, which also
- runs the computational engine of XIE, is discussed in the next section.
-
-
-
- Figure 2. High-level view of an X server containing XIE support.
-
- XIE's Computational Model
- Typical XIE processing employs a sequence of operations. For example:
- * Transport an image from client to server
- * Decompress the image
- * Scale the image
- * Render and enhance the image
- * Display (export image data to a Core X drawable)
-
- A client could ask the server to perform each of these operations one step at a time send the complete
- image to the server, then decompress it, then scale it, and so on, and finally display the result. One disad-
- vantage of this approach is that the user may have to wait a long time before seeing the image on the
- screen. Furthermore, the memory requirements of holding the full decompressed image in the server may
- be severe. The necessity of producing full intermediate images between steps further aggravates this situa-
- tion. Consider the simple sequence of operations {transfer image, decompress, scale, export to X} that is
- depicted in Figure 3:
-
- Figure 3. Processing each step completely before moving data to the next element in
- the sequence requires allocating a large amount of buffer space in the server.
- When the image is processed one step at a time, large buffers must be allocated to hold the decompressed
- image in the server. This may require more memory than is available in the server, in which case XIE
- would have to return an allocation error, thereby preventing the user from viewing the image.
- Suppose instead that the client could specify all operations in the sequence to the server at once. The
- server could then choose to perform only part of each operation before passing the output data to the next
- processing step in the sequence. For example, it might decompress half of the incoming image, scale that
- half, and export it to Core X. At that point the user would see the top of the image displayed on the screen
- (Figure 4):
-
-
- Figure 4. Processing only half of each step before moving data to the next element.
- After the top half of the image has been displayed, the server could decompress the remainder of the im-
- age, scale it, and export the result to Core X, thus completing the display of the whole image (Figure 5).
- Two benefits have been realized. First, the user was able to see something appear on the screen in roughly
- half the time. Second, the server did not have to allocate as much buffer space. In fact, the amount of
- buffer space required will be inversely proportional to the number of steps into which the process is subdi-
- vided (until some minimum level is reached).
-
-
- Figure 5. Processing the second half of each step.
- In XIE, the ability to define a sequence of operations to be performed is referred to as constructing a Pho-
- toflo. Photoflos are so named because the image data (sometimes photographic) is viewed as flowing
- through the sequence of elements. The Photoflo Manager depicted in Figure 2 obtains data via import
- elements, processes the data using process elements, and outputs the final result via export elements. A
- Photoflo for the sequence just discussed would look like:
-
-
-
- No explicit decompression step is required. The Import element describes the format of the data to be
- transferred, and the server knows it must implicitly decompress the image data prior to passing it to the
- Geometry element. Similarly, the client may specify that an image is to be compressed before it is stored
- in a Photomap or returned to the client.
- Photoflos do not have to be linear. The client is allowed to construct any Directed Acyclic Graph (DAG)
- as long as the way the elements are connected makes sense. For example, the Photoflo in Figure 6 com-
- putes an unsharp masked enhancement of the input image by first blurring a subregion of the image, using
- a convolution operation, and then adding the difference to the original image:
-
-
- Figure 6. Photoflo to compute unsharp masked enhancement with rectangles of interest.
- The client can specify this DAG to the server all at once, with either CreatePhotoflo (to create a perma-
- nent Photoflo that can be reused) or ExecuteImmediate (to create a temporary Photoflo that will be de-
- stroyed immediately upon completion). The Photoflo Manager creates the Photoflo and then waits for
- further instruction. Once the Photoflo is activated (performed by ExecutePhotoflo for permanent Photo-
- flos, or performed implicitly for temporary Photoflos), the Photoflo Manager will asynchronously execute
- the Photoflo, processing input as it becomes available. The client pushes data into the Photoflo by using a
- PutClientData request, specifying the Photoflo and the appropriate Import element. The client reads data
- out of the Photoflo by sending a GetClientData request, specifying the Photoflo and the appropriate Ex-
- port element. It is not unusual for the Photoflo to block further processing pending either additional input
- from the client or retrieval of available data by the client.
- Several operations in XIE permit control over the image processing domain by specifying a control-plane
- or a set of rectangles-of-interest (ROI). This allows portions of the image to be included or excluded from
- the rendition or enhancement operation. In Figure 6, the Convolve operation is restricted to a subset of the
- pixels in the image by importing a set of ROI)s to modify the processing domain of the Convolve element.
- Pixels that fall within the area described by the set of rectangles are processed; those which do not are
- passed through unchanged. This allows the user to reduce the computation time in areas of the image that
- are not interesting.
- XIE Resources
- XIE defines six permanent resources that can be created and destroyed: ColorLists, LUTs, Photoflos,
- Photomaps, Photospaces, and ROIs. Some of these have already been introduced.
- A Photoflo is a computational engine that the client specifies using either a CreatePhotoflo or an Exe-
- cuteImmediate request. A Photoflo created by CreatePhotoflo is considered permanent and exists until
- an explicit DestroyPhotoflo request or client shutdown. The resource ID specified at Photoflo creation
- time is a normal core X resource ID. A Photoflo created by ExecuteImmediate is a temporary resource
- that is created in a separate resource ID space, called a Photospace. Before creating the first temporary
- Photoflo, a Photospace must be created to hold it using the CreatePhotospace request. If this Photospace
- is destroyed, all Photoflos in the space are immediately destroyed along with it.
- LUTs, ROIs, and Photomaps are used as Photoflo inputs by using ImportLUT, ImportROI, and Import-
- Photomap elements, respectively. A Photomap is a handle for image data stored in the server. Photomaps
- are created with no attributes: they inherit data and descriptive information from ExportPhotomap ele-
- ments in Photoflos. The attributes of a Photomap may be queried by using the QueryPhotomap request. A
- LUT is a handle for lookup table data for the Point operation. A LUT resource receives data and attributes
- from an ExportLUT element in a Photoflo. A ROI resource is a handle for a set of rectangles-of-interest. It
- is populated using the ExportROI element.
- ColorLists are used to store colors allocated from a colormap. When a colormap and a color or gray scale
- image is passed to the ConvertToIndex element, the colormap identifier and the index of each colormap
- cell allocated by ConvertToIndex are stored in the ColorList. The contents of a ColorList can be queried
- using the QueryColorList request.
- Element Definitions
- This section briefly discusses the elements with which one can create computational engines (Photoflos).
- The number of individual Photoflo elements listed below is deceptively modest, in that there are many
- different ways in which several of the elements could have been specified. For example, in defining a
- geometric transformation for an image, it is quite simple to specify the transform in idealized coordinates,
- but impossible to choose one optimal resampling method. This is because evaluation of the algorithm's
- performance depends on factors that are largely subjective, and processor or data dependent. It is unrea-
- sonable to pick a single algorithm for a given element when clearly dozens of other algorithms are avail-
- able of equal or better quality. It was decided to build flexibility into XIE's basic element definitions, giv-
- ing both server implementors and client writers leeway in selecting the algorithms that best meet their
- needs.
- The XIE protocol incorporates this flexibility by defining a technique parameter for several of its elements
- that acts as a modifier of the those elements behavior. The techniques that are supplied to import and ex-
- port elements generally identify image-compression schemes, whereas the techniques specified for proc-
- essing elements identify various image-processing algorithms that provide slightly different methods for
- doing the same basic operation. In some cases techniques offer a trade-off between execution time and the
- fidelity of the results, while in other cases different techniques are desirable because of the image class or
- content, or to achieve a special effect.
- For some techniques the server implementor is required to provide a default algorithm. This allows an ap-
- plication to select an operation in a generic way without concerning itself with the details of the particular
- algorithm being used. The protocol document specifies that some techniques must be implemented in all
- servers, whereas other techniques are considered optional. The server implementor is also permitted to
- extend XIE with additional proprietary techniques as is seen fit. XIE includes a query request to determine
- what techniques are supported by a particular implementation and to determine what algorithms are being
- used as defaults.
- Import Elements
- Import elements may be classified according to the source of their data, which must be either the client,
- Core X, or XIE resources.
- Client Import Elements
- ImportClientLut reads in lookup table data from the client. Since the client will send raw data us-
- ing PutClientData, this element is used to specify the format of the expected data stream.
- ImportClientPhoto reads in image data from the client. Since the client will be sending raw image
- data using PutClientData, this element is provided to specify the format of the data stream. A decode
- technique, and its associated arguments, are used to specify which compression algorithm has been
- applied to the input data.
- ImportClientROI used to read in a list of rectangles for process domain control. Since a fixed for-
- mat is defined, only the number of rectangles needs to be provided.
- Core X Resource Import Elements
- ImportDrawable reads in image data from a window or pixmap.
- ImportDrawablePlane reads in a selected image bitplane from a window or pixmap.
- XIE Resource Import Elements
- ImportLUT import existing lookup table data, typically to be used by the Point processing element.
- ImportPhotomap import previously stored image data. Since the Photomap maintains the attributes
- of the stored image, no decoding parameters are required (as was the case with ImportClientPhoto).
- ImportROI import a list of rectangles that was previously stored in the server, typically used for
- process domain control.
- Process Elements
- Processing elements can be roughly grouped by their complexity, functionality, or the aspect of the image
- that they work with. One such grouping follows.
- Simple Algebraic Processing Elements
- Arithmetic allows arithmetic operations, such as addition or subtraction, to be performed between
- a pair of images or an image and a constant value. Other operations, such as multiplication or divi-
- sion, can only be performed between an image and a constant value.
- Blend allows an alpha-blend operation between two images or an image and a constant value. The
- weights for the blend operation can be determined by a constant value or on a per-pixel basis through
- the use of an alpha-plane.
- Compare compares two images or an image and a constant value to produce a bit plane with ones
- where the comparison is satisfied.
- Logical performs per-pixel bit-wise operations on images, or between an image and a constant.
- Math performs mathematical operations, such as square root or natural logarithm, on a single
- source image.
-
- Format Conversion Elements
- BandCombine accepts three SingleBand images and merges them to form one TripleBand image.
- BandExtract produces a SingleBand image from a TripleBand image by summing a percentage of
- the pixel values from each input band with a bias value.
- BandSelect selects a single image band from a TripleBand image.
- Constrain converts unconstrained pixel values into integer pixel values (certain operations in XIE
- can be performed using unconstrained pixel values which are represented within the server as either
- floating-point or fixed-point values).
- ConvertFromIndex takes a colormap and an image as input and produces a new image whose pixel
- values are taken from the colormap.
- ConvertFromRGB converts RGB image data to another colorspace.
- ConvertToIndex allocates image colors from a colormap or matches colors in the image against
- those already existing in the colormap. Each pixel in the output image is the colormap index of the
- colormap cell that most closely represents the corresponding input image pixel. The action taken
- (allocate, match, and so on) is dependent on the color allocation technique given to ConvertToIndex.
- Each colormap cell that is allocated by ConvertToIndex is stored in a ColorList resource.
- ConvertToRGB converts non-RGB image data to RGB (from another color space).
- Dither reduces the number of quantization levels in an image by spreading the information con-
- tained in a pixel over the surrounding area.
- Unconstrain converts integer pixel values into unconstrained pixel values (certain operations in
- XIE can be performed using unconstrained pixel values which are represented within the server as
- either floating-point or fixed-point values.)
- Simple Enhancement and Filtering Elements
- Convolve performs a convolution on an image; each output pixel is computed from an area of in-
- put pixels, as determined by the size and contents of a convolution kernel.
- MatchHistogram computes the histogram of the input image and remaps pixel data so as to
- match, as closely as possible, the specified histogram shape.
- Point applies a lookup table operation to each pixel in the source image. Point is so named because
- the output pixel value depends only on the input value at that point.
- Domain-Based Operations
- Geometry performs a geometric transformation on image data. Special cases include scale, crop,
- mirror, shear, rotate, and translate. The operation is specified as a mapping of the coordinates of the
- output image back to the coordinate space of the input image. Resampling and anti-aliasing algo-
- rithms can be specified by using technique parameters.
- PasteUp allows multiple image tiles to be combined into a single image. A tile is an image with
- an offset attached that specifies where the tile is to be placed in the output image. Overlapping tiles
- are resolved by a defined stacking order. If the tiles do not completely cover the output image, uncov-
- ered regions are filled by a constant pixel value.
-
- Export Elements
- As with import elements, export elements may be classified according to the destination of their data,
- which must be either the client, Core X, or XIE resources.
- Client Export Elements
- ExportClientHistogram computes the histogram of an image and makes it available to the client
- via the GetClientData request.
- ExportClientLUT makes lookup table data available to the client. The client can specify the entire
- LUT or a subrange of the LUT.
- ExportClientPhoto makes image data available to the client. The client can specify the format it
- wants by using an encode technique and its associated parameters.
- ExportClientROI makes rectangle-of-interest data available to the client.
- Core X Resource Export Elements
- ExportDrawable writes image data into a pixmap or window. The client must provide a graphics
- context to direct the insertion of data.
- ExportDrawablePlane writes a bitonal image into a pixmap or window. A client-specified graphics
- context is used to convert the pixels to foreground and background colors and to perform optional
- stippling.
- XIE Resource Export Elements
- ExportLUT exports lookup table data to a LUT resource. ExportLUT obtains its input from a pre-
- vious element such as ImportClientLUT or ImportLUT.
- ExportPhotomap stores an image in a Photomap resource. Encoding parameters can be supplied to
- tell the server what format to store the data in. Alternatively, the client can allow the server to choose
- the most efficient format for image storage; the client can hint as to whether image storage space or
- image retrieval time is the desired efficiency metric.
- ExportROI stores a list of rectangles in an ROI resource. The exported data must come from either
- ImportClientROI or ImportROI.
- Subsetting
- The full XIE protocol defines a very powerful flexible system. It is recognized, however, that many appli-
- cation writers will wish to use XIE features to perform relatively simple tasks on simple (for example, bi-
- tonal) images. They may never deal with color spaces or processing domains or want to do anything more
- complex than simply import, scale, and export. They will be interested in using a server that is tuned spe-
- cifically for the needs of document imaging, ignoring all other concerns. In fact, they can do without
- many of XIE's capabilities, as long as the server provides the simple operations they require and it obeys
- the same protocol as the full XIE specification for those operations.
- The XIE Document Imaging Subset (DIS) was designed to respond to this demand. DIS drops the con-
- cepts of Color Lists and processing domains completely and supports only two processing elements: Ge-
- ometry and Point. Geometry is required in order to do scaling and rotation. Since the DIS client is respon-
- sible for managing the colormap, Point is needed to convert pixel values into colormap indexes.
- The only required image-compression schemes are those associated with bitonal images. DIS also pro-
- vides the ability to import a full-depth drawable, scale it using Geometry, and then export the result back
- to Core X. This functionality may be useful for those who want to be able to scale images produced by
- other applications. One could imagine using this feature to resize a drawing in order to include it in a
- document.
- Summary
- The X Window System defines a standard architecture that has provided a stable platform-independent
- display environment for application developers to build upon. By adhering to the same basic principles,
- XIE enhances the image display capabilities of the core protocol by providing:
- * Efficient image transport between client and server
- * Efficient caching of images on the server
- * Image rendition and enhancement capabilities on the server
- * Support for the development and utilization of image-specific hardware
- * Consistent policy-free support for image display across all platforms
- References
- 1. X Window System, Scheifler, Gettys, Digital Press.
- 2. X Image Extension Protocol, Shelley et al., Digital Equipment Corporation and AGE Logic, Inc.
- 3. X Image Extension Library, Rogers AGE Logic, Inc.
- 4. XIE Sample Implementation Architecture, Shelley, Verheiden & Fahy, AGE Logic, Inc.
- 5. X Image Extension Overview, Fahy & Shelley, The X Resource Special Issue C, 1/93
- OReilly & Associates, Inc.
-
-
- Copyright ⌐ 1994 AGE Logic, Inc.
- Permission to use, copy, modify, distribute, and sell this article for any purpose is hereby granted without fee, provided that the above copy-
- right notice and this permission notice appear in all copies. AGE Logic, Inc. makes no representations about the suitability for any purpose
- of the information in this paper. This material summarizes a standard of the X Consortium and is provided as is without express or im-
- plied warranty.
- 1
-
-
-