IM - An Imaging Tool

Comparing IM with Other Imaging Toolkits

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.


Comparsion

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:

  • Portability (Windows and UNIX)
  • C API
  • Totally Free, Open Source
  • Focus in Scientific Applications
  • Easy to Learn
  • Easy to Reuse

Considering these directives there are only a few similar toolkits. Making some exceptions the following should be mentioned:

  • JAI - Java, Sun.com
  • VIGRA - C++ / STL Based, University
  • VIPS - Large Images / Macros, University
  • VTK - C++ / Huge / Visualization, Kitware.com
  • OpenCV – “best” similar choice, Intel.com

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.