code: def cdilate(f, g, Bc=None, n=1):
      """
      y = cdilate(f, g, Bc={3x3 cross}, n=1)
  
      Conditional dilation
  
      `cdilate` creates the image `y` by dilating the image `f` by the
      structuring element `Bc` conditionally to the image `g`. This
      operator may be applied recursively `n` times.
  
      Parameters
      ----------
      f : Gray-scale (uint8 or uint16) or binary image.
      g : Conditioning image. (Gray-scale or binary).
      Bc : Structuring element (default: 3x3 cross)
      n : Number of iterations (default: 1)
  
      Returns
      -------
      y : Image
      """
      _verify_is_integer_type(f, "cdilate")
      Bc = get_structuring_elem(f, Bc)
      f = np.minimum(f, g)
      for i in range(n):
          prev = f
          f = dilate(f, Bc)
          f = np.minimum(f, g)
          if np.all(f == prev):
              break
      return f
  
imports: from __future__ import division
  import numpy
  from .internal import _get_output, _verify_is_integer_type, _check_2
  from .None import _morph
label_desc: Use image node_id 6 for calling a global function with example usage: cdilate(f, g, Bc, n) and returns: f