nanshe.imp.filters.masks module

The masks module provides filters for working with binary images.

Overview

Functions provided include binary dilation and erosion. These allow for N-D array processing.

API

nanshe.imp.filters.masks.binary_dilation(*args, **kwargs)[source]

Performs simple binary dilation on a bool array of arbitrary dimension.

Parameters:
  • input_array (numpy.ndarray) – the bool array to perform dilation on.
  • footprint (numpy.ndarray) – the footprint to use for the kernel.
  • out (numpy.ndarray) – a place to store the result if provided. (optional)
Returns:

Same as out if out was

provided.

Return type:

out(numpy.ndarray)

>>> a = numpy.array(
...     [[ True,  True, False, False, False, False, False],
...      [False, False, False, False, False, False, False],
...      [False, False, False, False, False, False, False],
...      [False, False, False, False, False, False, False],
...      [False, False, False, False,  True, False, False],
...      [False, False, False, False, False, False, False],
...      [False, False, False, False, False, False, False]], dtype=bool
... )
>>> b = numpy.zeros_like(a)
>>> binary_dilation(a, numpy.ones(a.ndim*(3,), dtype=bool))
array([[ True,  True,  True, False, False, False, False],
       [ True,  True,  True, False, False, False, False],
       [False, False, False, False, False, False, False],
       [False, False, False,  True,  True,  True, False],
       [False, False, False,  True,  True,  True, False],
       [False, False, False,  True,  True,  True, False],
       [False, False, False, False, False, False, False]], dtype=bool)
>>> binary_dilation(a, numpy.ones(a.ndim*(3,), dtype=bool), out=b)
array([[ True,  True,  True, False, False, False, False],
       [ True,  True,  True, False, False, False, False],
       [False, False, False, False, False, False, False],
       [False, False, False,  True,  True,  True, False],
       [False, False, False,  True,  True,  True, False],
       [False, False, False,  True,  True,  True, False],
       [False, False, False, False, False, False, False]], dtype=bool)
>>> b
array([[ True,  True,  True, False, False, False, False],
       [ True,  True,  True, False, False, False, False],
       [False, False, False, False, False, False, False],
       [False, False, False,  True,  True,  True, False],
       [False, False, False,  True,  True,  True, False],
       [False, False, False,  True,  True,  True, False],
       [False, False, False, False, False, False, False]], dtype=bool)
>>> binary_dilation(a, numpy.ones(a.ndim*(3,), dtype=bool), out=a)
array([[ True,  True,  True, False, False, False, False],
       [ True,  True,  True, False, False, False, False],
       [False, False, False, False, False, False, False],
       [False, False, False,  True,  True,  True, False],
       [False, False, False,  True,  True,  True, False],
       [False, False, False,  True,  True,  True, False],
       [False, False, False, False, False, False, False]], dtype=bool)
>>> a
array([[ True,  True,  True, False, False, False, False],
       [ True,  True,  True, False, False, False, False],
       [False, False, False, False, False, False, False],
       [False, False, False,  True,  True,  True, False],
       [False, False, False,  True,  True,  True, False],
       [False, False, False,  True,  True,  True, False],
       [False, False, False, False, False, False, False]], dtype=bool)
nanshe.imp.filters.masks.binary_erosion(*args, **kwargs)[source]

Performs simple binary erosion on a bool array of arbitrary dimension.

Parameters:
  • input_array (numpy.ndarray) – the bool array to perform erosion on.
  • footprint (numpy.ndarray) – the footprint to use for the kernel.
  • out (numpy.ndarray) – a place to store the result if provided. (optional)
Returns:

Same as out if out was

provided.

Return type:

out(numpy.ndarray)

>>> a = numpy.array(
...     [[ True,  True,  True, False, False, False,  True],
...      [ True,  True,  True, False, False,  True,  True],
...      [False, False, False, False, False, False, False],
...      [False, False, False,  True,  True,  True, False],
...      [False,  True, False,  True,  True,  True, False],
...      [False,  True, False,  True,  True,  True, False],
...      [False, False, False, False, False, False,  True]], dtype=bool
... )
>>> b = numpy.zeros_like(a)
>>> binary_erosion(a, numpy.ones(a.ndim*(3,), dtype=bool))
array([[ True,  True, False, False, False, False, False],
       [False, False, False, False, False, False, False],
       [False, False, False, False, False, False, False],
       [False, False, False, False, False, False, False],
       [False, False, False, False,  True, False, False],
       [False, False, False, False, False, False, False],
       [False, False, False, False, False, False, False]], dtype=bool)
>>> binary_erosion(a, numpy.ones(a.ndim*(3,), dtype=bool), out=b)
array([[ True,  True, False, False, False, False, False],
       [False, False, False, False, False, False, False],
       [False, False, False, False, False, False, False],
       [False, False, False, False, False, False, False],
       [False, False, False, False,  True, False, False],
       [False, False, False, False, False, False, False],
       [False, False, False, False, False, False, False]], dtype=bool)
>>> b
array([[ True,  True, False, False, False, False, False],
       [False, False, False, False, False, False, False],
       [False, False, False, False, False, False, False],
       [False, False, False, False, False, False, False],
       [False, False, False, False,  True, False, False],
       [False, False, False, False, False, False, False],
       [False, False, False, False, False, False, False]], dtype=bool)
>>> binary_erosion(a, numpy.ones(a.ndim*(3,), dtype=bool), out=a)
array([[ True,  True, False, False, False, False, False],
       [False, False, False, False, False, False, False],
       [False, False, False, False, False, False, False],
       [False, False, False, False, False, False, False],
       [False, False, False, False,  True, False, False],
       [False, False, False, False, False, False, False],
       [False, False, False, False, False, False, False]], dtype=bool)
>>> a
array([[ True,  True, False, False, False, False, False],
       [False, False, False, False, False, False, False],
       [False, False, False, False, False, False, False],
       [False, False, False, False, False, False, False],
       [False, False, False, False,  True, False, False],
       [False, False, False, False, False, False, False],
       [False, False, False, False, False, False, False]], dtype=bool)