What is it ?

- The CImg Library is an open source C++ toolkit for image processing : It provides simple classes and functions to load, save, process and display images in your own C++ code.
- It is intended to be highly portable and fully works on different operating systems (Unix/X11, Windows, MacOS X, FreeBSD) with different C++ compilers. It should compile on other systems as well (eventually without display capabilities).
- It consists only of a single header file CImg.h that must be included in your C++ program source.
- It contains useful image processing algorithms for image loading/saving, displaying, resizing/rotating, filtering, object drawing (text, lines, faces, curves, ellipses, 3D objects, ..), etc...
- The main image class can represent images up to 4-dimension wide (x,y,z,v) (from 1-D scalar signals to 3-D multi-channel volumes), with template pixel types.
- It depends on a minimal number of libraries : you can compile it only with standard C++ libraries. No need for exotic libraries and complex dependencies.
- Additional features appear with the use of ImageMagick, libpng, libjpeg or XMedCon. Install the ImageMagick package or link your code with libpng and libjpeg to be able to load and save standard compressed image formats (GIF,BMP,TIF,JPG,PNG,...). Install the XMedCon package to be able to read DICOM medical image files. All these extra-tools are available for any platforms.

> CImg stands for "Cool Image" : It is easy to use and efficient. It's like a STL for image processing !
> In the CImg package, a lot of examples are provided to help the developper in its first steps.

Authors :

> David Tschumperlé
> With the help of various contributors, including : Haz-Edine Assemlal, Jerome Boulanger, Eric Fausett, Sebastien Fourey, Jean-Daniel Guyot, Matt Hanson, Christoph Hormann, Werner Jainek, Daniel Kondermann, Pierre Kornprobst, Francois Lauze, Thomas Martin, Renaud Peteri, Konstantin Spirin, Thierry Thomas, Yu-En-Yun, Bug Zhao.

Learn More :

- You can look at the CImg Library presentation slides (.pdf format) that introduces the basic concepts of the library.
- The Screenshots section shows examples of applications where CImg can be typically used.
- The Download section is the place to get the latest CImg Library package.
- The Tutorial section illustrate the basis of CImg classes and functions with a first code.

License :

> The CImg Library is distributed under two distinct licenses : the library itself is governed by the CeCILL-C License (LGPL-like), while the library example files are governed by the CeCILL License (GPL-like). Both are open source licenses, the CeCILL-C being less restrictive than the CeCILL one.
> The library has been mainly designed for teaching and research activities.
> The source code has been registered to the APP (French Agency for the Protection of Programs) by the INRIA.

Quick History :

> The development of the CImg Library began at the end of 1999, when I started my PhD thesis in the Lab at the Sophia Antipolis. It was designed to help me and my colleagues developing various image processing algorithms, for datasets as simple as 2D scalar images, or as complex as 3D volumes of diffusion tensors. I also used it for courses on image processing I teached at the university. That's why the CImg library is intended to be quite generic, thanks to the pixel-template parameters and the high number of possible dimensions (four dimensions for an image). I must admit that the limit of 4 dimensions has never been a problem since I started the library (particularly since we can also use image lists in the CImg Library). Conversely, this limit permitted to implement very efficient functions and algorithms. To sum up, the CImg Library has been designed to be simple to use, and efficient. It provides a lot of basic functions that one would like to see in an image processing framework for C++ programming. Its simplicity, its tiny size and its efficiency are the three reasons for you to download and test it ! If you are interested, just go to the download section, or see the screenshots section, in order to see what CImg can do for you.
> I am now a permanent researcher of the institution, working in the group at the GREYC lab in Caen/France. I am still using, maintaining and updating the CImg Library.

How to contribute ?

> The CImg Library is an open source C++ library which is mainly developped during free time. If you enjoy using the CImg Library, you can contribute to the project in different ways. This will motivate me to continue the work.
> - You can report bugs, propose patches or new functionalities, using the CImg forums.
> - You can write tutorials or parts of the documentation.
> - You can send me a postcard from your city. 2 postcards received yet, from :
>   - Comissao Nacional de Energia Nuclear, Rio de Janeiro, Brazil.
>   - Universidad Nacional del Litoral, Santa Fe, Argentina.
> - If you are rich, you can
> My coordinates (e-mail or mail) can be found on my web page.

Copyrights :

> Copyrights (C) 2000->2003, David Tschumperlé - INRIA Sophia-Antipolis. Odyssée group.
> Copyrights (C) January->September 2004, David Tschumperlé.
> Copyrights (C) From october 2004, David Tschumperlé - GREYC UMR CNRS 6072, Image group.