在理解开闭运算之前,需要先了解腐蚀和膨胀运算。
一、 腐蚀和膨胀
腐蚀和膨胀是对像素值大的部分而言的,即高亮白部分而不是黑色部分。
1. 腐蚀
● 腐蚀(eroded):腐蚀是图像中的高亮部分被腐蚀掉,领域缩减,效果图拥有比原图更小的高亮区域;操作的时候表现为相邻区域用极小值代替,高亮区域减少。
opencv代码实现:
import cv2 as cv
import matplotlib.pyplot as plt
plt.figure(figsize=(15,15))
img_poem = cv.imread("./libai.png", 0)
plt.subplot(121)
plt.title('ori_img')
plt.imshow(img_poem, cmap="gray")
# 腐蚀
# 黑色地方变胖 iterations:腐蚀的次数
thin = cv.erode(img_poem, None, iterations=3)
plt.subplot(122)
plt.title('eroded')
plt.imshow(thin, cmap="gray")
plt.show()
原图和腐蚀后的图:
2. 膨胀
● 膨胀(dilated):是图像中的高亮部分进行膨胀,领域扩张,效果图拥有比原图更大的高亮区域;操作的时候表现为相邻区域用极大值代替,高亮区域增加。
opencv代码实现:
import cv2 as cv
import matplotlib.pyplot as plt
plt.figure(figsize=(15,15))
img_poem = cv.imread("./libai.png", 0)
plt.subplot(121)
plt.title('ori_img')
plt.imshow(img_poem, cmap="gray")
# 膨胀
# 白色的地方变胖 iteration:膨胀次数
fat = cv.dilate(img_poem, None, iterations=1)
plt.subplot(122)
plt.title('dilated')
plt.imshow(fat, cmap="gray")
plt.show()
原图和膨胀后的图:
二、 开运算和闭运算
1. 开运算
● 开运算:先腐蚀,再膨胀。
● 特点:
1) 开运算能够除去孤立的小点,毛刺,而总的位置和形状不变。
2) 开运算是一个基于几何运算的滤波器。
3) 结构元素大小的不同将导致滤波效果的不同。
4) 不同的结构元素的选择导致了不同的分割,即提取出不同的特征。
(可以去除图像中的小白点)
2. 闭运算
● 闭运算:先膨胀,再腐蚀。
● 特点:
1) 闭运算能够填平前景物体内的小裂缝,而总的位置和形状不变。
2) 闭运算是通过填充图像的凹角来滤波图像的。
3) 结构元素大小的不同将导致滤波效果的不同。
4) 不同结构元素的选择导致了不同的分割。
(可以去除图像中的小黑点)