scipy.ndimage.

binary_dilation#

scipy.ndimage.binary_dilation(входные данные, структура=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_dilationndarray из булевых значений

Расширение входа структурным элементом.

Примечания

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

Ссылки

Примеры

>>> from scipy import ndimage
>>> import numpy as np
>>> a = np.zeros((5, 5))
>>> a[2, 2] = 1
>>> a
array([[ 0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  1.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.]])
>>> ndimage.binary_dilation(a)
array([[False, False, False, False, False],
       [False, False,  True, False, False],
       [False,  True,  True,  True, False],
       [False, False,  True, False, False],
       [False, False, False, False, False]], dtype=bool)
>>> ndimage.binary_dilation(a).astype(a.dtype)
array([[ 0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  1.,  0.,  0.],
       [ 0.,  1.,  1.,  1.,  0.],
       [ 0.,  0.,  1.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.]])
>>> # 3x3 structuring element with connectivity 1, used by default
>>> struct1 = ndimage.generate_binary_structure(2, 1)
>>> struct1
array([[False,  True, False],
       [ True,  True,  True],
       [False,  True, False]], dtype=bool)
>>> # 3x3 structuring element with connectivity 2
>>> struct2 = ndimage.generate_binary_structure(2, 2)
>>> struct2
array([[ True,  True,  True],
       [ True,  True,  True],
       [ True,  True,  True]], dtype=bool)
>>> ndimage.binary_dilation(a, structure=struct1).astype(a.dtype)
array([[ 0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  1.,  0.,  0.],
       [ 0.,  1.,  1.,  1.,  0.],
       [ 0.,  0.,  1.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.]])
>>> ndimage.binary_dilation(a, structure=struct2).astype(a.dtype)
array([[ 0.,  0.,  0.,  0.,  0.],
       [ 0.,  1.,  1.,  1.,  0.],
       [ 0.,  1.,  1.,  1.,  0.],
       [ 0.,  1.,  1.,  1.,  0.],
       [ 0.,  0.,  0.,  0.,  0.]])
>>> ndimage.binary_dilation(a, structure=struct1,\
... iterations=2).astype(a.dtype)
array([[ 0.,  0.,  1.,  0.,  0.],
       [ 0.,  1.,  1.,  1.,  0.],
       [ 1.,  1.,  1.,  1.,  1.],
       [ 0.,  1.,  1.,  1.,  0.],
       [ 0.,  0.,  1.,  0.,  0.]])