Scikit skimage regionsprops 获取连接区域 (python)

Scikit skimage regionsprops get connected regions (python)

我正在尝试找出哪些区域已连接。我搜索了 scikit 文档,但找不到执行此操作的方法。

这就是我的代码的样子

def calculate_mask_info(labeled_2DImage):
    features = pd.DataFrame()
    id = 0

    newmask = label(labeled_2DImage, connectivity=2) # seperate regions with same mean_intensity that are not connected

    for region in regionprops(newmask, intensity_image=labeled_2DImage):
        if region.mean_intensity < 1:
            # Skip background (intensity 0)
            continue
        # connected regionds Id's -> how?
        features = features.append([get_region_info(region, id)]) #function that puts region info into dictionary
        id += 1
    return features

def get_region_info(region, id):
    feat_dict = {'id': id,
                 'labelId': region.mean_intensity,
                 'y': region.centroid[0],
                 'x': region.centroid[1],
                }
    return feat_dict

你要的是region adjacency graph, or RAG。您可以创建一个:

from skimage import future

rag = future.graph.RAG(newmask)  # or labeled2D_image, not sure

然后您可以通过以下方式获取相邻区域:

list(rag.neighbors(region.label))

请注意,邻居默认包含背景标签 (0),但您可以使用以下方法将其删除:

rag.remove_node(0)

RAG 是 networkx Graph,因此您可以查看该文档以获取更多信息。

最后,请注意,在即将发布的 scikit-image 0.18 版本中,RAG 即将从 skimage.future.graph 移动到 skimage.segmentation.graph,因此您应该注意这一变化!