开运算¶
概要¶
本文讲解了数学形态学中的开运算, 展示了不同迭代次数下的开运算效果.
keywords 数学形态学 开运算
开运算Opening¶
开运算是奋力抵抗的亡国君
开运算(opening) 等于对图像先进行腐蚀(erode) 然后进行膨胀(dilate).
开运算其主要作用与腐蚀相似,与腐蚀操作相比,具有可以基本保持目标原有大小不变的优点。
通常用于去除小粒噪声。
援引官网的例子, 你可以看到, 开运算去除背景噪点的功效.
在opencv中实现开运算, 我们要通过morphologyEx(img, cv2.MORPH_OPEN, kernel)
数学形态学扩展实现开运算.
opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)
源代码
src/opening_demo.py
''' 数学形态学 开运算 opening ''' import cv2 import numpy as np # 迭代次数 iter_time = 4 # 读入灰度图 img = cv2.imread("dao-bin.png", flags=cv2.IMREAD_GRAYSCALE) # 创建 核 kernel = np.ones((5,5), np.uint8) # 开运算 opening_img = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel,iterations=iter_time) cv2.imwrite('dao_opening_k5_iter%d.png'%(iter_time), np.hstack((img, opening_img)))
迭代次数1
迭代次数2
迭代次数3
迭代次数4
迭代次数5
这些操作, 映证了之前我们讲过的一句话.
开运算其主要作用与腐蚀相似
有心的同学, 你可以比对一下, 腐蚀与开运算不同迭代次数的对比. 消退的趋势是一致的。
只不过, 开运算得到的图像线条更粗一些.