文章目录
- 9形态学图像处理
- 9.2腐蚀与膨胀
- 9.2.1腐蚀
- 9.2.2膨胀
- 9.3开操作和闭操作
- 9.5一些基本形态学方法
- 9.3.1边界提取
- 9.6灰度级形态学
- 9.6.3一些基本的形态学算法
9形态学图像处理
9.2腐蚀与膨胀
9.2.1腐蚀
img=cv2.imread('dige.png',0)
kernel = np.ones((3,3),np.uint8)
num=[[]]*6
for i in range(6):
num[i] = cv2.erode(img,kernel,iterations = i)
plt_show(num[0],num[1],num[2],num[3],num[4],num[5])
可看出腐蚀操作使得线条变细直至消失
9.2.2膨胀
img=cv2.imread('dige.png',0)
kernel = np.ones((3,3),np.uint8)
num=[[]]*6
for i in range(6):
num[i] = cv2.dilate(img,kernel,iterations = i)
plt_show(num[0],num[1],num[2],num[3],num[4],num[5])
可看出线条不断变粗
9.3开操作和闭操作
- 开运算:先腐蚀,后膨胀
- 闭运算:先膨胀,后腐蚀
kernel = np.ones((5,5),np.uint8)
opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)
closing = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)
plt_show(img,opening,closing)
9.5一些基本形态学方法
9.3.1边界提取
β ( A ) = A − ( A ⊖ B ) \beta\left(A\right) =A-\left(A\ominus B\right) β(A)=A−(A⊖B)
# 原图-腐蚀
a=cv2.imread('am.png',0)
kernel = np.ones((3,3),np.uint8)
a2=cv2.erode(a,kernel,iterations = 1)
plt_show(a,a2,a-a2)
9.6灰度级形态学
9.6.3一些基本的形态学算法
形态学梯度:膨胀-腐蚀
img=cv2.imread('am.png',0)
kernel = np.ones((3,3),np.uint8)
dilate = cv2.dilate(img,kernel,iterations = 1)
erosion = cv2.erode(img,kernel,iterations = 1)
img2=dilate-erosion
plt_show(img,dilate,erosion,img2)
上图中,(膨胀-腐蚀)可得出梯度(最后一幅图)
礼帽与黑帽
- 礼帽 = 原始输入-开运算结果(取’刺’)
- 黑帽 = 闭运算-原始输入(取’整体’)
img = cv2.imread('dige.png')
tophat = cv2.morphologyEx(img, cv2.MORPH_TOPHAT, np.ones((7,7),np.uint8) )
blackhat = cv2.morphologyEx(img,cv2.MORPH_BLACKHAT, np.ones((15,15),np.uint8) )
plt_show(img,tophat,blackhat)