measure.label寻找最大连通域

白昼怎懂夜的黑 提交于 2020-01-27 02:49:50

网上看了几个帖子,自己试了一下,都以一点点错误和不匹配,于是自己修改了一个新的版本。用skimage.measure.label寻找最大连通域

 

from skimage import measure

# 输入二值图像mask
def largeConnectComponent(bw_image):
    labeled_img, num = measure.label(bw_image, neighbour, background=0, return_num=True)
    # 这里返回的labeled_img是一幅图像,不再是一副二值图像,有几个连通域,最大值就是几,num是连通域个数,1个连通域的话num=1

    max_label = 0
    max_num = 0

    # 图像全黑,没有连通域num=0,或者是由一个连通域num=1,直接返回原图像
    if num == 0 or num == 1:
        return bw_image
    else:
        for i in range(1, num+1):  #注意这里的范围,为了与连通域的数值相对应
            # 计算面积,保留最大面积对应的索引标签,然后返回二值化最大连通域
            if np.sum(labeled_img == i) > max_num:
                max_num = np.sum(labeled_img == i)
                max_label = i
        lcc = (labeled_img == max_label)
        return lcc

希望对大家有帮助!

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!