binary_opening#
- scipy.ndimage.binary_opening(входные данные, структура=None, итерации=1, вывод=None, origin=0, маска=None, border_value=0, brute_force=False, *, оси=None)[источник]#
Многомерное бинарное открытие с заданным структурирующим элементом.
The открытие входного изображения структурным элементом является расширение из эрозия изображения структурирующим элементом.
- Параметры:
- входные данныеarray_like
Двоичный массив для открытия. Ненулевые (True) элементы образуют подмножество для открытия.
- структураarray_like, необязательный
#19317
- итерацииint, необязательный
Шаг эрозии при открытии, затем шаг дилатации каждый повторяется итерации раз (один по умолчанию). Если итерации если меньше 1, каждая операция повторяется до тех пор, пока результат не перестанет изменяться. Принимается только целое число итераций.
- выводndarray, необязательно
Массив той же формы, что и входной, в который помещается результат. По умолчанию создаётся новый массив.
- originint или кортеж ints, опционально
Размещение фильтра, по умолчанию 0.
- маскаarray_like, необязательный
Если задана маска, только те элементы с истинным значением в соответствующем элементе маски изменяются на каждой итерации.
Добавлено в версии 1.1.0.
- border_valueint (приводится к 0 или 1), опционально
Значение на границе выходного массива.
Добавлено в версии 1.1.0.
- brute_forceлогический, необязательный
Условие памяти: если False, только пиксели, значение которых изменилось на последней итерации, отслеживаются как кандидаты для обновления на текущей итерации; если True, все пиксели рассматриваются как кандидаты для обновления, независимо от того, что произошло на предыдущей итерации. По умолчанию False.
Добавлено в версии 1.1.0.
- осикортеж int или None
Оси, по которым применяется фильтр. Если None, входные данные фильтруется по всем осям. Если origin Если предоставлен кортеж, его длина должна соответствовать количеству осей.
- Возвращает:
- binary_openingndarray из булевых значений
Открытие входных данных структурным элементом.
Смотрите также
Примечания
Открытие [1] является операцией математической морфологии [2] которая состоит из последовательности эрозии и дилатации входных данных с тем же структурирующим элементом. Открытие, таким образом, удаляет объекты меньше структурирующего элемента.
Вместе с закрытие (
binary_closing), opening может использоваться для удаления шума.Ссылки
Примеры
>>> from scipy import ndimage >>> import numpy as np >>> a = np.zeros((5,5), dtype=int) >>> a[1:4, 1:4] = 1; a[4, 4] = 1 >>> a 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, 1]]) >>> # Opening removes small objects >>> ndimage.binary_opening(a, structure=np.ones((3,3))).astype(int) 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]]) >>> # Opening can also smooth corners >>> ndimage.binary_opening(a).astype(int) 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]]) >>> # Opening is the dilation of the erosion of the input >>> ndimage.binary_erosion(a).astype(int) 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(ndimage.binary_erosion(a)).astype(int) 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]])