# pylops.optimization.sparsity.splitbregman¶

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.

Parameters: Op : pylops.LinearOperator Operator to invert y : numpy.ndarray Data RegsL1 : list $$L_1$$ regularization operators x0 : numpy.ndarray, optional Initial guess niter_outer : int Number of iterations of outer loop niter_inner : int 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. RegsL2 : list Additional $$L_2$$ regularization operators (if None, $$L_2$$ regularization is not added to the problem) dataregsL2 : list, 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) mu : float, optional Data term damping epsRL1s : list $$L_1$$ Regularization dampings (must have the same number of elements as RegsL1) epsRL2s : list $$L_2$$ Regularization dampings (must have the same number of elements as RegsL2) tol : float, optional Tolerance. Stop outer iterations if difference between inverted model at subsequent iterations is smaller than tol tau : float, optional Scaling factor in the Bregman update (must be close to 1) restart : bool, optional The unconstrained inverse problem in inner loop is initialized with the initial guess (True) or with the last estimate (False) show : bool, optional Display iterations log itershow : list, 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_inner : bool, optional Display inner iteration logs of lsqr callback : callable, optional Function with signature (callback(x)) to call after each iteration where x is the current model vector **kwargs_lsqr Arbitrary keyword arguments for scipy.sparse.linalg.lsqr solver used to solve the first subproblem in the first step of the Split Bregman algorithm. xinv : numpy.ndarray Inverted model itn_out : int Iteration number of outer loop upon termination cost : numpy.ndarray, optional History of cost function through iterations

Notes

## Examples using pylops.optimization.sparsity.splitbregman¶ Total Variation (TV) Regularization 05. Image deblurring 16. CT Scan Imaging