ImageLib is a C++ class library providing image processing and related facilities. The main set of classes provides a variety of image and vector types, with additional modules supporting scalar and vector quantisation, wavelet transforms, and simple histogram operations.


ImageLib is distributed under the GNU LGPL. This distribution contains the code required to build the library, a brief outline of the main module design, library documentation, and a few example programs.


While ImageLib is heavily template based, and requires a reasonably recent C++ compiler to be able to handle the template code, most other recent additions to the standard (such as exceptions and namespaces) are not yet utilised. Note that g++ versions 2.7.x are unable to compile ImageLib due to a serious template bug. Previous versions of ImageLib have been compiled under Linux with gcc 2.95, EGCS 1.1.2 and KAI C++ 3.4b, and under Solaris with EGCS 1.1.2, and Sun WorkShop C++ 4.2. This version (0.0.6) has only been tested with gcc 4.0.1. Since the template code is largely required to support a predetermined set of image and vector types (floatImage, ucharVector etc.), code for these types is compiled into object code and included in libimage.a when compiling with compilers which support the explicit template instantiation syntax. Template source code is automatically appended to template headers for compilers which do not support the explicit template instantiation syntax - in this case distinct template code is usually generated for each module.

Building the library

If no complications arise, the command sequence is

make install

GNU make is recommended as other versions of make may not handle the rules correctly. Type ./configure --help for configuration options.


This library is still under development, and interface changes may occur in later versions. Important facilities which are still missing include FFTs and colour image types. The current documentation is also rather inadequate. Bug reports/fixes, ports to additional compilers, suggestions for improvements, and code contributions are welcome.


0.0.1Initial release
0.0.2Minor bug fix to allow compilation under EGCS-1.1.2
0.0.3Build modified to use autoconf
0.0.4Code modified for compatibility with gcc 3.2
0.0.5Code modified (primarily name lookup issues) for compatibility with gcc 3.4
0.0.6Code modified to address warnings with gcc 4.0

Brendt Wohlberg
Last modified: Sun Oct 9 21:43:27 MDT 2005