#### Previous topic

scipy.ndimage.morphology.binary_dilation

#### Next topic

scipy.ndimage.morphology.binary_fill_holes

# scipy.ndimage.morphology.binary_erosion

`scipy.ndimage.morphology.``binary_erosion`(input, structure=None, iterations=1, mask=None, output=None, border_value=0, origin=0, brute_force=False)

  Multi-dimensional binary erosion with a given structuring element.

  Binary erosion is a mathematical morphology operation used for image processing.

  Parameters: | input : array_like Binary image to be eroded. Non-zero (True) elements form the subset to be eroded. structure : array_like, optional Structuring element used for the erosion. Non-zero elements are considered True. If no structuring element is provided, an element is generated with a square connectivity equal to one. iterations : {int, float}, optional The erosion is repeated iterations times (one, by default). If iterations is less than 1, the erosion is repeated until the result does not change anymore. mask : array_like, optional If a mask is given, only those elements with a True value at the corresponding mask element are modified at each iteration. output : ndarray, optional Array of the same shape as input, into which the output is placed. By default, a new array is created. origin : int or tuple of ints, optional Placement of the filter, by default 0. border_value : int (cast to 0 or 1), optional Value at the border in the output array.
  Returns: | binary_erosion : ndarray of bools Erosion of the input by the structuring element.

  See also

  `grey_erosion`, `binary_dilation`, `binary_closing`, `binary_opening`, `generate_binary_structure`

  Notes

  Erosion [R111] is a mathematical morphology operation [R112] that uses a structuring element for shrinking the shapes in an image. The binary erosion of an image by a structuring element is the locus of the points where a superimposition of the structuring element centered on the point is entirely contained in the set of non-zero elements of the image.

  References

  [R111] | (1, 2) http://en.wikipedia.org/wiki/Erosion_%28morphology%29

  [R112] | (1, 2) http://en.wikipedia.org/wiki/Mathematical_morphology

  Examples

      >>> a = np.zeros((7,7), dtype=np.int)
      >>> a[1:6, 2:5] = 1
      >>> a
      array([[0, 0, 0, 0, 0, 0, 0],
             [0, 0, 1, 1, 1, 0, 0],
             [0, 0, 1, 1, 1, 0, 0],
             [0, 0, 1, 1, 1, 0, 0],
             [0, 0, 1, 1, 1, 0, 0],
             [0, 0, 1, 1, 1, 0, 0],
             [0, 0, 0, 0, 0, 0, 0]])
      >>> ndimage.binary_erosion(a).astype(a.dtype)
      array([[0, 0, 0, 0, 0, 0, 0],
             [0, 0, 0, 0, 0, 0, 0],
             [0, 0, 0, 1, 0, 0, 0],
             [0, 0, 0, 1, 0, 0, 0],
             [0, 0, 0, 1, 0, 0, 0],
             [0, 0, 0, 0, 0, 0, 0],
             [0, 0, 0, 0, 0, 0, 0]])
      >>> #Erosion removes objects smaller than the structure
      >>> ndimage.binary_erosion(a, structure=np.ones((5,5))).astype(a.dtype)
      array([[0, 0, 0, 0, 0, 0, 0],
             [0, 0, 0, 0, 0, 0, 0],
             [0, 0, 0, 0, 0, 0, 0],
             [0, 0, 0, 0, 0, 0, 0],
             [0, 0, 0, 0, 0, 0, 0],
             [0, 0, 0, 0, 0, 0, 0],
             [0, 0, 0, 0, 0, 0, 0]])