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)
  • General Overview

    Detailed Documentation