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
,因此您应该注意这一变化!
我正在尝试找出哪些区域已连接。我搜索了 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
,因此您应该注意这一变化!