Scikit Skimage RegionPros获取连接的区域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

Image of masks

解决方法

您想要的是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,所以您应该注意这一变化!

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...