Image Manipulation Library
Short Description
The software in what I am currently calling the Image
Manipulation Library (IML for short), originally began with the intent
of solving a 2-dimensional image storage/retrieval requirement. Having
"grown up" in a computer science department with major research interests
in image processing, I've seen lots of image processing library designs,
and have designed a bit myself. This inevitably led to the growth of the
capabilities of the current library.
The library can now handle images of arbitrary dimension
with total image size limited only by your computer's memory. The
predefined image types include all scalar types: signed and unsigned integral
together with short and double floating point. Also included are
short and double complex images that perform forward and inverse Fourier
transforms on themselves.
Other capabilities include
bounds checked indexing
fast, non-bounds-checked indexing
selectable index ranges (including negative indices)
pixel value scaling
basic mathematical manipulations on images: image opobject,
where op can be one of {=, +=, -=, *=, /=} and object
can
be any pixel type, another image, or an object from the n-dimensional function
class
n-dimensional functions (e.g. cosine, gaussian, etc.)
independent manipulation, storage and retrieval of image
subspaces; that is, you can manipulate/analyze individual frames of a sequence
of images
image storage and retrieval, with automatic sensing of byte
order architecture (e.g. Mac/Sparc vs. Intel)
FFT, iFFT with origin relocation (centering) in arbitrary
dimensions and arbitrary dimension sizes
portability: the code should compile and run on Mac's, PC's
(and clones) or Unix boxes (I've not done so lately, but the code started
life under Windows 3.1 on a PC)