当前位置:   article > 正文

python skimage 填补图像孔洞_python去除图像小孔

python去除图像小孔

最近处理图像的时候需要将图像中一些较小的黑色空洞填上,大致如下:
在这里插入图片描述
白色区域中的黑色点是需要填上的孔洞。
cv2中有一个叫cv2.floodFill的函数,可以淹没孔洞。但这个方法有两个很大的缺点。
第一个是需要手动的找到至少一个背景点
第二个是如果是多个白色区域围成的圆形,中间也有黑色的部分,但属于背景,不需要被填充。这种情况下也会把中间的黑色部分填充。
就很烦。
最近想到一个比较巧妙的方案。
具体思路就是把整个图像的黑白颠倒,然后孔洞就成了白色的小连通域,这样子直接使用skimage中去除小连通域的方法就可以了,大体的代码如下:

#pre_mask是包含有黑色孔洞的二值图像
#这里将原图像黑白反转
pre_mask_rever = pre_mask<=0
#这里的min_size是表示需要删除的孔洞的大小,可以根据需要设置
pre_mask_rever = skimage.morphology.remove_small_objects(pre_mask_rever, \
                                                        min_size=50)
#将删除了小连通域的反转图像再盖回原来的图像中
pre_mask[pre_mask_rever<=0] = 1
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

这样子,就能得到删除孔洞后的图像:
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/72447
推荐阅读
相关标签
  

闽ICP备14008679号