code: def spline_filter(Iin, lmbda=5.0):
      """Smoothing spline (cubic) filtering of a rank-2 array.
  
      Filter an input data set, `Iin`, using a (cubic) smoothing spline of
      fall-off `lmbda`.
      """
      intype = Iin.dtype.char
      hcol = array([1.0, 4.0, 1.0], "f") / 6.0
      if intype in ["F", "D"]:
          Iin = Iin.astype("F")
          ckr = cspline2d(Iin.real, lmbda)
          cki = cspline2d(Iin.imag, lmbda)
          outr = sepfir2d(ckr, hcol, hcol)
          outi = sepfir2d(cki, hcol, hcol)
          out = (outr + 1j * outi).astype(intype)
      elif intype in ["f", "d"]:
          ckr = cspline2d(Iin, lmbda)
          out = sepfir2d(ckr, hcol, hcol)
          out = out.astype(intype)
      else:
          raise TypeError("Invalid data type for Iin")
      return out
  
imports: from __future__ import division, print_function, absolute_import
  from scipy._lib.six import xrange
  from numpy import logical_and, asarray, pi, zeros_like, piecewise, array, arctan2, tan, zeros, arange, floor
  from numpy.core.umath import sqrt, exp, greater, less, cos, add, sin, less_equal, greater_equal
  from .spline import cspline2d, sepfir2d
  from scipy.special import comb, gamma
label_desc: Use image node_id 2 for calling a global function with example usage: spline_filter(Iin, lmbda) and returns: out