scipy.ndimage.

метка#

scipy.ndimage.метка(входные данные, структура=None, вывод=None)[источник]#

Маркировать признаки в массиве.

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

Объект, подобный массиву, для маркировки. Любые ненулевые значения в входные данные считаются признаками, а нулевые значения считаются фоном.

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

Структурный элемент, определяющий связи признаков. структура должна быть центросимметричной (см. Примечания). Если структурирующий элемент не предоставлен, он автоматически генерируется с квадратной связностью, равной единице. То есть для 2-D входные данные массив, стандартный структурирующий элемент:

[[0,1,0],
 [1,1,1],
 [0,1,0]]
вывод(None, data-type, array_like), опционально

Если вывод является типом данных, он определяет тип результирующего помеченного массива признаков. Если вывод является объектом, подобным массиву, тогда вывод будет обновлена с помеченными признаками из этой функции. Эта функция может работать на месте, передавая output=input. Обратите внимание, что вывод должен быть способен хранить наибольшую метку, иначе эта функция вызовет исключение.

Возвращает:
меткаndarray или int

Целочисленный ndarray, где каждый уникальный признак в входные данные имеет уникальную метку в возвращаемом массиве.

num_featuresint

Сколько объектов было найдено.

Если вывод is None, эта функция возвращает кортеж (labeled_array, num_features).

Если вывод является ndarray, тогда он будет обновлен значениями в labeled_array и только num_features будет возвращено этой функцией.

Смотрите также

find_objects

создать список срезов для размеченных признаков (или объектов); полезно для нахождения позиции или размеров признаков

Примечания

Центросимметричная матрица — это матрица, симметричная относительно центра. См. [1] для получения дополнительной информации.

The структура матрица должна быть центросимметричной для обеспечения двусторонних связей. Например, если структура матрица не является центросимметричной и определяется как:

[[0,1,0],
 [1,1,0],
 [0,0,0]]

и входные данные равен:

[[1,2],
 [0,3]]

тогда матрица структуры будет указывать, что элемент 2 во входных данных связан с 1, но 1 не связан с 2.

Ссылки

[1]

James R. Weaver, “Centrosymmetric (cross-symmetric) matrices, their basic properties, eigenvalues, and eigenvectors.” The American Mathematical Monthly 92.10 (1985): 711-717.

Примеры

Создайте изображение с некоторыми особенностями, затем пометьте его с помощью элемента структуры по умолчанию (крестообразного):

>>> from scipy.ndimage import label, generate_binary_structure
>>> import numpy as np
>>> a = np.array([[0,0,1,1,0,0],
...               [0,0,0,1,0,0],
...               [1,1,0,0,1,0],
...               [0,0,0,1,0,0]])
>>> labeled_array, num_features = label(a)

Каждый из 4 признаков помечен разным целым числом:

>>> num_features
4
>>> labeled_array
array([[0, 0, 1, 1, 0, 0],
       [0, 0, 0, 1, 0, 0],
       [2, 2, 0, 0, 3, 0],
       [0, 0, 0, 4, 0, 0]], dtype=int32)

Сгенерируйте структурирующий элемент, который будет считать признаки связанными, даже если они касаются по диагонали:

>>> s = generate_binary_structure(2,2)

или,

>>> s = [[1,1,1],
...      [1,1,1],
...      [1,1,1]]

Пометить изображение с помощью нового структурного элемента:

>>> labeled_array, num_features = label(a, structure=s)

Показать 2 размеченных признака (обратите внимание, что признаки 1, 3 и 4 из вышеперечисленных теперь считаются одним признаком):

>>> num_features
2
>>> labeled_array
array([[0, 0, 1, 1, 0, 0],
       [0, 0, 0, 1, 0, 0],
       [2, 2, 0, 0, 1, 0],
       [0, 0, 0, 1, 0, 0]], dtype=int32)