pylops.optimization.sparsity.splitbregman(Op, y, RegsL1, x0=None, niter_outer=3, niter_inner=5, RegsL2=None, dataregsL2=None, mu=1.0, epsRL1s=None, epsRL2s=None, tol=1e-10, tau=1.0, restart=False, show=False, itershow=(10, 10, 10), show_inner=False, callback=None, **kwargs_lsqr)[source]#

Split Bregman for mixed L2-L1 norms.

Solve an unconstrained system of equations with mixed \(L_2\) and \(L_1\) regularization terms given the operator Op, a list of \(L_1\) regularization terms RegsL1, and an optional list of \(L_2\) regularization terms RegsL2.


Operator to invert




\(L_1\) regularization operators

x0numpy.ndarray, optional

Initial guess


Number of iterations of outer loop


Number of iterations of inner loop of first step of the Split Bregman algorithm. A small number of iterations is generally sufficient and for many applications optimal efficiency is obtained when only one iteration is performed.


Additional \(L_2\) regularization operators (if None, \(L_2\) regularization is not added to the problem)

dataregsL2list, optional

\(L_2\) Regularization data (must have the same number of elements of RegsL2 or equal to None to use a zero data for every regularization operator in RegsL2)

mufloat, optional

Data term damping


\(L_1\) Regularization dampings (must have the same number of elements as RegsL1)


\(L_2\) Regularization dampings (must have the same number of elements as RegsL2)

tolfloat, optional

Tolerance. Stop outer iterations if difference between inverted model at subsequent iterations is smaller than tol

taufloat, optional

Scaling factor in the Bregman update (must be close to 1)

restartbool, optional

The unconstrained inverse problem in inner loop is initialized with the initial guess (True) or with the last estimate (False)

showbool, optional

Display iterations log

itershowtuple, optional

Display set log for the first N1 steps, last N2 steps, and every N3 steps in between where N1, N2, N3 are the three element of the list.

show_innerbool, optional

Display inner iteration logs of lsqr

callbackcallable, optional

Function with signature (callback(x)) to call after each iteration where x is the current model vector


Arbitrary keyword arguments for scipy.sparse.linalg.lsqr solver used to solve the first subproblem in the first step of the Split Bregman algorithm.


Inverted model


Iteration number of outer loop upon termination

costnumpy.ndarray, optional

History of cost function through iterations


See pylops.optimization.cls_sparsity.SplitBregman

Examples using pylops.optimization.sparsity.splitbregman#

Total Variation (TV) Regularization

Total Variation (TV) Regularization

05. Image deblurring

05. Image deblurring

16. CT Scan Imaging

16. CT Scan Imaging