An Object Oriented Matlab Package for Image Restoration

RECOMMENDATION: Most of RestoreTools is now bundled with IR Tools (see also our github repository ). IR Tools, published in 2018, has many more iterative methods, and some improvements to codes in the old version of RestoreTools. So we recommend using IR Tools.


Image Restoration
In applications such as astronomy, medicine, physics and biology, scientists use digital images to record and analyze results from experiments. Environmental effects and imperfections in the imaging system can cause the recorded images to be degraded by blurring and noise. Image restoration (sometimes known as deblurring or deconvolution) is the process of reconstructing or estimating the true image from the degraded one.

Matlab's Image Processing Toolbox contains some methods for image restoration, but these have several limitations. (For example, they cannot be used with spatially variant blurs.) The RestoreTools package contains several additional, modern algorithms which have been studied in the inverse problems and numerical analysis literature. In addition, an object oriented design allows users to easily incorporate our efficient computational kernels in their own algorithms. Some important features include:
  • Iterative methods for unsymmetric (CGLS and PCGLS) and symmetric blurs (MR2 and PMR2), as well as algorithms that enforce nonnegativity constraints (MRNSD and PMRNSD).
  • Golub-Kahan hybrid (HyBR) method.
  • Iterative methods that enforce nonnegative constraint.
  • Preconditioning to accelerate convergence of iterative methods.
  • Direct (SVD based) methods for separable blurs.
  • Algorithms for spatially invariant as well as spatially variant blurs.
  • Implementations for zero, periodic and reflexive boundary conditions.
  • Test data.
  • Object oriented implementation of basic computational kernels, which may be easily incorporated into user defined functions.

Package Update, April 2012

Package Update, March 2007

RestoreTools was developed for research and pedagogical purposes at Emory University by James Nagy, and several of his students, including Sebastian Berisha, Julianne Chung, Katrina Palmer, Lisa Perrone, and Ryan Wright.

This work was motivated by an excellent Matlab package, Regularization Tools, developed by Per Christian Hansen at the Technical University of Denmark. We are grateful to Per Christian, and his student, Michael Jacobsen, for many helpful suggestions during the development of these codes.

Target Audience

RestoreTools was developed using Matlab version 6.1, and has been tested on subsequent versions (most recently, version 7.14). The software for this may be obtained from: We recommend using one of the above versions, which makes use of some tools in the Image Processing Toolbox. However, if you do not have the Image Processing Toolbox, you can use the following version of the softare: We are currently developing a Java ImageJ plugin for image deblurring. Some related work using Python can be obtained from Daniel Fan.

When you install RestoreTools, you will find a directory (folder) ./RestoreTools/Examples/ containing several scripts illustrating how to use the codes. More information can be found in one of the associated papers. Click here for some examples using direct methods based that exploit Kronecker product structures, and use SVD computations.

This work has been supported by the National Science Foundation under Grants DMS 08-11031, DMS 05-11454, and DMS 08-11031, and by the Air Force Office of Scientific Research under Grant FA 9550-09-1-0487. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation or the Air Force Office of Scientific Research.