对图像进行形态学变换。变换对象一般为灰度图或二值图,功能函数放在morphology子模块内。

1、膨胀(dilation)

原理:一般对二值图像进行操作。找到像素值为1的点,将它的邻近像素点都设置成这个值。1值表示白,0值表示黑,因此膨胀操作可以扩大白色值范围,压缩黑色值范围。一般用来扩充边缘或填充小的孔洞。

功能函数:skimage.morphology.dilation(imageselem=None)

selem表示结构元素,用于设定局部区域的形状和大小。

from skimage import data
import skimage.morphology as sm
import matplotlib.pyplot as plt
img=data.checkerboard()
dst1=sm.dilation(img,sm.square(5))  #用边长为5的正方形滤波器进行膨胀滤波
dst2=sm.dilation(img,sm.square(15))  #用边长为15的正方形滤波器进行膨胀滤波plt.figure('morphology',figsize=(8,8))
plt.subplot(131)
plt.title('origin image')
plt.imshow(img,plt.cm.gray)plt.subplot(132)
plt.title('morphological image')
plt.imshow(dst1,plt.cm.gray)plt.subplot(133)
plt.title('morphological image')
plt.imshow(dst2,plt.cm.gray)

分别用边长为5或15的正方形滤波器对棋盘图片进行膨胀操作,结果如下:

可见滤波器的大小,对操作结果的影响非常大。一般设置为奇数。

除了正方形的滤波器外,滤波器的形状还有一些,现列举如下:

morphology.square: 正方形

morphology.disk:  平面圆形

morphology.ball: 球形

morphology.cube: 立方体形

morphology.diamond: 钻石形

morphology.rectangle: 矩形

morphology.star: 星形

morphology.octagon: 八角形

morphology.octahedron: 八面体

注意,如果处理图像为二值图像(只有0和1两个值),则可以调用:

skimage.morphology.binary_dilation(image, selem=None)

用此函数比处理灰度图像要快。

2、腐蚀(erosion)

函数:skimage.morphology.erosion(imageselem=None)

selem表示结构元素,用于设定局部区域的形状和大小。

和膨胀相反的操作,将0值扩充到邻近像素。扩大黑色部分,减小白色部分。可用来提取骨干信息,去掉毛刺,去掉孤立的像素。

from skimage import data
import skimage.morphology as sm
import matplotlib.pyplot as plt
img=data.checkerboard()
dst1=sm.erosion(img,sm.square(5))  #用边长为5的正方形滤波器进行膨胀滤波
dst2=sm.erosion(img,sm.square(25))  #用边长为25的正方形滤波器进行膨胀滤波plt.figure('morphology',figsize=(8,8))
plt.subplot(131)
plt.title('origin image')
plt.imshow(img,plt.cm.gray)plt.subplot(132)
plt.title('morphological image')
plt.imshow(dst1,plt.cm.gray)plt.subplot(133)
plt.title('morphological image')
plt.imshow(dst2,plt.cm.gray)
 

注意,如果处理图像为二值图像(只有0和1两个值),则可以调用:

skimage.morphology.binary_erosion(image, selem=None)

用此函数比处理灰度图像要快。

3、开运算(opening)

函数:skimage.morphology.openning(imageselem=None)

selem表示结构元素,用于设定局部区域的形状和大小。

先腐蚀再膨胀,可以消除小物体或小斑块。

from skimage import io,color
import skimage.morphology as sm
import matplotlib.pyplot as plt
img=color.rgb2gray(io.imread('d:/pic/mor.png'))
dst=sm.opening(img,sm.disk(9))  #用边长为9的圆形滤波器进行膨胀滤波plt.figure('morphology',figsize=(8,8))
plt.subplot(121)
plt.title('origin image')
plt.imshow(img,plt.cm.gray)
plt.axis('off')plt.subplot(122)
plt.title('morphological image')
plt.imshow(dst,plt.cm.gray)
plt.axis('off')
 

注意,如果处理图像为二值图像(只有0和1两个值),则可以调用:

skimage.morphology.binary_opening(image, selem=None)

用此函数比处理灰度图像要快。

4、闭运算(closing)

函数:skimage.morphology.closing(imageselem=None)

selem表示结构元素,用于设定局部区域的形状和大小。

先膨胀再腐蚀,可用来填充孔洞。

from skimage import io,color
import skimage.morphology as sm
import matplotlib.pyplot as plt
img=color.rgb2gray(io.imread('d:/pic/mor.png'))
dst=sm.closing(img,sm.disk(9))  #用边长为5的圆形滤波器进行膨胀滤波plt.figure('morphology',figsize=(8,8))
plt.subplot(121)
plt.title('origin image')
plt.imshow(img,plt.cm.gray)
plt.axis('off')plt.subplot(122)
plt.title('morphological image')
plt.imshow(dst,plt.cm.gray)
plt.axis('off')
 

注意,如果处理图像为二值图像(只有0和1两个值),则可以调用:

skimage.morphology.binary_closing(image, selem=None)

用此函数比处理灰度图像要快。

5、白帽(white-tophat)

函数:skimage.morphology.white_tophat(imageselem=None)

selem表示结构元素,用于设定局部区域的形状和大小。

将原图像减去它的开运算值,返回比结构化元素小的白点

from skimage import io,color
import skimage.morphology as sm
import matplotlib.pyplot as plt
img=color.rgb2gray(io.imread('d:/pic/mor.png'))
dst=sm.white_tophat(img,sm.square(21))  plt.figure('morphology',figsize=(8,8))
plt.subplot(121)
plt.title('origin image')
plt.imshow(img,plt.cm.gray)
plt.axis('off')plt.subplot(122)
plt.title('morphological image')
plt.imshow(dst,plt.cm.gray)
plt.axis('off')

