【scipy】 scipy.ndimage 数学形态学(Mathematical morphology)
____tz_zs笔记
形态学
形态学(morphology)一词通常表示生物学的一个分支,该分支主要研究动植物的形态和结构。而我们图像处理中指的形态学,往往表示的是数学形态学。
数学形态学(Mathematical morphology) 是一门建立在格论和拓扑学基础之上的图像分析学科,是数学形态学图像处理的基本理论。其基本的运算包括:二值腐蚀和膨胀、二值开闭运算、骨架抽取、极限腐蚀、击中击不中变换、形态学梯度、Top-hat变换、颗粒分析、流域变换、灰值腐蚀和膨胀、灰值开闭运算、灰值形态学梯度等。
数学形态学以形态结构元素为基础对图像进行分析的数学工具。数学形态学的应用可以简化图像数据,保持它们基本的形状特征,并除去不相干的结构。通常用于处理二值图像。
形态学目的
- 图像预处理(去噪声,简化形状)
- 增强物体结构(抽取骨骼,细化,粗化,凸包,物体标记)
- 从背景中分隔物体
- 物体量化描述(面积,周长,投影,Euler-Poincare特征)
腐蚀和膨胀
首先需要注意,腐蚀和膨胀是对白色部分(高亮部分)而言的,不是黑色部分。膨胀就是图像中的高亮部分进行膨胀,“领域扩张”,效果图拥有比原图更大的高亮区域。腐蚀就是原图中的高亮部分被腐蚀,“领域被蚕食”,效果图拥有比原图更小的高亮区域。
腐蚀和膨胀基本上是所有形态学操作的基础,除此之外还有补集(即二值图全部取反的操作,0变1,1变0),和反射(将所有坐标去反)。
膨胀:
- 桥接缝隙(缝隙点为0,且宽度比SE的宽度小)
- 消除细小的黑点(二值图像中的0,黑点比SE小)
腐蚀:
- 消除“桥梁”(细线装的白色条纹,值为1,宽度小于SE的宽度)
- 消除细小的白点(二值图像中的1,白点比SE小)
开操作和闭操作
简单来说所谓开操作和闭操作就是把腐蚀和膨胀结合起来,先腐蚀后膨胀就是开,膨胀后腐蚀就是关。
开操作,一般会平滑物体轮廓,断开较窄的狭颈(细长的白色线条),所以叫开,并消除细小的突出物。
闭操作,一般也会平滑物体轮廓,但与开操作相反,弥合较窄的间断和细长的沟壑,所以叫闭,消除小的空洞,填补轮廓线的中的断裂。
·
# -*- coding: utf-8 -*- """ @author: tz_zs 数学形态学 """import numpy as np import matplotlib.pyplot as plt from scipy import ndimagesquare = np.zeros((32, 32)) square[10:15, 10:20] = 1 square[16:20, 10:20] = 1 square[22:28, 10:20] = 1square[4:8, 10] = 1 square[4:8, 12] = 1x, y = (np.random.random((2, 15)) * 32).astype(np.int) square[x, y] = 1plt.imshow(square) plt.show() # 图1# 腐蚀 square_erosion = ndimage.binary_erosion(square) plt.imshow(square_erosion) plt.show() # 图2# 膨胀 square_dilation = ndimage.binary_dilation(square) plt.imshow(square_dilation) plt.show() # 图3# 开运算 square_open = ndimage.binary_opening(square) plt.imshow(square_open) plt.show() # 图4# 闭运算 square_closing = ndimage.binary_closing(square) plt.imshow(square_closing) plt.show() # 图5·图1
·图2
·图3
·图4
·图5
·
参考资料:
https://blog.csdn.net/poem_qianmo/article/details/23710721
https://blog.csdn.net/tonyshengtan/article/details/42119773
总结
以上是生活随笔为你收集整理的【scipy】 scipy.ndimage 数学形态学(Mathematical morphology)的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 云计算的一些常见安全风险
- 下一篇: CAS单点登出,调整CAS源码,实现前后