使用skimage regionprops过滤区域,并使用过滤组件创建掩码

kkih6yb8  于 2021-09-29  发布在  Java
关注(0)|答案(1)|浏览(360)

我已经通过大津的方法生成了一个掩模,现在我必须从中消除某些不满足面积或偏心条件的闭合区域。我给面具贴上标签 skimage.measure.label 函数,然后应用 skimage.measure.regionprops 以获取有关区域面积和偏心率的信息。代码如下:

lab_img = label(mask)
regions = regionprops(lab_img)

for region in regions:
    if (condition):
        # Remove this region

# final_mask = mask (but without the discarded regions)

有人知道这样做的有效方法吗?非常感谢。

nwo49xxi

nwo49xxi1#

这里有一种方法可以得到你想要的。关键功能是 map_array ,它允许您基于输入和输出值重新Map数组中的值,就像使用python字典一样。因此,您可以使用 regionprops_table ,然后使用numpy快速筛选这些列,最后使用labels列重新Map。下面是一个例子:

from skimage import measure, util

...

lab_image = measure.label(mask)

# table is a dictionary mapping column names to data columns

# (NumPy arrays)

table = regionprops_table(
    lab_image,
    properties=('label', 'area', 'eccentricity'),
)
condition = (table['area'] > 10) & (table['eccentricity'] < 0.5)

# zero out labels not meeting condition

input_labels = table['label']
output_labels = input_labels * condition

filtered_lab_image = util.map_array(
    lab_image, input_labels, output_labels
)

相关问题