填充二值图像的孔洞是一个非常常见的方法,因为某些原因我不得不用python来写我的程序,当我想要使用类似于MATLAB 中的imfill 方法时, 我最初发现的是opencv 中的cv2.floodFill 的方法,其实现的过程有点麻烦,而且实现的效果不尽人意。在意外中发现scipy库已经实现了填充孔洞的方法,而且实现的过程如同MATLAB那样的简洁。

1、使用Matlab 的imfill 进行填充图像

imfill是matlab的一个函数,在http://www.mathworks.cn/cn/help/images/ref/imfill.html 中有详细的讲解。

简单的举例:

clc;
clear;
BW = im2bw( imread('imfilltest.tif'));
imshow(BW);
holes = imfill(BW, 'holes');BW(~holes) = 1;
figure,imshow(holes);

2、使用python-opencv实现孔洞的填充

这个方法也不多fei话,直接上实现的代码

im_floodfill = mask.copy()
maskS = np.zeros((imgClean.shape[0] + 2, imgClean.shape[1] + 2), dtype=np.uint8)
cv2.floodFill(im_floodfill, maskS, (0, 0), 255)  # 核心代码
im_floodfill_inv = cv2.bitwise_not(im_floodfill)
im_out = mask | im_floodfill_inv

3、使用python(scipy)中的scipy.ndimage.binary_fill_holes来填充孔洞

这个方法跟MATLAB的imfill一样简洁方便。官网见链接

语法:

scipy.ndimage.binary_fill_holes(input,structure=None,output=None, origin=0)

参数说明:

  • input:待填充的二值图像
  • structure:用于计算的结构元素。大尺寸的元素可以使计算速度更快,但可能会漏掉与背景被薄区域隔开的洞。默认元素(具有等于1的方形连通性)会产生直观的结果,其中输入中的所有孔都已填充。
  • output:已经填充的输出结果
  • origin:结构元素的位置。

举例说明:

from scipy import ndimagea = np.zeros((5, 5), dtype=int)
a[1:4, 1:4] = 1
a[2,2] = 0
a
# array([[0, 0, 0, 0, 0],
#        [0, 1, 1, 1, 0],
#        [0, 1, 0, 1, 0],
#        [0, 1, 1, 1, 0],
#        [0, 0, 0, 0, 0]])ndimage.binary_fill_holes(a).astype(int)
# array([[0, 0, 0, 0, 0],
#        [0, 1, 1, 1, 0],
#        [0, 1, 1, 1, 0],
#        [0, 1, 1, 1, 0],
#        [0, 0, 0, 0, 0]])# Too big structuring element
ndimage.binary_fill_holes(a, structure=np.ones((5,5))).astype(int)
# array([[0, 0, 0, 0, 0],
#        [0, 1, 1, 1, 0],
#        [0, 1, 0, 1, 0],
#        [0, 1, 1, 1, 0],
#        [0, 0, 0, 0, 0]])

python(scipy)实现填充孔洞的方法(非常类似于MATLAB的imfill)相关推荐

  1. python scipy安装失败的解决方法

    python scipy安装失败的解决方法 from scipy.misc import imreadTraceback (most recent call last):File "D:/P ...

  2. python卷积计算_python scipy卷积运算的实现方法

    scipy的signal模块经常用于信号处理,卷积.傅里叶变换.各种滤波.差值算法等. *两个一维信号卷积 >>> import numpy as np >>> x ...

  3. python3.4学习笔记(二十一) python实现指定字符串补全空格、前面填充0的方法

    python3.4学习笔记(二十一) python实现指定字符串补全空格.前面填充0的方法 Python zfill()方法返回指定长度的字符串,原字符串右对齐,前面填充0. zfill()方法语法: ...

  4. python字符串补空格输出_python实现指定字符串补全空格、前面填充0的方法

    Python zfill()方法返回指定长度的字符串,原字符串右对齐,前面填充0. zfill()方法语法:str.zfill(width) 参数width -- 指定字符串的长度.原字符串右对齐,前 ...

  5. python颜色填充函数_【图像后处理】python+OpenCV填充孔洞

    我们在进行图像分割后,分割结果有时会有一些小孔洞,如图1所示,其中黑白两色表示两种不同的类别.一般情况下,这些孔洞属于错分情况,为了优化结果,我们通常对这些孔洞进行填充.今天我们就用python语言基 ...

  6. python画图代码turtle-使用Python的turtle模块画图的方法

    简介:turtle是一个简单的绘图工具.它提供了一个海龟,你可以把它理解为一个机器人,只听得懂有限的指令. 1.在文件头写上如下行,这能让我们在语句中插入中文 #-*-coding:utf-8-*- ...

  7. python安装pandas模块-python安装numpy和pandas的方法步骤

    最近要对一系列数据做同比比较,需要用到numpy和pandas来计算,不过使用python安装numpy和pandas因为linux环境没有外网遇到了很多问题就记下来了.首要条件,python版本必须 ...

  8. python内点法_Python_Day_02 str内部方法总结

    刚开始学习Python,看了一天的字符串内部方法,现在来总结一下. capitalize(self) 将一句话的首字母变大写,其他字母都变小 1 name = "love PyThon&qu ...

  9. python英文词云代码_使用python实现个性化词云的方法

    先上图片 词云图 需要模板 pip install jieba pip install wordcloud 还需要安装另外两个东西这两个我也不太懂借鉴百度写上去的 pip install scipy ...

最新文章

  1. Golang的interface实践
  2. LaTex 实数集R
  3. VTK:可视化之ColorGlyphs
  4. 已经windows如何在安装linux,如何在已经安装linux情况下安装windows
  5. Linux CentOs6 命令学习
  6. 在英特尔架构服务器上构建基于矢量包处理(VPP)的快速网络协议栈
  7. How to remove replication in Syteline
  8. 联想340c笔记本cpu能升级吗_高性价比十大笔记本电脑(由高到低价格),有一台五五开也有.........
  9. azure 使用_使用Azure Data Studio开始您的旅程
  10. Spring Cloud (断路器) Hystrix(三)
  11. H3C 常用信息查看命令
  12. 华为认证hcnp题库多久更新一次?华为hcnp认证值不值得考?
  13. HTML:如何创建表格
  14. 常见搜索算法(二):二分查找
  15. android如何基于父布局,如何根据父视图的尺寸调整Android视图的大小
  16. string转LPCTSTR
  17. mt2503 如何使用META DLL API写两个以上IMEI
  18. ath79 spi报错:ath79-spi 1f000000.spi: cs1 = max 1
  19. Android音视频方向进阶路线及资源合集
  20. linux可以识别多少lun,Linux上每个SCSI设备的最大LUN数目是多少(by quqi99)

热门文章

  1. ewiews面板回归模型操作_Eviews如何完成回归分析?完成回归分析操作流程介绍
  2. EViews对数据进行调整(取对数)
  3. 怎么把两个视频合并成一个视频
  4. css类似于打马赛克
  5. 图扑喜获第十一届中国创新创业大赛全国赛优秀奖!
  6. DIY 空气质量检测器
  7. Axure 9快捷键大全
  8. 墨竹:黄金缩量将爆发,山雨欲来风满楼!
  9. 头文件(include)、源文件(src)、main函数(自定义文件夹)三者在三个不同文件夹的实现,exe独立生成文件夹(bin)
  10. CentOS7 使用 kubeadm 搭建 kubernetes 集群(踩坑篇)