膨胀¶
概要¶
本文讲解了数学形态学中的膨胀, 展示了不同迭代次数下的膨胀效果.
keywords 数学形态学 膨胀
膨胀dilate¶
膨胀是势如破竹的秦国
膨胀与腐蚀其实刚好是一对相反的操作.
膨胀是将与物体接触的所有背景点合并到该物体中,使边界向外部扩张的过程。可以用来填补物体中的空洞。
具体运算过程
假如我们使用的是3*3
的核(有时也被称之为结构元素). 用核与其覆盖的二值图像做或 or操作
如果周边与其自身任意一个点为1,结果图像的该像素为1, 否则为0。
直观效果, 就是图像向外扩增一圈(变得丰满了).
膨胀我们要使用dilate
函数.
# 膨胀 erorsion_img = cv2.dilate(img, kernel, iterations=1)
因为操作都类似, 这里我们从简,不做过多讲解,还是以源码阅读为主.
源代码
src/dilate_demo.py
''' 数学形态学 膨胀 dilate ''' import cv2 import numpy as np # 读入灰度图 img = cv2.imread("dao-bin.png", flags=cv2.IMREAD_GRAYSCALE) # 创建 核 kernel = np.ones((5,5), np.uint8) # 膨胀 dilate_img = cv2.dilate(img, kernel, iterations=1) cv2.imwrite('dao_dilate_k5.png', np.hstack((img, dilate_img)))
迭代次数1
原来稀疏的笔触都被白色(逻辑1, 实际值为255)填满(或者说他们联合起来了).
整体变得丰满. 原来白色区域中的小黑点也不见了.
迭代次数5
迭代次数10
随着迭代次数的增多,白色区域逐渐膨大, 内部的黑色孤岛被慢慢吞噬. 最终形成一个完整的, 连通的区域.
这就像发家时候的秦国, 扫灭六国, 完成国家的大一统.