Software development


The algorithms developed in the MiTiV project are based on inverse approach and require the minimization of large problems (e.g., with as many variables as pixels for an image reconstruction). For our needs, we have developed OptimPack, a library for solving large scale optimization problems. Although it is mainly targeted at solving inverse problems like image reconstruction, our library implements state of the art optimization algorithms for any kind of smooth objective functions and may be useful in other domains. For these reasons, we provide a number of bindings to OptimPack in various languages.


The current version implements:

  • various non-linear conjugate gradient (NLCG) methods;

  • limited memory variable metric (L-BFGS);

  • bound constraints limited memory methods (VMLMB, BLMVM);

  • spectral project gradient (SPG) method;

  • inexact monotone and nonmonotone line searches;

  • computation of a trust region step;

  • linear conjugate gradients and trust region conjugate gradient.


  • Java: The mitiv.optim package of the TiPi toolkit implements most the optimization routines of OptimPack.
  • Julia: The OptimPack.jl project provides OptimPack bindings for Julia.
  • C/C++: OptimPack is written in ANSI C.
  • Yorick: A Yorick plugin is available in the source tree of OptimPack.


The software is available on GitHub.

TiPi example

Before starting:

Some introduction on TiPI and the plugins.




First we need to install Icy and get some images: 2D (Saturn or jupiter), download both the image and the psf (in our case we will work with saturn.png and saturn_psf.png) or 3D data ( and


Images from STSCI are raw images, for the example use the png version (saturn.png and saturn_psf.png).

Icy may have some difficulties to open ".fit" images, just rename them in ".fits".

3D Deconvolution can be very costly in time and hungry for memory, so we recommend 8Gb or 16Gb to play with the bars.

Let's do some deconvolution:

Icy is installed, the image and the psf downloaded. So launch Icy and open/load the image and the PSF.

Now that we have the image let's choose a plugin: MitivWiener, MitivDeconvolution and MitivBlindDeconvolution.

Let's start with MitivWiener:

The result may not be satisfying if the noise is too strong or not gaussian, so why not use a most efficient methods ?

Now we choose MitivDeconvolution.


 That's all, now you can try on your images.


 TiPi (a Toolkit for Inverse Problems and Imaging) is a Java library developed during the MiTiV project. On top of this library we provide Icy plugins for blind and myopic image deconvolution.

Why a new library?

The main motivation was to provide everyone with efficient image processing algorithms which are able to deal with actual data. We chose to implement our algorithms into Icy which is a feature rich and user friendly environment for image processing (mainly for bio-medical imaging). Of course, as the software developed in the framework of the MiTiV project, Icy is public domain and thus freely available. Icy is written in Java and TiPi is the core software that we had to develop to implement our algorithms and achieve good performances. With TiPi on current Java virtual machines, it is possible to process 3D images with billions of voxels. By using Java, we also benefit from portability.

Getting TiPi

The software is freely available in the form of two components:

  • TiPi provides fundamental and crucial functionalities that simplify heavy computations with wrappers for data structures, optimization and regularization methods, data management, etc. Our algorithms are built over this base.
  • TiPi4Icy provides the Icy plugins.



TiPi Javadoc





The algorithms developed during MITIV are accessible freely to everyone.

There are two ways to get them:


Go here.

Non developers:


We created plugins for an existing software called Icy which is also available freely and is used in bio informatics.

There are three plugins:


Linear algorithm

This plugin contain linear algorithms which mean that it is not the most powerful but it can compute satisfying results with a good speed.



Non Linear Algorithms

The total variation plugin is able to compute the solution with non linear algorithms wich mean that the results are better but needs more parameters and may be slower to compute.


Blind deconvolution plugin

The globalDeconv plugin is able to do blind deconvolution, it means that it can guess the PSF associated to the image to run the deconvolution algorithm.


Here we have MitivTotalVariation in action with a 2D image.


You don't know how to code but want to chain different algorithms, use Icy protocols, it's just box that you link each others.


Simplicity and efficiency.