A Free Experimental System for Image Processing
Antonio Scuri (scuri@tecgraf.puc-rio.br)


ImLab is a free open source graphical application for Scientific Image Processing that runs in Windows, Linux and many other UNIX systems. It supports multiple windows, data types including 32 bit integers, 32 bit real numbers and complex numbers. It is implemented in C++ and C to provide a very simple way to add new functions. It has many image operations and supports several file formats.


This program has been created to serve as a laboratory to implement routines of Image Processing for the IM toolkit. ImLab was build using IUP (interface), CD (drawing) and IM (imaging) libraries. It runs in Windows, Linux, SGI IRIX, SunOS, IBM AIX and MacOS X (using X-Windows).

The Tecgraf libraries and ImLab are free for academic and commercial use. See the copyright note of ImLab.

ImLab is registered at the National Institute of Intellectual Property in Brazil (INPI) under the code BR 51 2016 001656-6, and so it is protected against illegal use. The registration is valid internationally.

Its interface is very simple that means it still does not have direct image manipulation. However, it can be extended for that purpose.

It does not have a generic plug-in extension mechanism, but creating new functions in the "Process" menu is quite simple and very similar to a plug-in.

ImLab is implemented in C and C++, but aiming simplicity I did not use complex classes to model images and other objects. I do use some C++ templates to implement processing routines for the available data types, the code is rather simple to understand, even for those who do not know this mechanism.

In several situations ImLab can be the ideal program to develop new Image Processing algorithms, articles, thesis and dissertations.  If you are interested in using ImLab download the source code and/or the executable. If you find it useful and would like to contribute, forward your work in ImLab to me and I will include it in the next distribution. And I hope to be able to help so as to make this feasible.

Support is provided whenever I can, usually during my free time and weekends. I recommend using the mailing list, you do not have to subscribe to send a message and mail is moderated, so to subscribe is a good idea so you can receive update notifications. This is a very low traffic list. The list is hosted in a SourceForge List.

See some screen captures of the program in Screenshots.

See the list of ImLab Features. Most of them are inherited from the IM library.

Some algorithm implementation was derived from XITE, here is their respective copyright.


My first important Image Processing System was SPID in 1993/1994. It was developed using Borland C++ 4 in the Win32s subsystem (hard times). Borland changed the OWL library and the code became not reusable. So I give up and started to plan for a new version with other tools. But the opportunity never came, so I decided to start a small system to help me implement and test some routines.

ImLab was conceived during the course "Image Processing for Computer Graphics" that I did in 1997.

It was updated for the course "Processamento Digital de Imagens" that I present in 2002. At the time the code was highly rearranged to facilitate understanding. I also generated a page for the program and executables for several platforms.

In 2004, almost all the image processing code was moved to the IM toolkit, building a major release version of that library, with also several improvements for both IM and ImLab.

Since then it is being periodically updated and improved. Check the list of changes in History. Also there is a list of To Do's. What still makes ImLab an "experimental" system is marked in color.


I would like to thank everyone that directly contributed or tested ImLab:

Antonio Calomeni
Bruno Madeira
Diego Santos
Felipe Portella
Flavio Szenberg
Guy Lecomte
Jean-Pierre Dumas
Leandro Nazareth
Lucas Machado
Marcelo Gattass
Sidnei Paciornik
Takeshi Mitsunaga

Other Systems

There are other free systems like ImLab. It is hard to compare because ImLab is not fully operational. It is interesting to note that there is only one portable system with free open source code equivalent to ImLab, but it is in Java. So ImLab is still a good option for C/C++ programmers.


Last Update 2017-06 / Version 1.51o
https://imagej.net/ or https://imagej.nih.gov/ij/
Language Java
NIH Image was one of the first free image processing system. Originally runs only in old Macs. There are lots of variations from it, including a Windows version. ImageJ was inspired in the NIH Image and it has been constantly updated since then. Has a very wide number of users, and innumerous features with several collections of plugins.

Fiji is an image processing package—a "batteries-included" distribution of ImageJ, bundling a lot of plugins which facilitate scientific image analysis.


Last Update 2016-05 / Version 5.6j
Language C and C#
Windows Only since version 4.4
A god set of functions. Very confuse user interface.


Last Update 2002-05 / Version 3.0
http://ddsdx.uthscsa.edu/dig/itdesc.html (not working)
Language C++
Windows Only
A god set of functions. Not updated for a long time. Not portable.


Last Update 2003-10 / Version 2.1
http://www.neatvision.com/ (not working)
Language Java
Very powerful but hard to install. Only works with a specific version of the JRE. Has a very interesting development environment with visual programming. Not updated for a long time.

Last update: 17 / Jun / 2017