generate_binary_structure#
- scipy.ndimage.generate_binary_structure(rank, связность)[источник]#
Сгенерировать бинарную структуру для бинарных морфологических операций.
- Параметры:
- rankint
Количество измерений массива, к которому будет применен структурный элемент, как возвращено np.ndim.
- связностьint
связность определяет, какие элементы выходного массива принадлежат структуре, т.е. считаются соседями центрального элемента. Элементы до квадрата расстояния связность от центра считаются соседями. связность может варьироваться от 1 (диагональные элементы не являются соседями) до rank (все элементы являются соседями).
- Возвращает:
- выводndarray из булевых значений
Структурирующий элемент, который может использоваться для бинарных морфологических операций, с rank размерности и все размерности равны 3.
Смотрите также
Примечания
generate_binary_structureможет создавать структурирующие элементы только с размерностями, равными 3, то есть минимальными размерностями. Для больших структурирующих элементов, которые полезны, например, для эрозии больших объектов, можно использоватьiterate_structure, или создавайте напрямую пользовательские массивы с функциями numpy, такими какnumpy.ones.Примеры
>>> from scipy import ndimage >>> import numpy as np >>> struct = ndimage.generate_binary_structure(2, 1) >>> struct array([[False, True, False], [ True, True, True], [False, True, False]], dtype=bool) >>> 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.]]) >>> b = ndimage.binary_dilation(a, structure=struct).astype(a.dtype) >>> b 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(b, structure=struct).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.]]) >>> struct = ndimage.generate_binary_structure(2, 2) >>> struct array([[ True, True, True], [ True, True, True], [ True, True, True]], dtype=bool) >>> struct = ndimage.generate_binary_structure(3, 1) >>> struct # no diagonal elements array([[[False, False, False], [False, True, False], [False, False, False]], [[False, True, False], [ True, True, True], [False, True, False]], [[False, False, False], [False, True, False], [False, False, False]]], dtype=bool)