连通区域的scipy.ndimage.label 中的label
scipy.ndimage.label
函数的主要作用是对输入的二进制图像(通常是布尔数组)进行连通区域标记。这个函数能够识别图像中相连的“真”区域,并为每个连通区域分配一个唯一的标签。下面是关于 label
函数的详细说明和使用示例。
函数简介
scipy.ndimage.label(input, structure=None, output=None, return_num=False, origin=0)
参数
-
input: 输入的二进制数组。这个数组通常是布尔类型,其中
True
表示感兴趣的区域(例如,分割区域),False
表示背景。 -
structure: 指定连通性结构的数组,默认值为
None
,表示使用8连通性(二维)或26连通性(三维)。可以通过自定义结构数组来改变连通性的定义。 -
output: 可选参数,用于存放输出的标签数组。如果提供,输出将被存储在该数组中。
-
return_num: 布尔值,如果为
True
,函数将返回找到的连通区域的数量。 -
origin: 用于指定图像的原点,可以调整图像的定位。
返回值
-
labeled_array: 一个与输入数组相同形状的数组,其中每个连通区域都有一个唯一的标签,背景区域的标签为0。
-
num_features: 如果
return_num=True
,则返回找到的连通区域的数量。
使用示例
以下是一个使用 label
函数的示例:
import numpy as np
from scipy.ndimage import label# 创建一个示例二进制图像
binary_image = np.array([[0, 0, 1, 1, 0],[0, 1, 1, 0, 0],[1, 0, 0, 0, 1],[0, 0, 0, 1, 1]])# 使用 label 函数标记连通区域
labeled_array, num_features = label(binary_image)print("Labeled Array:")
print(labeled_array)
print("Number of features:", num_features)
输出
Labeled Array:
[[0 0 1 1 0][0 1 1 0 0][2 0 0 0 3][0 0 0 3 3]]
Number of features: 3
解释
在上述示例中:
- 二进制图像中有多个相连的区域(
1
表示前景,0
表示背景)。 label
函数识别出三个连通区域,并为每个区域分配了唯一的标签。背景区域仍然是0
。- 最终输出的
labeled_array
显示了每个连通区域的标签,num_features
表示发现的连通区域数量。