用最小面积阈值分割图像

2024-06-07 03:04:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用分水岭分割我的图像区域。生成的区域很好,但是有一些非常小的区域我想删除。你知道吗

有没有办法给分水岭添加一个“最小面积阈值”或者做一个后处理来合并非常小的区域?你知道吗

下面是一个图像示例: blobs

这是结果和问题(红色标记的非常小的区域) enter image description here

要运行的代码示例:

import numpy as np
from skimage import measure, segmentation
import matplotlib.pyplot as plt

image = np.zeros((50,50))
# top left
image[8:28, 3:21] = 1
# top right
image[3:12, 30:47] =  image[17:20, 30:35] =  image[15:18, 39:44] = 1
# bottom left 
image[46:48, 3:5] =  image[46:48, 13:18] =  image[42:45, 2:7] =  image[35,25] = 1
# bottom right
image[38:45, 33:38] =  image[35:38, 38:45] =  image[43:48, 40:45] = image[39,40] = 1


labeled_regions= measure.label(image, connectivity=2)

label_ws = segmentation.watershed(np.ones_like(image), markers=labeled_regions)

fig = plt.imshow(image)
plt.savefig('blobs.png')
plt.imshow(label_ws)
plt.savefig('regions.png')

Tags: 图像imageimport区域示例topasnp