Update: tvreg has been revised and published as four articles on IPOL:


From left to right: progressively stronger TV denoising.
From left to right: progressively stronger TV denoising.

The tvreg package performs total variation (TV) regularized image denoising, deconvolution, and inpainting. Three noise models are supported: Gaussian (L2), Laplace (L1), and Poisson. It solves the general TV restoration problem

\[ \min_u \int |\nabla u| + \int \lambda F\bigl(Ku, f\bigr) \]

to perform denoising, deconvolution, and inpainting as special cases. It is efficiently solved using the split Bregman method. Also included is an efficient implementation of Chan–Vese two-phase segmentation.

See tvreg.pdf, included in the download, for details.

Get Started Quickly

  1. Install the FFTW3 library. Windows users can download precompiled DLL files.

  2. Compile the programs with GCC using make -f makefile.gcc or Microsoft Visual C++ using nmake -f makefile.vc. See section 7 of tvreg.pdf for help.

  3. Try the demos
    • tvdenoise_demo: Denoising demo
    • tvdeconv_demo: Deconvolution demo
    • tvinpaint_demo: Inpainting demo
    • chanvese_demo: Segmentation demo

Get Started Quickly in Matlab

Compiling is not required to use tvreg in Matlab. Try the demos

For improved performance, run the included script complex_mex.m to compile the main computation routines as MEX functions. This requires that FFTW3 is installed, please see section 7.3 of the documentation.

This material is based upon work supported by the National Science Foundation under Award No. DMS-1004694. 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.