分割得到的二值图像取最大区域和对分割结果填补完整

二值图像分割结果提取主要用到skimage.measure的label和regionprops

填补空洞主要用到scipy.ndimage.binary_fill_holes

label这个函数可以用来对图像进行块的标记,比如我自己做的这个二值图像,现在我用label可以实现对图像所有块标记,其中黑色背景为0,然后块一次被标记上数字(就是所有属于某个块的像素值都被设置成一个固定的值)分割得到的二值图像取最大区域和对分割结果填补完整

下面,我将每个块更加清晰可视化一下,一个个显示所有的块分割得到的二值图像取最大区域和对分割结果填补完整

OK,把每个块都标出来了就可以求每个块的属性,当然这儿不用自己去算,用regionprops这个函数就行,这个函数可以求出相当丰富的块所包含的信息,这儿我只需要得到每个块的面积就行

这儿我可以看出label后得到7个块,0是背景,其余剩下6个有意义的块
分割得到的二值图像取最大区域和对分割结果填补完整

这儿直方图看看每个块所含面积,其中第0块(也就是背景)是最多的,其次是第3块
分割得到的二值图像取最大区域和对分割结果填补完整

好了,现在我要得到最大的块,其他的都抹去,完美! 这儿需要注意的是regionprops是针对非背景来操作的,所以它得出的最大块序号其实要+1才能得到label中对应的序号,因为label是包括了背景的,所以多一个块。
分割得到的二值图像取最大区域和对分割结果填补完整

当分割出来的腌膜存在空洞,而这个空洞你是不希望存在的,想要填补它, 这儿就用scipy.ndimage.binary_fill_holes来填补上
分割得到的二值图像取最大区域和对分割结果填补完整