scipy.ndimage.label¶
- scipy.ndimage.label(input, structure=None, output=None)[源代码]¶
为阵列中的要素添加标签。
- 参数
- inputarray_like
要标记的类似数组的对象。中的任何非零值 input 被算作特征,零值被认为是背景。
- structureARRAY_LIKE,可选
定义要素连接的结构元素。 structure 必须是中心对称的(请参阅注释)。如果没有提供结构化元素,则会自动生成一个连通性平方等于1的元素。也就是说,对于一个2-D input 数组中,默认结构元素为::
[[0,1,0], [1,1,1], [0,1,0]]
- output(NONE,DATA-TYPE,ARRAY_LIKE),可选
如果 output 是一种数据类型,它指定生成的带标签的要素阵列的类型。如果 output 是一个类似数组的对象,则 output 将使用此函数中的已标记要素进行更新。通过传递output=input,该函数可以就地操作。请注意,输出必须能够存储最大的标签,否则此函数将引发异常。
- 退货
- labelndarray或int
整数ndarray,其中每个唯一功能 input 在返回的数组中具有唯一标签。
- num_features集成
找到了多少物品。
如果 output 为NONE,则此函数返回 (labeled_array , num_features )。
如果 output 是ndarray,则它将使用中的值进行更新。 labeled_array 而且只有 num_features 将由此函数返回。
参见
find_objects
为标注的要素(或对象)生成切片列表;用于查找要素的位置或尺寸
注意事项
中心对称矩阵是围绕中心对称的矩阵。看见 [1] 了解更多信息。
这个 structure 矩阵必须是中心对称的,以确保双向连接。例如,如果 structure 矩阵不是中心对称的,定义为:
[[0,1,0], [1,1,0], [0,0,0]]
以及 input 是::
[[1,2], [0,3]]
则结构矩阵将指示输入中的条目2连接到1,但是1没有连接到2。
参考文献
- 1
中心对称(交叉对称)矩阵,它们的基本性质,特征值和特征向量。“美国数学月刊”92.10(1985):711-717。
示例
创建具有某些特征的图像,然后使用默认(十字形)结构元素对其进行标记:
>>> from scipy.ndimage import label, generate_binary_structure >>> 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]])
生成结构元素,该结构元素将考虑连接的特征,即使它们对角接触也是如此:
>>> 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]])