Split Bregman


The Split Bregman method is a technique for solving a variety of L1-regularized optimization problems, and is particularly effective for problems involving total-variation regularization.  Split Bregman is one of the fastest solvers for Total-Variation denoising, image reconstruction from Fourier coefficients, convex image segmentation, and many other problems.  The method is a re-interpretation of the alternating direction method of multipliers that is specially adapted to L1 problems.      

     A complete technical explanation of the Split Bregman method can be found in the paper The Split Bregman Method for L1 Regularized Problems, by Tom Goldstein and Stanley Osher.



The following codes are implementations of the methods described in  The Split Bregman Method for L1 Regularized Problems.  The entire implementation of each method is contained in one single “mex” file.  Detailed instructions for use can be found in the comments at the top of each file.  In addition, each download contains a demo matlab script that contains examples of proper use of the code.

Total-Variation Denoising:  splitBregmanROF_mex.zip 

Weighted-Total-Variation Denoising:  weightedROF_mex.zip


The code ‘mrics.m’ is an implementation of the Split Bregman method for reconstructing images from a subset of their Fourier coefficients using total-variation regularization.  Instructions for use of the code can be found in the comments at the top of the file “mrics.m”.  A demo script is also included that demonstrates proper use of the method.

  The code can be downloaded here:  mrics.zip

Compressed Sensing

Globally Convex Segmentation

The code ‘sbseg’ is an extremely fast implementation of the variational model for image segmentation originally proposed by Chan, Esedoglu, and Nikolova.  The segmentation model and it’s numerical solution by the Split Bregman method are described in the paper Geometric Applications of the Split Bregman Method:  Segmentation and Surface Reconstruction, by Tom Goldstein, Xavier Bresson, and Stanley Osher.  

  A Matlab based implementation of the convex segmentation is available here: segment.zip