Still today there is a need for something easier to code and understand in Imaging. The available free libraries are sometimes close, sometimes very far from “easier”. IM is an unexplored solution and proposed as a simple and clean one. It is another Imaging tool with a different approach to the many possibilities in the area. Its organization was designed so it can be used for teaching Imaging concepts. We invite you to try it.
First we list some libraries mainly target for storage, then some scientific libraries, and then a small comparsion of IM and those libraries.
Here are some free storage libraries:
Imlib2
Last Update 2003-09 / Version 1.1.0
http://www.enlightenment.org/pages/imlib2.html
Language C
Documentation is terrible. Depends on the X-Windows System libraries.
It is designed for display/rendering performance.
Corona
Last Update 2003-09 / Version 1.0.2
http://corona.sourceforge.net/
Language C++
Very simple library. Only a few formats. Only bitmap images, no video.
PaintLib
Last Update 2004-04 / Version 2.61
http://www.paintlib.de/paintlib/
Language C++
A very simple library.
Has an interesting ActiveX component. Only bitmap images, no video.
NetPBM
Last Update 2004-07 / Version 10.23
http://netpbm.sourceforge.net/
Language C
A traditional library that starts at the Pbmplus package more than 10 years
ago.
Very stable, it has support for the PNM format family and many processing
operations.
Only bitmap images, no video.
DevIL ***
Last Update 2004-06 / Version 1.6.7
http://openil.sourceforge.net/
Language C (Has also a C++ Wrapper)
Called initially OpenIL. Supports many formats and have a very interesting
API, that works very similar the OpenGL API (that's why the original name).
Also supports the display in several graphics systems. Has several data
types as OpenGL has.
FreeImage ***
Last Update 2004-07 / Version 3.4.0
http://freeimage.sourceforge.net/
Language C (Has also a C++ Wrapper)
Supports many formats. Many data types, but only RGB and subclasses (gray,
map, etc).
Very well written, stable and simple to use.
ImageMagick and GraphicsMagick ***
Last Update 2004-07 / Version 6.0.3 || Last Update 2004-04 / Version
1.0.6
http://www.imagemagick.org/ ||
http://www.graphicsmagick.org/
Language C (Has also a C++ Wrapper)
The two libraries are listed together because GraphicsMagick is totally and
explicitly based on ImageMagick version 5.5.2.
They have very similar or identical APIs but the development process is
completely different. GraphicsMagick propose a more organized development
process (a more precise comparison requires detailed knowledge about the two
libraries).
These are very complete libraries. They support lots of file formats,
several color spaces, but use only the byte data type.
They use a big image structure with everything inside. Image creation may
involve about 40 parameters.
And here are some free scientific libraries:
TINA
Last Update 2002-03 / Version 4.0.2
http://www.niac.man.ac.uk/Tina
Language C
Very UNIX oriented. Lots of functions for Computer Vision. Developed by a
researcher of the University of Manchester.
XITE
Last Update 2002-09 / Version 3.44
http://www.ifi.uio.no/forskning/grupper/dsb/Software/Xite/
Language C
Very UNIX oriented, but compiles fine in Windows. Several separated command
line routines, it is a package not a library. But inspired several aspects
of the IM library. Seems to be not updated anymore. Developed by a
researcher of the University of Oslo.
VIGRA
Last Update 2004-09 / Version 1.3.0
http://kogs-www.informatik.uni-hamburg.de/~koethe/vigra/
Language C++
STL based. Many operators. Developed by a researcher of the University of
Hamburg.
Wild Magic
Last Update 2004-09 / Version 2.4
http://www.magic-software.com/
Language C++
Game development oriented, very rich in mathematics. Developed by Magic
Software, Inc.
VIPS
Last Update 2004-09 / Version 7.10.2
http://www.vips.ecs.soton.ac.uk/
Language C/C++
Support for very large images. Powerful macro laguage. Good implementation.
Many functions. Developed by researchers at the University of Southampton
and The National Gallery in the UK.
MegaWave2
Last Update 2004-06 / Version 2.3
http://www.cmla.ens-cachan.fr/Cmla/Megawave/
Language C
Very UNIX oriented. Good implementation. Many functions. C preprocessor.
Developed by French researchers at l'École Normale Supérieure de Cachan.
JAI
Last Update 2003-07 / Version 1.1.2
http://java.sun.com/products/java-media/jai/index.jsp
Language Java
It is becoming more and more popular. Java is slow than C/C++ but the
performance of the image processing operations is very acceptable. Also it
has several C optimized functions. Developed by the Sun Corporation.
OpenCV ***
Last Update 2004-08 / Version 4.0
http://sourceforge.net/projects/opencvlibrary/
Language C/C++
Only a few formats but lots of image processing operations. One of the most
interesting libraries available. It is more than an Imaging library, it is
designed for Computer Vision. Developed by Intel Russian researchers.
VTK ***
Last Update 2004-03 / Version 4.2
http://www.vtk.org/
Language C++
Another very important library. Very huge. Much more than Imaging, includes
also 3D Computer Graphics and Visualization. Has a book about the library.
Developed by Kitware Inc.
IM
Last Update 2004-08 / Version 3.0.2
http://www.tecgraf.puc-rio.br/im
Language C/C++
Support for several data types, i.e. scientific images and different
color spaces. Support for input and output of image sequences. Support for
generic image attributes (metadata), which includes several standard TIFF
tags, GeoTIFF tags and Exif tags. Image storage and capture data can be
accessed using an image structure or with raw data. Internal implementation
in C++ but with a simple C API. Code is portable for Windows and UNIX. Many
image processing operations.
The idea behind IM was to create a toolkit that was not so complex as OpenCV, neither so big as VTK, but that can be used as a solid base to the development of thesis and dissertations, as for commercial applications.
As the academic environment is very heterogeneous the IM project choose some directives:
Considering these directives there are only a few similar toolkits. Making some exceptions the following should be mentioned:
Today OpenCV and VTK are the most professional and complete choices of free libraries that are similar to IM. But they are more complicated than IM. For instance VTK it is very large, it has about 700 C++ classes.
Although OpenCV has many resources, its code is very hard to reuse. The simplicity of the IM code, mainly the image processing routines, make it a good reference to be reused by other applications extracting only the code needed with little changes. And can be used as an complement to learn image processing algorithms and techniques.
This page was last updated in Sep 2004.