scipy.ndimage.

binary_erosion#

scipy.ndimage.binary_erosion(входные данные, структура=None, итерации=1, маска=None, вывод=None, border_value=0, origin=0, brute_force=False, *, оси=None)[источник]#

Многомерная бинарная эрозия с заданным структурирующим элементом.

Бинарная эрозия — это операция математической морфологии, используемая для обработки изображений.

Параметры:
входные данныеarray_like

Бинарное изображение для эрозии. Ненулевые (True) элементы образуют подмножество для эрозии.

структураarray_like, необязательный

Структурный элемент, используемый для эрозии. Ненулевые элементы считаются True. Если структурный элемент не предоставлен, элемент генерируется с квадратной связностью, равной единице.

итерацииint, необязательный

Эрозия повторяется итерации раз (один, по умолчанию). Если количество итераций меньше 1, эрозия повторяется до тех пор, пока результат не перестанет изменяться.

маскаarray_like, необязательный

Если задана маска, только те элементы с истинным значением в соответствующем элементе маски изменяются на каждой итерации.

выводndarray, необязательно

Массив той же формы, что и входной, в который помещается результат. По умолчанию создаётся новый массив.

border_valueint (приводится к 0 или 1), опционально

Значение на границе выходного массива.

originint или кортеж ints, опционально

Размещение фильтра, по умолчанию 0.

brute_forceлогический, необязательный

Условие памяти: если False, только пиксели, значение которых было изменено на последней итерации, отслеживаются как кандидаты для обновления (эрозии) на текущей итерации; если True, все пиксели рассматриваются как кандидаты для эрозии, независимо от того, что произошло на предыдущей итерации. По умолчанию False.

осикортеж int или None

Оси, по которым применяется фильтр. Если None, входные данные фильтруется по всем осям. Если origin Если предоставлен кортеж, его длина должна соответствовать количеству осей.

Возвращает:
binary_erosionndarray из булевых значений

Эрозия входа структурным элементом.

Примечания

Эрозия [1] является операцией математической морфологии [2] которая использует структурирующий элемент для сжатия форм на изображении. Бинарная эрозия изображения структурным элементом - это множество точек, где наложение структурного элемента с центром в точке полностью содержится в множестве ненулевых элементов изображения.

Ссылки

Примеры

>>> from scipy import ndimage
>>> import numpy as np
>>> a = np.zeros((7,7), dtype=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]])