code: def opening(image, radius=None, mask=None, footprint=None):
      '''Do a morphological opening
      
      image - pixel image to operate on
      radius - use a structuring element with the given radius. If no radius,
               use an 8-connected structuring element.
      mask - if present, only use unmasked pixels for operations
      '''
      eroded_image = grey_erosion(image, radius, mask, footprint)
      return grey_dilation(eroded_image, radius, mask, footprintf opening(image, radius=None, mask=None, footprint=None):
      '''Do a morphological opening
      
      image - pixel image to operate on
      radius - use a structuring element with the given radius. If no radius,
               use an 8-connected structuring element.
      mask - if present, only use unmasked pixels for operations
      '''
      eroded_image = grey_erosion(image, radius, mask, footprint)
      return grey_dilation(eroded_image, radius, mask, footprint)
docs: Do a morphological opening
      
      image - pixel image to operate on
      radius - use a structuring element with the given radius. If no radius,
               use an 8-connected structuring element.
      mask - if present, only use unmasked pixels for operations