code: def tvd(x0, rho, gamma):
      
      try:
          from skimage.restoration import denoise_tv_bregman
      except ImportError:
          print('Error: scikit-image not found. TVD will not work.')
          return x0
  
      return denoise_tv_bregman(x0, rho / gamma)
docs: Proximal operator for the total variation denoising penalty
  
      Requires scikit-image be installed
  
      Parameters
      ----------
      x0 : array_like
          The starting or initial point used in the proximal update step
  
      rho : float
          Momentum parameter for the proximal step (larger value -> stays closer to x0)
  
      gamma : float
          A constant that weights how strongly to enforce the constraint
  
      Returns
      -------
      theta : array_like
          The parameter vector found after running the proximal update step
  
      Raises
      ------
      ImportError
          If scikit-image fails to be imported