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.]])