метка#
- 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)