The KUIM Image Processing System
The KUIM image processing system was implemented at the University of
Kansas to support teaching and basic image processing and computer vision
research. The image file format and I/O libraries have been designed for
ease of use and portability to a wide variety of machines. At present,
the system consists of over 100 general purpose and special purpose
programs implemented in C.
The KUIM system is similar in spirit to an earlier package called
/usr/image which originated at the University of North Carolina at Chapel
Hill in the 1980's under the direction of Prof. Stephen Pizer
(smp@cs.unc.edu). Questions about KUIM and suggestions for improvement
should be sent to Prof. John Gauch (jgauch@eecs.ukans.edu).
As an aid in understanding the KUIM system, we have created manual
pages for many common programs which include visual demonstrations of what
the program does. This list is under constant development and is divided
into the following categories:
Image Access Library
The KUIM image access library libIM.a contains a powerful
collection of I/O functions which provide access to KUIM image files.
Each file consists of a 1024 byte image header followed by image pixels in
row major order. Eight pixel types are currently supported: BYTE, SHORT,
INT, FLOAT, DOUBLE, COMPLEX, COLOR (24bit color), and PSEUDO (8bit color).
Automatic byte swapping and type conversion is provided by the I/O
functions im_read and im_write, so application programmers can use
whatever internal image type is most natural for given application without
worrying about the type of the input image. This was the major motivation
for this I/O library. The image title and colormap can be read and
modified using the im_get_title, im_put_title and im_get_cmap, im_put_cmap
functions respectively. The program proto.c is a simple prototype
image processing program.
Basic Operations
A number of basic image processing operations are described in this
section. These range from programs to display images and information in
images, to programs for converting between data types and file formats.
Several programs which perform point operations on images are also
included in this section. (KUIM program names are in brackets)
Geometric Operations
Geometric operations change the size or shape of an image. For example,
image interpolation can be used to make an image larger or smaller. Images
can also be rotated, translated, or warped to correct for image distortion
or to generate a desired effect. Other operations for extracting sections
of an image or combining multiple images are also useful in certain
situations. The following geometric operations are currently supported.
(KUIM program names are in brackets)
Contrast Enhancement
The objective of contrast enhancement is to adjust an image to emphasize
features of interest. In most cases, these features are small and have
small intensity variations, so methods which boost the intensity
variations in an image are useful for contrast enhancement. The following
methods are commonly used for contrast enhancement. (KUIM program names
are in brackets)
Noise Reduction
The problem of noise in images has led to the development of numerous
noise reductions schemes. The basic premise of most methods is that
averaging will increase the signal to noise ratio in an image. The
following methods are commonly used for noise reduction. (KUIM program
names are in brackets)
Edge Detection
The objective of edge detection is to locate the boundaries of objects of
interest in an image. This typically involves some search for intensity
discontinuities, and some method for linking edge points into boundary
curves. The following methods are commonly used for edge detection. (KUIM
program names are in brackets)
Image Segmentation
The problem of identifying visually sensible regions in an image is called
image segmentation. Since the definition of visually sensible varies
considerably from application to application, there have been numerous
segmentation algorithms devised. The following methods are commonly used
for segmentation and postprocessing of segmented images. (KUIM program
names are in brackets)
Tomographic Reconstruction
Computed tomography was one of the major breakthroughs in medical imaging.
The basic concept is that the frequency domain properties of projection
images (taken with an X ray or other source) can be manipulated to obtain
the fourier transform of the cross-section image of the patient. The
following programs provide a simple illustration of this process. (KUIM
program names are in brackets)
Image Compression
Owing to the increasing demand of space for image storage, some methods
are developed to alleviate this problem. The following methods are
commonly used for image compression. (KUIM program names are in brackets)
Alphabetic Program Listing
The KUIM system currently has over 100 image processing and computer vision
programs. Unfortunately, documentation is available for only one third
of these applications. The following list is an alphabetic listing of all
programs described in the sections above. Naturally, as documentation
becomes available, it will be added to this document.
Undocumented Programs
The following programs are currently undocumented but their names (and
hopefully the comments at the top of each program) may suggest their purpose.
To see the usage of any of these programs run the program with no arguments.