scipy.ndimage.

binary_closing#

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

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

The закрытие входного изображения структурным элементом является эрозия из расширение изображения структурирующим элементом.

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

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

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

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

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

Шаг дилатации закрытия, затем шаг эрозии каждый повторяется итерации раз (один по умолчанию). Если iterations меньше 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_closingndarray из булевых значений

Закрытие входа структурирующим элементом.

Примечания

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

Вместе с открытие (binary_opening), закрытие может использоваться для удаления шума.

Ссылки

Примеры

>>> from scipy import ndimage
>>> import numpy as np
>>> a = np.zeros((5,5), dtype=int)
>>> a[1:-1, 1:-1] = 1; a[2,2] = 0
>>> a
array([[0, 0, 0, 0, 0],
       [0, 1, 1, 1, 0],
       [0, 1, 0, 1, 0],
       [0, 1, 1, 1, 0],
       [0, 0, 0, 0, 0]])
>>> # Closing removes small holes
>>> ndimage.binary_closing(a).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]])
>>> # Closing is the erosion of the dilation of the input
>>> ndimage.binary_dilation(a).astype(int)
array([[0, 1, 1, 1, 0],
       [1, 1, 1, 1, 1],
       [1, 1, 1, 1, 1],
       [1, 1, 1, 1, 1],
       [0, 1, 1, 1, 0]])
>>> ndimage.binary_erosion(ndimage.binary_dilation(a)).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]])
>>> a = np.zeros((7,7), dtype=int)
>>> a[1:6, 2:5] = 1; a[1:3,3] = 0
>>> a
array([[0, 0, 0, 0, 0, 0, 0],
       [0, 0, 1, 0, 1, 0, 0],
       [0, 0, 1, 0, 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]])
>>> # In addition to removing holes, closing can also
>>> # coarsen boundaries with fine hollows.
>>> ndimage.binary_closing(a).astype(int)
array([[0, 0, 0, 0, 0, 0, 0],
       [0, 0, 1, 0, 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_closing(a, structure=np.ones((2,2))).astype(int)
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]])