docs: def enhance_dark_holes(image, min_radius, max_radius, mask=None):
      '''Enhance dark holes using a rolling ball filter
  
      image - grayscale 2-d image
      radii - a vector of radii: we enhance holes at each given radius
      '''
      #
      # Do 4-connected erosion
      #
      se = np.array([[False, True, False],
                     [True, True, True],
                     [False, True, False]])
      #
      # Invert the intensities
      #
      inverted_image = image.max() - image
      previous_reconstructed_image = inverted_image
      eroded_image = inverted_image
      smoothed_image = np.zeros(image.shape)
      for i in range(max_radius+1):
          eroded_image = grey_erosion(eroded_image, mask=mask, footprint = se)
          reconstructed_image = grey_reconstruction(eroded_image, inverted_image,
                                                    footprint = se)
          output_image = previous_reconstructed_image - reconstructed_image
          if i >= min_radius:
              smoothed_image = np.maximum(smoothed_image,output_image)
          previous_reconstructed_image = reconstructed_image
      return smoothed_image