[ Main ] [ News] [ Download ] [ Screenshots ] [ FAQ ] [ Tutorial ] [ Documentation ] [ Forum ] [ Chat ] [ Links ]

Introduction

The CImg Library is an open source C++ toolkit for image processing designed with these properties in mind :

Usefulness
CImg defines simple classes and methods aimed at manipulating generic images in your own C++ code : Load/save various file formats, access pixel values, display, resize/rotate/mirror/filter, draw primitives (text, faces, curves, 3D objects, ...), compute statistics, manage user interactions, and so on...
Genericity
Provided image classes can represent datasets up to 4-dimension wide (from 1D scalar signals to 3D hyperspectral volumes), with template pixel types. Image collections and sequences are also supported.
Portability
CImg is self-contained and thus highly portable. It fully works on different operating systems (Unix, Windows, MacOS X, *BSD) with various C++ compilers (Visual C++, GNU g++, Intel icc, Borland bcc, ...).
Simplicity
CImg is lightweight. It is made of a single header file CImg.h that must be included in your C++ source. It defines only four different classes. It can be compiled using a minimal set of standard C++ and system libraries. No need for exotic or complex dependencies.
Extensibility
Although not required, CImg can use functionalities of external tools/libraries such as ImageMagick, GraphicsMagick, XMedCon, FFMPEG, libpng, libjpeg, libtiff, Magick++, Lapack, Board or FFTW3. Moreover, a simple plug-in mechanism allows any user to directly enhance the library capabilities according to his needs.
Freedom
CImg is a free, open-source library distributed under the CeCILL-C (close to the GNU LGPL) or CeCILL (compatible with the GNU GPL) licenses. It can be used in commercial applications.

CImg stands for "Cool Image" : It is easy to use and efficient. It's a very pleasant toolbox to code image processing stuffs in C++, and potentially covers a wide range of image processing applications. In the distributed package, a lot of examples are provided to help the developper in its first steps.

Authors
David Tschumperlé (project leader), with the help of various contributors : Haz-Edine Assemlal, Vincent Barra, Romain Blei, Yohan Bentolila, Jerome Boulanger, Frederic Devernay, François-Xavier Dupé, Eric Fausett, Jean-Marie Favreau, Sebastien Fourey, Alexandre Fournier, Vincent Garcia, Jinwei Gu, Jean-Daniel Guyot, Matt Hanson, Sebastien Hanel, Christoph Hormann, Werner Jainek, Daniel Kondermann, Pierre Kornprobst, Orges Leka, Francois Lauze, Xie Long, Thomas Martin, Cesar Martinez, Jean Martinot, Nikita Melnichenko, Baptiste Mougel, Renaud Peteri, Martin Petricek, Paolo Prete, Adrien Reboisson, Konstantin Spirin, David G. Starkweather, Grzegorz Szwoch, Thierry Thomas, Yu-En-Yun, Vo Duc Khanh, Bug Zhao.

Licenses
The CImg Library is an open-source product distributed under two distinct licenses : the library core itself is dual-licensed and can be governed either by the CeCILL-C License (LGPL-like), or the CeCILL License (GPL-compatible). Most of the other package files are distributed under the CeCILL License. Both are open source licenses, the CeCILL-C being less restrictive than the CeCILL one. The CImg Library source code has been registered to the APP (French Agency for the Protection of Programs) by the INRIA, under registration number IDDN.FR.001.040004.000.S.P.2004.000.21000.

Learn More
  • The Screenshots section illustrates some of the different source code examples provided in the CImg package.
  • The Tutorial section shows the basic use of CImg classes and functions with a small first code.
  • You can look at the quite complete CImg Library presentation slides (.pdf format) which gives more insights on the different library concepts.
  • Online web statistics on the CImg website activity are available here and here.

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 has been always intended to be compact, easy to use, multi-platform and generic. It provides a lot of basic functions that one would like to see in an image processing framework for C++ programming. 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, and will probably do it for the next couple of years.

How to Help ?
The CImg Library is an open source C++ library which is mainly developped during free time. If you enjoy using CImg, you may contribute to the project in different ways. This will motivate me to continue the work.

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