ImgFusion is a multi-platform library for image fusion written in C++ and was written as a part of my Master's thesis work for the Brno University of Technology in Czech Republic. Image fusion is a process of combining multiple images into a single image which contains as much information from the source images as possible. Image fusion has many applications in fields such as medicine, GIS, security or photography. Here is a short list of how image fusion may be used:

  • Extending depth of focus - multiple images with the same contents but varying quality (photographs for example) may be fused together to obtain perfect result. Typical in microscopy where it is hard to focus on entire volume of the observed specimen.
  • Increasing spatial resolution of existing map by combining a low resolution color map with high resolution grayscale detail map.
  • Visualization of CT, MRI or PET data, image guided surgery, image guided radiotherapy.
  • Additional sharpening of blurred photographs taken both with and without flash to construct perfect sharp photograph with natural colors.

The library offers several methods for image fusion that offer good trade-off between speed and quality of the result. Currently the fusion algorithm tries to preserve the maximum detail in the image by maximizing the frequency contents (sharp edges) but new fusion rules can be defined in order to change the fusion behaviour or quality of the result.

Emphasis has been put on the computational efficiency and minimal memory requirements of the image processing algorithms. All transformations are made in-place and require only a little extra memory. This fact is crucial for processing large images since the transformation coefficients are represented by single precision floating point values (which typically occupy 4 Bytes) and therefore a single image of dimensions 4000 x 4000 pixels, for example, spans 64 MBytes. For this reason we designed the system in a way that allows processing each image separately. The major advantage of such approach is that the memory consumption does not depend on the number of images being fused but is proportional to the image size only.

Current version of the project is: 0.1, Download here.

Supported methods are:

  • Laplacean operator based fusion.
    Fast method producing good looking results.
  • Real valued wavelet transform fusion.
    Better in preserving contrast than Laplacean method, introduces ugly artefacts on sharp edges.
  • Complex valued dual tree wavelet transform fusion.
    Slow method producing best looking results.

Other features:

  • Color images.
    By now color images are converted to grayscale. Restoring color information as a postprocessing will be added soon.
  • Image registration.
    Not implemented yet.

(c) 2006, Martin Gunia