GIL: Generalized Image Library

The GIL in a simple image processing package that includes a C language software library, command-line operations, and image capture and display. It also handles a wide variety of pixel resolutions of grayscale, color, and multi-band images.

Table of Contents


General Information

Helpful Instructions

Overview of the GIL

The GIL was designed to make the handling of images easier, especially when different image and pixel resolutions are necessary. It handles all the gory details of memory allocation, provides some abstraction for interfacing to digitizers and displays, and provides simple image manipulation routines. It does not, however, try to be a complete image processing package. For example, the library does not include a convolution operator or an FFT operator.

So why use the GIL? Good question! In many ways, the GIL is no longer the best option for broad image-processing applications. However, for historical reasons (see GIL History), the GIL is here (at VASC) and probably won't be leaving any time soon. The good news is that the GIL can be used basically as an image file format and for the I/O operations in the C library, without using much else. The GIL does have its benefits, though, that go beyond this simple I/O processing. First, there are command-line operations that can quickly and easily perform most of the same operations as in the library, and several operations that implement a few simple operations not directly in the library. (Unfortunately, many of these are poorly documented.) Second, the package generalizes the concept of an image so that digitizers and display devices can be addressed as images. That means that image capture and image display can basically look like an image copy operation. Finally, the abstraction of pixel type makes manipulation of many types of images almost transparent to the programmer.

Documentation

Speaking of documentation, there are two manuals available for the GIL, a User's Guide and a Programmer's Guide. Neither one is particularly awesome, but they do include most of the information you should need to use most of the GIL. Unfortunately, they are written from the perspective of a user already quite familiar with the GIL. Even worse, neither one includes an index of any sort. That makes searching for a particular command pretty much impossible.

Fortunately (at least for the rest of you), I have created a few lists that should supplement the manuals by providing (crude) indexes which are lacking in the manuals. I have also collect random other information about the GIL. Refer to Helpful Instructions for more information. You might also want to check out the VASC Help Pages, which has a GIL help page, kind of a summary of all this information.

Oh, one more thing about manuals. The printed manuals are available in a pretty weird place: in the files containing the research papers here in VASC, alphabetized under the author's name -- Leonard Hamey. (For those of you who don't know, almost all of our papers are available in these files, located underneath the mailboxes in the main Smith Hall lab -- Smith 235, also called the IUS Lab.) Once you find your way to the collection of Hamey's work, then look for the title. There may also be a copy of the manuals available in the VASC Library, located at the other end of the lab, but as with most libraries, those are for temporary use only. If you want your own copies, get them from the file cabinets. (If you have to, you can find them as Postscript, online: A User's Guide to the GIL, and A Programmer's Guide to the GIL, both by Leonard Hamey, revised 1990.

Finally, a list of bugs is online at the GIL Bugs Page. The list is not in any way meant to suggest that the GIL will eventually be corrected (after all, it will die). Rather, the list is intended to let you know what things to avoid and how to work around problems when you have them.

GIL History

Many years ago (early 1980's) VASC was quickly becoming a large research group with many independent research projects. Because image manipulation was such a fundamental need for the group, there was a desire to have a common system for storage, retrieval, and display. Unfortunately, at the time few (if any) packages were available to provide this functionality. As a result, some lucky grad student got to design, construct, and disseminate an image manipulation package. That lucky guy was Leonard Hamey -- that's Dr. Hamey now! His task was to address (at least!) two major problems with image manipulation at the time: memory capacity and multiple image formats.

Now remember, computing resources in the early 1980's were extremely limited. In fact, one of the greatest difficulties at the time was fitting an image into memory along with the program that you were trying to run. As a result, one (MESSY!) issue that the GIL addressed was memory management of images in memory. I have no idea what actually happens in there, but the basic idea is to hold only a small portion of the image in memory at any one time and "swap" the rest to disk. Thus, the GIL acted as a memory manager.

Another difficulty in building an image manipulation library is the variety of resolutions people want. Some people use 8 bits per pixel, greyscale only, while others want 24-bit RGB pixels. Even worse, around here some people want 16-bit images, or perhaps multi-band color stereo images. The GIL attempts to address this problem by creating a general image structure that can point to just about any kind of image -- even a framegrabber! The GIL was designed to hide the details of the format from the programmer. The GIL, then, was an early attempt to implement the concept of data abstraction.

History

29 OCT 1996 Moved documents into the afs space of the VASC HELP Pages. By Peter W. Rander (rander@cs.cmu.edu)

17 NOV 1995 Moved list of programs to separate page; added information about viewing images. By Peter W. Rander (rander@cs.cmu.edu)

15 NOV 1995 Created by Peter W. Rander (rander@cs.cmu.edu)

 

This page has been accessed [count] times.