6、黑帽(black-tophat)

函数:skimage.morphology.black_tophat(imageselem=None)

selem表示结构元素,用于设定局部区域的形状和大小。

将原图像减去它的闭运算值,返回比结构化元素小的黑点,且将这些黑点反色。

from skimage import io,color
import skimage.morphology as sm
import matplotlib.pyplot as plt
img=color.rgb2gray(io.imread('d:/pic/mor.png'))
dst=sm.black_tophat(img,sm.square(21))  plt.figure('morphology',figsize=(8,8))
plt.subplot(121)
plt.title('origin image')
plt.imshow(img,plt.cm.gray)
plt.axis('off')plt.subplot(122)
plt.title('morphological image')
plt.imshow(dst,plt.cm.gray)
plt.axis('off')
 

十二、skimage基本图形的绘制相关推荐

  1. QT5开发及实例学习之十六Qt5基础图形的绘制

    文章目录 前言 一.绘图框架设计 二.绘图区的实现 三.主窗口的实现 前言   设计界面,区分各种形状及画笔颜色.画笔线宽.画笔风格.画笔顶帽.画笔连接点.填充模式.铺展效果.画刷颜色.画刷风格设置等 ...

  2. python findcontours_基于Python的opencv学习练习(十二) findContours()轮廓与绘制drawContours()...

    import cv2 #加载图像 img=cv2.imread('rectangle.jpg',1) #将RGB图像转化为灰度图像 img_gray = cv2.cvtColor(img, cv2.C ...

  3. (十二)python图形用户界面

    文章目录 一.python中的图形用户界面开发库 1.Tkinter 2.PyQt 3.wxPython 4.自定义窗口类 5.在窗口中添加控件 二.事件处理 1.事件源 2.事件 3.事件处理程序 ...

  4. MATLAB实战系列(二十二)-matlab三维图形绘制案例最全集锦(毕设和数学建模必看)

    前言 在Matlab中,三维图形的绘制包括三维曲线,三维网线图和三维曲面图等等.接下来我们详细讲解下. 三维曲线 plot3函数与plot函数用法十分相似,其调用格式为: plot3(x1,y1,z1 ...

  5. 精通Android自定义View(十二)绘制圆形进度条

    1 绘图基础简析 1 精通Android自定义View(一)View的绘制流程简述 2 精通Android自定义View(二)View绘制三部曲 3 精通Android自定义View(三)View绘制 ...

  6. matlab三维选取二维,基于Matlab绘制二维和三维图形以及其他图形控制函数的使用方法...

    Matlab绘图 强大的绘图功能是Matlab的特点之一,Matlab提供了一系列的绘图函数,用户不需要过多的考虑绘图的细节,只需要给出一些基本参数就能得到所需图形,这类函数称为高层绘图函数.此外,M ...

  7. 第十二章 图形用户界面

    第十二章 图形用户界面 GUI就是包含按钮.文本框等控件的窗口 Tkinter是事实上的Python标准GUI工具包 创建GUI示例应用程序 初探 导入tkinter import tkinter a ...

  8. matlab二维三维图形绘制和坐标轴范围设置

    matlab二维绘图 一. 二维图形(Two dimensional plotting) 1. 基本绘图函数(Basic plotting function):Plot, semilogx,   se ...

  9. Java程序设计 图形用户界面 【十二】下拉列表JComboBox

    Java程序设计 图形用户界面 [十二]下拉列表JComboBox 下拉列表JComboBox JList是以列表框的形式进行显示的 有列表又可以自己输入数据这种组件就称为下拉列表框 JComboBo ...

最新文章

  1. 北京大学 微软:预训练模型(Transformer)中的知识神经元
  2. 20应用统计考研复试要点(part25)--简答题
  3. 唔姆(二次元高清图片收藏)
  4. 仍有很多企业并未修复微软 Hyber-V 的严重漏洞
  5. js正则表达式——数字校验
  6. python list find函数_对python中list的五种查找方法说明
  7. 华为服务器修改登录密码,服务器登录修改密码
  8. php libiconv close_PHP 5.2.17 编译安装时出现 undefined reference to `libiconv_open’ 错误的解决方法...
  9. SPSS中系统聚类操作案例
  10. AutoCAD2010激活闪退
  11. 如何制作电子文档CHM(How to gernerate chm from assembly)
  12. 国家鼓励的软件企业定期减免企业所得税
  13. Flickr 被封!
  14. YUS框架之us指令
  15. 牧羊人之心服务器维护中,牧羊人之心6月1日停服维护说明_6月1日全服停服维护公告_软吧...
  16. MSP432笔记——按键中断
  17. ViewPager+Fragment模拟微信首页详细步骤
  18. python代码测试健康指数计算器_Python小白一枚,自己写的BMI指数计算器,求教高手一下代码如何重复输入以及如何结束循环?...
  19. 【Elasticsearch】集群部署
  20. 关于举办第二届边缘计算开发者大赛的通知

热门文章

  1. qt 设置按钮大小_Python GUI教程(六):使用Qt设计师进行窗口布局
  2. word中定义新编号格式时后面出现空白解决方法
  3. wordpress-Kratos免费中文极简响应式主题模板
  4. 魅族推荐平台架构解析(三)
  5. ASP.NET MVC5+Layui——kk扫盲篇
  6. unity LineRender用法——画线
  7. node_modules\node-sass: Command failed.错误解决
  8. 关于C的表达式未定义行为
  9. 一枚程序媛,献上开箱即用的 vue+vant 方案
  10. 乘法口诀表的灵活打印