如何在python中删除一些连接的组件?

如何在python中删除一些连接的组件?,python,ndimage,Python,Ndimage,考虑一个二值化图像,我在其上使用scipy.ndimage.label(),然后在结果上应用find\u objects() 现在我得到了一个由N个元组组成的元组列表,每个元组是两个切片,如: index value 0 (slice(0, 21, None) slice(0, 12, None)) 1 (slice(0, 42, None) slice(7, 31, None)) . (...., ....) 它描述了由于连接的组件而产生的x-y边界坐标 以索引0元组为

考虑一个二值化图像,我在其上使用
scipy.ndimage.label()
,然后在结果上应用
find\u objects()

现在我得到了一个由N个元组组成的元组列表,每个元组是两个切片,如:

index  value
 0   (slice(0, 21, None) slice(0, 12, None)) 
 1   (slice(0, 42, None) slice(7, 31, None))
 .   (...., ....)
它描述了由于连接的组件而产生的x-y边界坐标

以索引0元组为例:

slice(0,21,None)
表示行号在0~21和

slice(0,12,None)
表示列号从0到12

所以我们知道这个cc的面积是
21*12=252

现在我想移除那些面积小于300的连接组件

我已经知道要迭代所有这些。
我想以一种更有效的方式来做这件事;有人知道怎么做吗?

使用此代码可以解决我的问题:

def CC(Map):
    label_img, cc_num = ndimage.label(Map)
    CC = ndimage.find_objects(label_img)
    cc_areas = ndimage.sum(Map, label_img, range(cc_num+1))
    area_mask = (cc_areas < 1500)
    label_img[area_mask[label_img]] = 0
return label_img, CC
def CC(映射):
label\u img,cc\u num=ndimage.label(映射)
CC=ndimage.find\u对象(标签\u img)
cc_areas=ndimage.sum(映射、标签、范围(cc_num+1))
面积屏蔽=(cc面积<1500)
label\u img[区域\u掩码[label\u img]]=0
返回标签,抄送

区域遮罩[label\u img]是我的观点中最重要的遮罩技巧。

请不要将答案贴在问题内。自己写一个答案并接受它。谢谢。我想在…之前做这件事。。。但对于代表低于10的我来说,它需要8个小时……无论如何,我会编辑它,再次感谢你。